summaryrefslogtreecommitdiff
path: root/autoload
diff options
context:
space:
mode:
authorw0rp <devw0rp@gmail.com>2017-08-31 13:12:24 +0100
committerw0rp <devw0rp@gmail.com>2017-08-31 13:12:24 +0100
commit7c2a5052a850a6e7df10c2b4f84fd5b343175d8d (patch)
tree97225111667373635892128784b34cd854379cdd /autoload
parent1d86a724f2f54212d1230fcb2195220f5b3727f9 (diff)
downloadale-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.vim10
-rw-r--r--autoload/ale/fixers/standard.vim10
-rw-r--r--autoload/ale/fixers/stylelint.vim10
-rw-r--r--autoload/ale/handlers/eslint.vim10
-rw-r--r--autoload/ale/node.vim20
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