YouCompleteMe and Syntastic compatibility?

后端 未结 1 1103
予麋鹿
予麋鹿 2021-02-06 02:17

What I want to do is to have YouCompleteMe do completions and Syntastic to check for errors but it looks that doesn\'t go together.

When YouCompleteMe is disabled then S

相关标签:
1条回答
  • 2021-02-06 03:10

    Here is my modified version of .vimrc (only YCM settings) file so that now with these settings YouCompleteMe works with all the features + I do not need any of syntastic features any more since it's not needed, except only 2, and that's auto opening of location list and auto jumping to the 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's 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 may also add that in order to make YCM work with full support, I built following from source:

    Vim from source + all the latest patches applied into the source before the build. llvm + clang libraries (latest stable) built from source. YCM built with support againt fresh clang libs.

    Also it's important to setup your .ycm_extra_conf.py file. (flags and includes mainly) here are mines: (scrol 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 do GTK+ coding then this list may be of help to you. btw, if you wonder what does -isystem mean right before include dir, it means that YouCompleteMe (clang/clang++ compiler) will now show warnings and errors from these headers. (which are false positive 99% of the time)

    btw, Sinastic checking is done with clang compiler (background compiling) while building it self can be done with any compiler kind, of course.

    Thanks!

    0 讨论(0)
提交回复
热议问题