c 言語の関数一覧が欲しかったので作ったので、 そのあたりの作業について備忘メモしておく。
名前負けはご愛敬。
目的
c 言語の関数一覧が欲しかった。
何を考えたか?
c 言語の関数一覧が欲しいけど、 自分で抽出処理はかけない。
そんなわけで、方針としては
- 関数抽出は ctags を使う
- ctags で一覧を抜き出してからは mikoto2000/buffer_selector.vim と同じ感じで
以下、各要素について書いていく。
アウトライン抽出
アウトライン抽出は ctags を使う。
ctags -x FILE_NAME --sort=no
これで member, struct, function のリストが表示される。 ここから member を取り除き、awk で無用な列を削除する。
ctags -x FILE_PATH --sort=no | grep -v member | awk '{$1=\"\";$2=\"\";$3=\"\" + $3;$4=\"\";print}'
これを、vim のバッファに読み込ませるには、 read!
コマンドを使う。
silent execute "read !ctags -x " . file_path . " --sort=no | grep -v member | awk '{$1=\"\";$2=\"\";$3=\"\" + $3;$4=\"\";print}'"
これで、 ctags の実行結果を成形したものをバッファに読み込むことができる。
対象にジャンプ
ctags を成形した結果は、各行が 行番号 関数名
となっているので、 split
してリストの 0 番目をとってきて、元のバッファに戻って [count]gg
すれば OK。
で、できたのが下記な感じ。
以上。
0 件のコメント:
コメントを投稿