summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Smiley <keithbsmiley@gmail.com>2016-10-27 18:20:22 +1000
committerKeith Smiley <keithbsmiley@gmail.com>2016-10-27 18:46:58 -0700
commit5fc2f8f6c0d5dd76f3583968f3901b884792b615 (patch)
tree7acffcf9aeb2be87f50ac9733323cb4f1234f7ef
parentc8821fc0495d1d75cb3d716d73c4c28877e3513a (diff)
downloadale-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.vim18
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',
\})