diff options
author | w0rp <devw0rp@gmail.com> | 2017-08-31 13:12:24 +0100 |
---|---|---|
committer | w0rp <devw0rp@gmail.com> | 2017-08-31 13:12:24 +0100 |
commit | 7c2a5052a850a6e7df10c2b4f84fd5b343175d8d (patch) | |
tree | 97225111667373635892128784b34cd854379cdd /autoload | |
parent | 1d86a724f2f54212d1230fcb2195220f5b3727f9 (diff) | |
download | ale-7c2a5052a850a6e7df10c2b4f84fd5b343175d8d.zip |
Fix #895 - Run Node.js scripts with node.exe instead of node on Windows
Diffstat (limited to 'autoload')
-rw-r--r-- | autoload/ale/fixers/eslint.vim | 10 | ||||
-rw-r--r-- | autoload/ale/fixers/standard.vim | 10 | ||||
-rw-r--r-- | autoload/ale/fixers/stylelint.vim | 10 | ||||
-rw-r--r-- | autoload/ale/handlers/eslint.vim | 10 | ||||
-rw-r--r-- | autoload/ale/node.vim | 20 |
5 files changed, 24 insertions, 36 deletions
diff --git a/autoload/ale/fixers/eslint.vim b/autoload/ale/fixers/eslint.vim index ce65c482..892b30d3 100644 --- a/autoload/ale/fixers/eslint.vim +++ b/autoload/ale/fixers/eslint.vim @@ -28,16 +28,8 @@ function! ale#fixers#eslint#Fix(buffer) abort return 0 endif - if ale#Has('win32') && l:executable =~? 'eslint\.js$' - " For Windows, if we detect an eslint.js script, we need to execute - " it with node, or the file can be opened with a text editor. - let l:head = 'node ' . ale#Escape(l:executable) - else - let l:head = ale#Escape(l:executable) - endif - return { - \ 'command': l:head + \ 'command': ale#node#Executable(a:buffer, l:executable) \ . ' --config ' . ale#Escape(l:config) \ . ' --fix %t', \ 'read_temporary_file': 1, diff --git a/autoload/ale/fixers/standard.vim b/autoload/ale/fixers/standard.vim index 6a0c6b65..443560ed 100644 --- a/autoload/ale/fixers/standard.vim +++ b/autoload/ale/fixers/standard.vim @@ -11,16 +11,8 @@ endfunction function! ale#fixers#standard#Fix(buffer) abort let l:executable = ale#fixers#standard#GetExecutable(a:buffer) - if ale#Has('win32') && l:executable =~? 'cmd\.js$' - " For Windows, if we detect an standard.js script, we need to execute - " it with node, or the file can be opened with a text editor. - let l:head = 'node ' . ale#Escape(l:executable) - else - let l:head = ale#Escape(l:executable) - endif - return { - \ 'command': l:head + \ 'command': ale#node#Executable(a:buffer, l:executable) \ . ' --fix %t', \ 'read_temporary_file': 1, \} diff --git a/autoload/ale/fixers/stylelint.vim b/autoload/ale/fixers/stylelint.vim index 7d5abb73..899fcf4e 100644 --- a/autoload/ale/fixers/stylelint.vim +++ b/autoload/ale/fixers/stylelint.vim @@ -15,16 +15,8 @@ endfunction function! ale#fixers#stylelint#Fix(buffer) abort let l:executable = ale#fixers#stylelint#GetExecutable(a:buffer) - if ale#Has('win32') && l:executable =~? 'stylelint\.js$' - " For Windows, if we detect an stylelint.js script, we need to execute - " it with node, or the file can be opened with a text editor. - let l:head = 'node ' . ale#Escape(l:executable) - else - let l:head = ale#Escape(l:executable) - endif - return { - \ 'command': l:head + \ 'command': ale#node#Executable(a:buffer, l:executable) \ . ' --fix %t', \ 'read_temporary_file': 1, \} diff --git a/autoload/ale/handlers/eslint.vim b/autoload/ale/handlers/eslint.vim index 6c5d75c0..4ef74892 100644 --- a/autoload/ale/handlers/eslint.vim +++ b/autoload/ale/handlers/eslint.vim @@ -17,17 +17,9 @@ endfunction function! ale#handlers#eslint#GetCommand(buffer) abort let l:executable = ale#handlers#eslint#GetExecutable(a:buffer) - if ale#Has('win32') && l:executable =~? 'eslint\.js$' - " For Windows, if we detect an eslint.js script, we need to execute - " it with node, or the file can be opened with a text editor. - let l:head = 'node ' . ale#Escape(l:executable) - else - let l:head = ale#Escape(l:executable) - endif - let l:options = ale#Var(a:buffer, 'javascript_eslint_options') - return l:head + return ale#node#Executable(a:buffer, l:executable) \ . (!empty(l:options) ? ' ' . l:options : '') \ . ' -f unix --stdin --stdin-filename %s' endfunction diff --git a/autoload/ale/node.vim b/autoload/ale/node.vim index 54b53fb9..f75280b7 100644 --- a/autoload/ale/node.vim +++ b/autoload/ale/node.vim @@ -1,6 +1,8 @@ " Author: w0rp <devw0rp@gmail.com> " Description: Functions for working with Node executables. +call ale#Set('windows_node_executable_path', 'node.exe') + " Given a buffer number, a base variable name, and a list of paths to search " for in ancestor directories, detect the executable path for a Node program. " @@ -20,3 +22,21 @@ function! ale#node#FindExecutable(buffer, base_var_name, path_list) abort return ale#Var(a:buffer, a:base_var_name . '_executable') endfunction + +" Create a executable string which executes a Node.js script command with a +" Node.js executable if needed. +" +" The executable string should not be escaped before passing it to this +" function, the executable string will be escaped when returned by this +" function. +" +" The executable is only prefixed for Windows machines +function! ale#node#Executable(buffer, executable) abort + if ale#Has('win32') && a:executable =~? '\.js$' + let l:node = ale#Var(a:buffer, 'windows_node_executable_path') + + return ale#Escape(l:node) . ' ' . ale#Escape(a:executable) + endif + + return ale#Escape(a:executable) +endfunction |