ハック

  • ジャンプテーブル
    • クラス名 → ファイル・行番号 のリストを適当なファイルに書いておく
    • そこをインクリメンタルサーチ、ジャンプ
    • TAGSを適当に変換してリストを作れるとなおよし

本体不満点

  • 新規作成時の文字コードの指定ができない
    • いつもUTF-8でいいし、パッチ当ててみるか
  • タグジャンプ改良
    • ウィンドウサイズと列幅の変更・保存
    • ファイル名簡易表示の適用
  • スマートインデント
    • namespaceはインデントしない、がうまくできない
  • ドキュメントを閉じた後も、そのドキュメントのディレクトリをロックしたままになる
  • ルートディレクトリにあるファイルのみ、タイトルバーの左端のアイコンのドラッグができない
  • ファイル名のbasename、親ディレクトリの名前も、補完候補の単語に入れてほしい
    • プラグイン実装されたし、作れるね
  • キャメルケース補完
    • State mState を、mS -> Ctrl+Space で補完できるように

やりたいこと列挙

  • gatesSpacing.js
    • 英単語の前後にスペースを挿入するマクロ

  • httpget.js
    • このURLのスタイルシートをサクラで開きたい!ってあるよね

  • cppimpl.js
    • クリップボードの中の関数プロトタイプを解析して、
      • ; を \n{\n}\nに変換
      • クラス名(ファイル名から引く):: を付加
      • virtual, override, finalを除去
      • =0 を除去
      • デフォルト引数を削除
      • using namespaceされてたらネームスペース部分を削除
      • で、カーソル位置に貼り付け
    • 応用: コンストラクタの場合はメンバ初期化子も追加
      • これ単独で実装してもいいかも
    • 応用: 前後の関数の名前から、定義を挿入する位置を求めて、cppのその位置まで移動して貼り付け

  • svnlog.js
  • svnblame.js
    • 文字通り。結果をアウトプットウィンドウに出力する
    • TortoiseSVNを起動するようにしてもいいかも

  • svndiff.js
    • TortoiseMergeを起動するようにすると汎用的か

  • へぼCodeSnippet
    • カーソル左の単語を事前登録した文字列に変換する
    • 適当に推論すると面白そう
      • ctor -> ファイル名からクラス名を求める・対応する.hから変数名を拾って初期化子も生成
      • iter -> ::iterator it = begin(); for(;it!=end();++it) に展開
      • iter2 -> その関数の引数やローカル変数にvector, listなどがあればそれをforで回す
      • switch -> 選択範囲がenumメンバ変数なら、.hから列挙リストを拾ってcaseを生成
      • bind -> bind(&class::func, _1)
      • 一部cppimpl.jsとかぶるのが難点
    • ローテクに、ダイアログ出して変数名聞いてもいいかも
      • 入力内容に応じてプレビューが出るとかっこいいね
      • そこまでするなら、VSの本物のXMLを読めるようにする?
    • コマンド→推論エンジンへのマッピングは onelinememo.js が参考になる

  • 「競合の解決」
    • C#のアレ
    • カレントディレクトリとカーソル位置のクラス名から#includeを追加する
    • FQDNで書いてあればパスも補完する。クラス名単体ならカレントディレクトリを推論する

  • using namespace
    • 現在行の#includeのパスから、using namespaceを生成して貼り付ける

  • sakura上でコンパイル
    • カレントディレクトリでme/megを実行
    • エラーが出た場合に、その行にジャンプするマクロも用意する

  • 開いてるファイルをインクリメンタルサーチ
    1. (無題)を開く
    2. 開いてるファイルパスの一覧をバッファに書き込む
    3. インクリメンタルサーチを起動する
    • というマクロ。あとはサーチして、Ctrl+Tでジャンプ

  • カレントディレクトリを開く

  • 編集中のファイルの右クリックメニューを表示する

  • カーソル位置の単語 or 選択範囲でハイライトする
    • 検索だとカーソルが動いちゃうけど、ハイライトだけできるかな

  • 複数のディレクトリをまとめてGrepする
    • includeとsourceとか
    • 単に2回Grepして、結果が1つのバッファに出るだけなら楽そう

  • CamelCaseLeft/Right
    • CodeRushのアレ

  • カーソル行をウィンドウの上の方へ
    • 関数にタグジャンプ後に押す
    • 上10行くらい残すと、コメントが読みやすそう

  • インデントのスペース数が2or4の倍数じゃないときに色が変わる正規表現キーワード

マクロ開発メモ

ActivePerlのバグ対策
JISで書いてuse encoding '7bit-jis';がよさげやね
残念ながら、encoding.pmは入れないといけないみたいだけど…
http://sakura-editor.sourceforge.net/cgi-bin/cyclamen/cyclamen.cgi?log=macro&tree=c362

JScriptで書くならこっち