neocomplcacheの補完機能がヤバすぎる
ヤバいヤバい。
neocomplcacheの補完機能がヤバすぎる。
neocomplcacheの代表的機能
・キーワードの使用頻度によるランク付け
・シンタックスごとのキーワード補完
・部分マッチ
・数字キーによるクイックマッチ
・ディクショナリ補完、タグ補完
・ワイルドカードによる検索結果の絞り込み
・結果のキャッシュによる高速化
・ファイル名補完
・カーソル後方のキーワードに応じた補完
・SmartCase
・豊富なカスタマイズ項目
・文脈依存補完(3-gram completion)
・Omni補完
・ローカルタグ補完
・自動タグファイルアップデート
・キーワード補完を試す
・Same filetype completion
・preview windowに対応
・シンタックス補完
・プラグインで拡張可能
・スニペット補完
まず、1つのプラグインですべて完結することがいいね。
autocomplpop.vimとか、snippetsEmu.vimとか、snipMate.vimは、もう必要ないな。
スニペットもsnipMateライクな記述で簡単にかけるので、非常に良いです。
難点
そのうち解決するとおもいますが、現時点(2.39)で多少問題あります。
解決しました。
挿入するスニペット内に一行コメントがあると、そのコメント以下の行がコメントアウトされる。
set formatoptions+=rとなっていると発生する。
最新の2.40で解決しました。
回避するパッチを作ってみた。
--- autoload/neocomplcache/snippets_complete.vim.orig 2009-05-04 05:52:28.000000000 +0900 +++ autoload/neocomplcache/snippets_complete.vim 2009-05-04 21:54:55.000000000 +0900 @@ -289,6 +289,8 @@ endif endfunction"}}} function! s:expand_newline()"{{{ + let s:tmpformatoptions=&formatoptions + set formatoptions-=r " Check expand word. if !empty(&filetype) && has_key(s:snippets, &filetype) let l:expand = matchstr(getline('.'), '^.*<expand>') @@ -323,6 +325,7 @@ let s:snippet_holder_cnt = 1 call s:search_snippet_range(s:begin_snippet, s:end_snippet) + let &formatoptions=s:tmpformatoptions endfunction"}}} function! s:search_snippet_range(start, end)"{{{ let l:line = a:start
候補表示中にバックスペースで戻ると、エラーが発生する事がある。
下記のエラーが、よく発生します。
解決しました。(詳細はコメント参照)
-------------------- Error detected while processing function neocomplcache#manual_complete..<SNR>22_get_complete_words..neocomplcache#tags_complete#get_keyword_list..<SNR>26_initialize_tags: line 7: E431: Format error in tags file "tags" -------------------- Error detected while processing function neocomplcache#manual_complete..<SNR>22_get_complete_words..neocomplcache#snippets_complete#get_keyword_list..<SNR>25_keyword_filter: line 17: E488: Trailing characters --------------------
回避策は後で調べる。(きっと、たぶん、調べないorz)
追記
上記エラーは、GUI版のMacVimで発生する。
CUI版のMacPorts vim 7.2.160では発生しない。も発生した。頻度の問題。MacVimの方がモッサリしているので発生しやすい。
taglist()をコールすると発生するので、neocomplcacheの問題ではなくMacVimの問題?。