auto-complete-etags.el で試してみた。
どもです。
かなりきつい風邪を引いて,2日くらいダウンしてました。
まだかなりのどが痛い。えぇ,例のコンボですよ。
偏頭痛系の頭痛がきつかったので,体を冷やして対処 --> 風邪ひく。
間に筋トレを挟んでいたせいか,症状もきつかった。
まじ風邪のダウンはキツイですね。
とりあえずやってみた。
etags で作ったタグファイルの中身には,関数のシグニチャが入っているようだったので,
それを使えるんじゃね? と思って,とりあえずでやってみた。
とりあえずなので,c-mode の場合のみ。
auto-complete で,クイックヘルプを表示させるのにはまった。
ac-define-source なり defvar で,ac-source-etags を定義するときに,
document で,関数を指定すればいいということはわかったんだけど,
指定してもその関数が呼ばれない。しばらくはまる。
んで,ac-source-etags の中身を見たら変更されてなかった。
なんでだろう?
結局,setq してなんとかできた。
ほいで作った後に色々気づいてもうた。
- 関数のプロトタイプなり定義なりが,複数行に渡る場合は,最初の1行分しか取得できない。
- そもそもジャンプ目的だから,関数名だけわかれば十分なのか。
- etags で,--fields=+S とかしてもシグニチャは出力されない。
- etags の場合は問答無用でフォーマットが決まっているようだ。
- これについては,en.wikipedia に詳しい。http://en.wikipedia.org/wiki/Ctags
- それではと,ctags でシグニチャを出力するようにタグファイルを作ってみた。
- 関数の先頭にマクロがあると,うまく解析できないようだ。
- CU_EXPORT void some_func(void) とかね。
- さらに,シグニチャを出力できたとしても,返り値は出力されない。
- どうやらサポートされてないようだ。
- 関数の先頭にマクロがあると,うまく解析できないようだ。
というわけで,詰みぎみ。
たぶん,
int
main(void)
というような場合も,main(void) しか取得できない。
global でタグが作られている場合は,global -x を使えばいけるはず。
もしくは,etags を改造するとか?
うーん,困った。