From 618f2d71fcfb13b99f221de6c47120c572a912d8 Mon Sep 17 00:00:00 2001 From: Murfalo Date: Thu, 3 Oct 2019 13:17:17 -0400 Subject: Added automatic compile-commands-dir arg to ale_cpp_clangd linter --- ale_linters/cpp/clangd.vim | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ale_linters/cpp/clangd.vim b/ale_linters/cpp/clangd.vim index fab605f4..8b7f0284 100644 --- a/ale_linters/cpp/clangd.vim +++ b/ale_linters/cpp/clangd.vim @@ -5,7 +5,11 @@ call ale#Set('cpp_clangd_executable', 'clangd') call ale#Set('cpp_clangd_options', '') function! ale_linters#cpp#clangd#GetCommand(buffer) abort - return '%e' . ale#Pad(ale#Var(a:buffer, 'cpp_clangd_options')) + let l:build_dir = ale#c#GetBuildDirectory(a:buffer) + + return '%e' + \ . ale#Pad(ale#Var(a:buffer, 'cpp_clangd_options')) + \ . (!empty(l:build_dir) ? ' -compile-commands-dir=' . ale#Escape(l:build_dir) : '') endfunction call ale#linter#Define('cpp', { -- cgit v1.2.3 From 35f51221f1519c591a6d26a8d8acd12388deab50 Mon Sep 17 00:00:00 2001 From: Murfalo Date: Wed, 9 Oct 2019 13:30:10 -0400 Subject: Updated ale_linters/c/clangd.vim to match ale_linters/cpp/clangd.vim --- ale_linters/c/clangd.vim | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ale_linters/c/clangd.vim b/ale_linters/c/clangd.vim index 79b600fa..5ca30973 100644 --- a/ale_linters/c/clangd.vim +++ b/ale_linters/c/clangd.vim @@ -5,7 +5,11 @@ call ale#Set('c_clangd_executable', 'clangd') call ale#Set('c_clangd_options', '') function! ale_linters#c#clangd#GetCommand(buffer) abort - return '%e' . ale#Pad(ale#Var(a:buffer, 'c_clangd_options')) + let l:build_dir = ale#c#GetBuildDirectory(a:buffer) + + return '%e' + \ . ale#Pad(ale#Var(a:buffer, 'c_clangd_options')) + \ . (!empty(l:build_dir) ? ' -compile-commands-dir=' . ale#Escape(l:build_dir) : '') endfunction call ale#linter#Define('c', { -- cgit v1.2.3 From a62f26434ac68eaddea7642201ddf0335e91d384 Mon Sep 17 00:00:00 2001 From: Murfalo Date: Wed, 9 Oct 2019 13:40:04 -0400 Subject: Added tests for clangd compile commands dectection --- ale_linters/c/clangd.vim | 1 + ale_linters/cpp/clangd.vim | 1 + test/command_callback/clangd_paths/compile_commands.json | 0 .../unusual_build_dir_name/compile_commands.json | 0 .../with_compile_commands/compile_commands.json | 0 .../test_c_clangd_command_callbacks.vader | 16 ++++++++++++++-- 6 files changed, 16 insertions(+), 2 deletions(-) delete mode 100644 test/command_callback/clangd_paths/compile_commands.json create mode 100644 test/command_callback/clangd_paths/with_build_dir/unusual_build_dir_name/compile_commands.json create mode 100644 test/command_callback/clangd_paths/with_compile_commands/compile_commands.json diff --git a/ale_linters/c/clangd.vim b/ale_linters/c/clangd.vim index 5ca30973..c42d4497 100644 --- a/ale_linters/c/clangd.vim +++ b/ale_linters/c/clangd.vim @@ -3,6 +3,7 @@ call ale#Set('c_clangd_executable', 'clangd') call ale#Set('c_clangd_options', '') +call ale#Set('c_build_dir', '') function! ale_linters#c#clangd#GetCommand(buffer) abort let l:build_dir = ale#c#GetBuildDirectory(a:buffer) diff --git a/ale_linters/cpp/clangd.vim b/ale_linters/cpp/clangd.vim index 8b7f0284..14f3fe55 100644 --- a/ale_linters/cpp/clangd.vim +++ b/ale_linters/cpp/clangd.vim @@ -3,6 +3,7 @@ call ale#Set('cpp_clangd_executable', 'clangd') call ale#Set('cpp_clangd_options', '') +call ale#Set('c_build_dir', '') function! ale_linters#cpp#clangd#GetCommand(buffer) abort let l:build_dir = ale#c#GetBuildDirectory(a:buffer) diff --git a/test/command_callback/clangd_paths/compile_commands.json b/test/command_callback/clangd_paths/compile_commands.json deleted file mode 100644 index e69de29b..00000000 diff --git a/test/command_callback/clangd_paths/with_build_dir/unusual_build_dir_name/compile_commands.json b/test/command_callback/clangd_paths/with_build_dir/unusual_build_dir_name/compile_commands.json new file mode 100644 index 00000000..e69de29b diff --git a/test/command_callback/clangd_paths/with_compile_commands/compile_commands.json b/test/command_callback/clangd_paths/with_compile_commands/compile_commands.json new file mode 100644 index 00000000..e69de29b diff --git a/test/command_callback/test_c_clangd_command_callbacks.vader b/test/command_callback/test_c_clangd_command_callbacks.vader index dc52097d..67f801db 100644 --- a/test/command_callback/test_c_clangd_command_callbacks.vader +++ b/test/command_callback/test_c_clangd_command_callbacks.vader @@ -18,9 +18,9 @@ Execute(The project root should be detected correctly): AssertLSPProject '' - call ale#test#SetFilename('clangd_paths/dummy.c') + call ale#test#SetFilename('clangd_paths/with_compile_commands/dummy.c') - AssertLSPProject ale#path#Simplify(g:dir . '/clangd_paths') + AssertLSPProject ale#path#Simplify(g:dir . '/clangd_paths/with_compile_commands') Execute(The executable should be configurable): let g:ale_c_clangd_executable = 'foobar' @@ -32,3 +32,15 @@ Execute(The options should be configurable): AssertLinter 'clangd', ale#Escape('clangd') . ' ' . b:ale_c_clangd_options +Execute(The compile command database should be detected correctly): + call ale#test#SetFilename('clangd_paths/with_build_dir/dummy_src/dummy.c') + + let b:ale_c_clangd_options = '' + let b:ale_c_build_dir = '' + let b:ale_c_build_dir_names = ['unusual_build_dir_name'] + let b:ale_c_parse_compile_commands = 1 + + AssertLinter 'clangd', ale#Escape('clangd') + \ . ' -compile-commands-dir=' + \ . ale#Escape(g:dir . '/clangd_paths/with_build_dir/unusual_build_dir_name') + -- cgit v1.2.3 From d488198c9c1491cff1c93b0163ecd1ff20e4dae5 Mon Sep 17 00:00:00 2001 From: Murfalo Date: Wed, 9 Oct 2019 13:52:17 -0400 Subject: Hopefully fixed issue with Windows paths --- test/command_callback/test_c_clangd_command_callbacks.vader | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/command_callback/test_c_clangd_command_callbacks.vader b/test/command_callback/test_c_clangd_command_callbacks.vader index 67f801db..64aa8f13 100644 --- a/test/command_callback/test_c_clangd_command_callbacks.vader +++ b/test/command_callback/test_c_clangd_command_callbacks.vader @@ -42,5 +42,5 @@ Execute(The compile command database should be detected correctly): AssertLinter 'clangd', ale#Escape('clangd') \ . ' -compile-commands-dir=' - \ . ale#Escape(g:dir . '/clangd_paths/with_build_dir/unusual_build_dir_name') + \ . ale#Escape(ale#path#Simplify(g:dir . '/clangd_paths/with_build_dir/unusual_build_dir_name')) -- cgit v1.2.3 From a1fab5981120a71355924b0d51d6b17423e7319f Mon Sep 17 00:00:00 2001 From: Murfalo Date: Wed, 9 Oct 2019 14:24:41 -0400 Subject: Suboptimal fix to prevent variables from leaking out of new clangd test --- test/command_callback/test_c_clangd_command_callbacks.vader | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/command_callback/test_c_clangd_command_callbacks.vader b/test/command_callback/test_c_clangd_command_callbacks.vader index 64aa8f13..753dc9a8 100644 --- a/test/command_callback/test_c_clangd_command_callbacks.vader +++ b/test/command_callback/test_c_clangd_command_callbacks.vader @@ -4,6 +4,11 @@ Before: Save &filetype let &filetype = 'c' + Save b:ale_c_clangd_options + Save b:ale_c_build_dir + Save b:ale_c_build_dir_names + Save b:ale_c_parse_compile_commands + After: call ale#assert#TearDownLinterTest() -- cgit v1.2.3