summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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',
\})