auto-complete-gtags の global -ci について

何が何って,global -ci ってあるけど,-c と -i は,
同時には使えません的な。

auto-complete-gtags.el から 引用させてもらいまうー。

(defun ac-gtags-candidate ()
  (if (memq major-mode ac-gtags-modes)
      (ignore-errors
        (with-temp-buffer
          (when (eq (call-process "global" nil t nil "-ci" ac-prefix) 0)
            (goto-char (point-min))
            (let (candidates)
              (while (and (not (eobp))
                          (push (buffer-substring-no-properties (line-beginning-position) (line-end-position)) candidates)
                          (eq (forward-line) 0)))
              (nreverse candidates)))))))

おじさん,ずーっとはまってました。
結局,global のソース見て,gdb で追ってみて,
そしたら,-c オプションしているしているときは,
「-i」 オプションの情報は,completion() には渡らないのら〜。
私の解釈が正しければ。何か裏技あるのかにゃ?


何がやりたかったかって言うとね,auto-complete.el 便利じゃん,
で,遅ればせながら,auto-complete-gtags.el 導入して,
補完で大文字小文字を無視して欲しいと思ったわけで,
で,auto-complete-gtags.el みたら,-ci を渡してたから,
いけるんだと思ったのが間違い。
もうね,ワタシの環境を疑って,regcomp(), regexec() を試したりもしたさー。
んで,ソースを目視で追えない貧弱なワタシは,gdb の力を借りて,
追ってみたわけで,一応,解らしきものがでたわけで。

void
completion(const char *dbpath, const char *root, const char *prefix)
{
	int flags = GTOP_KEY;  // ここでゴリっとフラグの値を設定しているから,
	GTOP *gtop;            //  -i の気持ちは届かないのら〜。そもそも引数に(ry
	GTP *gtp;
	int db;

	flags |= GTOP_NOREGEX;
	if (prefix && *prefix == 0)	/* In the case global -c '' */
		prefix = NULL;
	if (prefix)
		flags |= GTOP_PREFIX;
	db = (sflag) ? GSYMS : GTAGS;
	gtop = gtags_open(dbpath, root, db, GTAGS_READ);
	for (gtp = gtags_first(gtop, prefix, flags); gtp; gtp = gtags_next(gtop)) {
		fputs(gtp->tag, stdout);
		fputc('\n', stdout);
	}
	gtags_close(gtop);
}

gtags_first() 内では,REG_ICASE を設定する部分はあるけど,
それは別の場所から呼び出された時用かな。


あと,おもろかったのは,global のソースに対して,gtags やると,
GTAGS っちゅうファイルを作れなくて怒られるということ。
理由はたぶん,gtags というフォルダがあるからかな。
これは Windows 環境のみ?


だもんで,etags を使用しました。
なんか色々寄り道したはずだけど,忘れた。
行った設定については,覚えていたら後日書くことにしよう。


あ−,-ci の件,解決策しっていたら教えてくださいな。