summaryrefslogtreecommitdiff
path: root/autoload
diff options
context:
space:
mode:
authorJason Franklin <jason.franklin@quoininc.com>2020-11-02 10:50:14 -0500
committerJason Franklin <jason.franklin@quoininc.com>2020-11-02 10:59:16 -0500
commit31b7a2de41d7bfccfd80a563bf3920258230cdc3 (patch)
tree4d92ec835f80a3481339671978dc332ec8c360c3 /autoload
parent73632312c2519d7925dc57e5abcd0eacc5f1e55f (diff)
downloadale-31b7a2de41d7bfccfd80a563bf3920258230cdc3.zip
Move the test for buffer-local variables
The "ale#handlers#sh#GetShellType()" function currently falls back to the file type without checking for buffer-local variables first. This causes the function to return "sh" even when a script is known by Vim to be a script of a more specific type (e.g., "bash"). The "ale#handlers#shellcheck#GetDialectArgument()" function then erroneously uses this type even though a more fitting type should be used instead. Files without a "#!" line will be of type "sh" even though they may have a ".bash" suffix. This commit fixes the problem by checking for buffer-local shell type variables (set by Vim) before falling back to the file type.
Diffstat (limited to 'autoload')
-rw-r--r--autoload/ale/handlers/sh.vim11
-rw-r--r--autoload/ale/handlers/shellcheck.vim9
2 files changed, 11 insertions, 9 deletions
diff --git a/autoload/ale/handlers/sh.vim b/autoload/ale/handlers/sh.vim
index f99c3dbd..6ed9fea3 100644
--- a/autoload/ale/handlers/sh.vim
+++ b/autoload/ale/handlers/sh.vim
@@ -11,6 +11,17 @@ function! ale#handlers#sh#GetShellType(buffer) abort
let l:command = substitute(l:shebang, ' --\?[a-zA-Z0-9]\+', '', 'g')
endif
+ " With no shebang line, attempt to use Vim's buffer-local variables.
+ if l:command is# ''
+ if getbufvar(a:buffer, 'is_bash', 0)
+ let l:command = 'bash'
+ elseif getbufvar(a:buffer, 'is_sh', 0)
+ let l:command = 'sh'
+ elseif getbufvar(a:buffer, 'is_kornshell', 0)
+ let l:command = 'ksh'
+ endif
+ endif
+
" If we couldn't find a shebang, try the filetype
if l:command is# ''
let l:command = &filetype
diff --git a/autoload/ale/handlers/shellcheck.vim b/autoload/ale/handlers/shellcheck.vim
index b16280f0..351d6d3f 100644
--- a/autoload/ale/handlers/shellcheck.vim
+++ b/autoload/ale/handlers/shellcheck.vim
@@ -13,15 +13,6 @@ function! ale#handlers#shellcheck#GetDialectArgument(buffer) abort
return l:shell_type
endif
- " If there's no hashbang, try using Vim's buffer variables.
- if getbufvar(a:buffer, 'is_bash', 0)
- return 'bash'
- elseif getbufvar(a:buffer, 'is_sh', 0)
- return 'sh'
- elseif getbufvar(a:buffer, 'is_kornshell', 0)
- return 'ksh'
- endif
-
return ''
endfunction