VIM で omnicppcomplete を使用しようとしていますが、関数に渡された変数に対して機能させることができません。たとえば、次のように入力します。
function1( MyObject obj ) {
obj.|
}
「--オムニ補完 (^O^N^P) パターンが見つかりません」という結果になります
関数内でローカル変数を定義すると、次のようになります。
function1 ( MyClass obj) {
MyClass obj2;
obj2.|
}
正常に動作し、メンバーのポップアップ リストが表示されます。グローバルオブジェクトでもうまく機能しますが、変数が関数パラメーターとして渡されたときに変数が何であるかを判断できないようです。
私の .vimrc には以下が含まれています:
set tags+=~/.vim/tags/cpp
set tags+=~/Projects/myproject/Software/tags
" OmniCppComplete
let OmniCpp_NamespaceSearch = 2
let OmniCpp_GlobalScopeSearch = 1
let OmniCpp_ShowAccess = 1
let OmniCpp_ShowPrototypeInAbbr = 1 " show function parameters
let OmniCpp_MayCompleteDot = 1 " autocomplete after .
let OmniCpp_MayCompleteArrow = 1 " autocomplete after ->
let OmniCpp_MayCompleteScope = 1 " autocomplete after ::
let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]
let OmniCpp_LocalSearchDecl = 1 " use local search function, bracket on 1st column
let OmniCpp_DisplayMode = 1
au BufNewFile,BufRead,BufEnter *.cpp,*.hpp set omnifunc=omni#cpp#complete#Main
au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif
set completeopt=menuone,menu,longest,preview
map <F8> :!/usr/bin/ctags -R --exclude=backups --language-force=C++ --sort=yes -c++-kinds=+pl --fields=+iaS --extra=+q -f ~/Software/tags ~/Software .<cr>