fuzzyfinder.vim 2.0
fuzzyfinder.vim 2.0
http://d.hatena.ne.jp/ns9tks/20080104/1199432216
Tag/TaggedFile 便利!!!ありがとうございます!!
一カ所、tags が読み込めないとエラー(set tags で指定したファイルがディレクトリだとしても、vim が tags として認識してしまう?)になって閉まったため、下記 diff のように変更しました。
また現在の fuzzyfinder.vim では、setlocal で設定した tags ファイルは読み込まれない(言語ごとに tags ファイル作って、ftplugin/ruby.vim などで setlocal tags+=ruby.tags などしてます)のですが、うまいことその tags からも補完することってできるのでしょうか。call OpenFuzzyFinder('tagged_file') したときの引数に tagfiles() を渡してやる方法しか思い浮かばないので…。
*** fuzzyfinder.vim 2008-01-05 01:05:23.000000000 +0900
--- fuzzyfinder.vim.orig 2008-01-05 01:03:48.000000000 +0900
***************
*** 1201,1210 ****
let s:cache.tagged_file[cur_dir] = { 'data' : [], 'time' : localtime() }
for [head, tail] in map(tagfiles(), '[fnamemodify(v:val, ":p:h"), fnamemodify(v:val, ":t")]')
execute 'cd ' . head
! if filereadable(tail) == 1
! let s:cache.tagged_file[cur_dir].data +=
! \ map(readfile(tail), 'fnamemodify(matchstr(v:val, ''^[^!\t][^\t]*\t\zs[^\t]\+''), ":p")')
! endif
cd -
endfor
let s:cache.tagged_file[cur_dir].data = Unique(s:cache.tagged_file[cur_dir].data)
--- 1201,1208 ----
let s:cache.tagged_file[cur_dir] = { 'data' : [], 'time' : localtime() }
for [head, tail] in map(tagfiles(), '[fnamemodify(v:val, ":p:h"), fnamemodify(v:val, ":t")]')
execute 'cd ' . head
! let s:cache.tagged_file[cur_dir].data +=
! \ map(readfile(tail), 'fnamemodify(matchstr(v:val, ''^[^!\t][^\t]*\t\zs[^\t]\+''), ":p")')
cd -
endfor
let s:cache.tagged_file[cur_dir].data = Unique(s:cache.tagged_file[cur_dir].data)