anything-gtagsのシンボル長の制限を取り払う。
仕事柄カーネルのソースコード見ることが多くて、anything-gtagsは
かなり愛用しているんですけど、シンボル長が長いものを検索すると
なんか変ってなりました。具体的には以下のような感じです。
GNU globalでシンボルを調べる場合、調べているシンボル名が各行に
表示されます。調べてるものをわざわざ表示する必要がないだろって
ことでそれを除去しようとしているんだと思います。ソースコードを
見て確認してみると、はじめのカラムを取り除いているのではなく、
最初から 16文字を取り除いているだけでした。なんではじめの空白までの
文字位置を調べて、それが 16文字いないであれば 16文字、それ以上で
あればはじめの空白までを除去するよう修正してみました。
パッチは以下のとおりです。(追記 タグジャンプができない場合が
あったので修正しました。2011/JAN/17)
diff --git a/anything-gtags.el b/anything-gtags.el index 814a3e7..38b492a 100644 --- a/anything-gtags.el +++ b/anything-gtags.el @@ -199,8 +199,16 @@ If it is other symbol, display file name in candidates even if classification is (defvar aggs-buffer "*anything gtags select*") (defun aggs-candidate-display (s e) - ;; 16 = length of symbol - (buffer-substring-no-properties (+ s 16) e)) + (buffer-substring-no-properties (aggs-search-not-space-point s e) e)) + +(defun aggs-search-not-space-point (s e) + (save-excursion + (goto-char s) + (let ((space-point (re-search-forward " " e t))) + (if (and space-point (> (- space-point s) 16)) + (- space-point 1) ; for buffer-substring + (+ s 16))))) + (defun aggs-set-anything-current-position () (declare (special c-source-file)) ;; It's needed because `anything' saves
Emacs Lispというか Lisp自体よくわかっていないので、
こんな修正でいいのかはわからないですけど、望むような
感じにできました。