Skip to content

Commit

Permalink
Move the test for buffer-local variables
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
Jason Franklin authored and ivorpeles committed Nov 22, 2020
1 parent 145d504 commit 53ea4c4
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 9 deletions.
11 changes: 11 additions & 0 deletions autoload/ale/handlers/sh.vim
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
9 changes: 0 additions & 9 deletions autoload/ale/handlers/shellcheck.vim
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down

0 comments on commit 53ea4c4

Please sign in to comment.