I'm trying to get YCM working in Vim for C++ development. I'm using the JUCE framework. Ctags and autocompletion are working great. However, I'm getting lots of wrong errors come up in the 'gutter' as red arrows.
E.g.
no matching member function for call to 'addAndMakeVisible'
when addAndMakeVisible is a function of an inherited class Component and even comes up in the autocomplete.
Also getting lots of errors like the following:
cannot initialize object parameter of type 'juce::Component' with an expression of type 'MyComponent'
My .ycm_extra_conf.py: https://gist.github.com/adamski/a793a24b026f68a1074e
I am adding the JUCE libraries with absolute path as well as the local project version, and copied suggestion from @ladislas example.
Output of :YCMDebugInfo https://gist.github.com/adamski/2e7dd79b45d0fb6f5010#file-ycmdebuginfo
Current output of :YCMDiags https://gist.github.com/adamski/8fad8e0724a03854912b
example repository that recreates the problem: https://github.com/adamski/juce-chapter02-07
My .vimrc looks like:
"" YouCompleteMe options
"
let g:ycm_register_as_syntastic_checker = 0 "default 1
"let g:Show_diagnostics_ui = 1 "default 1
"
""will put icons in Vim's gutter on lines that have a diagnostic set.
"Turning this off will also turn off the YcmErrorLine and YcmWarningLine
""highlighting
set tags=./tags,tags;
set autochdir
let g:ycm_enable_diagnostic_signs = 1
let g:ycm_enable_diagnostic_highlighting = 1
let g:ycm_always_populate_location_list = 1 "default 0
let g:ycm_open_loclist_on_ycm_diags = 1 "default 1
let g:ycm_seed_identifiers_with_syntax = 1
let g:ycm_complete_in_strings = 1 "default 1
let g:ycm_collect_identifiers_from_tags_files = 1 "default 0
let g:ycm_path_to_python_interpreter = '' "default ''
let g:ycm_server_use_vim_stdout = 0 "default 0 (logging to console)
let g:ycm_server_log_level = 'info' "default info
let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py' "where to search for .ycm_extra_conf.py if not found
let g:ycm_confirm_extra_conf = 1
let g:ycm_goto_buffer_command = 'same-buffer' "[ 'same-buffer', 'horizontal-split', 'vertical-split', 'new-tab' ]
let g:ycm_filetype_whitelist = { '*': 1 }
let g:ycm_key_invoke_completion = '<C-Space>'
nnoremap <F11> :YcmForceCompileAndDiagnostics <CR>
As @FDinoff pointed out, every
.ycm_extra_conf.pyneeds to be tailored for its own project.To give you an example that might help you, here is mine :
.ycm_extra_conf.pyBecause I put all my libs inside a
./libdirectory at the root of my projects, I've made a little script to automatically scan the directories and add the libraries as flags.You can read it line 57:
libDiris defined line 4And here is the original project: Moti
EDIT - 12/02/2014 -
I don't see the
.ycm_extra_conf.pyin your tree output. This file should be at the root of your project.Also you can try using absolute path for your flags.
The output of
:YcmDebugInfoshould look like that : http://pastebin.com/WARSUiMLYou can check my
.vimrcwhere I configure YCM : Link to YCM Conf. Try using mine without yours to see what happens.