Atom 1.0.0 Windows版をトライしてみました。
前に試した Sublime Text 2 より、導入はスムーズ。
デフォルトで Symbols Viewというプラグインがあり、プロジェクト全体のシンボル検索(Ctrl+Shit+r)ができます。
ctagsの出力結果(tags)を参照しているのですが、ちょっと難あり。
マクロ定義の行ジャンプができない。
ctags -R .
でtagsを生成したところ関数とかには飛べるようになりました。
しかし、C言語のマクロ定義(#define HOGEHOGEとか)のシンボルは、ファイルは開くけど定義行までジャンプしてくれないのです。
マクロ定義は、標準で行番号形式で出力されるのですが、対応していない模様。
オプション(--excmd=pattern
)で、pattern形式に強制するもまだだめ。
どうもパターンの出力結果が微妙に違うのが問題になっていそう。
SOMEDEF .\hoge.c /^#define SOMEDEF /;" d file: main .\hoge.c /^int main()$/;" f
正規表現で検索するなら問題ないはずなので、ちょっと実装をのぞいてみた。
https://github.com/atom/symbols-view/blob/master/lib/symbols-view.coffee#L101
getTagLine: (tag) -> # Remove leading /^ and trailing $/ pattern = tag.pattern?.replace(/(^^\/\^)|(\$\/$)/g, '').trim()
うーん、強引に行全体マッチだけを使っているようですね。
行番号形式もだめなわけです。
回避方法
以下のオプションを追加して、少し強引に行全体マッチの出力を追加するようにした。
--regex-C=/^[ \t]*#define ([A-Z_][A-Z0-9_]*)/\1/C,constant/ --C-kinds=-d
上記を記述したctags.cnf
というファイルを、実行するディレクトリ直下においておけばよさそう。
#define
ではじまる定義を定数のシンボルとして読み込んで、マクロ定義は出力対象外にしています。
キーマップ
とりあえずジャンプできるようになったので、下記の内容をkeymap.cson
に記述。
※メニューの「ファイル」→「キーマップを開く」で編集画面。
'atom-text-editor': 'f12': 'symbols-view:go-to-declaration' 'shift-f12': 'symbols-view:return-from-declaration'
これで、F12でカーソルにあるシンボルの定義場所に移動。
Shift-F12で、元に戻ることができるようになった。
参考
ctagsの説明はこの辺。