Here is my modified version of .vimrc (only YCM settings), so now YouCompleteMe works with all functions with these settings + I donβt need any syntax functions anymore, since this is not necessary, except for only 2 and automatic opening of the list of locations and automatic switching to errors.
" " YouCompleteMe options " let g:ycm_register_as_syntastic_checker = 1 "default 1 let g:Show_diagnostics_ui = 1 "default 1 "will put icons in Vim gutter on lines that have a diagnostic set. "Turning this off will also turn off the YcmErrorLine and YcmWarningLine "highlighting let g:ycm_enable_diagnostic_signs = 1 let g:ycm_enable_diagnostic_highlighting = 0 let g:ycm_always_populate_location_list = 1 "default 0 let g:ycm_open_loclist_on_ycm_diags = 1 "default 1 let g:ycm_complete_in_strings = 1 "default 1 let g:ycm_collect_identifiers_from_tags_files = 0 "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>
I can also add that in order for YCM to work with full support, I built the following source:
Vim from source + all the latest fixes applied in the source before assembly. The llvm + clang libraries (latest stable) built from source. YCM is built with support for fresh clang libs again.
It is also important to customize the .ycm_extra_conf.py file. (flags and mainly include) here are the mines: (scroll down if you want to see them all)
flags = [ '-Wall', '-Wextra', '-std=c++11', 'c++', #Standard includes '-isystem', '/usr/include/c++/4.7', #GTK includes '-isystem', '/usr/include/gtk-3.0', '-isystem', '/usr/include/glib-2.0', '-isystem', '/usr/include/glib-2.0/glib', '-isystem', '/usr/lib/i386-linux-gnu/glib-2.0/include', '-isystem', '/usr/include/pango-1.0', '-isystem', '/usr/include/cairo', '-isystem', '/usr/include/gdk-pixbuf-2.0', '-isystem', '/usr/include/atk-1.0', '-isystem', '-I/usr/include/gio-unix-2.0', '-isystem', '-I/usr/include/freetype2', '-isystem', '-I/usr/include/pixman-1', '-isystem', '-I/usr/include/libpng12', #current dir '-I', '.', #custom libraries '-I', '/opt/boost_1_55_0', '-I', '/opt/cryptopp-5.6.2', '-I', '/opt/llvm_install/include' ]
If you use GTK + encoding, this list may help you. By the way, if you are wondering what this system means before turning on dir, it means that YouCompleteMe (the clang / clang ++ compiler) now displays warnings and errors from these headers. (which are false positive in 99% of cases)
btw, the Sinastic check is done using the clang compiler (background compilation), while its creation can be done with any kind of compiler, of course.
Thanks!