VIM omnicppcomplete не работает для параметров функции - PullRequest
2 голосов
/ 14 августа 2011

Я пытаюсь использовать omnicppcomplete в VIM и не могу заставить его работать для переменных, переданных в функцию.Например, ввод следующего

function1( MyObject obj ) {
    obj.|
}

приводит к «--Omni extension (^ O ^ N ^ P) Pattern not found» *

Если я определяю локальную переменную внутри функции:

function1 ( MyClass obj) {
    MyClass obj2;
    obj2.|
}

все работает нормально, и я получаю всплывающий список участников.Он также хорошо работает для глобальных объектов, но, похоже, не может определить, что это за переменная, когда она передается в качестве параметра функции.

My .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>

1 Ответ

0 голосов
/ 22 августа 2011

К сожалению, omnicppcomplete опирается на ctags, который не очень эффективен в понимании C ++.

Вам стоит взглянуть на clang_complete.Это может дать лучшие результаты.

...