mirror of https://github.com/dense-analysis/ale
Merge pull request #3427 from lifecrisis/sh-buffer-vars
Check for Vim's shell type buffer variables before falling back to the file type
This commit is contained in:
commit
1ec573bf0d
|
@ -1,18 +1,28 @@
|
||||||
" Author: w0rp <devw0rp@gmail.com>
|
" Author: w0rp <devw0rp@gmail.com>
|
||||||
|
|
||||||
" Get the shell type for a buffer, based on the hashbang line.
|
|
||||||
function! ale#handlers#sh#GetShellType(buffer) abort
|
function! ale#handlers#sh#GetShellType(buffer) abort
|
||||||
let l:bang_line = get(getbufline(a:buffer, 1), 0, '')
|
let l:shebang = get(getbufline(a:buffer, 1), 0, '')
|
||||||
|
|
||||||
let l:command = ''
|
let l:command = ''
|
||||||
|
|
||||||
" Take the shell executable from the hashbang, if we can.
|
" Take the shell executable from the shebang, if we can.
|
||||||
if l:bang_line[:1] is# '#!'
|
if l:shebang[:1] is# '#!'
|
||||||
" Remove options like -e, etc.
|
" Remove options like -e, etc.
|
||||||
let l:command = substitute(l:bang_line, ' --\?[a-zA-Z0-9]\+', '', 'g')
|
let l:command = substitute(l:shebang, ' --\?[a-zA-Z0-9]\+', '', 'g')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" If we couldn't find a hashbang, try the filetype
|
" 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# ''
|
if l:command is# ''
|
||||||
let l:command = &filetype
|
let l:command = &filetype
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -13,15 +13,6 @@ function! ale#handlers#shellcheck#GetDialectArgument(buffer) abort
|
||||||
return l:shell_type
|
return l:shell_type
|
||||||
endif
|
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 ''
|
return ''
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue