let g:ycm_global_ycm_extra_conf='~/.vim/bundle/youcompleteme/.ycm_extra_conf.py'
let g:ycm_min_num_of_chars_for_completion=1
let g:ycm_confirm_extra_conf=0
let g:ycm_autoclose_preview_window_after_completion = 1
nnoremap <F5> :YcmForceCompileAndDiagnostics<CR>
nnoremap <leader>gic :YcmCompleter GoToInclude<CR>
nnoremap <leader>gdc :YcmCompleter GoToDeclaration<CR>
nnoremap <leader>gdf :YcmCompleter GoToDefinition<CR>
nnoremap <leader>gip :YcmCompleter GoToImprecise<CR>
nnoremap <leader>f :YcmCompleter FixIt<CR>
Это часть ~/.vimrc
связана с ycm
.
Кроме того, flags
в .ycm_extra_conf.py
содержит результат echo | gcc -std=c++11 -v -E -x c++ -
, который относится к путям для C-family
.YouCompleteMe (ВИМ плагин) GoToDefinition не работает
Проблема
Хотяauto-complete
работает отлично,GoToDefinition
не работает.
(Вот какиеworks
средства,ycm
может распознавать локальный файл заголовка в проектах.)
Согласно NOTE,GoToDefinition
работает только в текущемtranslation unit
.
ОднакоGoToDefinition
работает только с редактируемым файлом в моем случае.Что я пробовал: Откажитесь сделать
.ycm_extra_conf.py
глобальной- Copy
.ycm_extra_conf.py
в верхней части проекта и изменитьg:ycm_global_ycm_extra_conf
в~/.vimrc
. - ли
YcmForceCompileAndDiagnostics
- Проверка
final_flags
вFlagsForFile
функции в.ycm_extra_conf.py
file. final_flags
был таким.
['-Wall', '-Wextra', '-Werror', '-Wc++98-compat', '-Wno-long-long', '-Wno-variadic-macros', '-fexceptions', '-DN DEBUG', '-DUSE_CLANG_COMPLETER', '-std=c++11', '-x', 'c++', '-isystem', '/home/illuxic/Redbase/../BoostParts', ' -isystem', '/System/Library/Frameworks/Python.framework/Headers', '-isystem', '/home/illuxic/Redbase/../llvm/inc lude', '-isystem', '/home/illuxic/Redbase/../llvm/tools/clang/include', '-I', '/home/illuxic/Redbase/.', '-I', ' /home/illuxic/Redbase/./ClangCompleter', '-isystem', '/home/illuxic/Redbase/./tests/gmock/gtest', '-isystem', '/ home/illuxic/Redbase/./tests/gmock/gtest/include', '-isystem', '/home/illuxic/Redbase/./tests/gmock', '-isystem' , '/home/illuxic/Redbase/./tests/gmock/include', '-isystem', '/usr/include/c++/5', '-isystem', '/usr/include/x86 _64-linux-gnu/c++/5', '-isystem', '/usr/include/c++/5/backward', '-isystem', '/usr/lib/gcc/x86_64-linux-gnu/5/in clude', '-isystem', '/usr/local/include', '-isystem', '/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed', '-isystem ', '/usr/include/x86_64-linux-gnu', '-isystem', '/usr/include']
GoToDefinition
все еще дает мне 'RuntimeError: Can't jump to definition.
'
- Copy
Как я могу сделать GoToDefinition
работу?
Он не может распознать не только косвенно включенные заголовочные файлы, но и напрямую включенные файлы заголовков.