diff options
author | Jason Franklin <jason.franklin@quoininc.com> | 2020-11-02 10:50:14 -0500 |
---|---|---|
committer | Jason Franklin <jason.franklin@quoininc.com> | 2020-11-02 10:59:16 -0500 |
commit | 31b7a2de41d7bfccfd80a563bf3920258230cdc3 (patch) | |
tree | 4d92ec835f80a3481339671978dc332ec8c360c3 /autoload | |
parent | 73632312c2519d7925dc57e5abcd0eacc5f1e55f (diff) | |
download | ale-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.vim | 11 | ||||
-rw-r--r-- | autoload/ale/handlers/shellcheck.vim | 9 |
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 |