とりあえず日記

VIM→秀丸エディタ→VIM→秀丸エディタ→VIM→秀丸エディタ→VIM→秀丸エディタ→VIM→秀丸エディタ→VIM→秀丸エディタ(いまここ🍄)

GNU GLOBALを秀丸エディタから使うマクロ

2011年5月21日 追記。
gtags_wrapper.mac のバグ修正版を github にアップしました。
https://github.com/ohtorii/gtags_for_hidemaru

GNU GLOBALを秀丸エディタから使うマクロ」がだいぶ安定してきたので、秀丸マクロライブラリに投稿しました。近日中に公開されると思います。
以下で公開されています。
http://hide.maruo.co.jp/lib/macro/gtags_jump.html

GNU GLOBALとは

GNU GLOBALを使用すると関数が「呼び出されている位置」を一覧表示できます。「定義されている位置」ではなく「呼び出されている位置」です。
(本家)http://www.tamacom.com/global-j.html
詳しい使い方はググってもらうとして、ここでは秀丸エディタの話をします。

呼び出し元を表示

単語の上でマクロを実行するとメニューが表示されます。「呼び出し元を表示」を選択すると・・・

呼び出している位置が一覧表示されます。表記は秀丸形式なのでそのままタグジャンプとバックタグジャンプができます。

単語のない位置でマクロ実行すると

単語入力するダイアログがポップアップします。

任意の関数を検索できます、

定義位置を表示

まず使うことはないです。「手風琴さんのCTagsJump」のほうが優れています。ついでなので用意しておいた程度です。

シンボルを探す

グローバル変数とかを探すようです・・・すいませんよく分かりません。

ファイルを探す

「ファイル名・ディレクトリ名」の一部からファイルを探し出します。例えばユーティリティ系のソースコードは、このような命名規則になっているはずです、

  • util_foo.cpp
  • util_bar.cpp
  • util_hoge.cpp

ダイアログにutilと入力するだけで一覧表が作られ、すぐにタグジャンプできるので地味に便利です。既にタグファイルが作ってあるのでファイラーでファイルを探すよりも手っ取り早いです。

utilと入力して、

utilの検索結果

grep

grepです、格段に高速動作というわけでもなさそうなのでまず使いません。ついでなので用意しておいた程度です。

このファイルに含まれる関数一覧を表示

秀丸エディタにある機能なのでまず使いません。これもついでなので用意しておいた程度です。

結果

関数名の一部から関数名を調べる

bash等で利用可能な補完リストを作るそうです。これもついでなので用意しておいた程度です。

printを入力。

補完リストが生成されます

コマンドラインの直接指定

globalコマンドのコマンドライン引数を直接指定します、デバッグを想定しています。
--helpを指定した結果、

tagsファイルを作るGUIラッパー

ダイアログからgtagsコマンドを起動するマクロです。

設定ファイル(.ini)

設定ファイル(gtags_config.ini)で多少のカスタマイズが効きます。

[Search]
;GNU Globalで何も見つからなければ下記パスから再検索する
;0-9まで指定可能
Path0=D:\project\my_lib\trunk
Path1=K:\project\boost\
Path2=K:\foo\bar\stlport

開発用ディレクトリが「複数パス・複数ドライブ」にまたがっていても、それなりにうまく検索できます。

注意

  • タグファイルを作った後にソースコードを編集すると行がずれます、gtagsは行番号で覚えているようです。我慢できなくなったらタグファイルを作り直してください。
  • あらかじめGNU GLOBALをコマンドラインから動くようにしておいてください、そうしないとマクロが動きません。まずコマンドラインで動くようにする、これが基本です。

最後に

  • 「手風琴さんのCTagsJumpをメインで使いつつ、本マクロをサブで使用」という使い方を想定しています。