From 9d52d968db9b6cfdc493e1418348a3ff26177230 Mon Sep 17 00:00:00 2001 From: w0rp Date: Sun, 9 Oct 2016 19:32:01 +0100 Subject: #69 Improve shell detection --- ale_linters/sh/shell.vim | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) (limited to 'ale_linters/sh/shell.vim') diff --git a/ale_linters/sh/shell.vim b/ale_linters/sh/shell.vim index f5987c03..ce8aa6c8 100644 --- a/ale_linters/sh/shell.vim +++ b/ale_linters/sh/shell.vim @@ -14,20 +14,18 @@ if !exists('g:ale_linters_sh_shell_default_shell') endif function! ale_linters#sh#shell#GetExecutable(buffer) - let shell = g:ale_linters_sh_shell_default_shell - let banglines = getbufline(a:buffer, 1) " Take the shell executable from the hashbang, if we can. - if len(banglines) == 1 - let bangmatch = matchlist(banglines[0], '^#!\([^ ]\+\)') - - if len(bangmatch) > 0 - let shell = bangmatch[1] - endif + if len(banglines) == 1 && banglines[0] =~# '^#!' + for possible_shell in ['bash', 'tcsh', 'csh', 'zsh', 'sh'] + if banglines[0] =~# possible_shell . '\s*$' + return possible_shell + endif + endfor endif - return shell + return g:ale_linters_sh_shell_default_shell endfunction function! ale_linters#sh#shell#GetCommand(buffer) -- cgit v1.2.3 From 2d32c312059e10da03e8f0b9627b2f9ee49bd6bf Mon Sep 17 00:00:00 2001 From: w0rp Date: Sun, 9 Oct 2016 19:41:27 +0100 Subject: Handle arguments to shells in shebang lines too. --- ale_linters/sh/shell.vim | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'ale_linters/sh/shell.vim') diff --git a/ale_linters/sh/shell.vim b/ale_linters/sh/shell.vim index ce8aa6c8..979bda3f 100644 --- a/ale_linters/sh/shell.vim +++ b/ale_linters/sh/shell.vim @@ -18,8 +18,11 @@ function! ale_linters#sh#shell#GetExecutable(buffer) " Take the shell executable from the hashbang, if we can. if len(banglines) == 1 && banglines[0] =~# '^#!' + " Remove options like -e, etc. + let line = substitute(banglines[0], '--\?[a-zA-Z0-9]\+', '', 'g') + for possible_shell in ['bash', 'tcsh', 'csh', 'zsh', 'sh'] - if banglines[0] =~# possible_shell . '\s*$' + if line =~# possible_shell . '\s*$' return possible_shell endif endfor -- cgit v1.2.3 From b5e4538699f2850ca9c9ebfefad8fcbd18fe5eba Mon Sep 17 00:00:00 2001 From: w0rp Date: Sun, 9 Oct 2016 20:39:14 +0100 Subject: #69 Change the default shell for shell linting --- ale_linters/sh/shell.vim | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'ale_linters/sh/shell.vim') diff --git a/ale_linters/sh/shell.vim b/ale_linters/sh/shell.vim index 979bda3f..8b45c49b 100644 --- a/ale_linters/sh/shell.vim +++ b/ale_linters/sh/shell.vim @@ -10,7 +10,11 @@ let g:loaded_ale_linters_sh_shell = 1 " This option can be changed to change the default shell when the shell " cannot be taken from the hashbang line. if !exists('g:ale_linters_sh_shell_default_shell') - let g:ale_linters_sh_shell_default_shell = 'bash' + let g:ale_linters_sh_shell_default_shell = fnamemodify($SHELL, ':t') + + if g:ale_linters_sh_shell_default_shell ==# '' + let g:ale_linters_sh_shell_default_shell = 'bash' + endif endif function! ale_linters#sh#shell#GetExecutable(buffer) -- cgit v1.2.3