summaryrefslogtreecommitdiff
path: root/autoload/ale/linter.vim
diff options
context:
space:
mode:
authorw0rp <devw0rp@gmail.com>2019-02-12 18:05:33 +0000
committerw0rp <devw0rp@gmail.com>2019-02-12 18:05:33 +0000
commit926ad47a49d74c910c610d4a9cedd5c4838d679d (patch)
tree9f86511f8854e9965978092fcb233a34e3516440 /autoload/ale/linter.vim
parentbf196ba17c9e261e4e3a9dba64260c6d0b2c8af9 (diff)
downloadale-926ad47a49d74c910c610d4a9cedd5c4838d679d.zip
#2132 - Implement deferred executable string handling for linters
Diffstat (limited to 'autoload/ale/linter.vim')
-rw-r--r--autoload/ale/linter.vim11
1 files changed, 8 insertions, 3 deletions
diff --git a/autoload/ale/linter.vim b/autoload/ale/linter.vim
index 0b61bad1..86ee506c 100644
--- a/autoload/ale/linter.vim
+++ b/autoload/ale/linter.vim
@@ -120,7 +120,8 @@ function! ale#linter#PreProcess(filetype, linter) abort
let l:obj.executable = a:linter.executable
if type(l:obj.executable) isnot v:t_string
- throw '`executable` must be a string if defined'
+ \&& type(l:obj.executable) isnot v:t_func
+ throw '`executable` must be a String or Function if defined'
endif
else
throw 'Either `executable` or `executable_callback` must be defined'
@@ -476,9 +477,13 @@ endfunction
" Given a buffer and linter, get the executable String for the linter.
function! ale#linter#GetExecutable(buffer, linter) abort
- return has_key(a:linter, 'executable_callback')
- \ ? ale#util#GetFunction(a:linter.executable_callback)(a:buffer)
+ let l:Executable = has_key(a:linter, 'executable_callback')
+ \ ? function(a:linter.executable_callback)
\ : a:linter.executable
+
+ return type(l:Executable) is v:t_func
+ \ ? l:Executable(a:buffer)
+ \ : l:Executable
endfunction
" Given a buffer and linter, get the command String for the linter.