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 とかしてもシグニチャは出力されない。
  • それではと,ctags でシグニチャを出力するようにタグファイルを作ってみた。
    • 関数の先頭にマクロがあると,うまく解析できないようだ。
      • CU_EXPORT void some_func(void) とかね。
    • さらに,シグニチャを出力できたとしても,返り値は出力されない。
      • どうやらサポートされてないようだ。


というわけで,詰みぎみ。
たぶん,
int
main(void)
というような場合も,main(void) しか取得できない。
global でタグが作られている場合は,global -x を使えばいけるはず。
もしくは,etags を改造するとか?
うーん,困った。