diff options
author | Keith Smiley <keithbsmiley@gmail.com> | 2016-10-27 18:20:22 +1000 |
---|---|---|
committer | Keith Smiley <keithbsmiley@gmail.com> | 2016-10-27 18:46:58 -0700 |
commit | 5fc2f8f6c0d5dd76f3583968f3901b884792b615 (patch) | |
tree | 7acffcf9aeb2be87f50ac9733323cb4f1234f7ef | |
parent | c8821fc0495d1d75cb3d716d73c4c28877e3513a (diff) | |
download | ale-5fc2f8f6c0d5dd76f3583968f3901b884792b615.zip |
Choose shell dialect based on vim syntax
Shellcheck is smart enough to check the shebang in a given file to
determine which dialect to use. Unfortunately this doesn't work for
files without shebangs, even if it might be apparent what dialect should
be used, such as "bashrc" or "foo.bash". Luckily `filetype.vim` defines
specific vars based on which shell dialect is being used based on a huge
list of conditions. With this change we take those into account for all
the types shellcheck supports, otherwise we fallback to letting it try
and decide.
-rw-r--r-- | ale_linters/sh/shellcheck.vim | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/ale_linters/sh/shellcheck.vim b/ale_linters/sh/shellcheck.vim index 3fdad5f2..d0fe8b11 100644 --- a/ale_linters/sh/shellcheck.vim +++ b/ale_linters/sh/shellcheck.vim @@ -16,9 +16,25 @@ else let s:exclude_option = '' endif +function! s:GetDialectArgument() + if exists('b:is_bash') && b:is_bash + return '-s bash' + elseif exists('b:is_sh') && b:is_sh + return '-s sh' + elseif exists('b:is_kornshell') && b:is_kornshell + return '-s ksh' + endif + + return '' +endfunction + +function! ale_linters#sh#shellcheck#GetCommand(buffer) + return 'shellcheck ' . s:exclude_option . ' ' . s:GetDialectArgument() . ' -f gcc -' +endfunction + call ale#linter#Define('sh', { \ 'name': 'shellcheck', \ 'executable': 'shellcheck', -\ 'command': 'shellcheck ' . s:exclude_option . ' -f gcc -', +\ 'command_callback': 'ale_linters#sh#shellcheck#GetCommand', \ 'callback': 'ale#handlers#HandleGCCFormat', \}) |