diff options
Diffstat (limited to 'ale_linters')
80 files changed, 268 insertions, 857 deletions
diff --git a/ale_linters/asm/gcc.vim b/ale_linters/asm/gcc.vim index 4ac876f8..fdd0ee83 100644 --- a/ale_linters/asm/gcc.vim +++ b/ale_linters/asm/gcc.vim @@ -4,15 +4,10 @@ call ale#Set('asm_gcc_executable', 'gcc') call ale#Set('asm_gcc_options', '-Wall') -function! ale_linters#asm#gcc#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'asm_gcc_executable') -endfunction - function! ale_linters#asm#gcc#GetCommand(buffer) abort - return ale#Escape(ale_linters#asm#gcc#GetExecutable(a:buffer)) - \ . ' -x assembler -fsyntax-only ' - \ . '-iquote ' . ale#Escape(fnamemodify(bufname(a:buffer), ':p:h')) - \ . ' ' . ale#Var(a:buffer, 'asm_gcc_options') . ' -' + return '%e -x assembler -fsyntax-only ' + \ . '-iquote ' . ale#Escape(fnamemodify(bufname(a:buffer), ':p:h')) + \ . ' ' . ale#Var(a:buffer, 'asm_gcc_options') . ' -' endfunction function! ale_linters#asm#gcc#Handle(buffer, lines) abort @@ -33,7 +28,7 @@ endfunction call ale#linter#Define('asm', { \ 'name': 'gcc', \ 'output_stream': 'stderr', -\ 'executable_callback': 'ale_linters#asm#gcc#GetExecutable', +\ 'executable_callback': ale#VarFunc('asm_gcc_executable'), \ 'command_callback': 'ale_linters#asm#gcc#GetCommand', \ 'callback': 'ale_linters#asm#gcc#Handle', \}) diff --git a/ale_linters/awk/gawk.vim b/ale_linters/awk/gawk.vim index 8b60815f..eb92e45e 100644 --- a/ale_linters/awk/gawk.vim +++ b/ale_linters/awk/gawk.vim @@ -1,29 +1,21 @@ " Author: kmarc <korondi.mark@gmail.com> " Description: This file adds support for using GNU awk with sripts. -let g:ale_awk_gawk_executable = -\ get(g:, 'ale_awk_gawk_executable', 'gawk') - -let g:ale_awk_gawk_options = -\ get(g:, 'ale_awk_gawk_options', '') - -function! ale_linters#awk#gawk#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'awk_gawk_executable') -endfunction +call ale#Set('awk_gawk_executable', 'gawk') +call ale#Set('awk_gawk_options', '') function! ale_linters#awk#gawk#GetCommand(buffer) abort " note the --source 'BEGIN ...' is to prevent " gawk from attempting to execute the body of the script " it is linting. - return ale#Escape(ale_linters#awk#gawk#GetExecutable(a:buffer)) - \ . " --source 'BEGIN { exit } END { exit 1 }'" + return '%e --source ' . ale#Escape('BEGIN { exit } END { exit 1 }') \ . ale#Pad(ale#Var(a:buffer, 'awk_gawk_options')) - \ . ' ' . '-f %t --lint /dev/null' + \ . ' -f %t --lint /dev/null' endfunction call ale#linter#Define('awk', { \ 'name': 'gawk', -\ 'executable_callback': 'ale_linters#awk#gawk#GetExecutable', +\ 'executable_callback': ale#VarFunc('awk_gawk_executable'), \ 'command_callback': 'ale_linters#awk#gawk#GetCommand', \ 'callback': 'ale#handlers#gawk#HandleGawkFormat', \ 'output_stream': 'both' diff --git a/ale_linters/c/clang.vim b/ale_linters/c/clang.vim index 9d49fabb..f1bd675b 100644 --- a/ale_linters/c/clang.vim +++ b/ale_linters/c/clang.vim @@ -4,17 +4,12 @@ call ale#Set('c_clang_executable', 'clang') call ale#Set('c_clang_options', '-std=c11 -Wall') -function! ale_linters#c#clang#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'c_clang_executable') -endfunction - function! ale_linters#c#clang#GetCommand(buffer, output) abort let l:cflags = ale#c#GetCFlags(a:buffer, a:output) " -iquote with the directory the file is in makes #include work for " headers in the same directory. - return ale#Escape(ale_linters#c#clang#GetExecutable(a:buffer)) - \ . ' -S -x c -fsyntax-only' + return '%e -S -x c -fsyntax-only' \ . ' -iquote ' . ale#Escape(fnamemodify(bufname(a:buffer), ':p:h')) \ . ale#Pad(l:cflags) \ . ale#Pad(ale#Var(a:buffer, 'c_clang_options')) . ' -' @@ -23,7 +18,7 @@ endfunction call ale#linter#Define('c', { \ 'name': 'clang', \ 'output_stream': 'stderr', -\ 'executable_callback': 'ale_linters#c#clang#GetExecutable', +\ 'executable_callback': ale#VarFunc('c_clang_executable'), \ 'command_chain': [ \ {'callback': 'ale#c#GetMakeCommand', 'output_stream': 'stdout'}, \ {'callback': 'ale_linters#c#clang#GetCommand'} diff --git a/ale_linters/c/clangd.vim b/ale_linters/c/clangd.vim index 5aa2e221..2c7c5c13 100644 --- a/ale_linters/c/clangd.vim +++ b/ale_linters/c/clangd.vim @@ -9,21 +9,14 @@ function! ale_linters#c#clangd#GetProjectRoot(buffer) abort return !empty(l:project_root) ? fnamemodify(l:project_root, ':h') : '' endfunction -function! ale_linters#c#clangd#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'c_clangd_executable') -endfunction - function! ale_linters#c#clangd#GetCommand(buffer) abort - let l:executable = ale_linters#c#clangd#GetExecutable(a:buffer) - let l:options = ale#Var(a:buffer, 'c_clangd_options') - - return ale#Escape(l:executable) . (!empty(l:options) ? ' ' . l:options : '') + return '%e' . ale#Pad(ale#Var(a:buffer, 'c_clangd_options')) endfunction call ale#linter#Define('c', { \ 'name': 'clangd', \ 'lsp': 'stdio', -\ 'executable_callback': 'ale_linters#c#clangd#GetExecutable', +\ 'executable_callback': ale#VarFunc('c_clangd_executable'), \ 'command_callback': 'ale_linters#c#clangd#GetCommand', \ 'project_root_callback': 'ale_linters#c#clangd#GetProjectRoot', \}) diff --git a/ale_linters/c/clangtidy.vim b/ale_linters/c/clangtidy.vim index d456a5a2..84c103e6 100644 --- a/ale_linters/c/clangtidy.vim +++ b/ale_linters/c/clangtidy.vim @@ -16,10 +16,6 @@ call ale#Set('c_clangtidy_checks', ['*']) call ale#Set('c_clangtidy_options', '') call ale#Set('c_build_dir', '') -function! ale_linters#c#clangtidy#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'c_clangtidy_executable') -endfunction - function! s:GetBuildDirectory(buffer) abort " Don't include build directory for header files, as compile_commands.json " files don't consider headers to be translation units, and provide no @@ -47,7 +43,7 @@ function! ale_linters#c#clangtidy#GetCommand(buffer) abort \ ? ale#Var(a:buffer, 'c_clangtidy_options') \ : '' - return ale#Escape(ale_linters#c#clangtidy#GetExecutable(a:buffer)) + return '%e' \ . (!empty(l:checks) ? ' -checks=' . ale#Escape(l:checks) : '') \ . ' %s' \ . (!empty(l:build_dir) ? ' -p ' . ale#Escape(l:build_dir) : '') @@ -57,7 +53,7 @@ endfunction call ale#linter#Define('c', { \ 'name': 'clangtidy', \ 'output_stream': 'stdout', -\ 'executable_callback': 'ale_linters#c#clangtidy#GetExecutable', +\ 'executable_callback': ale#VarFunc('c_clangtidy_executable'), \ 'command_callback': 'ale_linters#c#clangtidy#GetCommand', \ 'callback': 'ale#handlers#gcc#HandleGCCFormat', \ 'lint_file': 1, diff --git a/ale_linters/c/cppcheck.vim b/ale_linters/c/cppcheck.vim index 4db93f74..5e8c7936 100644 --- a/ale_linters/c/cppcheck.vim +++ b/ale_linters/c/cppcheck.vim @@ -4,10 +4,6 @@ call ale#Set('c_cppcheck_executable', 'cppcheck') call ale#Set('c_cppcheck_options', '--enable=style') -function! ale_linters#c#cppcheck#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'c_cppcheck_executable') -endfunction - function! ale_linters#c#cppcheck#GetCommand(buffer) abort " Search upwards from the file for compile_commands.json. " @@ -23,8 +19,7 @@ function! ale_linters#c#cppcheck#GetCommand(buffer) abort \ : '' return l:cd_command - \ . ale#Escape(ale_linters#c#cppcheck#GetExecutable(a:buffer)) - \ . ' -q --language=c ' + \ . '%e -q --language=c ' \ . l:compile_commands_option \ . ale#Var(a:buffer, 'c_cppcheck_options') \ . ' %t' @@ -33,7 +28,7 @@ endfunction call ale#linter#Define('c', { \ 'name': 'cppcheck', \ 'output_stream': 'both', -\ 'executable_callback': 'ale_linters#c#cppcheck#GetExecutable', +\ 'executable_callback': ale#VarFunc('c_cppcheck_executable'), \ 'command_callback': 'ale_linters#c#cppcheck#GetCommand', \ 'callback': 'ale#handlers#cppcheck#HandleCppCheckFormat', \}) diff --git a/ale_linters/c/cquery.vim b/ale_linters/c/cquery.vim index 208c226f..7daf9f76 100644 --- a/ale_linters/c/cquery.vim +++ b/ale_linters/c/cquery.vim @@ -9,15 +9,6 @@ function! ale_linters#c#cquery#GetProjectRoot(buffer) abort return !empty(l:project_root) ? fnamemodify(l:project_root, ':h') : '' endfunction -function! ale_linters#c#cquery#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'c_cquery_executable') -endfunction - -function! ale_linters#c#cquery#GetCommand(buffer) abort - let l:executable = ale_linters#c#cquery#GetExecutable(a:buffer) - return ale#Escape(l:executable) -endfunction - function! ale_linters#c#cquery#GetInitializationOptions(buffer) abort return {'cacheDirectory': ale#Var(a:buffer, 'c_cquery_cache_directory')} endfunction @@ -25,8 +16,8 @@ endfunction call ale#linter#Define('c', { \ 'name': 'cquery', \ 'lsp': 'stdio', -\ 'executable_callback': 'ale_linters#c#cquery#GetExecutable', -\ 'command_callback': 'ale_linters#c#cquery#GetCommand', +\ 'executable_callback': ale#VarFunc('c_cquery_executable'), +\ 'command': '%e', \ 'project_root_callback': 'ale_linters#c#cquery#GetProjectRoot', \ 'initialization_options_callback': 'ale_linters#c#cquery#GetInitializationOptions', \}) diff --git a/ale_linters/c/flawfinder.vim b/ale_linters/c/flawfinder.vim index df6fbebe..7e1f6769 100644 --- a/ale_linters/c/flawfinder.vim +++ b/ale_linters/c/flawfinder.vim @@ -6,18 +6,12 @@ call ale#Set('c_flawfinder_options', '') call ale#Set('c_flawfinder_minlevel', 1) call ale#Set('c_flawfinder_error_severity', 6) -function! ale_linters#c#flawfinder#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'c_flawfinder_executable') -endfunction - function! ale_linters#c#flawfinder#GetCommand(buffer) abort - " Set the minimum vulnerability level for flawfinder to bother with let l:minlevel = ' --minlevel=' . ale#Var(a:buffer, 'c_flawfinder_minlevel') - return ale#Escape(ale_linters#c#flawfinder#GetExecutable(a:buffer)) - \ . ' -CDQS' - \ . ale#Var(a:buffer, 'c_flawfinder_options') + return '%e -CDQS' + \ . ale#Pad(ale#Var(a:buffer, 'c_flawfinder_options')) \ . l:minlevel \ . ' %t' endfunction @@ -25,7 +19,7 @@ endfunction call ale#linter#Define('c', { \ 'name': 'flawfinder', \ 'output_stream': 'stdout', -\ 'executable_callback': 'ale_linters#c#flawfinder#GetExecutable', +\ 'executable_callback': ale#VarFunc('c_flawfinder_executable'), \ 'command_callback': 'ale_linters#c#flawfinder#GetCommand', \ 'callback': 'ale#handlers#flawfinder#HandleFlawfinderFormat', \}) diff --git a/ale_linters/c/gcc.vim b/ale_linters/c/gcc.vim index e2dff65d..60ecb712 100644 --- a/ale_linters/c/gcc.vim +++ b/ale_linters/c/gcc.vim @@ -4,17 +4,12 @@ call ale#Set('c_gcc_executable', 'gcc') call ale#Set('c_gcc_options', '-std=c11 -Wall') -function! ale_linters#c#gcc#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'c_gcc_executable') -endfunction - function! ale_linters#c#gcc#GetCommand(buffer, output) abort let l:cflags = ale#c#GetCFlags(a:buffer, a:output) " -iquote with the directory the file is in makes #include work for " headers in the same directory. - return ale#Escape(ale_linters#c#gcc#GetExecutable(a:buffer)) - \ . ' -S -x c -fsyntax-only' + return '%e -S -x c -fsyntax-only' \ . ' -iquote ' . ale#Escape(fnamemodify(bufname(a:buffer), ':p:h')) \ . ale#Pad(l:cflags) \ . ale#Pad(ale#Var(a:buffer, 'c_gcc_options')) . ' -' @@ -23,7 +18,7 @@ endfunction call ale#linter#Define('c', { \ 'name': 'gcc', \ 'output_stream': 'stderr', -\ 'executable_callback': 'ale_linters#c#gcc#GetExecutable', +\ 'executable_callback': ale#VarFunc('c_gcc_executable'), \ 'command_chain': [ \ {'callback': 'ale#c#GetMakeCommand', 'output_stream': 'stdout'}, \ {'callback': 'ale_linters#c#gcc#GetCommand'} diff --git a/ale_linters/chef/foodcritic.vim b/ale_linters/chef/foodcritic.vim index 2c28246c..c86336d6 100644 --- a/ale_linters/chef/foodcritic.vim +++ b/ale_linters/chef/foodcritic.vim @@ -6,17 +6,10 @@ call ale#Set('chef_foodcritic_executable', 'foodcritic') call ale#Set('chef_foodcritic_options', '') -function! ale_linters#chef#foodcritic#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'chef_foodcritic_executable') -endfunction - function! ale_linters#chef#foodcritic#GetCommand(buffer) abort - let l:executable = ale_linters#chef#foodcritic#GetExecutable(a:buffer) let l:options = ale#Var(a:buffer, 'chef_foodcritic_options') - return ale#Escape(l:executable) - \ . (!empty(l:options) ? ' ' . escape(l:options, '~') : '') - \ . ' %s' + return '%e' . ale#Pad(escape(l:options, '~')) . ' %s' endfunction function! ale_linters#chef#foodcritic#Handle(buffer, lines) abort @@ -41,7 +34,7 @@ endfunction call ale#linter#Define('chef', { \ 'name': 'foodcritic', -\ 'executable_callback': 'ale_linters#chef#foodcritic#GetExecutable', +\ 'executable_callback': ale#VarFunc('chef_foodcritic_executable'), \ 'command_callback': 'ale_linters#chef#foodcritic#GetCommand', \ 'callback': 'ale_linters#chef#foodcritic#Handle', \ 'lint_file': 1, diff --git a/ale_linters/cpp/clang.vim b/ale_linters/cpp/clang.vim index 72793a71..649c5993 100644 --- a/ale_linters/cpp/clang.vim +++ b/ale_linters/cpp/clang.vim @@ -4,17 +4,12 @@ call ale#Set('cpp_clang_executable', 'clang++') call ale#Set('cpp_clang_options', '-std=c++14 -Wall') -function! ale_linters#cpp#clang#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'cpp_clang_executable') -endfunction - function! ale_linters#cpp#clang#GetCommand(buffer, output) abort let l:cflags = ale#c#GetCFlags(a:buffer, a:output) " -iquote with the directory the file is in makes #include work for " headers in the same directory. - return ale#Escape(ale_linters#cpp#clang#GetExecutable(a:buffer)) - \ . ' -S -x c++ -fsyntax-only' + return '%e -S -x c++ -fsyntax-only' \ . ' -iquote ' . ale#Escape(fnamemodify(bufname(a:buffer), ':p:h')) \ . ale#Pad(l:cflags) \ . ale#Pad(ale#Var(a:buffer, 'cpp_clang_options')) . ' -' @@ -23,7 +18,7 @@ endfunction call ale#linter#Define('cpp', { \ 'name': 'clang', \ 'output_stream': 'stderr', -\ 'executable_callback': 'ale_linters#cpp#clang#GetExecutable', +\ 'executable_callback': ale#VarFunc('cpp_clang_executable'), \ 'command_chain': [ \ {'callback': 'ale#c#GetMakeCommand', 'output_stream': 'stdout'}, \ {'callback': 'ale_linters#cpp#clang#GetCommand'}, diff --git a/ale_linters/cpp/clangcheck.vim b/ale_linters/cpp/clangcheck.vim index 687991bd..c66d6702 100644 --- a/ale_linters/cpp/clangcheck.vim +++ b/ale_linters/cpp/clangcheck.vim @@ -5,10 +5,6 @@ call ale#Set('cpp_clangcheck_executable', 'clang-check') call ale#Set('cpp_clangcheck_options', '') call ale#Set('c_build_dir', '') -function! ale_linters#cpp#clangcheck#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'cpp_clangcheck_executable') -endfunction - function! ale_linters#cpp#clangcheck#GetCommand(buffer) abort let l:user_options = ale#Var(a:buffer, 'cpp_clangcheck_options') @@ -22,17 +18,16 @@ function! ale_linters#cpp#clangcheck#GetCommand(buffer) abort " The extra arguments in the command are used to prevent .plist files from " being generated. These are only added if no build directory can be " detected. - return ale#Escape(ale_linters#cpp#clangcheck#GetExecutable(a:buffer)) - \ . ' -analyze %s' + return '%e -analyze %s' \ . (empty(l:build_dir) ? ' -extra-arg -Xclang -extra-arg -analyzer-output=text' : '') - \ . (!empty(l:user_options) ? ' ' . l:user_options : '') + \ . ale#Pad(l:user_options) \ . (!empty(l:build_dir) ? ' -p ' . ale#Escape(l:build_dir) : '') endfunction call ale#linter#Define('cpp', { \ 'name': 'clangcheck', \ 'output_stream': 'stderr', -\ 'executable_callback': 'ale_linters#cpp#clangcheck#GetExecutable', +\ 'executable_callback': ale#VarFunc('cpp_clangcheck_executable'), \ 'command_callback': 'ale_linters#cpp#clangcheck#GetCommand', \ 'callback': 'ale#handlers#gcc#HandleGCCFormat', \ 'lint_file': 1, diff --git a/ale_linters/cpp/clangtidy.vim b/ale_linters/cpp/clangtidy.vim index d683327f..930087a8 100644 --- a/ale_linters/cpp/clangtidy.vim +++ b/ale_linters/cpp/clangtidy.vim @@ -10,10 +10,6 @@ call ale#Set('cpp_clangtidy_checks', ['*']) call ale#Set('cpp_clangtidy_options', '') call ale#Set('c_build_dir', '') -function! ale_linters#cpp#clangtidy#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'cpp_clangtidy_executable') -endfunction - function! s:GetBuildDirectory(buffer) abort " Don't include build directory for header files, as compile_commands.json " files don't consider headers to be translation units, and provide no @@ -41,7 +37,7 @@ function! ale_linters#cpp#clangtidy#GetCommand(buffer) abort \ ? ale#Var(a:buffer, 'cpp_clangtidy_options') \ : '' - return ale#Escape(ale_linters#cpp#clangtidy#GetExecutable(a:buffer)) + return '%e' \ . (!empty(l:checks) ? ' -checks=' . ale#Escape(l:checks) : '') \ . ' %s' \ . (!empty(l:build_dir) ? ' -p ' . ale#Escape(l:build_dir) : '') @@ -51,7 +47,7 @@ endfunction call ale#linter#Define('cpp', { \ 'name': 'clangtidy', \ 'output_stream': 'stdout', -\ 'executable_callback': 'ale_linters#cpp#clangtidy#GetExecutable', +\ 'executable_callback': ale#VarFunc('cpp_clangtidy_executable'), \ 'command_callback': 'ale_linters#cpp#clangtidy#GetCommand', \ 'callback': 'ale#handlers#gcc#HandleGCCFormat', \ 'lint_file': 1, diff --git a/ale_linters/cpp/cppcheck.vim b/ale_linters/cpp/cppcheck.vim index 8b2aa802..229d6133 100644 --- a/ale_linters/cpp/cppcheck.vim +++ b/ale_linters/cpp/cppcheck.vim @@ -4,10 +4,6 @@ call ale#Set('cpp_cppcheck_executable', 'cppcheck') call ale#Set('cpp_cppcheck_options', '--enable=style') -function! ale_linters#cpp#cppcheck#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'cpp_cppcheck_executable') -endfunction - function! ale_linters#cpp#cppcheck#GetCommand(buffer) abort " Search upwards from the file for compile_commands.json. " @@ -23,8 +19,7 @@ function! ale_linters#cpp#cppcheck#GetCommand(buffer) abort \ : '' return l:cd_command - \ . ale#Escape(ale_linters#cpp#cppcheck#GetExecutable(a:buffer)) - \ . ' -q --language=c++ ' + \ . '%e -q --language=c++ ' \ . l:compile_commands_option \ . ale#Var(a:buffer, 'cpp_cppcheck_options') \ . ' %t' @@ -33,7 +28,7 @@ endfunction call ale#linter#Define('cpp', { \ 'name': 'cppcheck', \ 'output_stream': 'both', -\ 'executable_callback': 'ale_linters#cpp#cppcheck#GetExecutable', +\ 'executable_callback': ale#VarFunc('cpp_cppcheck_executable'), \ 'command_callback': 'ale_linters#cpp#cppcheck#GetCommand', \ 'callback': 'ale#handlers#cppcheck#HandleCppCheckFormat', \}) diff --git a/ale_linters/cpp/cpplint.vim b/ale_linters/cpp/cpplint.vim index 346ac815..d135fa79 100644 --- a/ale_linters/cpp/cpplint.vim +++ b/ale_linters/cpp/cpplint.vim @@ -4,22 +4,16 @@ call ale#Set('cpp_cpplint_executable', 'cpplint') call ale#Set('cpp_cpplint_options', '') -function! ale_linters#cpp#cpplint#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'cpp_cpplint_executable') -endfunction - function! ale_linters#cpp#cpplint#GetCommand(buffer) abort let l:options = ale#Var(a:buffer, 'cpp_cpplint_options') - return ale#Escape(ale_linters#cpp#cpplint#GetExecutable(a:buffer)) - \ . (!empty(l:options) ? ' ' . l:options : '') - \ . ' %s' + return '%e' . ale#Pad(l:options) . ' %s' endfunction call ale#linter#Define('cpp', { \ 'name': 'cpplint', \ 'output_stream': 'stderr', -\ 'executable_callback': 'ale_linters#cpp#cpplint#GetExecutable', +\ 'executable_callback': ale#VarFunc('cpp_cpplint_executable'), \ 'command_callback': 'ale_linters#cpp#cpplint#GetCommand', \ 'callback': 'ale#handlers#cpplint#HandleCppLintFormat', \ 'lint_file': 1, diff --git a/ale_linters/cpp/cquery.vim b/ale_linters/cpp/cquery.vim index 7997c843..39eebce3 100644 --- a/ale_linters/cpp/cquery.vim +++ b/ale_linters/cpp/cquery.vim @@ -10,15 +10,6 @@ function! ale_linters#cpp#cquery#GetProjectRoot(buffer) abort return !empty(l:project_root) ? fnamemodify(l:project_root, ':h') : '' endfunction -function! ale_linters#cpp#cquery#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'cpp_cquery_executable') -endfunction - -function! ale_linters#cpp#cquery#GetCommand(buffer) abort - let l:executable = ale_linters#cpp#cquery#GetExecutable(a:buffer) - return ale#Escape(l:executable) -endfunction - function! ale_linters#cpp#cquery#GetInitializationOptions(buffer) abort return {'cacheDirectory': ale#Var(a:buffer, 'cpp_cquery_cache_directory')} endfunction @@ -26,8 +17,8 @@ endfunction call ale#linter#Define('cpp', { \ 'name': 'cquery', \ 'lsp': 'stdio', -\ 'executable_callback': 'ale_linters#cpp#cquery#GetExecutable', -\ 'command_callback': 'ale_linters#cpp#cquery#GetCommand', +\ 'executable_callback': ale#VarFunc('cpp_cquery_executable'), +\ 'command': '%e', \ 'project_root_callback': 'ale_linters#cpp#cquery#GetProjectRoot', \ 'initialization_options_callback': 'ale_linters#cpp#cquery#GetInitializationOptions', \}) diff --git a/ale_linters/cpp/flawfinder.vim b/ale_linters/cpp/flawfinder.vim index 5a7092cf..4f669bff 100644 --- a/ale_linters/cpp/flawfinder.vim +++ b/ale_linters/cpp/flawfinder.vim @@ -6,17 +6,11 @@ call ale#Set('cpp_flawfinder_options', '') call ale#Set('cpp_flawfinder_minlevel', 1) call ale#Set('c_flawfinder_error_severity', 6) -function! ale_linters#cpp#flawfinder#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'cpp_flawfinder_executable') -endfunction - function! ale_linters#cpp#flawfinder#GetCommand(buffer) abort - " Set the minimum vulnerability level for flawfinder to bother with let l:minlevel = ' --minlevel=' . ale#Var(a:buffer, 'cpp_flawfinder_minlevel') - return ale#Escape(ale_linters#cpp#flawfinder#GetExecutable(a:buffer)) - \ . ' -CDQS' + return '%e -CDQS' \ . ale#Var(a:buffer, 'cpp_flawfinder_options') \ . l:minlevel \ . ' %t' @@ -25,7 +19,7 @@ endfunction call ale#linter#Define('cpp', { \ 'name': 'flawfinder', \ 'output_stream': 'stdout', -\ 'executable_callback': 'ale_linters#cpp#flawfinder#GetExecutable', +\ 'executable_callback': ale#VarFunc('cpp_flawfinder_executable'), \ 'command_callback': 'ale_linters#cpp#flawfinder#GetCommand', \ 'callback': 'ale#handlers#flawfinder#HandleFlawfinderFormat', \}) diff --git a/ale_linters/cpp/gcc.vim b/ale_linters/cpp/gcc.vim index 17f5acf5..9935b0bb 100644 --- a/ale_linters/cpp/gcc.vim +++ b/ale_linters/cpp/gcc.vim @@ -4,17 +4,12 @@ call ale#Set('cpp_gcc_executable', 'gcc') call ale#Set('cpp_gcc_options', '-std=c++14 -Wall') -function! ale_linters#cpp#gcc#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'cpp_gcc_executable') -endfunction - function! ale_linters#cpp#gcc#GetCommand(buffer, output) abort let l:cflags = ale#c#GetCFlags(a:buffer, a:output) " -iquote with the directory the file is in makes #include work for " headers in the same directory. - return ale#Escape(ale_linters#cpp#gcc#GetExecutable(a:buffer)) - \ . ' -S -x c++ -fsyntax-only' + return '%e -S -x c++ -fsyntax-only' \ . ' -iquote ' . ale#Escape(fnamemodify(bufname(a:buffer), ':p:h')) \ . ale#Pad(l:cflags) \ . ale#Pad(ale#Var(a:buffer, 'cpp_gcc_options')) . ' -' @@ -24,7 +19,7 @@ call ale#linter#Define('cpp', { \ 'name': 'gcc', \ 'aliases': ['g++'], \ 'output_stream': 'stderr', -\ 'executable_callback': 'ale_linters#cpp#gcc#GetExecutable', +\ 'executable_callback': ale#VarFunc('cpp_gcc_executable'), \ 'command_chain': [ \ {'callback': 'ale#c#GetMakeCommand', 'output_stream': 'stdout'}, \ {'callback': 'ale_linters#cpp#gcc#GetCommand'}, diff --git a/ale_linters/css/stylelint.vim b/ale_linters/css/stylelint.vim index a16dfde2..6f8bef68 100644 --- a/ale_linters/css/stylelint.vim +++ b/ale_linters/css/stylelint.vim @@ -4,21 +4,16 @@ call ale#Set('css_stylelint_executable', 'stylelint') call ale#Set('css_stylelint_options', '') call ale#Set('css_stylelint_use_global', get(g:, 'ale_use_global_executables', 0)) -function! ale_linters#css#stylelint#GetExecutable(buffer) abort - return ale#node#FindExecutable(a:buffer, 'css_stylelint', [ - \ 'node_modules/.bin/stylelint', - \]) -endfunction - function! ale_linters#css#stylelint#GetCommand(buffer) abort - return ale_linters#css#stylelint#GetExecutable(a:buffer) - \ . ' ' . ale#Var(a:buffer, 'css_stylelint_options') + return '%e ' . ale#Pad(ale#Var(a:buffer, 'css_stylelint_options')) \ . ' --stdin-filename %s' endfunction call ale#linter#Define('css', { \ 'name': 'stylelint', -\ 'executable_callback': 'ale_linters#css#stylelint#GetExecutable', +\ 'executable_callback': ale#node#FindExecutableFunc('css_stylelint', [ +\ 'node_modules/.bin/stylelint', +\ ]), \ 'command_callback': 'ale_linters#css#stylelint#GetCommand', \ 'callback': 'ale#handlers#css#HandleStyleLintFormat', \}) diff --git a/ale_linters/cuda/nvcc.vim b/ale_linters/cuda/nvcc.vim index 3764fe9d..a3678910 100644 --- a/ale_linters/cuda/nvcc.vim +++ b/ale_linters/cuda/nvcc.vim @@ -4,20 +4,15 @@ call ale#Set('cuda_nvcc_executable', 'nvcc') call ale#Set('cuda_nvcc_options', '-std=c++11') -function! ale_linters#cuda#nvcc#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'cuda_nvcc_executable') -endfunction - function! ale_linters#cuda#nvcc#GetCommand(buffer) abort " Unused: use ale#util#nul_file " let l:output_file = ale#util#Tempname() . '.ii' " call ale#engine#ManageFile(a:buffer, l:output_file) - return ale#Escape(ale_linters#cuda#nvcc#GetExecutable(a:buffer)) - \ . ' -cuda ' - \ . ale#c#IncludeOptions(ale#c#FindLocalHeaderPaths(a:buffer)) - \ . ale#Var(a:buffer, 'cuda_nvcc_options') . ' %s' - \ . ' -o ' . g:ale#util#nul_file + return '%e -cuda' + \ . ale#Pad(ale#c#IncludeOptions(ale#c#FindLocalHeaderPaths(a:buffer))) + \ . ale#Pad(ale#Var(a:buffer, 'cuda_nvcc_options')) + \ . ' %s -o ' . g:ale#util#nul_file endfunction function! ale_linters#cuda#nvcc#HandleNVCCFormat(buffer, lines) abort @@ -49,7 +44,7 @@ endfunction call ale#linter#Define('cuda', { \ 'name': 'nvcc', \ 'output_stream': 'stderr', -\ 'executable_callback': 'ale_linters#cuda#nvcc#GetExecutable', +\ 'executable_callback': ale#VarFunc('cuda_nvcc_executable'), \ 'command_callback': 'ale_linters#cuda#nvcc#GetCommand', \ 'callback': 'ale_linters#cuda#nvcc#HandleNVCCFormat', \ 'lint_file': 1, diff --git a/ale_linters/dart/dartanalyzer.vim b/ale_linters/dart/dartanalyzer.vim index ef33c9d4..26817df5 100644 --- a/ale_linters/dart/dartanalyzer.vim +++ b/ale_linters/dart/dartanalyzer.vim @@ -3,15 +3,10 @@ call ale#Set('dart_dartanalyzer_executable', 'dartanalyzer') -function! ale_linters#dart#dartanalyzer#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'dart_dartanalyzer_executable') -endfunction - function! ale_linters#dart#dartanalyzer#GetCommand(buffer) abort - let l:executable = ale_linters#dart#dartanalyzer#GetExecutable(a:buffer) let l:path = ale#path#FindNearestFile(a:buffer, '.packages') - return ale#Escape(l:executable) + return '%e' \ . (!empty(l:path) ? ' --packages ' . ale#Escape(l:path) : '') \ . ' %s' endfunction @@ -34,7 +29,7 @@ endfunction call ale#linter#Define('dart', { \ 'name': 'dartanalyzer', -\ 'executable_callback': 'ale_linters#dart#dartanalyzer#GetExecutable', +\ 'executable_callback': ale#VarFunc('dart_dartanalyzer_executable'), \ 'command_callback': 'ale_linters#dart#dartanalyzer#GetCommand', \ 'callback': 'ale_linters#dart#dartanalyzer#Handle', \ 'lint_file': 1, diff --git a/ale_linters/dart/language_server.vim b/ale_linters/dart/language_server.vim index 2265e37a..14b6ab93 100644 --- a/ale_linters/dart/language_server.vim +++ b/ale_linters/dart/language_server.vim @@ -3,10 +3,6 @@ call ale#Set('dart_language_server_executable', 'dart_language_server') -function! ale_linters#dart#language_server#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'dart_language_server_executable') -endfunction - function! ale_linters#dart#language_server#GetProjectRoot(buffer) abort " Note: pub only looks for pubspec.yaml, there's no point in adding " support for pubspec.yml @@ -18,7 +14,7 @@ endfunction call ale#linter#Define('dart', { \ 'name': 'language_server', \ 'lsp': 'stdio', -\ 'executable_callback': 'ale_linters#dart#language_server#GetExecutable', +\ 'executable_callback': ale#VarFunc('dart_language_server_executable'), \ 'command_callback': 'ale_linters#dart#language_server#GetExecutable', \ 'project_root_callback': 'ale_linters#dart#language_server#GetProjectRoot', \}) diff --git a/ale_linters/elm/make.vim b/ale_linters/elm/make.vim index 8231ad47..ddea983f 100644 --- a/ale_linters/elm/make.vim +++ b/ale_linters/elm/make.vim @@ -4,12 +4,6 @@ call ale#Set('elm_make_executable', 'elm') call ale#Set('elm_make_use_global', get(g:, 'ale_use_global_executables', 0)) -function! ale_linters#elm#make#GetExecutable(buffer) abort - return ale#node#FindExecutable(a:buffer, 'elm_make', [ - \ 'node_modules/.bin/elm', - \]) -endfunction - function! ale_linters#elm#make#Handle(buffer, lines) abort let l:output = [] let l:unparsed_lines = [] @@ -147,7 +141,6 @@ endfunction " If it doesn't, then this will fail when imports are needed. function! ale_linters#elm#make#GetCommand(buffer) abort let l:elm_json = ale#path#FindNearestFile(a:buffer, 'elm.json') - let l:elm_exe = ale_linters#elm#make#GetExecutable(a:buffer) if empty(l:elm_json) " Fallback to Elm 0.18 @@ -165,18 +158,15 @@ function! ale_linters#elm#make#GetCommand(buffer) abort " a sort of flag to tell the compiler not to generate an output file, " which is why this is hard coded here. " Source: https://github.com/elm-lang/elm-compiler/blob/19d5a769b30ec0b2fc4475985abb4cd94cd1d6c3/builder/src/Generate/Output.hs#L253 - let l:elm_cmd = ale#Escape(l:elm_exe) - \ . ' make' - \ . ' --report=json' - \ . ' --output=/dev/null' - - return l:dir_set_cmd . ' ' . l:elm_cmd . ' %t' + return l:dir_set_cmd . '%e make --report=json --output=/dev/null %t' endfunction call ale#linter#Define('elm', { -\ 'name': 'make', -\ 'executable_callback': 'ale_linters#elm#make#GetExecutable', -\ 'output_stream': 'both', -\ 'command_callback': 'ale_linters#elm#make#GetCommand', -\ 'callback': 'ale_linters#elm#make#Handle' +\ 'name': 'make', +\ 'executable_callback': ale#node#FindExecutableFunc('elm_make', [ +\ 'node_modules/.bin/elm', +\ ]), +\ 'output_stream': 'both', +\ 'command_callback': 'ale_linters#elm#make#GetCommand', +\ 'callback': 'ale_linters#elm#make#Handle' \}) diff --git a/ale_linters/erlang/syntaxerl.vim b/ale_linters/erlang/syntaxerl.vim index 46ecdcb7..5b679743 100644 --- a/ale_linters/erlang/syntaxerl.vim +++ b/ale_linters/erlang/syntaxerl.vim @@ -3,24 +3,12 @@ call ale#Set('erlang_syntaxerl_executable', 'syntaxerl') - -function! ale_linters#erlang#syntaxerl#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'erlang_syntaxerl_executable') -endfunction - - -function! ale_linters#erlang#syntaxerl#FeatureCheck(buffer) abort - return s:GetEscapedExecutable(a:buffer) . ' -h' -endfunction - - function! ale_linters#erlang#syntaxerl#GetCommand(buffer, output) abort let l:use_b_option = match(a:output, '\C\V-b, --base\>') > -1 - return s:GetEscapedExecutable(a:buffer) . (l:use_b_option ? ' -b %s %t' : ' %t') + return '%e' . (l:use_b_option ? ' -b %s %t' : ' %t') endfunction - function! ale_linters#erlang#syntaxerl#Handle(buffer, lines) abort let l:pattern = '\v\C:(\d+):( warning:)? (.+)' let l:loclist = [] @@ -36,17 +24,11 @@ function! ale_linters#erlang#syntaxerl#Handle(buffer, lines) abort return l:loclist endfunction - -function! s:GetEscapedExecutable(buffer) abort - return ale#Escape(ale_linters#erlang#syntaxerl#GetExecutable(a:buffer)) -endfunction - - call ale#linter#Define('erlang', { \ 'name': 'syntaxerl', -\ 'executable_callback': 'ale_linters#erlang#syntaxerl#GetExecutable', +\ 'executable_callback': ale#VarFunc('erlang_syntaxerl_executable'), \ 'command_chain': [ -\ {'callback': 'ale_linters#erlang#syntaxerl#FeatureCheck'}, +\ {'callback': {-> '%e -h'}}, \ {'callback': 'ale_linters#erlang#syntaxerl#GetCommand'}, \ ], \ 'callback': 'ale_linters#erlang#syntaxerl#Handle', diff --git a/ale_linters/fortran/gcc.vim b/ale_linters/fortran/gcc.vim index 5f2ac018..f1595789 100644 --- a/ale_linters/fortran/gcc.vim +++ b/ale_linters/fortran/gcc.vim @@ -2,18 +2,10 @@ " Description: gcc for Fortran files " This option can be set to 0 to use -ffixed-form -if !exists('g:ale_fortran_gcc_use_free_form') - let g:ale_fortran_gcc_use_free_form = 1 -endif - -if !exists('g:ale_fortran_gcc_executable') - let g:ale_fortran_gcc_executable = 'gcc' -endif - +call ale#Set('fortran_gcc_use_free_form', 1) +call ale#Set('fortran_gcc_executable', 'gcc') " Set this option to change the GCC options for warnings for Fortran. -if !exists('g:ale_fortran_gcc_options') - let g:ale_fortran_gcc_options = '-Wall' -endif +call ale#Set('fortran_gcc_options', '-Wall') function! ale_linters#fortran#gcc#Handle(buffer, lines) abort " We have to match a starting line and a later ending line together, @@ -61,26 +53,20 @@ function! ale_linters#fortran#gcc#Handle(buffer, lines) abort return l:output endfunction -function! ale_linters#fortran#gcc#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'fortran_gcc_executable') -endfunction - function! ale_linters#fortran#gcc#GetCommand(buffer) abort let l:layout_option = ale#Var(a:buffer, 'fortran_gcc_use_free_form') \ ? '-ffree-form' \ : '-ffixed-form' - return ale_linters#fortran#gcc#GetExecutable(a:buffer) - \ . ' -S -x f95 -fsyntax-only ' - \ . l:layout_option . ' ' - \ . ale#Var(a:buffer, 'fortran_gcc_options') . ' ' - \ . '-' + return '%e -S -x f95 -fsyntax-only ' . l:layout_option + \ . ale#Pad(ale#Var(a:buffer, 'fortran_gcc_options')) + \ . ' -' endfunction call ale#linter#Define('fortran', { \ 'name': 'gcc', \ 'output_stream': 'stderr', -\ 'executable_callback': 'ale_linters#fortran#gcc#GetExecutable', +\ 'executable_callback': ale#VarFunc('fortran_gcc_executable'), \ 'command_callback': 'ale_linters#fortran#gcc#GetCommand', \ 'callback': 'ale_linters#fortran#gcc#Handle', \}) diff --git a/ale_linters/fortran/language_server.vim b/ale_linters/fortran/language_server.vim index fd763fcf..4e5f5dc4 100644 --- a/ale_linters/fortran/language_server.vim +++ b/ale_linters/fortran/language_server.vim @@ -4,14 +4,6 @@ call ale#Set('fortran_language_server_executable', 'fortls') call ale#Set('fortran_language_server_use_global', get(g:, 'ale_use_global_executables', 0)) -function! ale_linters#fortran#language_server#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'fortran_language_server_executable') -endfunction - -function! ale_linters#fortran#language_server#GetCommand(buffer) abort - return ale#Escape(ale_linters#fortran#language_server#GetExecutable(a:buffer)) -endfunction - function! ale_linters#fortran#language_server#GetProjectRoot(buffer) abort let l:fortls_file = ale#path#FindNearestFile(a:buffer, '.fortls') @@ -21,7 +13,7 @@ endfunction call ale#linter#Define('fortran', { \ 'name': 'language_server', \ 'lsp': 'stdio', -\ 'executable_callback': 'ale_linters#fortran#language_server#GetExecutable', -\ 'command_callback': 'ale_linters#fortran#language_server#GetCommand', +\ 'executable_callback': ale#VarFunc('fortran_language_server_executable'), +\ 'command': '%e', \ 'project_root_callback': 'ale_linters#fortran#language_server#GetProjectRoot', \}) diff --git a/ale_linters/fuse/fusionlint.vim b/ale_linters/fuse/fusionlint.vim index cf20e1b4..ab8f143b 100644 --- a/ale_linters/fuse/fusionlint.vim +++ b/ale_linters/fuse/fusionlint.vim @@ -4,13 +4,8 @@ call ale#Set('fuse_fusionlint_executable', 'fusion-lint') call ale#Set('fuse_fusionlint_options', '') -function! ale_linters#fuse#fusionlint#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'fuse_fusionlint_executable') -endfunction - function! ale_linters#fuse#fusionlint#GetCommand(buffer) abort - return ale#Escape(ale_linters#fuse#fusionlint#GetExecutable(a:buffer)) - \ . ale#Pad(ale#Var(a:buffer, 'fuse_fusionlint_options')) + return '%e' . ale#Pad(ale#Var(a:buffer, 'fuse_fusionlint_options')) \ . ' --filename %s -i' endfunction @@ -32,7 +27,7 @@ endfunction call ale#linter#Define('fuse', { \ 'name': 'fusionlint', -\ 'executable_callback': 'ale_linters#fuse#fusionlint#GetExecutable', +\ 'executable_callback': ale#VarFunc('fuse_fusionlint_executable'), \ 'command_callback': 'ale_linters#fuse#fusionlint#GetCommand', \ 'callback': 'ale_linters#fuse#fusionlint#Handle', \}) diff --git a/ale_linters/gitcommit/gitlint.vim b/ale_linters/gitcommit/gitlint.vim index 64731055..ec3bfb0b 100644 --- a/ale_linters/gitcommit/gitlint.vim +++ b/ale_linters/gitcommit/gitlint.vim @@ -1,11 +1,9 @@ " Author: Nick Yamane <nick.diego@gmail.com> " Description: gitlint for git commit message files -let g:ale_gitcommit_gitlint_executable = -\ get(g:, 'ale_gitcommit_gitlint_executable', 'gitlint') -let g:ale_gitcommit_gitlint_options = get(g:, 'ale_gitcommit_gitlint_options', '') -let g:ale_gitcommit_gitlint_use_global = get(g:, 'ale_gitcommit_gitlint_use_global', get(g:, 'ale_use_global_executables', 0)) - +call ale#Set('gitcommit_gitlint_executable', 'gitlint') +call ale#Set('gitcommit_gitlint_options', '') +call ale#Set('gitcommit_gitlint_use_global', get(g:, 'ale_use_global_executables', 0)) function! ale_linters#gitcommit#gitlint#GetExecutable(buffer) abort return ale#python#FindExecutable(a:buffer, 'gitcommit_gitlint', ['gitlint']) @@ -13,12 +11,9 @@ endfunction function! ale_linters#gitcommit#gitlint#GetCommand(buffer) abort let l:options = ale#Var(a:buffer, 'gitcommit_gitlint_options') - let l:executable = ale_linters#gitcommit#gitlint#GetExecutable(a:buffer) - return ale#Escape(l:executable) - \ . (!empty(l:options) ? ' ' . l:options : '') - \ . ' lint' -endfunction + return '%e' . ale#Pad(l:options) . ' lint' +endfunction function! ale_linters#gitcommit#gitlint#Handle(buffer, lines) abort " Matches patterns line the following: @@ -45,7 +40,6 @@ function! ale_linters#gitcommit#gitlint#Handle(buffer, lines) abort return l:output endfunction - call ale#linter#Define('gitcommit', { \ 'name': 'gitlint', \ 'output_stream': 'stderr', @@ -53,4 +47,3 @@ call ale#linter#Define('gitcommit', { \ 'command_callback': 'ale_linters#gitcommit#gitlint#GetCommand', \ 'callback': 'ale_linters#gitcommit#gitlint#Handle', \}) - diff --git a/ale_linters/glsl/glslang.vim b/ale_linters/glsl/glslang.vim index d494df0e..d55a5e7c 100644 --- a/ale_linters/glsl/glslang.vim +++ b/ale_linters/glsl/glslang.vim @@ -4,17 +4,11 @@ " TODO: Once https://github.com/KhronosGroup/glslang/pull/1047 is accepted, " we can use stdin. -let g:ale_glsl_glslang_executable = -\ get(g:, 'ale_glsl_glslang_executable', 'glslangValidator') - -let g:ale_glsl_glslang_options = get(g:, 'ale_glsl_glslang_options', '') - -function! ale_linters#glsl#glslang#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'glsl_glslang_executable') -endfunction +call ale#Set('glsl_glslang_executable', 'glslangValidator') +call ale#Set('glsl_glslang_options', '') function! ale_linters#glsl#glslang#GetCommand(buffer) abort - return ale#Escape(ale_linters#glsl#glslang#GetExecutable(a:buffer)) + return '%e' \ . ale#Pad(ale#Var(a:buffer, 'glsl_glslang_options')) \ . ' -C %t' endfunction @@ -40,7 +34,7 @@ endfunction call ale#linter#Define('glsl', { \ 'name': 'glslang', -\ 'executable_callback': 'ale_linters#glsl#glslang#GetExecutable', +\ 'executable_callback': ale#VarFunc('glsl_glslang_executable'), \ 'command_callback': 'ale_linters#glsl#glslang#GetCommand', \ 'callback': 'ale_linters#glsl#glslang#Handle', \}) diff --git a/ale_linters/glsl/glslls.vim b/ale_linters/glsl/glslls.vim index 77e30f9c..8c6d9bd9 100644 --- a/ale_linters/glsl/glslls.vim +++ b/ale_linters/glsl/glslls.vim @@ -4,18 +4,15 @@ call ale#Set('glsl_glslls_executable', 'glslls') call ale#Set('glsl_glslls_logfile', '') -function! ale_linters#glsl#glslls#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'glsl_glslls_executable') -endfunction - function! ale_linters#glsl#glslls#GetCommand(buffer) abort - let l:executable = ale_linters#glsl#glslls#GetExecutable(a:buffer) let l:logfile = ale#Var(a:buffer, 'glsl_glslls_logfile') let l:logfile_args = '' + if l:logfile isnot# '' let l:logfile_args = ' --verbose -l ' . l:logfile endif - return ale#Escape(l:executable) . l:logfile_args . ' --stdin' + + return '%e' . l:logfile_args . ' --stdin' endfunction function! ale_linters#glsl#glslls#GetProjectRoot(buffer) abort @@ -27,7 +24,7 @@ endfunction call ale#linter#Define('glsl', { \ 'name': 'glslls', \ 'lsp': 'stdio', -\ 'executable_callback': 'ale_linters#glsl#glslls#GetExecutable', +\ 'executable_callback': ale#VarFunc('glsl_glslls_executable'), \ 'command_callback': 'ale_linters#glsl#glslls#GetCommand', \ 'project_root_callback': 'ale_linters#glsl#glslls#GetProjectRoot', \}) diff --git a/ale_linters/go/gometalinter.vim b/ale_linters/go/gometalinter.vim index 375a8b0f..d005e1d2 100644 --- a/ale_linters/go/gometalinter.vim +++ b/ale_linters/go/gometalinter.vim @@ -5,12 +5,7 @@ call ale#Set('go_gometalinter_options', '') call ale#Set('go_gometalinter_executable', 'gometalinter') call ale#Set('go_gometalinter_lint_package', 0) -function! ale_linters#go#gometalinter#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'go_gometalinter_executable') -endfunction - function! ale_linters#go#gometalinter#GetCommand(buffer) abort - let l:executable = ale_linters#go#gometalinter#GetExecutable(a:buffer) let l:filename = expand('#' . a:buffer . ':t') let l:options = ale#Var(a:buffer, 'go_gometalinter_options') let l:lint_package = ale#Var(a:buffer, 'go_gometalinter_lint_package') @@ -19,12 +14,12 @@ function! ale_linters#go#gometalinter#GetCommand(buffer) abort " be calculated to absolute paths in the Handler if l:lint_package return ale#path#BufferCdString(a:buffer) - \ . ale#Escape(l:executable) + \ . '%e' \ . (!empty(l:options) ? ' ' . l:options : '') . ' .' endif return ale#path#BufferCdString(a:buffer) - \ . ale#Escape(l:executable) + \ . '%e' \ . ' --include=' . ale#Escape(ale#util#EscapePCRE(l:filename)) \ . (!empty(l:options) ? ' ' . l:options : '') . ' .' endfunction @@ -55,7 +50,7 @@ endfunction call ale#linter#Define('go', { \ 'name': 'gometalinter', -\ 'executable_callback': 'ale_linters#go#gometalinter#GetExecutable', +\ 'executable_callback': ale#VarFunc('go_gometalinter_executable'), \ 'command_callback': 'ale_linters#go#gometalinter#GetCommand', \ 'callback': 'ale_linters#go#gometalinter#Handler', \ 'lint_file': 1, diff --git a/ale_linters/handlebars/embertemplatelint.vim b/ale_linters/handlebars/embertemplatelint.vim index 162a033c..4fc0f20d 100644 --- a/ale_linters/handlebars/embertemplatelint.vim +++ b/ale_linters/handlebars/embertemplatelint.vim @@ -4,17 +4,6 @@ call ale#Set('handlebars_embertemplatelint_executable', 'ember-template-lint') call ale#Set('handlebars_embertemplatelint_use_global', get(g:, 'ale_use_global_executables', 0)) -function! ale_linters#handlebars#embertemplatelint#GetExecutable(buffer) abort - return ale#node#FindExecutable(a:buffer, 'handlebars_embertemplatelint', [ - \ 'node_modules/.bin/ember-template-lint', - \]) -endfunction - -function! ale_linters#handlebars#embertemplatelint#GetCommand(buffer) abort - return ale_linters#handlebars#embertemplatelint#GetExecutable(a:buffer) - \ . ' --json %t' -endfunction - function! ale_linters#handlebars#embertemplatelint#Handle(buffer, lines) abort let l:output = [] let l:json = ale#util#FuzzyJSONDecode(a:lines, {}) @@ -42,7 +31,9 @@ endfunction call ale#linter#Define('handlebars', { \ 'name': 'ember-template-lint', -\ 'executable_callback': 'ale_linters#handlebars#embertemplatelint#GetExecutable', -\ 'command_callback': 'ale_linters#handlebars#embertemplatelint#GetCommand', +\ 'executable_callback': ale#node#FindExecutableFunc('handlebars_embertemplatelint', [ +\ 'node_modules/.bin/ember-template-lint', +\ ]), +\ 'command': '%e --json %t', \ 'callback': 'ale_linters#handlebars#embertemplatelint#Handle', \}) diff --git a/ale_linters/haskell/hdevtools.vim b/ale_linters/haskell/hdevtools.vim index dc902152..fbd5278e 100644 --- a/ale_linters/haskell/hdevtools.vim +++ b/ale_linters/haskell/hdevtools.vim @@ -4,19 +4,14 @@ call ale#Set('haskell_hdevtools_executable', 'hdevtools') call ale#Set('haskell_hdevtools_options', get(g:, 'hdevtools_options', '-g -Wall')) -function! ale_linters#haskell#hdevtools#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'haskell_hdevtools_executable') -endfunction - function! ale_linters#haskell#hdevtools#GetCommand(buffer) abort - return ale#Escape(ale_linters#haskell#hdevtools#GetExecutable(a:buffer)) - \ . ' check ' . ale#Var(a:buffer, 'haskell_hdevtools_options') - \ . ' -p %s %t' + return '%e check' . ale#Pad(ale#Var(a:buffer, 'haskell_hdevtools_options')) + \ . ' -p %s %t' endfunction call ale#linter#Define('haskell', { \ 'name': 'hdevtools', -\ 'executable_callback': 'ale_linters#haskell#hdevtools#GetExecutable', +\ 'executable_callback': ale#VarFunc('haskell_hdevtools_executable'), \ 'command_callback': 'ale_linters#haskell#hdevtools#GetCommand', \ 'callback': 'ale#handlers#haskell#HandleGHCFormat', \}) diff --git a/ale_linters/html/htmlhint.vim b/ale_linters/html/htmlhint.vim index caa15bbb..234c1176 100644 --- a/ale_linters/html/htmlhint.vim +++ b/ale_linters/html/htmlhint.vim @@ -5,12 +5,6 @@ call ale#Set('html_htmlhint_options', '') call ale#Set('html_htmlhint_executable', 'htmlhint') call ale#Set('html_htmlhint_use_global', get(g:, 'ale_use_global_executables', 0)) -function! ale_linters#html#htmlhint#GetExecutable(buffer) abort - return ale#node#FindExecutable(a:buffer, 'html_htmlhint', [ - \ 'node_modules/.bin/htmlhint', - \]) -endfunction - function! ale_linters#html#htmlhint#GetCommand(buffer) abort let l:options = ale#Var(a:buffer, 'html_htmlhint_options') let l:config = l:options !~# '--config' @@ -25,14 +19,14 @@ function! ale_linters#html#htmlhint#GetCommand(buffer) abort let l:options = substitute(l:options, '--format=unix', '', '') endif - return ale#Escape(ale_linters#html#htmlhint#GetExecutable(a:buffer)) - \ . (!empty(l:options) ? ' ' . l:options : '') - \ . ' --format=unix %t' + return '%e' . ale#Pad(l:options) . ' --format=unix %t' endfunction call ale#linter#Define('html', { \ 'name': 'htmlhint', -\ 'executable_callback': 'ale_linters#html#htmlhint#GetExecutable', +\ 'executable_callback': ale#node#FindExecutableFunc('html_htmlhint', [ +\ 'node_modules/.bin/htmlhint', +\ ]), \ 'command_callback': 'ale_linters#html#htmlhint#GetCommand', \ 'callback': 'ale#handlers#unix#HandleAsError', \}) diff --git a/ale_linters/html/tidy.vim b/ale_linters/html/tidy.vim index 913cdade..cab8bc24 100644 --- a/ale_linters/html/tidy.vim +++ b/ale_linters/html/tidy.vim @@ -37,10 +37,6 @@ function! ale_linters#html#tidy#GetCommand(buffer) abort \) endfunction -function! ale_linters#html#tidy#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'html_tidy_executable') -endfunction - function! ale_linters#html#tidy#Handle(buffer, lines) abort " Matches patterns lines like the following: " line 7 column 5 - Warning: missing </title> before </head> @@ -67,7 +63,7 @@ endfunction call ale#linter#Define('html', { \ 'name': 'tidy', -\ 'executable_callback': 'ale_linters#html#tidy#GetExecutable', +\ 'executable_callback': ale#VarFunc('html_tidy_executable'), \ 'output_stream': 'stderr', \ 'command_callback': 'ale_linters#html#tidy#GetCommand', \ 'callback': 'ale_linters#html#tidy#Handle', diff --git a/ale_linters/idris/idris.vim b/ale_linters/idris/idris.vim index 115d04fc..b3275b40 100644 --- a/ale_linters/idris/idris.vim +++ b/ale_linters/idris/idris.vim @@ -4,16 +4,10 @@ call ale#Set('idris_idris_executable', 'idris') call ale#Set('idris_idris_options', '--total --warnpartial --warnreach --warnipkg') -function! ale_linters#idris#idris#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'idris_idris_executable') -endfunction - function! ale_linters#idris#idris#GetCommand(buffer) abort let l:options = ale#Var(a:buffer, 'idris_idris_options') - return ale#Escape(ale_linters#idris#idris#GetExecutable(a:buffer)) - \ . (!empty(l:options) ? ' ' . l:options : '') - \ . ' --check %s' + return '%e' . ale#Pad(l:options) . ' --check %s' endfunction function! ale_linters#idris#idris#Handle(buffer, lines) abort @@ -80,8 +74,7 @@ endfunction call ale#linter#Define('idris', { \ 'name': 'idris', -\ 'executable_callback': 'ale_linters#idris#idris#GetExecutable', +\ 'executable_callback': ale#VarFunc('idris_idris_executable'), \ 'command_callback': 'ale_linters#idris#idris#GetCommand', \ 'callback': 'ale_linters#idris#idris#Handle', \}) - diff --git a/ale_linters/java/javac.vim b/ale_linters/java/javac.vim index d7a39aa7..76445c18 100644 --- a/ale_linters/java/javac.vim +++ b/ale_linters/java/javac.vim @@ -36,10 +36,6 @@ function! s:BuildClassPathOption(buffer, import_paths) abort \ : '' endfunction -function! ale_linters#java#javac#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'java_javac_executable') -endfunction - function! ale_linters#java#javac#GetCommand(buffer, import_paths) abort let l:cp_option = s:BuildClassPathOption(a:buffer, a:import_paths) let l:sp_option = '' @@ -77,13 +73,11 @@ function! ale_linters#java#javac#GetCommand(buffer, import_paths) abort " Create .class files in a temporary directory, which we will delete later. let l:class_file_directory = ale#engine#CreateDirectory(a:buffer) - let l:executable = ale_linters#java#javac#GetExecutable(a:buffer) " Always run javac from the directory the file is in, so we can resolve " relative paths correctly. return ale#path#BufferCdString(a:buffer) - \ . ale#Escape(l:executable) - \ . ' -Xlint' + \ . '%e -Xlint' \ . ale#Pad(l:cp_option) \ . ale#Pad(l:sp_option) \ . ' -d ' . ale#Escape(l:class_file_directory) @@ -126,7 +120,7 @@ endfunction call ale#linter#Define('java', { \ 'name': 'javac', -\ 'executable_callback': 'ale_linters#java#javac#GetExecutable', +\ 'executable_callback': ale#VarFunc('java_javac_executable'), \ 'command_chain': [ \ {'callback': 'ale_linters#java#javac#GetImportPaths', 'output_stream': 'stdout'}, \ {'callback': 'ale_linters#java#javac#GetCommand', 'output_stream': 'stderr'}, diff --git a/ale_linters/javascript/flow_ls.vim b/ale_linters/javascript/flow_ls.vim index 20fc2217..75377183 100644 --- a/ale_linters/javascript/flow_ls.vim +++ b/ale_linters/javascript/flow_ls.vim @@ -6,18 +6,6 @@ call ale#Set('javascript_flow_ls_use_global', \ get(g:, 'ale_use_global_executables', 0) \) -function! ale_linters#javascript#flow_ls#GetExecutable(buffer) abort - return ale#node#FindExecutable(a:buffer, 'javascript_flow_ls', [ - \ 'node_modules/.bin/flow', - \]) -endfunction - -function! ale_linters#javascript#flow_ls#GetCommand(buffer) abort - let l:executable = ale_linters#javascript#flow_ls#GetExecutable(a:buffer) - - return ale#Escape(l:executable) . ' lsp --from ale-lsp' -endfunction - function! ale_linters#javascript#flow_ls#FindProjectRoot(buffer) abort let l:flow_config = ale#path#FindNearestFile(a:buffer, '.flowconfig') @@ -31,8 +19,10 @@ endfunction call ale#linter#Define('javascript', { \ 'name': 'flow-language-server', \ 'lsp': 'stdio', -\ 'executable_callback': 'ale_linters#javascript#flow_ls#GetExecutable', -\ 'command_callback': 'ale_linters#javascript#flow_ls#GetCommand', +\ 'executable_callback': ale#node#FindExecutableFunc('javascript_flow_ls', [ +\ 'node_modules/.bin/flow', +\ ]), +\ 'command': '%e lsp --from ale-lsp', \ 'project_root_callback': 'ale_linters#javascript#flow_ls#FindProjectRoot', \ 'language': 'javascript', \}) diff --git a/ale_linters/javascript/jscs.vim b/ale_linters/javascript/jscs.vim index 60044037..a38766a6 100644 --- a/ale_linters/javascript/jscs.vim +++ b/ale_linters/javascript/jscs.vim @@ -4,12 +4,6 @@ call ale#Set('javascript_jscs_executable', 'jscs') call ale#Set('javascript_jscs_use_global', get(g:, 'ale_use_global_executables', 0)) -function! ale_linters#javascript#jscs#GetExecutable(buffer) abort - return ale#node#FindExecutable(a:buffer, 'javascript_jscs', [ - \ 'node_modules/.bin/jscs', - \]) -endfunction - function! ale_linters#javascript#jscs#GetCommand(buffer) abort " Search for a local JShint config locaation, and default to a global one. let l:jscs_config = ale#path#ResolveLocalPath( @@ -18,8 +12,7 @@ function! ale_linters#javascript#jscs#GetCommand(buffer) abort \ get(g:, 'ale_jscs_config_loc', '') \) - let l:command = ale#Escape(ale_linters#javascript#jscs#GetExecutable(a:buffer)) - let l:command .= ' --reporter inline --no-colors' + let l:command = '%e --reporter inline --no-colors' if !empty(l:jscs_config) let l:command .= ' --config ' . ale#Escape(l:jscs_config) @@ -60,8 +53,9 @@ endfunction call ale#linter#Define('javascript', { \ 'name': 'jscs', -\ 'executable_callback': 'ale_linters#javascript#jscs#GetExecutable', +\ 'executable_callback': ale#node#FindExecutableFunc('javascript_jscs', [ +\ 'node_modules/.bin/jscs', +\ ]), \ 'command_callback': 'ale_linters#javascript#jscs#GetCommand', \ 'callback': 'ale_linters#javascript#jscs#Handle', \}) - diff --git a/ale_linters/javascript/jshint.vim b/ale_linters/javascript/jshint.vim index 2e9bb9fd..83909fa4 100644 --- a/ale_linters/javascript/jshint.vim +++ b/ale_linters/javascript/jshint.vim @@ -4,12 +4,6 @@ call ale#Set('javascript_jshint_executable', 'jshint') call ale#Set('javascript_jshint_use_global', get(g:, 'ale_use_global_executables', 0)) -function! ale_linters#javascript#jshint#GetExecutable(buffer) abort - return ale#node#FindExecutable(a:buffer, 'javascript_jshint', [ - \ 'node_modules/.bin/jshint', - \]) -endfunction - function! ale_linters#javascript#jshint#GetCommand(buffer) abort " Search for a local JShint config locaation, and default to a global one. let l:jshint_config = ale#path#ResolveLocalPath( @@ -18,8 +12,7 @@ function! ale_linters#javascript#jshint#GetCommand(buffer) abort \ get(g:, 'ale_jshint_config_loc', '') \) - let l:command = ale#Escape(ale_linters#javascript#jshint#GetExecutable(a:buffer)) - let l:command .= ' --reporter unix --extract auto' + let l:command = '%e --reporter unix --extract auto' if !empty(l:jshint_config) let l:command .= ' --config ' . ale#Escape(l:jshint_config) @@ -32,7 +25,9 @@ endfunction call ale#linter#Define('javascript', { \ 'name': 'jshint', -\ 'executable_callback': 'ale_linters#javascript#jshint#GetExecutable', +\ 'executable_callback': ale#node#FindExecutableFunc('javascript_jshint', [ +\ 'node_modules/.bin/jshint', +\ ]), \ 'command_callback': 'ale_linters#javascript#jshint#GetCommand', \ 'callback': 'ale#handlers#unix#HandleAsError', \}) diff --git a/ale_linters/kotlin/languageserver.vim b/ale_linters/kotlin/languageserver.vim index 0ab673ec..08f1c055 100644 --- a/ale_linters/kotlin/languageserver.vim +++ b/ale_linters/kotlin/languageserver.vim @@ -3,15 +3,6 @@ call ale#Set('kotlin_languageserver_executable', 'kotlin-language-server') -function! ale_linters#kotlin#languageserver#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'kotlin_languageserver_executable') -endfunction - -function! ale_linters#kotlin#languageserver#GetCommand(buffer) abort - let l:executable = ale_linters#kotlin#languageserver#GetExecutable(a:buffer) - return ale#Escape(l:executable) -endfunction - function! ale_linters#kotlin#languageserver#GetProjectRoot(buffer) abort let l:gradle_root = ale#gradle#FindProjectRoot(a:buffer) @@ -31,8 +22,8 @@ endfunction call ale#linter#Define('kotlin', { \ 'name': 'languageserver', \ 'lsp': 'stdio', -\ 'executable_callback': 'ale_linters#kotlin#languageserver#GetExecutable', -\ 'command_callback': 'ale_linters#kotlin#languageserver#GetCommand', +\ 'executable_callback': ale#VarFunc('kotlin_languageserver_executable'), +\ 'command_callback': '%e', \ 'language': 'kotlin', \ 'project_root_callback': 'ale_linters#kotlin#languageserver#GetProjectRoot', \}) diff --git a/ale_linters/less/lessc.vim b/ale_linters/less/lessc.vim index 5fd9a383..37600649 100755 --- a/ale_linters/less/lessc.vim +++ b/ale_linters/less/lessc.vim @@ -5,21 +5,10 @@ call ale#Set('less_lessc_executable', 'lessc') call ale#Set('less_lessc_options', '') call ale#Set('less_lessc_use_global', get(g:, 'ale_use_global_executables', 0)) -function! ale_linters#less#lessc#GetExecutable(buffer) abort - return ale#node#FindExecutable(a:buffer, 'less_lessc', [ - \ 'node_modules/.bin/lessc', - \]) -endfunction - function! ale_linters#less#lessc#GetCommand(buffer) abort - let l:executable = ale_linters#less#lessc#GetExecutable(a:buffer) - let l:dir = expand('#' . a:buffer . ':p:h') - let l:options = ale#Var(a:buffer, 'less_lessc_options') - - return ale#Escape(l:executable) - \ . ' --no-color --lint' - \ . ' --include-path=' . ale#Escape(l:dir) - \ . (!empty(l:options) ? ' ' . l:options : '') + return '%e --no-color --lint' + \ . ' --include-path=' . ale#Escape(expand('#' . a:buffer . ':p:h')) + \ . ale#Pad(ale#Var(a:buffer, 'less_lessc_options')) \ . ' -' endfunction @@ -49,7 +38,9 @@ endfunction call ale#linter#Define('less', { \ 'name': 'lessc', -\ 'executable_callback': 'ale_linters#less#lessc#GetExecutable', +\ 'executable_callback': ale#node#FindExecutableFunc('less_lessc', [ +\ 'node_modules/.bin/lessc', +\ ]), \ 'command_callback': 'ale_linters#less#lessc#GetCommand', \ 'callback': 'ale_linters#less#lessc#Handle', \ 'output_stream': 'stderr', diff --git a/ale_linters/less/stylelint.vim b/ale_linters/less/stylelint.vim index 8e16a098..479808c2 100644 --- a/ale_linters/less/stylelint.vim +++ b/ale_linters/less/stylelint.vim @@ -4,24 +4,17 @@ call ale#Set('less_stylelint_executable', 'stylelint') call ale#Set('less_stylelint_options', '') call ale#Set('less_stylelint_use_global', get(g:, 'ale_use_global_executables', 0)) -function! ale_linters#less#stylelint#GetExecutable(buffer) abort - return ale#node#FindExecutable(a:buffer, 'less_stylelint', [ - \ 'node_modules/.bin/stylelint', - \]) -endfunction - function! ale_linters#less#stylelint#GetCommand(buffer) abort - let l:executable = ale_linters#less#stylelint#GetExecutable(a:buffer) let l:options = ale#Var(a:buffer, 'less_stylelint_options') - return ale#Escape(l:executable) - \ . (!empty(l:options) ? ' ' . l:options : '') - \ . ' --stdin-filename %s' + return '%e' . ale#Pad(l:options) . ' --stdin-filename %s' endfunction call ale#linter#Define('less', { \ 'name': 'stylelint', -\ 'executable_callback': 'ale_linters#less#stylelint#GetExecutable', +\ 'executable_callback': ale#node#FindExecutableFunc('less_stylelint', [ +\ 'node_modules/.bin/stylelint', +\ ]), \ 'command_callback': 'ale_linters#less#stylelint#GetCommand', \ 'callback': 'ale#handlers#css#HandleStyleLintFormat', \}) diff --git a/ale_linters/llvm/llc.vim b/ale_linters/llvm/llc.vim index 15201cbe..044f8c44 100644 --- a/ale_linters/llvm/llc.vim +++ b/ale_linters/llvm/llc.vim @@ -3,21 +3,11 @@ call ale#Set('llvm_llc_executable', 'llc') -function! ale_linters#llvm#llc#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'llvm_llc_executable') -endfunction - -function! ale_linters#llvm#llc#GetCommand(buffer) abort - return ale#Escape(ale_linters#llvm#llc#GetExecutable(a:buffer)) - \ . ' -filetype=null -o=' . g:ale#util#nul_file -endfunction - function! ale_linters#llvm#llc#HandleErrors(buffer, lines) abort " Handle '{path}: {file}:{line}:{col}: error: {message}' format let l:pattern = '\v^[a-zA-Z]?:?[^:]+: [^:]+:(\d+):(\d+): (.+)$' - let l:matches = ale#util#GetMatches(a:lines, l:pattern) - return map(l:matches, "{ + return map(ale#util#GetMatches(a:lines, l:pattern), "{ \ 'lnum': str2nr(v:val[1]), \ 'col': str2nr(v:val[2]), \ 'text': v:val[3], @@ -27,8 +17,8 @@ endfunction call ale#linter#Define('llvm', { \ 'name': 'llc', -\ 'executable_callback': 'ale_linters#llvm#llc#GetExecutable', +\ 'executable_callback': ale#VarFunc('llvm_llc_executable'), \ 'output_stream': 'stderr', -\ 'command_callback': 'ale_linters#llvm#llc#GetCommand', +\ 'command_callback': {-> '%e -filetype=null -o=' . g:ale#util#nul_file}, \ 'callback': 'ale_linters#llvm#llc#HandleErrors', \}) diff --git a/ale_linters/lua/luac.vim b/ale_linters/lua/luac.vim index 4a6bb403..bca2cd8d 100644 --- a/ale_linters/lua/luac.vim +++ b/ale_linters/lua/luac.vim @@ -3,15 +3,6 @@ call ale#Set('lua_luac_executable', 'luac') -function! ale_linters#lua#luac#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'lua_luac_executable') -endfunction - -function! ale_linters#lua#luac#GetCommand(buffer) abort - let l:executable = ale_linters#lua#luac#GetExecutable(a:buffer) - return ale#Escape(l:executable) . ' -p - ' -endfunction - function! ale_linters#lua#luac#Handle(buffer, lines) abort " Matches patterns line the following: " @@ -33,8 +24,8 @@ endfunction call ale#linter#Define('lua', { \ 'name': 'luac', -\ 'executable_callback': 'ale_linters#lua#luac#GetExecutable', -\ 'command_callback': 'ale_linters#lua#luac#GetCommand', +\ 'executable_callback': ale#VarFunc('lua_luac_executable'), +\ 'command': '%e -p -', \ 'output_stream': 'stderr', \ 'callback': 'ale_linters#lua#luac#Handle', \}) diff --git a/ale_linters/lua/luacheck.vim b/ale_linters/lua/luacheck.vim index 725153c6..669103b8 100644 --- a/ale_linters/lua/luacheck.vim +++ b/ale_linters/lua/luacheck.vim @@ -1,19 +1,11 @@ " Author: Sol Bekic https://github.com/s-ol " Description: luacheck linter for lua files -let g:ale_lua_luacheck_executable = -\ get(g:, 'ale_lua_luacheck_executable', 'luacheck') - -let g:ale_lua_luacheck_options = -\ get(g:, 'ale_lua_luacheck_options', '') - -function! ale_linters#lua#luacheck#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'lua_luacheck_executable') -endfunction +call ale#Set('lua_luacheck_executable', 'luacheck') +call ale#Set('lua_luacheck_options', '') function! ale_linters#lua#luacheck#GetCommand(buffer) abort - return ale#Escape(ale_linters#lua#luacheck#GetExecutable(a:buffer)) - \ . ' ' . ale#Var(a:buffer, 'lua_luacheck_options') + return '%e' . ale#Pad(ale#Var(a:buffer, 'lua_luacheck_options')) \ . ' --formatter plain --codes --filename %s -' endfunction @@ -46,7 +38,7 @@ endfunction call ale#linter#Define('lua', { \ 'name': 'luacheck', -\ 'executable_callback': 'ale_linters#lua#luacheck#GetExecutable', +\ 'executable_callback': ale#VarFunc('lua_luacheck_executable'), \ 'command_callback': 'ale_linters#lua#luacheck#GetCommand', \ 'callback': 'ale_linters#lua#luacheck#Handle', \}) diff --git a/ale_linters/markdown/remark_lint.vim b/ale_linters/markdown/remark_lint.vim index d9c2efb6..88dfb9dd 100644 --- a/ale_linters/markdown/remark_lint.vim +++ b/ale_linters/markdown/remark_lint.vim @@ -5,19 +5,10 @@ call ale#Set('markdown_remark_lint_executable', 'remark') call ale#Set('markdown_remark_lint_use_global', get(g:, 'ale_use_global_executables', 0)) call ale#Set('markdown_remark_lint_options', '') -function! ale_linters#markdown#remark_lint#GetExecutable(buffer) abort - return ale#node#FindExecutable(a:buffer, 'markdown_remark_lint', [ - \ 'node_modules/.bin/remark', - \]) -endfunction - function! ale_linters#markdown#remark_lint#GetCommand(buffer) abort - let l:executable = ale_linters#markdown#remark_lint#GetExecutable(a:buffer) let l:options = ale#Var(a:buffer, 'markdown_remark_lint_options') - return ale#node#Executable(a:buffer, l:executable) - \ . (!empty(l:options) ? ' ' . l:options : '') - \ . ' --no-stdout --no-color' + return '%e' . ale#Pad(l:options) . ' --no-stdout --no-color' endfunction function! ale_linters#markdown#remark_lint#Handle(buffer, lines) abort @@ -46,7 +37,9 @@ endfunction call ale#linter#Define('markdown', { \ 'name': 'remark_lint', \ 'aliases': ['remark-lint'], -\ 'executable_callback': 'ale_linters#markdown#remark_lint#GetExecutable', +\ 'executable_callback': ale#node#FindExecutableFunc('markdown_remark_lint', [ +\ 'node_modules/.bin/remark', +\ ]), \ 'command_callback': 'ale_linters#markdown#remark_lint#GetCommand', \ 'callback': 'ale_linters#markdown#remark_lint#Handle', \ 'output_stream': 'stderr', diff --git a/ale_linters/matlab/mlint.vim b/ale_linters/matlab/mlint.vim index 32766334..3435045e 100644 --- a/ale_linters/matlab/mlint.vim +++ b/ale_linters/matlab/mlint.vim @@ -1,18 +1,7 @@ " Author: awlayton <alex@layton.in> " Description: mlint for MATLAB files -let g:ale_matlab_mlint_executable = -\ get(g:, 'ale_matlab_mlint_executable', 'mlint') - -function! ale_linters#matlab#mlint#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'matlab_mlint_executable') -endfunction - -function! ale_linters#matlab#mlint#GetCommand(buffer) abort - let l:executable = ale_linters#matlab#mlint#GetExecutable(a:buffer) - - return l:executable . ' -id %t' -endfunction +call ale#Set('matlab_mlint_executable', 'mlint') function! ale_linters#matlab#mlint#Handle(buffer, lines) abort " Matches patterns like the following: @@ -48,8 +37,8 @@ endfunction call ale#linter#Define('matlab', { \ 'name': 'mlint', -\ 'executable_callback': 'ale_linters#matlab#mlint#GetExecutable', -\ 'command_callback': 'ale_linters#matlab#mlint#GetCommand', +\ 'executable_callback': ale#VarFunc('matlab_mlint_executable'), +\ 'command': '%e -id %t', \ 'output_stream': 'stderr', \ 'callback': 'ale_linters#matlab#mlint#Handle', \}) diff --git a/ale_linters/mercury/mmc.vim b/ale_linters/mercury/mmc.vim index c7bfc59d..76d357f0 100644 --- a/ale_linters/mercury/mmc.vim +++ b/ale_linters/mercury/mmc.vim @@ -4,16 +4,11 @@ call ale#Set('mercury_mmc_executable', 'mmc') call ale#Set('mercury_mmc_options', '--make --output-compile-error-lines 100') -function! ale_linters#mercury#mmc#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'mercury_mmc_executable') -endfunction - function! ale_linters#mercury#mmc#GetCommand(buffer) abort let l:module_name = expand('#' . a:buffer . ':t:r') return ale#path#BufferCdString(a:buffer) - \ . ale_linters#mercury#mmc#GetExecutable(a:buffer) - \ . ' --errorcheck-only ' + \ . '%e --errorcheck-only ' \ . ale#Var(a:buffer, 'mercury_mmc_options') \ . ' ' . l:module_name endfunction @@ -38,7 +33,7 @@ endfunction call ale#linter#Define('mercury', { \ 'name': 'mmc', \ 'output_stream': 'stderr', -\ 'executable_callback': 'ale_linters#mercury#mmc#GetExecutable', +\ 'executable_callback': ale#VarFunc('mercury_mmc_executable'), \ 'command_callback': 'ale_linters#mercury#mmc#GetCommand', \ 'callback': 'ale_linters#mercury#mmc#Handle', \ 'lint_file': 1, diff --git a/ale_linters/nasm/nasm.vim b/ale_linters/nasm/nasm.vim index 77d57e18..29d19e62 100644 --- a/ale_linters/nasm/nasm.vim +++ b/ale_linters/nasm/nasm.vim @@ -4,25 +4,13 @@ call ale#Set('nasm_nasm_executable', 'nasm') call ale#Set('nasm_nasm_options', '') -function! ale_linters#nasm#nasm#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'nasm_nasm_executable') -endfunction - -function! ale_linters#nasm#nasm#GetOptions(buffer) abort - return ale#Var(a:buffer, 'nasm_nasm_options') -endfunction - function! ale_linters#nasm#nasm#GetCommand(buffer) abort - " Note that NASM require a trailing slash to the -I option. - let l:executable = ale#Escape(ale_linters#nasm#nasm#GetExecutable(a:buffer)) + " Note that NASM requires a trailing slash for the -I option. let l:separator = has('win32') ? '\' : '/' - let l:path = ale#Escape(fnamemodify(bufname(a:buffer), ':p:h') . l:separator) - let l:options = ale_linters#nasm#nasm#GetOptions(a:buffer) + let l:path = fnamemodify(bufname(a:buffer), ':p:h') . l:separator - return l:executable - \ . ' -X gnu' - \ . ' -I ' . l:path - \ . ' ' . l:options + return '%e -X gnu -I ' . ale#Escape(l:path) + \ . ale#Pad(ale#Var(a:buffer, 'nasm_nasm_options')) \ . ' %s' endfunction @@ -30,6 +18,7 @@ function! ale_linters#nasm#nasm#Handle(buffer, lines) abort " Note that we treat 'fatal' as errors. let l:pattern = '^.\+:\(\d\+\): \([^:]\+\): \(.\+\)$' let l:output = [] + for l:match in ale#util#GetMatches(a:lines, l:pattern) call add(l:output, { \ 'lnum': l:match[1] + 0, @@ -37,6 +26,7 @@ function! ale_linters#nasm#nasm#Handle(buffer, lines) abort \ 'text': l:match[3], \}) endfor + return l:output endfunction @@ -44,7 +34,7 @@ call ale#linter#Define('nasm', { \ 'name': 'nasm', \ 'output_stream': 'stderr', \ 'lint_file': 1, -\ 'executable_callback': 'ale_linters#nasm#nasm#GetExecutable', +\ 'executable_callback': ale#VarFunc('nasm_nasm_executable'), \ 'command_callback': 'ale_linters#nasm#nasm#GetCommand', \ 'callback': 'ale_linters#nasm#nasm#Handle', \}) diff --git a/ale_linters/perl/perl.vim b/ale_linters/perl/perl.vim index 1b9aa95e..d1dcbc9c 100644 --- a/ale_linters/perl/perl.vim +++ b/ale_linters/perl/perl.vim @@ -1,20 +1,11 @@ " Author: Vincent Lequertier <https://github.com/SkySymbol> " Description: This file adds support for checking perl syntax -let g:ale_perl_perl_executable = -\ get(g:, 'ale_perl_perl_executable', 'perl') - -let g:ale_perl_perl_options = -\ get(g:, 'ale_perl_perl_options', '-c -Mwarnings -Ilib') - -function! ale_linters#perl#perl#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'perl_perl_executable') -endfunction +call ale#Set('perl_perl_executable', 'perl') +call ale#Set('perl_perl_options', '-c -Mwarnings -Ilib') function! ale_linters#perl#perl#GetCommand(buffer) abort - return ale#Escape(ale_linters#perl#perl#GetExecutable(a:buffer)) - \ . ' ' . ale#Var(a:buffer, 'perl_perl_options') - \ . ' %t' + return '%e' . ale#Pad(ale#Var(a:buffer, 'perl_perl_options')) . ' %t' endfunction let s:begin_failed_skip_pattern = '\v' . join([ @@ -61,7 +52,7 @@ endfunction call ale#linter#Define('perl', { \ 'name': 'perl', -\ 'executable_callback': 'ale_linters#perl#perl#GetExecutable', +\ 'executable_callback': ale#VarFunc('perl_perl_executable'), \ 'output_stream': 'both', \ 'command_callback': 'ale_linters#perl#perl#GetCommand', \ 'callback': 'ale_linters#perl#perl#Handle', diff --git a/ale_linters/perl/perlcritic.vim b/ale_linters/perl/perlcritic.vim index e91c8a03..8619a404 100644 --- a/ale_linters/perl/perlcritic.vim +++ b/ale_linters/perl/perlcritic.vim @@ -1,21 +1,10 @@ " Author: Vincent Lequertier <https://github.com/SkySymbol>, Chris Weyl <cweyl@alumni.drew.edu> " Description: This file adds support for checking perl with perl critic -let g:ale_perl_perlcritic_executable = -\ get(g:, 'ale_perl_perlcritic_executable', 'perlcritic') - -let g:ale_perl_perlcritic_profile = -\ get(g:, 'ale_perl_perlcritic_profile', '.perlcriticrc') - -let g:ale_perl_perlcritic_options = -\ get(g:, 'ale_perl_perlcritic_options', '') - -let g:ale_perl_perlcritic_showrules = -\ get(g:, 'ale_perl_perlcritic_showrules', 0) - -function! ale_linters#perl#perlcritic#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'perl_perlcritic_executable') -endfunction +call ale#Set('perl_perlcritic_executable', 'perlcritic') +call ale#Set('perl_perlcritic_profile', '.perlcriticrc') +call ale#Set('perl_perlcritic_options', '') +call ale#Set('perl_perlcritic_showrules', 0) function! ale_linters#perl#perlcritic#GetProfile(buffer) abort " first see if we've been overridden @@ -39,11 +28,11 @@ function! ale_linters#perl#perlcritic#GetCommand(buffer) abort let l:profile = ale_linters#perl#perlcritic#GetProfile(a:buffer) let l:options = ale#Var(a:buffer, 'perl_perlcritic_options') - return ale#Escape(ale_linters#perl#perlcritic#GetExecutable(a:buffer)) + return '%e' \ . ' --verbose ' . ale#Escape(l:critic_verbosity) \ . ' --nocolor' \ . (!empty(l:profile) ? ' --profile ' . ale#Escape(l:profile) : '') - \ . (!empty(l:options) ? ' ' . l:options : '') + \ . ale#Pad(l:options) endfunction @@ -66,7 +55,7 @@ endfunction call ale#linter#Define('perl', { \ 'name': 'perlcritic', \ 'output_stream': 'stdout', -\ 'executable_callback': 'ale_linters#perl#perlcritic#GetExecutable', +\ 'executable_callback': ale#VarFunc('perl_perlcritic_executable'), \ 'command_callback': 'ale_linters#perl#perlcritic#GetCommand', \ 'callback': 'ale_linters#perl#perlcritic#Handle', \}) diff --git a/ale_linters/php/langserver.vim b/ale_linters/php/langserver.vim index 38b42df9..ca91db4c 100644 --- a/ale_linters/php/langserver.vim +++ b/ale_linters/php/langserver.vim @@ -4,16 +4,6 @@ call ale#Set('php_langserver_executable', 'php-language-server.php') call ale#Set('php_langserver_use_global', get(g:, 'ale_use_global_executables', 0)) -function! ale_linters#php#langserver#GetExecutable(buffer) abort - return ale#node#FindExecutable(a:buffer, 'php_langserver', [ - \ 'vendor/bin/php-language-server.php', - \]) -endfunction - -function! ale_linters#php#langserver#GetCommand(buffer) abort - return 'php ' . ale#Escape(ale_linters#php#langserver#GetExecutable(a:buffer)) -endfunction - function! ale_linters#php#langserver#GetProjectRoot(buffer) abort let l:git_path = ale#path#FindNearestDirectory(a:buffer, '.git') @@ -23,7 +13,9 @@ endfunction call ale#linter#Define('php', { \ 'name': 'langserver', \ 'lsp': 'stdio', -\ 'executable_callback': 'ale_linters#php#langserver#GetExecutable', -\ 'command_callback': 'ale_linters#php#langserver#GetCommand', +\ 'executable_callback': ale#node#FindExecutableFunc('php_langserver', [ +\ 'vendor/bin/php-language-server.php', +\ ]), +\ 'command': 'php %e', \ 'project_root_callback': 'ale_linters#php#langserver#GetProjectRoot', \}) diff --git a/ale_linters/php/phpcs.vim b/ale_linters/php/phpcs.vim index faf8ad55..25e53714 100644 --- a/ale_linters/php/phpcs.vim +++ b/ale_linters/php/phpcs.vim @@ -6,23 +6,13 @@ let g:ale_php_phpcs_standard = get(g:, 'ale_php_phpcs_standard', '') call ale#Set('php_phpcs_executable', 'phpcs') call ale#Set('php_phpcs_use_global', get(g:, 'ale_use_global_executables', 0)) -function! ale_linters#php#phpcs#GetExecutable(buffer) abort - return ale#node#FindExecutable(a:buffer, 'php_phpcs', [ - \ 'vendor/bin/phpcs', - \ 'phpcs' - \]) -endfunction - function! ale_linters#php#phpcs#GetCommand(buffer) abort - let l:executable = ale_linters#php#phpcs#GetExecutable(a:buffer) - let l:standard = ale#Var(a:buffer, 'php_phpcs_standard') let l:standard_option = !empty(l:standard) \ ? '--standard=' . l:standard \ : '' - return ale#Escape(l:executable) - \ . ' -s --report=emacs --stdin-path=%s ' . l:standard_option + return '%e -s --report=emacs --stdin-path=%s' . ale#Pad(l:standard_option) endfunction function! ale_linters#php#phpcs#Handle(buffer, lines) abort @@ -50,7 +40,10 @@ endfunction call ale#linter#Define('php', { \ 'name': 'phpcs', -\ 'executable_callback': 'ale_linters#php#phpcs#GetExecutable', +\ 'executable_callback': ale#node#FindExecutableFunc('php_phpcs', [ +\ 'vendor/bin/phpcs', +\ 'phpcs' +\ ]), \ 'command_callback': 'ale_linters#php#phpcs#GetCommand', \ 'callback': 'ale_linters#php#phpcs#Handle', \}) diff --git a/ale_linters/php/phpmd.vim b/ale_linters/php/phpmd.vim index e9450752..65f1cc3c 100644 --- a/ale_linters/php/phpmd.vim +++ b/ale_linters/php/phpmd.vim @@ -6,16 +6,9 @@ let g:ale_php_phpmd_executable = get(g:, 'ale_php_phpmd_executable', 'phpmd') " Set to change the ruleset let g:ale_php_phpmd_ruleset = get(g:, 'ale_php_phpmd_ruleset', 'cleancode,codesize,controversial,design,naming,unusedcode') -function! ale_linters#php#phpmd#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'php_phpmd_executable') -endfunction - function! ale_linters#php#phpmd#GetCommand(buffer) abort - let l:executable = ale_linters#php#phpmd#GetExecutable(a:buffer) - - return ale#Escape(l:executable) - \ . ' %s text ' - \ . ale#Var(a:buffer, 'php_phpmd_ruleset') + return '%e %s text' + \ . ale#Pad(ale#Var(a:buffer, 'php_phpmd_ruleset')) \ . ' --ignore-violations-on-exit %t' endfunction @@ -39,7 +32,7 @@ endfunction call ale#linter#Define('php', { \ 'name': 'phpmd', -\ 'executable_callback': 'ale_linters#php#phpmd#GetExecutable', +\ 'executable_callback': ale#VarFunc('php_phpmd_executable'), \ 'command_callback': 'ale_linters#php#phpmd#GetCommand', \ 'callback': 'ale_linters#php#phpmd#Handle', \}) diff --git a/ale_linters/php/phpstan.vim b/ale_linters/php/phpstan.vim index 24762086..b3875216 100644 --- a/ale_linters/php/phpstan.vim +++ b/ale_linters/php/phpstan.vim @@ -6,20 +6,13 @@ let g:ale_php_phpstan_executable = get(g:, 'ale_php_phpstan_executable', 'phpsta let g:ale_php_phpstan_level = get(g:, 'ale_php_phpstan_level', '4') let g:ale_php_phpstan_configuration = get(g:, 'ale_php_phpstan_configuration', '') -function! ale_linters#php#phpstan#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'php_phpstan_executable') -endfunction - function! ale_linters#php#phpstan#GetCommand(buffer) abort - let l:executable = ale_linters#php#phpstan#GetExecutable(a:buffer) - let l:configuration = ale#Var(a:buffer, 'php_phpstan_configuration') let l:configuration_option = !empty(l:configuration) \ ? ' -c ' . l:configuration \ : '' - return ale#Escape(l:executable) - \ . ' analyze -l' + return '%e analyze -l' \ . ale#Var(a:buffer, 'php_phpstan_level') \ . ' --errorFormat raw' \ . l:configuration_option @@ -47,7 +40,7 @@ endfunction call ale#linter#Define('php', { \ 'name': 'phpstan', -\ 'executable_callback': 'ale_linters#php#phpstan#GetExecutable', +\ 'executable_callback': ale#VarFunc('php_phpstan_executable'), \ 'command_callback': 'ale_linters#php#phpstan#GetCommand', \ 'callback': 'ale_linters#php#phpstan#Handle', \}) diff --git a/ale_linters/pony/ponyc.vim b/ale_linters/pony/ponyc.vim index b3329053..19e7e828 100644 --- a/ale_linters/pony/ponyc.vim +++ b/ale_linters/pony/ponyc.vim @@ -3,19 +3,14 @@ call ale#Set('pony_ponyc_executable', 'ponyc') call ale#Set('pony_ponyc_options', '--pass paint') -function! ale_linters#pony#ponyc#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'pony_ponyc_executable') -endfunction - function! ale_linters#pony#ponyc#GetCommand(buffer) abort - return ale#Escape(ale_linters#pony#ponyc#GetExecutable(a:buffer)) - \ . ' ' . ale#Var(a:buffer, 'pony_ponyc_options') + return '%e' . ale#Pad(ale#Var(a:buffer, 'pony_ponyc_options')) endfunction call ale#linter#Define('pony', { \ 'name': 'ponyc', \ 'output_stream': 'stderr', -\ 'executable_callback': 'ale_linters#pony#ponyc#GetExecutable', +\ 'executable_callback': ale#VarFunc('pony_ponyc_executable'), \ 'command_callback': 'ale_linters#pony#ponyc#GetCommand', \ 'callback': 'ale#handlers#pony#HandlePonycFormat', \}) diff --git a/ale_linters/pug/puglint.vim b/ale_linters/pug/puglint.vim index 165e68b7..63208986 100644 --- a/ale_linters/pug/puglint.vim +++ b/ale_linters/pug/puglint.vim @@ -5,12 +5,6 @@ call ale#Set('pug_puglint_options', '') call ale#Set('pug_puglint_executable', 'pug-lint') call ale#Set('pug_puglint_use_global', get(g:, 'ale_use_global_executables', 0)) -function! ale_linters#pug#puglint#GetExecutable(buffer) abort - return ale#node#FindExecutable(a:buffer, 'pug_puglint', [ - \ 'node_modules/.bin/pug-lint', - \]) -endfunction - function! s:FindConfig(buffer) abort for l:filename in [ \ '.pug-lintrc', @@ -29,19 +23,19 @@ function! s:FindConfig(buffer) abort endfunction function! ale_linters#pug#puglint#GetCommand(buffer) abort - let l:executable = ale_linters#pug#puglint#GetExecutable(a:buffer) let l:options = ale#Var(a:buffer, 'pug_puglint_options') let l:config = s:FindConfig(a:buffer) - return ale#Escape(l:executable) - \ . (!empty(l:options) ? ' ' . l:options : '') + return '%e' . ale#Pad(l:options) \ . (!empty(l:config) ? ' -c ' . ale#Escape(l:config) : '') \ . ' -r inline %t' endfunction call ale#linter#Define('pug', { \ 'name': 'puglint', -\ 'executable_callback': 'ale_linters#pug#puglint#GetExecutable', +\ 'executable_callback': ale#node#FindExecutableFunc('pug_puglint', [ +\ 'node_modules/.bin/pug-lint', +\ ]), \ 'output_stream': 'stderr', \ 'command_callback': 'ale_linters#pug#puglint#GetCommand', \ 'callback': 'ale#handlers#unix#HandleAsError', diff --git a/ale_linters/puppet/languageserver.vim b/ale_linters/puppet/languageserver.vim index 52880f32..a08b7653 100644 --- a/ale_linters/puppet/languageserver.vim +++ b/ale_linters/puppet/languageserver.vim @@ -3,16 +3,6 @@ call ale#Set('puppet_languageserver_executable', 'puppet-languageserver') -function! ale_linters#puppet#languageserver#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'puppet_languageserver_executable') -endfunction - -function! ale_linters#puppet#languageserver#GetCommand(buffer) abort - let l:exe = ale#Escape(ale_linters#puppet#languageserver#GetExecutable(a:buffer)) - - return l:exe . ' --stdio' -endfunction - function! ale_linters#puppet#languageserver#GetProjectRoot(buffer) abort " Note: The metadata.json file is recommended for Puppet 4+ modules, but " there's no requirement to have it, so fall back to the other possible @@ -38,8 +28,8 @@ endfunction call ale#linter#Define('puppet', { \ 'name': 'languageserver', \ 'lsp': 'stdio', -\ 'executable_callback': 'ale_linters#puppet#languageserver#GetExecutable', -\ 'command_callback': 'ale_linters#puppet#languageserver#GetCommand', +\ 'executable_callback': ale#VarFunc('puppet_languageserver_executable'), +\ 'command': '%e --stdio', \ 'language': 'puppet', \ 'project_root_callback': 'ale_linters#puppet#languageserver#GetProjectRoot', \}) diff --git a/ale_linters/puppet/puppetlint.vim b/ale_linters/puppet/puppetlint.vim index 13da511b..c9c16f5e 100644 --- a/ale_linters/puppet/puppetlint.vim +++ b/ale_linters/puppet/puppetlint.vim @@ -1,26 +1,18 @@ " Author: Alexander Olofsson <alexander.olofsson@liu.se>, Robert Flechtner <flechtner@chemmedia.de> " Description: puppet-lint for puppet files -let g:ale_puppet_puppetlint_executable = -\ get(g:, 'ale_puppet_puppetlint_executable', 'puppet-lint') - -let g:ale_puppet_puppetlint_options = -\ get(g:, 'ale_puppet_puppetlint_options', '--no-autoloader_layout-check') - -function! ale_linters#puppet#puppetlint#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'puppet_puppetlint_executable') -endfunction +call ale#Set('puppet_puppetlint_executable', 'puppet-lint') +call ale#Set('puppet_puppetlint_options', '--no-autoloader_layout-check') function! ale_linters#puppet#puppetlint#GetCommand(buffer) abort - return ale_linters#puppet#puppetlint#GetExecutable(a:buffer) - \ . ' ' . ale#Var(a:buffer, 'puppet_puppetlint_options') + return '%e' . ale#Pad(ale#Var(a:buffer, 'puppet_puppetlint_options')) \ . ' --log-format "-:%{line}:%{column}: %{kind}: [%{check}] %{message}"' \ . ' %t' endfunction call ale#linter#Define('puppet', { \ 'name': 'puppetlint', -\ 'executable_callback': 'ale_linters#puppet#puppetlint#GetExecutable', +\ 'executable_callback': ale#VarFunc('puppet_puppetlint_executable'), \ 'command_callback': 'ale_linters#puppet#puppetlint#GetCommand', \ 'callback': 'ale#handlers#gcc#HandleGCCFormat', \}) diff --git a/ale_linters/pyrex/cython.vim b/ale_linters/pyrex/cython.vim index 9b6b39d7..d260698c 100644 --- a/ale_linters/pyrex/cython.vim +++ b/ale_linters/pyrex/cython.vim @@ -5,16 +5,11 @@ call ale#Set('pyrex_cython_executable', 'cython') call ale#Set('pyrex_cython_options', '--warning-extra') -function! ale_linters#pyrex#cython#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'pyrex_cython_executable') -endfunction - function! ale_linters#pyrex#cython#GetCommand(buffer) abort let l:local_dir = ale#Escape(fnamemodify(bufname(a:buffer), ':p:h')) - return ale#Escape(ale_linters#pyrex#cython#GetExecutable(a:buffer)) - \ . ' --working ' . l:local_dir . ' --include-dir ' . l:local_dir - \ . ' ' . ale#Var(a:buffer, 'pyrex_cython_options') + return '%e --working ' . l:local_dir . ' --include-dir ' . l:local_dir + \ . ale#Pad(ale#Var(a:buffer, 'pyrex_cython_options')) \ . ' --output-file ' . g:ale#util#nul_file . ' %t' endfunction @@ -37,7 +32,7 @@ endfunction call ale#linter#Define('pyrex', { \ 'name': 'cython', \ 'output_stream': 'stderr', -\ 'executable_callback': 'ale_linters#pyrex#cython#GetExecutable', +\ 'executable_callback': ale#VarFunc('pyrex_cython_executable'), \ 'command_callback': 'ale_linters#pyrex#cython#GetCommand', \ 'callback': 'ale_linters#pyrex#cython#Handle', \}) diff --git a/ale_linters/qml/qmlfmt.vim b/ale_linters/qml/qmlfmt.vim index 85b131fd..12f3e97b 100644 --- a/ale_linters/qml/qmlfmt.vim +++ b/ale_linters/qml/qmlfmt.vim @@ -1,40 +1,25 @@ " Author: pylipp (www.github.com/pylipp) " Description: qmlfmt for QML files -let g:ale_qml_qmlfmt_executable = get(g:, 'ale_qml_qmlfmt_executable', 'qmlfmt') - -function! ale_linters#qml#qmlfmt#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'qml_qmlfmt_executable') -endfunction - -function! ale_linters#qml#qmlfmt#GetCommand(buffer) abort - return ale#Escape(ale_linters#qml#qmlfmt#GetExecutable(a:buffer)) - \ . ' -e' -endfunction +call ale#Set('qml_qmlfmt_executable', 'qmlfmt') " Find lines like " Error:11:1: Expected token `}' function! ale_linters#qml#qmlfmt#Handle(buffer, lines) abort let l:pattern = '\v^(Error|Warning):(\d+):(\d+): (.+)$' - let l:output = [] - - for l:match in ale#util#GetMatches(a:lines, l:pattern) - let l:item = { - \ 'lnum': l:match[2] + 0, - \ 'col': l:match[3] + 0, - \ 'text': l:match[4], - \ 'type': l:match[1] is# 'Warning' ? 'W' : 'E', - \} - call add(l:output, l:item) - endfor - return l:output + return map(ale#util#GetMatches(a:lines, l:pattern), "{ + \ 'lnum': v:val[2] + 0, + \ 'col': v:val[3] + 0, + \ 'text': v:val[4], + \ 'type': v:val[1] is# 'Warning' ? 'W' : 'E', + \}") endfunction call ale#linter#Define('qml', { \ 'name': 'qmlfmt', \ 'output_stream': 'stderr', -\ 'executable_callback': 'ale_linters#qml#qmlfmt#GetExecutable', -\ 'command_callback': 'ale_linters#qml#qmlfmt#GetCommand', +\ 'executable_callback': ale#VarFunc('qml_qmlfmt_executable'), +\ 'command': '%e -e', \ 'callback': 'ale_linters#qml#qmlfmt#Handle', \}) diff --git a/ale_linters/ruby/ruby.vim b/ale_linters/ruby/ruby.vim index 1aa88851..2bc4ec4b 100644 --- a/ale_linters/ruby/ruby.vim +++ b/ale_linters/ruby/ruby.vim @@ -3,20 +3,10 @@ call ale#Set('ruby_ruby_executable', 'ruby') -function! ale_linters#ruby#ruby#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'ruby_ruby_executable') -endfunction - -function! ale_linters#ruby#ruby#GetCommand(buffer) abort - let l:executable = ale_linters#ruby#ruby#GetExecutable(a:buffer) - - return ale#Escape(l:executable) . ' -w -c -T1 %t' -endfunction - call ale#linter#Define('ruby', { \ 'name': 'ruby', -\ 'executable_callback': 'ale_linters#ruby#ruby#GetExecutable', -\ 'command_callback': 'ale_linters#ruby#ruby#GetCommand', +\ 'executable_callback': ale#VarFunc('ruby_ruby_executable'), +\ 'command': '%e -w -c -T1 %t', \ 'output_stream': 'stderr', \ 'callback': 'ale#handlers#ruby#HandleSyntaxErrors', \}) diff --git a/ale_linters/rust/rls.vim b/ale_linters/rust/rls.vim index cd13291d..60dd3667 100644 --- a/ale_linters/rust/rls.vim +++ b/ale_linters/rust/rls.vim @@ -4,19 +4,10 @@ call ale#Set('rust_rls_executable', 'rls') call ale#Set('rust_rls_toolchain', 'nightly') -function! ale_linters#rust#rls#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'rust_rls_executable') -endfunction - function! ale_linters#rust#rls#GetCommand(buffer) abort - let l:executable = ale_linters#rust#rls#GetExecutable(a:buffer) let l:toolchain = ale#Var(a:buffer, 'rust_rls_toolchain') - if empty(l:toolchain) - return ale#Escape(l:executable) - else - return ale#Escape(l:executable) . ' +' . ale#Escape(l:toolchain) - endif + return '%e' . (!empty(l:toolchain) ? ' +' . ale#Escape(l:toolchain) : '') endfunction function! ale_linters#rust#rls#GetProjectRoot(buffer) abort @@ -28,7 +19,7 @@ endfunction call ale#linter#Define('rust', { \ 'name': 'rls', \ 'lsp': 'stdio', -\ 'executable_callback': 'ale_linters#rust#rls#GetExecutable', +\ 'executable_callback': ale#VarFunc('rust_rls_executable'), \ 'command_callback': 'ale_linters#rust#rls#GetCommand', \ 'project_root_callback': 'ale_linters#rust#rls#GetProjectRoot', \}) diff --git a/ale_linters/sass/stylelint.vim b/ale_linters/sass/stylelint.vim index fe941d6a..b6286f18 100644 --- a/ale_linters/sass/stylelint.vim +++ b/ale_linters/sass/stylelint.vim @@ -3,20 +3,11 @@ call ale#Set('sass_stylelint_executable', 'stylelint') call ale#Set('sass_stylelint_use_global', get(g:, 'ale_use_global_executables', 0)) -function! ale_linters#sass#stylelint#GetExecutable(buffer) abort - return ale#node#FindExecutable(a:buffer, 'sass_stylelint', [ - \ 'node_modules/.bin/stylelint', - \]) -endfunction - -function! ale_linters#sass#stylelint#GetCommand(buffer) abort - return ale_linters#sass#stylelint#GetExecutable(a:buffer) - \ . ' --stdin-filename %s' -endfunction - call ale#linter#Define('sass', { \ 'name': 'stylelint', -\ 'executable_callback': 'ale_linters#sass#stylelint#GetExecutable', -\ 'command_callback': 'ale_linters#sass#stylelint#GetCommand', +\ 'executable_callback': ale#node#FindExecutableFunc('sass_stylelint', [ +\ 'node_modules/.bin/stylelint', +\ ]), +\ 'command': '%e --stdin-filename %s', \ 'callback': 'ale#handlers#css#HandleStyleLintFormat', \}) diff --git a/ale_linters/scala/fsc.vim b/ale_linters/scala/fsc.vim index 17b26f0b..fbdce20e 100644 --- a/ale_linters/scala/fsc.vim +++ b/ale_linters/scala/fsc.vim @@ -1,29 +1,14 @@ " Author: Nils Leuzinger - https://github.com/PawkyPenguin " Description: Basic scala support using fsc -" -function! ale_linters#scala#fsc#GetExecutable(buffer) abort - if index(split(getbufvar(a:buffer, '&filetype'), '\.'), 'sbt') >= 0 - " Don't check sbt files - return '' - endif - return 'fsc' -endfunction - -function! ale_linters#scala#fsc#GetCommand(buffer) abort - let l:executable = ale_linters#scala#fsc#GetExecutable(a:buffer) - - if empty(l:executable) - return '' - endif - - return ale#Escape(l:executable) . ' -Ystop-after:parser %t' +function! s:IsSbt(buffer) abort + return index(split(getbufvar(a:buffer, '&filetype'), '\.'), 'sbt') >= 0 endfunction call ale#linter#Define('scala', { \ 'name': 'fsc', -\ 'executable_callback': 'ale_linters#scala#fsc#GetExecutable', -\ 'command_callback': 'ale_linters#scala#fsc#GetCommand', +\ 'executable_callback': {buf -> s:IsSbt(buf) ? '' : 'fsc'}, +\ 'command': '%e -Ystop-after:parser %t', \ 'callback': 'ale#handlers#scala#HandleScalacLintFormat', \ 'output_stream': 'stderr', \}) diff --git a/ale_linters/scala/scalac.vim b/ale_linters/scala/scalac.vim index 551284af..3dbdd925 100644 --- a/ale_linters/scala/scalac.vim +++ b/ale_linters/scala/scalac.vim @@ -2,29 +2,14 @@ " w0rp <devw0rp@gmail.com> " Description: Basic scala support using scalac -function! ale_linters#scala#scalac#GetExecutable(buffer) abort - if index(split(getbufvar(a:buffer, '&filetype'), '\.'), 'sbt') >= 0 - " Don't check sbt files - return '' - endif - - return 'scalac' -endfunction - -function! ale_linters#scala#scalac#GetCommand(buffer) abort - let l:executable = ale_linters#scala#scalac#GetExecutable(a:buffer) - - if empty(l:executable) - return '' - endif - - return ale#Escape(l:executable) . ' -Ystop-after:parser %t' +function! s:IsSbt(buffer) abort + return index(split(getbufvar(a:buffer, '&filetype'), '\.'), 'sbt') >= 0 endfunction call ale#linter#Define('scala', { \ 'name': 'scalac', -\ 'executable_callback': 'ale_linters#scala#scalac#GetExecutable', -\ 'command_callback': 'ale_linters#scala#scalac#GetCommand', +\ 'executable_callback': {buf -> s:IsSbt(buf) ? '' : 'scalac'}, +\ 'command': '%e -Ystop-after:parser %t', \ 'callback': 'ale#handlers#scala#HandleScalacLintFormat', \ 'output_stream': 'stderr', \}) diff --git a/ale_linters/scss/stylelint.vim b/ale_linters/scss/stylelint.vim index 6bfdd09a..6d183b4a 100644 --- a/ale_linters/scss/stylelint.vim +++ b/ale_linters/scss/stylelint.vim @@ -3,20 +3,11 @@ call ale#Set('scss_stylelint_executable', 'stylelint') call ale#Set('scss_stylelint_use_global', get(g:, 'ale_use_global_executables', 0)) -function! ale_linters#scss#stylelint#GetExecutable(buffer) abort - return ale#node#FindExecutable(a:buffer, 'scss_stylelint', [ - \ 'node_modules/.bin/stylelint', - \]) -endfunction - -function! ale_linters#scss#stylelint#GetCommand(buffer) abort - return ale_linters#scss#stylelint#GetExecutable(a:buffer) - \ . ' --stdin-filename %s' -endfunction - call ale#linter#Define('scss', { \ 'name': 'stylelint', -\ 'executable_callback': 'ale_linters#scss#stylelint#GetExecutable', -\ 'command_callback': 'ale_linters#scss#stylelint#GetCommand', +\ 'executable_callback': ale#node#FindExecutableFunc('scss_stylelint', [ +\ 'node_modules/.bin/stylelint', +\ ]), +\ 'command': '%e --stdin-filename %s', \ 'callback': 'ale#handlers#css#HandleStyleLintFormat', \}) diff --git a/ale_linters/sh/shellcheck.vim b/ale_linters/sh/shellcheck.vim index 27c74531..0f68e62c 100644 --- a/ale_linters/sh/shellcheck.vim +++ b/ale_linters/sh/shellcheck.vim @@ -6,14 +6,9 @@ " codes to exclude from shellcheck. For example: " " let g:ale_sh_shellcheck_exclusions = 'SC2002,SC2004' -let g:ale_sh_shellcheck_exclusions = -\ get(g:, 'ale_sh_shellcheck_exclusions', get(g:, 'ale_linters_sh_shellcheck_exclusions', '')) - -let g:ale_sh_shellcheck_executable = -\ get(g:, 'ale_sh_shellcheck_executable', 'shellcheck') - -let g:ale_sh_shellcheck_options = -\ get(g:, 'ale_sh_shellcheck_options', '') +call ale#Set('sh_shellcheck_exclusions', get(g:, 'ale_linters_sh_shellcheck_exclusions', '')) +call ale#Set('sh_shellcheck_executable', 'shellcheck') +call ale#Set('sh_shellcheck_options', '') function! ale_linters#sh#shellcheck#GetExecutable(buffer) abort return ale#Var(a:buffer, 'sh_shellcheck_executable') diff --git a/ale_linters/spec/rpmlint.vim b/ale_linters/spec/rpmlint.vim index f5308af6..486bef1e 100644 --- a/ale_linters/spec/rpmlint.vim +++ b/ale_linters/spec/rpmlint.vim @@ -26,19 +26,12 @@ " And this is always output at the end and should just be ignored: " 0 packages and 1 specfiles checked; 4 errors, 0 warnings. -let g:ale_spec_rpmlint_executable = -\ get(g:, 'ale_spec_rpmlint_executable', 'rpmlint') - -let g:ale_spec_rpmlint_options = -\ get(g:, 'ale_spec_rpmlint_options', '') - -function! ale_linters#spec#rpmlint#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'spec_rpmlint_executable') -endfunction +call ale#Set('spec_rpmlint_executable', 'rpmlint') +call ale#Set('spec_rpmlint_options', '') function! ale_linters#spec#rpmlint#GetCommand(buffer) abort - return ale_linters#spec#rpmlint#GetExecutable(a:buffer) - \ . ' ' . ale#Var(a:buffer, 'spec_rpmlint_options') + return '%e' + \ . ale#Pad(ale#Var(a:buffer, 'spec_rpmlint_options')) \ . ' -o "NetworkEnabled False"' \ . ' -v' \ . ' %t' @@ -79,7 +72,7 @@ endfunction call ale#linter#Define('spec', { \ 'name': 'rpmlint', -\ 'executable_callback': 'ale_linters#spec#rpmlint#GetExecutable', +\ 'executable_callback': ale#VarFunc('spec_rpmlint_executable'), \ 'command_callback': 'ale_linters#spec#rpmlint#GetCommand', \ 'callback': 'ale_linters#spec#rpmlint#Handle', \}) diff --git a/ale_linters/stylus/stylelint.vim b/ale_linters/stylus/stylelint.vim index 1562692a..2256f3c0 100644 --- a/ale_linters/stylus/stylelint.vim +++ b/ale_linters/stylus/stylelint.vim @@ -4,21 +4,17 @@ call ale#Set('stylus_stylelint_executable', 'stylelint') call ale#Set('stylus_stylelint_options', '') call ale#Set('stylus_stylelint_use_global', get(g:, 'ale_use_global_executables', 0)) -function! ale_linters#stylus#stylelint#GetExecutable(buffer) abort - return ale#node#FindExecutable(a:buffer, 'stylus_stylelint', [ - \ 'node_modules/.bin/stylelint', - \]) -endfunction - function! ale_linters#stylus#stylelint#GetCommand(buffer) abort - return ale_linters#stylus#stylelint#GetExecutable(a:buffer) - \ . ' ' . ale#Var(a:buffer, 'stylus_stylelint_options') + return '%e' + \ . ale#Pad(ale#Var(a:buffer, 'stylus_stylelint_options')) \ . ' --stdin-filename %s' endfunction call ale#linter#Define('stylus', { \ 'name': 'stylelint', -\ 'executable_callback': 'ale_linters#stylus#stylelint#GetExecutable', +\ 'executable_callback': ale#node#FindExecutableFunc('stylus_stylelint', [ +\ 'node_modules/.bin/stylelint', +\ ]), \ 'command_callback': 'ale_linters#stylus#stylelint#GetCommand', \ 'callback': 'ale#handlers#css#HandleStyleLintFormat', \}) diff --git a/ale_linters/tcl/nagelfar.vim b/ale_linters/tcl/nagelfar.vim index 13b7a549..183ea9e7 100644 --- a/ale_linters/tcl/nagelfar.vim +++ b/ale_linters/tcl/nagelfar.vim @@ -4,16 +4,10 @@ call ale#Set('tcl_nagelfar_executable', 'nagelfar.tcl') call ale#Set('tcl_nagelfar_options', '') -function! ale_linters#tcl#nagelfar#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'tcl_nagelfar_executable') -endfunction - function! ale_linters#tcl#nagelfar#GetCommand(buffer) abort let l:options = ale#Var(a:buffer, 'tcl_nagelfar_options') - return ale#Escape(ale_linters#tcl#nagelfar#GetExecutable(a:buffer)) - \ . (!empty(l:options) ? ' ' . l:options : '') - \ . ' %s' + return '%e' . ale#Pad(l:options) . ' %s' endfunction function! ale_linters#tcl#nagelfar#Handle(buffer, lines) abort @@ -39,7 +33,7 @@ endfunction call ale#linter#Define('tcl', { \ 'name': 'nagelfar', \ 'output_stream': 'stdout', -\ 'executable_callback': 'ale_linters#tcl#nagelfar#GetExecutable', +\ 'executable_callback': ale#VarFunc('tcl_nagelfar_executable'), \ 'command_callback': 'ale_linters#tcl#nagelfar#GetCommand', \ 'callback': 'ale_linters#tcl#nagelfar#Handle', \ 'lint_file': 1, diff --git a/ale_linters/terraform/tflint.vim b/ale_linters/terraform/tflint.vim index 93966ff3..b8e9c96d 100644 --- a/ale_linters/terraform/tflint.vim +++ b/ale_linters/terraform/tflint.vim @@ -30,14 +30,11 @@ function! ale_linters#terraform#tflint#Handle(buffer, lines) abort return l:output endfunction -function! ale_linters#terraform#tflint#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'terraform_tflint_executable') -endfunction - function! ale_linters#terraform#tflint#GetCommand(buffer) abort - let l:cmd = ale#Escape(ale#Var(a:buffer, 'terraform_tflint_executable')) + let l:cmd = '%e' let l:config_file = ale#path#FindNearestFile(a:buffer, '.tflint.hcl') + if !empty(l:config_file) let l:cmd .= ' --config ' . ale#Escape(l:config_file) endif @@ -54,9 +51,7 @@ endfunction call ale#linter#Define('terraform', { \ 'name': 'tflint', -\ 'executable_callback': 'ale_linters#terraform#tflint#GetExecutable', +\ 'executable_callback': ale#VarFunc('terraform_tflint_executable'), \ 'command_callback': 'ale_linters#terraform#tflint#GetCommand', \ 'callback': 'ale_linters#terraform#tflint#Handle', \}) - -" vim:sw=4 diff --git a/ale_linters/tex/lacheck.vim b/ale_linters/tex/lacheck.vim index e5a9632b..38135b85 100644 --- a/ale_linters/tex/lacheck.vim +++ b/ale_linters/tex/lacheck.vim @@ -1,16 +1,7 @@ " Author: Andrew Balmos - <andrew@balmos.org> " Description: lacheck for LaTeX files -let g:ale_tex_lacheck_executable = -\ get(g:, 'ale_tex_lacheck_executable', 'lacheck') - -function! ale_linters#tex#lacheck#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'tex_lacheck_executable') -endfunction - -function! ale_linters#tex#lacheck#GetCommand(buffer) abort - return ale#Var(a:buffer, 'tex_lacheck_executable') . ' %t' -endfunction +call ale#Set('tex_lacheck_executable', 'lacheck') function! ale_linters#tex#lacheck#Handle(buffer, lines) abort " Mattes lines like: @@ -41,7 +32,7 @@ endfunction call ale#linter#Define('tex', { \ 'name': 'lacheck', -\ 'executable_callback': 'ale_linters#tex#lacheck#GetExecutable', -\ 'command_callback': 'ale_linters#tex#lacheck#GetCommand', +\ 'executable_callback': ale#VarFunc('tex_lacheck_executable'), +\ 'command': '%e %t', \ 'callback': 'ale_linters#tex#lacheck#Handle' \}) diff --git a/ale_linters/thrift/thrift.vim b/ale_linters/thrift/thrift.vim index a8fe10b6..ac1f69fc 100644 --- a/ale_linters/thrift/thrift.vim +++ b/ale_linters/thrift/thrift.vim @@ -5,10 +5,6 @@ call ale#Set('thrift_thrift_generators', ['cpp']) call ale#Set('thrift_thrift_includes', []) call ale#Set('thrift_thrift_options', '-strict') -function! ale_linters#thrift#thrift#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'thrift_thrift_executable') -endfunction - function! ale_linters#thrift#thrift#GetCommand(buffer) abort let l:generators = ale#Var(a:buffer, 'thrift_thrift_generators') let l:includes = ale#Var(a:buffer, 'thrift_thrift_includes') @@ -22,7 +18,7 @@ function! ale_linters#thrift#thrift#GetCommand(buffer) abort let l:output_dir = ale#engine#CreateDirectory(a:buffer) - return ale#Escape(ale_linters#thrift#thrift#GetExecutable(a:buffer)) + return '%e' \ . ale#Pad(join(map(copy(l:generators), "'--gen ' . v:val"))) \ . ale#Pad(join(map(copy(l:includes), "'-I ' . v:val"))) \ . ale#Pad(ale#Var(a:buffer, 'thrift_thrift_options')) @@ -83,7 +79,7 @@ call ale#linter#Define('thrift', { \ 'name': 'thrift', \ 'executable': 'thrift', \ 'output_stream': 'both', -\ 'executable_callback': 'ale_linters#thrift#thrift#GetExecutable', +\ 'executable_callback': ale#VarFunc('thrift_thrift_executable'), \ 'command_callback': 'ale_linters#thrift#thrift#GetCommand', \ 'callback': 'ale_linters#thrift#thrift#Handle', \}) diff --git a/ale_linters/typescript/tsserver.vim b/ale_linters/typescript/tsserver.vim index 08bd0f41..0ad35d37 100644 --- a/ale_linters/typescript/tsserver.vim +++ b/ale_linters/typescript/tsserver.vim @@ -5,22 +5,13 @@ call ale#Set('typescript_tsserver_executable', 'tsserver') call ale#Set('typescript_tsserver_config_path', '') call ale#Set('typescript_tsserver_use_global', get(g:, 'ale_use_global_executables', 0)) -" These functions need to be defined just to comply with the API for LSP. -function! ale_linters#typescript#tsserver#GetProjectRoot(buffer) abort - return '' -endfunction - -function! ale_linters#typescript#tsserver#GetExecutable(buffer) abort - return ale#node#FindExecutable(a:buffer, 'typescript_tsserver', [ - \ 'node_modules/.bin/tsserver', - \]) -endfunction - call ale#linter#Define('typescript', { \ 'name': 'tsserver', \ 'lsp': 'tsserver', -\ 'executable_callback': 'ale_linters#typescript#tsserver#GetExecutable', +\ 'executable_callback': ale#node#FindExecutableFunc('typescript_tsserver', [ +\ 'node_modules/.bin/tsserver', +\ ]), \ 'command_callback': 'ale_linters#typescript#tsserver#GetExecutable', -\ 'project_root_callback': 'ale_linters#typescript#tsserver#GetProjectRoot', +\ 'project_root_callback': {-> ''}, \ 'language': '', \}) diff --git a/ale_linters/vue/vls.vim b/ale_linters/vue/vls.vim index 0d4bf9f6..7116128b 100644 --- a/ale_linters/vue/vls.vim +++ b/ale_linters/vue/vls.vim @@ -4,18 +4,6 @@ call ale#Set('vue_vls_executable', 'vls') call ale#Set('vue_vls_use_global', get(g:, 'ale_use_global_executables', 0)) -function! ale_linters#vue#vls#GetExecutable(buffer) abort - return ale#node#FindExecutable(a:buffer, 'vue_vls', [ - \ 'node_modules/.bin/vls', - \]) -endfunction - -function! ale_linters#vue#vls#GetCommand(buffer) abort - let l:exe = ale#Escape(ale_linters#vue#vls#GetExecutable(a:buffer)) - - return l:exe . ' --stdio' -endfunction - function! ale_linters#vue#vls#GetProjectRoot(buffer) abort let l:package_path = ale#path#FindNearestFile(a:buffer, 'package.json') @@ -25,8 +13,10 @@ endfunction call ale#linter#Define('vue', { \ 'name': 'vls', \ 'lsp': 'stdio', -\ 'executable_callback': 'ale_linters#vue#vls#GetExecutable', -\ 'command_callback': 'ale_linters#vue#vls#GetCommand', +\ 'executable_callback': ale#node#FindExecutableFunc('vue_vls', [ +\ 'node_modules/.bin/vls', +\ ]), +\ 'command': '%e --stdio', \ 'language': 'vue', \ 'project_root_callback': 'ale_linters#vue#vls#GetProjectRoot', \}) diff --git a/ale_linters/xml/xmllint.vim b/ale_linters/xml/xmllint.vim index 9d79438e..a0f97c3a 100644 --- a/ale_linters/xml/xmllint.vim +++ b/ale_linters/xml/xmllint.vim @@ -5,12 +5,8 @@ let g:ale_xml_xmllint_executable = get(g:, 'ale_xml_xmllint_executable', 'xmllint') let g:ale_xml_xmllint_options = get(g:, 'ale_xml_xmllint_options', '') -function! ale_linters#xml#xmllint#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'xml_xmllint_executable') -endfunction - function! ale_linters#xml#xmllint#GetCommand(buffer) abort - return ale#Escape(ale_linters#xml#xmllint#GetExecutable(a:buffer)) + return '%e' \ . ale#Pad(ale#Var(a:buffer, 'xml_xmllint_options')) \ . ' --noout -' endfunction @@ -63,7 +59,7 @@ endfunction call ale#linter#Define('xml', { \ 'name': 'xmllint', \ 'output_stream': 'stderr', -\ 'executable_callback': 'ale_linters#xml#xmllint#GetExecutable', +\ 'executable_callback': ale#VarFunc('xml_xmllint_executable'), \ 'command_callback': 'ale_linters#xml#xmllint#GetCommand', \ 'callback': 'ale_linters#xml#xmllint#Handle', \ }) diff --git a/ale_linters/yaml/swaglint.vim b/ale_linters/yaml/swaglint.vim index 4a22c70f..7362536e 100644 --- a/ale_linters/yaml/swaglint.vim +++ b/ale_linters/yaml/swaglint.vim @@ -4,17 +4,6 @@ call ale#Set('yaml_swaglint_executable', 'swaglint') call ale#Set('yaml_swaglint_use_global', get(g:, 'ale_use_global_executables', 0)) -function! ale_linters#yaml#swaglint#GetExecutable(buffer) abort - return ale#node#FindExecutable(a:buffer, 'yaml_swaglint', [ - \ 'node_modules/.bin/swaglint', - \]) -endfunction - -function! ale_linters#yaml#swaglint#GetCommand(buffer) abort - return ale_linters#yaml#swaglint#GetExecutable(a:buffer) - \ . ' -r compact --stdin' -endfunction - function! ale_linters#yaml#swaglint#Handle(buffer, lines) abort let l:pattern = ': \([^\s]\+\) @ \(\d\+\):\(\d\+\) - \(.\+\)$' let l:output = [] @@ -43,7 +32,9 @@ endfunction call ale#linter#Define('yaml', { \ 'name': 'swaglint', -\ 'executable_callback': 'ale_linters#yaml#swaglint#GetExecutable', -\ 'command_callback': 'ale_linters#yaml#swaglint#GetCommand', +\ 'executable_callback': ale#node#FindExecutableFunc('yaml_swaglint', [ +\ 'node_modules/.bin/swaglint', +\ ]), +\ 'command': '%e -r compact --stdin', \ 'callback': 'ale_linters#yaml#swaglint#Handle', \}) diff --git a/ale_linters/yaml/yamllint.vim b/ale_linters/yaml/yamllint.vim index f100667e..9d2cc7c2 100644 --- a/ale_linters/yaml/yamllint.vim +++ b/ale_linters/yaml/yamllint.vim @@ -1,18 +1,10 @@ " Author: KabbAmine <amine.kabb@gmail.com> -let g:ale_yaml_yamllint_executable = -\ get(g:, 'ale_yaml_yamllint_executable', 'yamllint') - -let g:ale_yaml_yamllint_options = -\ get(g:, 'ale_yaml_yamllint_options', '') - -function! ale_linters#yaml#yamllint#GetExecutable(buffer) abort - return ale#Var(a:buffer, 'yaml_yamllint_executable') -endfunction +call ale#Set('yaml_yamllint_executable', 'yamllint') +call ale#Set('yaml_yamllint_options', '') function! ale_linters#yaml#yamllint#GetCommand(buffer) abort - return ale_linters#yaml#yamllint#GetExecutable(a:buffer) - \ . ' ' . ale#Var(a:buffer, 'yaml_yamllint_options') + return '%e' . ale#Pad(ale#Var(a:buffer, 'yaml_yamllint_options')) \ . ' -f parsable %t' endfunction @@ -52,7 +44,7 @@ endfunction call ale#linter#Define('yaml', { \ 'name': 'yamllint', -\ 'executable_callback': 'ale_linters#yaml#yamllint#GetExecutable', +\ 'executable_callback': ale#VarFunc('yaml_yamllint_executable'), \ 'command_callback': 'ale_linters#yaml#yamllint#GetCommand', \ 'callback': 'ale_linters#yaml#yamllint#Handle', \}) |