diff options
-rw-r--r-- | autoload/ale/handlers/eslint.vim | 25 | ||||
-rw-r--r-- | test/eslint-test-files/app-with-eslint-d/node_modules/.bin/eslint_d | 0 | ||||
-rw-r--r-- | test/test_eslint_executable_detection.vader | 17 |
3 files changed, 25 insertions, 17 deletions
diff --git a/autoload/ale/handlers/eslint.vim b/autoload/ale/handlers/eslint.vim index eb7459be..17852119 100644 --- a/autoload/ale/handlers/eslint.vim +++ b/autoload/ale/handlers/eslint.vim @@ -9,22 +9,21 @@ function! ale#handlers#eslint#GetExecutable(buffer) abort return ale#Var(a:buffer, 'javascript_eslint_executable') endif - " Look for the kinds of paths that create-react-app generates first. - let l:executable = ale#path#ResolveLocalPath( - \ a:buffer, + " Look for eslint_d first, then the path React uses, then the basic + " eslint path. + for l:path in [ + \ 'node_modules/.bin/eslint_d', \ 'node_modules/eslint/bin/eslint.js', - \ '' - \) + \ 'node_modules/.bin/eslint', + \] + let l:executable = ale#path#FindNearestFile(a:buffer, l:path) - if !empty(l:executable) - return l:executable - endif + if !empty(l:executable) + return l:executable + endif + endfor - return ale#path#ResolveLocalPath( - \ a:buffer, - \ 'node_modules/.bin/eslint', - \ ale#Var(a:buffer, 'javascript_eslint_executable') - \) + return ale#Var(a:buffer, 'javascript_eslint_executable') endfunction function! s:FindConfig(buffer) abort diff --git a/test/eslint-test-files/app-with-eslint-d/node_modules/.bin/eslint_d b/test/eslint-test-files/app-with-eslint-d/node_modules/.bin/eslint_d new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/test/eslint-test-files/app-with-eslint-d/node_modules/.bin/eslint_d diff --git a/test/test_eslint_executable_detection.vader b/test/test_eslint_executable_detection.vader index 03bb89e8..254150a9 100644 --- a/test/test_eslint_executable_detection.vader +++ b/test/test_eslint_executable_detection.vader @@ -16,7 +16,7 @@ After: call ale#linter#Reset() Execute(create-react-app directories should be detected correctly): - new eslint-test-files/react-app/subdir/testfile.js + silent noautocmd new eslint-test-files/react-app/subdir/testfile.js AssertEqual \ g:dir . '/eslint-test-files/react-app/node_modules/eslint/bin/eslint.js', @@ -27,7 +27,7 @@ Execute(create-react-app directories should be detected correctly): Execute(use-global should override create-react-app detection): let g:ale_javascript_eslint_use_global = 1 - new eslint-test-files/react-app/subdir/testfile.js + silent noautocmd new eslint-test-files/react-app/subdir/testfile.js AssertEqual \ 'eslint_d', @@ -36,7 +36,7 @@ Execute(use-global should override create-react-app detection): :q Execute(other app directories should be detected correctly): - new eslint-test-files/other-app/subdir/testfile.js + silent noautocmd new eslint-test-files/other-app/subdir/testfile.js AssertEqual \ g:dir . '/eslint-test-files/node_modules/.bin/eslint', @@ -47,10 +47,19 @@ Execute(other app directories should be detected correctly): Execute(use-global should override other app directories): let g:ale_javascript_eslint_use_global = 1 - new eslint-test-files/other-app/subdir/testfile.js + silent noautocmd new eslint-test-files/other-app/subdir/testfile.js AssertEqual \ 'eslint_d', \ ale#handlers#eslint#GetExecutable(bufnr('')) :q + +Execute(eslint_d should be detected correctly): + silent noautocmd new eslint-test-files/app-with-eslint-d/testfile.js + + AssertEqual + \ g:dir . '/eslint-test-files/app-with-eslint-d/node_modules/.bin/eslint_d', + \ ale#handlers#eslint#GetExecutable(bufnr('')) + + :q |