vim 如何检查ALE是否找到compile_commands.json文件?

gopyfrb3  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(158)

我使用neovim与ALE插件的linting。
我想根据ALE是否找到要使用的compile_commands.json文件来不同地设置g:ale_c_cc_options变量。如果它找到了该文件,我想让它运行g:ale_c_cc_options = '',这样它就只使用文件中定义的标志。然后,如果它找不到该文件,我想让它使用g:ale_c_cc_option = '-ansi -pedantic -Wall'作为默认选项。
是否有任何方法可以检查ALE是否使用vimscript成功找到compile_commands.json文件?
类似的东西,可能吗?

if g:ale_found_compile_commands_file
    let g:ale_c_cc_options = ''
else
    let g:ale_c_cc_options = '-ansi -pedantic -Wall'
endif

字符串
我检查了:help ale-c-options手册页,它提到了g:ale_c_parse_compile_commands,以便尝试查找compile_commands.json文件,但我没有看到任何方法来检查它是否成功?

mwyxok5s

mwyxok5s1#

浏览ALE的源代码,发现他们使用ale#c#FindCompileCommands函数来获取compile_commands.json文件。如果找不到文件,该函数将返回['',''],所以如果我们检查返回值,我们可以判断ALE是否找到了文件。
使用该函数的示例实现可能类似于以下内容

function s:apply_cc_options (buffer)
    let [l:root, l:json_file] = ale#c#FindCompileCommands(a:buffer)

    if l:json_file==''
        let g:ale_c_cc_options = '-ansi -pedantic -Wall'
    else
        let g:ale_c_cc_options = ''
    endif

endfunction

autocmd BufReadPost * call s:apply_cc_options(bufnr(''))

字符串

相关问题