summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ale_linters/c/cquery.vim5
-rw-r--r--ale_linters/cpp/cquery.vim4
-rw-r--r--ale_linters/javascript/eslint.vim2
-rw-r--r--autoload/ale/handlers/eslint.vim17
-rw-r--r--test/command_callback/cquery_paths/with_compile_commands_json/compile_commands.json0
-rw-r--r--test/command_callback/cquery_paths/with_cquery/.cquery0
-rw-r--r--test/command_callback/test_c_cquery_command_callbacks.vader33
-rw-r--r--test/command_callback/test_cpp_cquery_command_callbacks.vader14
-rw-r--r--test/command_callback/test_javascript_eslint_command_callback.vader9
-rw-r--r--test/command_callback/test_typescript_eslint_command_callback.vader9
-rw-r--r--test/test_eslint_executable_detection.vader3
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(''))