diff options
11 files changed, 63 insertions, 33 deletions
diff --git a/ale_linters/c/cquery.vim b/ale_linters/c/cquery.vim index 7daf9f76..a20782a2 100644 --- a/ale_linters/c/cquery.vim +++ b/ale_linters/c/cquery.vim @@ -6,6 +6,11 @@ call ale#Set('c_cquery_cache_directory', expand('~/.cache/cquery')) function! ale_linters#c#cquery#GetProjectRoot(buffer) abort let l:project_root = ale#path#FindNearestFile(a:buffer, 'compile_commands.json') + + if empty(l:project_root) + let l:project_root = ale#path#FindNearestFile(a:buffer, '.cquery') + endif + return !empty(l:project_root) ? fnamemodify(l:project_root, ':h') : '' endfunction diff --git a/ale_linters/cpp/cquery.vim b/ale_linters/cpp/cquery.vim index 39eebce3..b1c81989 100644 --- a/ale_linters/cpp/cquery.vim +++ b/ale_linters/cpp/cquery.vim @@ -7,6 +7,10 @@ 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') + if empty(l:project_root) + let l:project_root = ale#path#FindNearestFile(a:buffer, '.cquery') + endif + return !empty(l:project_root) ? fnamemodify(l:project_root, ':h') : '' endfunction diff --git a/ale_linters/javascript/eslint.vim b/ale_linters/javascript/eslint.vim index 5be2377b..23e16949 100644 --- a/ale_linters/javascript/eslint.vim +++ b/ale_linters/javascript/eslint.vim @@ -1,8 +1,6 @@ " Author: w0rp <devw0rp@gmail.com> " Description: eslint for JavaScript files -call ale#handlers#eslint#InitVariables() - call ale#linter#Define('javascript', { \ 'name': 'eslint', \ 'output_stream': 'both', diff --git a/autoload/ale/handlers/eslint.vim b/autoload/ale/handlers/eslint.vim index 9f4f9357..bc10ec21 100644 --- a/autoload/ale/handlers/eslint.vim +++ b/autoload/ale/handlers/eslint.vim @@ -3,15 +3,11 @@ let s:sep = has('win32') ? '\' : '/' -function! ale#handlers#eslint#InitVariables() abort - call ale#Set('javascript_eslint_options', '') - call ale#Set('javascript_eslint_executable', 'eslint') - call ale#Set('javascript_eslint_use_global', get(g:, 'ale_use_global_executables', 0)) - call ale#Set('javascript_eslint_suppress_eslintignore', 0) - call ale#Set('javascript_eslint_suppress_missing_config', 0) -endfunction - -call ale#handlers#eslint#InitVariables() +call ale#Set('javascript_eslint_options', '') +call ale#Set('javascript_eslint_executable', 'eslint') +call ale#Set('javascript_eslint_use_global', get(g:, 'ale_use_global_executables', 0)) +call ale#Set('javascript_eslint_suppress_eslintignore', 0) +call ale#Set('javascript_eslint_suppress_missing_config', 0) function! ale#handlers#eslint#FindConfig(buffer) abort for l:path in ale#path#Upwards(expand('#' . a:buffer . ':p:h')) @@ -46,8 +42,7 @@ function! ale#handlers#eslint#GetCommand(buffer) abort let l:options = ale#Var(a:buffer, 'javascript_eslint_options') - return ale#path#BufferCdString(a:buffer) - \ . ale#node#Executable(a:buffer, l:executable) + return ale#node#Executable(a:buffer, l:executable) \ . (!empty(l:options) ? ' ' . l:options : '') \ . ' -f unix --stdin --stdin-filename %s' endfunction diff --git a/test/command_callback/cquery_paths/with_compile_commands_json/compile_commands.json b/test/command_callback/cquery_paths/with_compile_commands_json/compile_commands.json new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/test/command_callback/cquery_paths/with_compile_commands_json/compile_commands.json diff --git a/test/command_callback/cquery_paths/with_cquery/.cquery b/test/command_callback/cquery_paths/with_cquery/.cquery new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/test/command_callback/cquery_paths/with_cquery/.cquery diff --git a/test/command_callback/test_c_cquery_command_callbacks.vader b/test/command_callback/test_c_cquery_command_callbacks.vader new file mode 100644 index 00000000..13b7a567 --- /dev/null +++ b/test/command_callback/test_c_cquery_command_callbacks.vader @@ -0,0 +1,33 @@ +Before: + call ale#assert#SetUpLinterTest('c', 'cquery') + +After: + call ale#assert#TearDownLinterTest() + +Execute(The project root should be detected correctly using compile_commands.json file): + AssertLSPProject '' + + call ale#test#SetFilename('cquery_paths/with_compile_commands_json/dummy.c') + + AssertLSPProject ale#path#Simplify(g:dir . '/cquery_paths/with_compile_commands_json') + +Execute(The project root should be detected correctly using .cquery file): + AssertLSPProject '' + + call ale#test#SetFilename('cquery_paths/with_cquery/dummy.c') + + AssertLSPProject ale#path#Simplify(g:dir . '/cquery_paths/with_cquery') + +Execute(The executable should be configurable): + AssertLinter 'cquery', ale#Escape('cquery') + + let b:ale_c_cquery_executable = 'foobar' + + AssertLinter 'foobar', ale#Escape('foobar') + +Execute(The cache directory should be configurable): + AssertLSPOptions {'cacheDirectory': expand('$HOME/.cache/cquery')} + + let b:ale_c_cquery_cache_directory = '/foo/bar' + + AssertLSPOptions {'cacheDirectory': '/foo/bar'} diff --git a/test/command_callback/test_cpp_cquery_command_callbacks.vader b/test/command_callback/test_cpp_cquery_command_callbacks.vader index b355d052..682c90d5 100644 --- a/test/command_callback/test_cpp_cquery_command_callbacks.vader +++ b/test/command_callback/test_cpp_cquery_command_callbacks.vader @@ -7,6 +7,20 @@ Before: After: call ale#assert#TearDownLinterTest() +Execute(The project root should be detected correctly using compile_commands.json file): + AssertLSPProject '' + + call ale#test#SetFilename('cquery_paths/with_compile_commands_json/dummy.cpp') + + AssertLSPProject ale#path#Simplify(g:dir . '/cquery_paths/with_compile_commands_json') + +Execute(The project root should be detected correctly using .cquery file): + AssertLSPProject '' + + call ale#test#SetFilename('cquery_paths/with_cquery/dummy.cpp') + + AssertLSPProject ale#path#Simplify(g:dir . '/cquery_paths/with_cquery') + Execute(The executable should be configurable): AssertLinter 'cquery', ale#Escape('cquery') diff --git a/test/command_callback/test_javascript_eslint_command_callback.vader b/test/command_callback/test_javascript_eslint_command_callback.vader deleted file mode 100644 index 9ac8893e..00000000 --- a/test/command_callback/test_javascript_eslint_command_callback.vader +++ /dev/null @@ -1,9 +0,0 @@ -Before: - call ale#assert#SetUpLinterTest('javascript', 'eslint') - -After: - call ale#assert#TearDownLinterTest() - -Execute(The default command should be correct): - AssertLinter 'eslint', 'cd ' . ale#Escape(g:dir) . ' && ' - \ . ale#Escape('eslint') . ' -f unix --stdin --stdin-filename %s' diff --git a/test/command_callback/test_typescript_eslint_command_callback.vader b/test/command_callback/test_typescript_eslint_command_callback.vader deleted file mode 100644 index 7a52a75b..00000000 --- a/test/command_callback/test_typescript_eslint_command_callback.vader +++ /dev/null @@ -1,9 +0,0 @@ -Before: - call ale#assert#SetUpLinterTest('typescript', 'eslint') - -After: - call ale#assert#TearDownLinterTest() - -Execute(The default command should be correct): - AssertLinter 'eslint', 'cd ' . ale#Escape(g:dir) . ' && ' - \ . ale#Escape('eslint') . ' -f unix --stdin --stdin-filename %s' diff --git a/test/test_eslint_executable_detection.vader b/test/test_eslint_executable_detection.vader index 7b0329ea..c1438ed8 100644 --- a/test/test_eslint_executable_detection.vader +++ b/test/test_eslint_executable_detection.vader @@ -58,8 +58,7 @@ Execute(eslint.js executables should be run with node on Windows): " We have to execute the file with node. AssertEqual - \ 'cd ' . ale#Escape(ale#path#Simplify(g:dir . '/eslint-test-files/react-app/subdir')) . ' && ' - \ . ale#Escape('node.exe') . ' ' + \ ale#Escape('node.exe') . ' ' \ . ale#Escape(ale#path#Simplify(g:dir . '/eslint-test-files/react-app/node_modules/eslint/bin/eslint.js')) \ . ' -f unix --stdin --stdin-filename %s', \ ale#handlers#eslint#GetCommand(bufnr('')) |