diff options
author | w0rp <devw0rp@gmail.com> | 2019-05-20 19:57:08 +0100 |
---|---|---|
committer | w0rp <devw0rp@gmail.com> | 2019-05-20 19:57:08 +0100 |
commit | 143af2b9fd78dbfd5ee8ae727a522dd2dcc79b61 (patch) | |
tree | 2c44b311a5f127cba4654ff4f9a1e450d55f365a /ale_linters/cpp | |
parent | 781bf1502f78f7882347a70b587512a0e94ea380 (diff) | |
download | ale-143af2b9fd78dbfd5ee8ae727a522dd2dcc79b61.zip |
Fix #2421 - Use compile_commands.json in build dirs to find roots
Diffstat (limited to 'ale_linters/cpp')
-rw-r--r-- | ale_linters/cpp/clangcheck.vim | 3 | ||||
-rw-r--r-- | ale_linters/cpp/clangd.vim | 8 | ||||
-rw-r--r-- | ale_linters/cpp/cquery.vim | 10 |
3 files changed, 9 insertions, 12 deletions
diff --git a/ale_linters/cpp/clangcheck.vim b/ale_linters/cpp/clangcheck.vim index b511a413..7d32a57c 100644 --- a/ale_linters/cpp/clangcheck.vim +++ b/ale_linters/cpp/clangcheck.vim @@ -12,7 +12,8 @@ function! ale_linters#cpp#clangcheck#GetCommand(buffer) abort let l:build_dir = ale#Var(a:buffer, 'c_build_dir') if empty(l:build_dir) - let l:build_dir = ale#path#Dirname(ale#c#FindCompileCommands(a:buffer)) + let [l:root, l:json_file] = ale#c#FindCompileCommands(a:buffer) + let l:build_dir = ale#path#Dirname(l:json_file) endif " The extra arguments in the command are used to prevent .plist files from diff --git a/ale_linters/cpp/clangd.vim b/ale_linters/cpp/clangd.vim index 4a8ff4f6..fab605f4 100644 --- a/ale_linters/cpp/clangd.vim +++ b/ale_linters/cpp/clangd.vim @@ -4,12 +4,6 @@ call ale#Set('cpp_clangd_executable', 'clangd') call ale#Set('cpp_clangd_options', '') -function! ale_linters#cpp#clangd#GetProjectRoot(buffer) abort - let l:project_root = ale#path#FindNearestFile(a:buffer, 'compile_commands.json') - - return !empty(l:project_root) ? fnamemodify(l:project_root, ':h') : '' -endfunction - function! ale_linters#cpp#clangd#GetCommand(buffer) abort return '%e' . ale#Pad(ale#Var(a:buffer, 'cpp_clangd_options')) endfunction @@ -19,5 +13,5 @@ call ale#linter#Define('cpp', { \ 'lsp': 'stdio', \ 'executable': {b -> ale#Var(b, 'cpp_clangd_executable')}, \ 'command': function('ale_linters#cpp#clangd#GetCommand'), -\ 'project_root': function('ale_linters#cpp#clangd#GetProjectRoot'), +\ 'project_root': function('ale#c#FindProjectRoot'), \}) diff --git a/ale_linters/cpp/cquery.vim b/ale_linters/cpp/cquery.vim index 0dd9f6ad..2971cdcb 100644 --- a/ale_linters/cpp/cquery.vim +++ b/ale_linters/cpp/cquery.vim @@ -5,13 +5,15 @@ call ale#Set('cpp_cquery_executable', 'cquery') call ale#Set('cpp_cquery_cache_directory', expand('~/.cache/cquery')) function! ale_linters#cpp#cquery#GetProjectRoot(buffer) abort - let l:project_root = ale#path#FindNearestFile(a:buffer, 'compile_commands.json') + " Try to find cquery configuration files first. + let l:config = ale#path#FindNearestFile(a:buffer, '.cquery') - if empty(l:project_root) - let l:project_root = ale#path#FindNearestFile(a:buffer, '.cquery') + if !empty(l:config) + return fnamemodify(l:config, ':h') endif - return !empty(l:project_root) ? fnamemodify(l:project_root, ':h') : '' + " Fall back on default project root detection. + return ale#c#FindProjectRoot(a:buffer) endfunction function! ale_linters#cpp#cquery#GetInitializationOptions(buffer) abort |