YouCompleteMe和Syntastic兼容性?

 深哥和小P孩的美好生活_590 发布于 2023-01-06 20:42

我想要做的是让YouCompleteMe做完成和Syntastic来检查错误,但它看起来不一致.

当YouCompleteMe被禁用时,Synatstic可以正常工作,反之亦然.但是当两者都启用时,完成不起作用,并且合成不会显示任何错误.

我需要什么配置来完成这项工作?

这是我的选择:(注意向下滚动以查看所有选项)

"
" YouCompleteMe options
"

let g:ycm_register_as_syntastic_checker = 1

"YCM 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 = 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 = '' "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 = ''








"
" syntastic settings
"

let g:syntastic_enable_signs = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_always_populate_loc_list = 1


let g:syntastic_cpp_checkers = ['gcc']

let g:syntastic_auto_jump = 1
let g:syntastic_enable_balloons = 1

let g:syntastic_cpp_compiler = 'g++'
let g:syntastic_cpp_compiler_options = '-std=c++11 -Wall -Wextra'



let g:syntastic_cpp_check_header = 1
let g:syntastic_cpp_auto_refresh_includes = 1

"let b:syntastic_cpp_cflags = '-I/home/user/dev/cpp/boost_1_55_0'
let g:syntastic_cpp_include_dirs = [ 
            \ '/opt/boost_1_55_0',
            \ '/opt/cryptopp-5.6.2',
            \ '/opt/llvm_install/include/llvm',
            \ '/opt/llvm_install/include/clang' ]

codekiddy.. 13

这是我修改后的.vimrc版本(仅限YCM设置),以便现在使用这些设置YouCompleteMe可以使用所有功能+我不再需要任何合成功能,因为它不需要,除了只有2,这是自动打开位置列表和自动跳转到错误.

"
" 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 = ''


nnoremap  :YcmForceCompileAndDiagnostics 

我还可以补充一点,为了让YCM完全支持,我从源代码构建了以下内容:

来自源的Vim +构建之前应用到源中的所有最新补丁.从源代码构建的llvm + clang库(最新稳定版).YCM建立了支持新鲜的clang libs.

设置.ycm_extra_conf.py文件也很重要.(旗帜和主要包括)这里是地雷:(如果你想看到它们,请向下滚动)

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'
]

如果您进行GTK +编码,那么此列表可能对您有所帮助.顺便说一句,如果你想知道在包含目录之前系统的意思是什么,这意味着YouCompleteMe(clang/clang ++编译器)现在将显示来自这些标题的警告和错误.(99%的时间都是假阳性)

顺便说一下,使用clang编译器进行Sinastic检查(后台编译),当然,构建它自己可以使用任何编译器类型完成.

谢谢!

1 个回答
  • 这是我修改后的.vimrc版本(仅限YCM设置),以便现在使用这些设置YouCompleteMe可以使用所有功能+我不再需要任何合成功能,因为它不需要,除了只有2,这是自动打开位置列表和自动跳转到错误.

    "
    " 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>
    

    我还可以补充一点,为了让YCM完全支持,我从源代码构建了以下内容:

    来自源的Vim +构建之前应用到源中的所有最新补丁.从源代码构建的llvm + clang库(最新稳定版).YCM建立了支持新鲜的clang libs.

    设置.ycm_extra_conf.py文件也很重要.(旗帜和主要包括)这里是地雷:(如果你想看到它们,请向下滚动)

    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'
    ]
    

    如果您进行GTK +编码,那么此列表可能对您有所帮助.顺便说一句,如果你想知道在包含目录之前系统的意思是什么,这意味着YouCompleteMe(clang/clang ++编译器)现在将显示来自这些标题的警告和错误.(99%的时间都是假阳性)

    顺便说一下,使用clang编译器进行Sinastic检查(后台编译),当然,构建它自己可以使用任何编译器类型完成.

    谢谢!

    2023-01-06 20:46 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有