summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--autoload/ale/job.vim30
-rw-r--r--doc/ale.txt22
-rw-r--r--test/fix/test_ale_fix.vader2
-rw-r--r--test/lsp/test_lsp_command_formatting.vader2
-rw-r--r--test/test_prepare_command.vader2
5 files changed, 36 insertions, 22 deletions
diff --git a/autoload/ale/job.vim b/autoload/ale/job.vim
index 63697c4a..1af95049 100644
--- a/autoload/ale/job.vim
+++ b/autoload/ale/job.vim
@@ -12,10 +12,10 @@
let g:ale_command_wrapper = get(g:, 'ale_command_wrapper', '')
" A setting for the shell used to execute commands
-let g:ale_shell = get(g:, 'ale_shell', &shell)
+let g:ale_shell = get(g:, 'ale_shell', v:null)
" A setting for the arguments we pass to the shell when executing commands
-let g:ale_shell_arguments = get(g:, 'ale_shell_arguments', &shellcmdflag)
+let g:ale_shell_arguments = get(g:, 'ale_shell_arguments', v:null)
if !has_key(s:, 'job_map')
let s:job_map = {}
@@ -190,15 +190,27 @@ function! ale#job#PrepareCommand(buffer, command) abort
" NeoVim handles this issue automatically if the command is a String,
" but we'll do this explicitly, so we use the same exact command for both
" versions.
- if has('win32')
- return 'cmd /s/c "' . l:command . '"'
- endif
+ if g:ale_shell is v:null
+ if has('win32')
+ return 'cmd /s/c "' . l:command . '"'
+ endif
- if g:ale_shell =~? 'fish$\|pwsh$'
- return ['/bin/sh', '-c', l:command]
- endif
+ if &shell =~? 'fish$\|pwsh$'
+ return ['/bin/sh', '-c', l:command]
+ endif
+
+ return split(&shell) + split(&shellcmdflag) + [l:command]
+ else
+ if has('win32')
+ return g:ale_shell . l:command . '"'
+ endif
+
+ let l:shell_arguments = g:ale_shell_arguments is v:null
+ \ ? &shellcmdflag
+ \ : g:ale_shell_arguments
- return [g:ale_shell] + split(g:ale_shell_arguments) + [l:command]
+ return split(g:ale_shell) + split(l:shell_arguments) + [l:command]
+ endif
endfunction
" Start a job with options which are agnostic to Vim and NeoVim.
diff --git a/doc/ale.txt b/doc/ale.txt
index 7b5fa624..a827e77a 100644
--- a/doc/ale.txt
+++ b/doc/ale.txt
@@ -1993,14 +1993,17 @@ g:ale_windows_node_executable_path *g:ale_windows_node_executable_path*
g:ale_shell *g:ale_shell*
Type: |String|
- Default: `'&shell'`
+ Default: not set
This variable is used to determine which shell ale will use to execute
- commands. This variables defaults to the value of the vim option '&shell'
- which corresponds to the $SHELL environment variable. For example
- if `$SHELL == '/bin/bash'`, but you want to use zsh, set `g:ale_shell = '/bin/zsh'.`
- If this option is set to either `fish` or `pwsh` (either by default or set
- with this command), ale will still execute commands with `bin/sh`.
+ commands. By default this variable is undefined, meaning that ALE will use
+ it's default behavior. Which is to run shells via the shell determined by
+ the `&shell` vim variable, with the arguments `&shellcmdflag`. Ale will fall
+ back to using `/bin/sh`if it detects the underlying `&shell`is either `fish`
+ or `pwsh`. However, if you set this variable ALE will no longer fall back to
+ other shells, meaning if you wanted to use `fish` you could do so via this
+ option. For example if `$SHELL == '/bin/bash'`, but you want to use zsh,
+ set `g:ale_shell = '/bin/zsh'.
Please note - if you are using this option you should consider additionally
setting `g:ale``g:ale_shell_arguments` since the default values for that
@@ -2009,12 +2012,11 @@ g:ale_shell *g:ale_shell*
g:ale_shell_arguments *g:ale_shell_arguments*
Type: |String|
- Default: `'&shellcmdflag'`
+ Default: not set
This variable is used to determine what commands vim will pass to the shell
- to execute it's commands. By default, `&shellcmdflag` would be set to the
- value of '`-c'`. Similar to `g:ale_shell`, if the shell is set to either
- `fish` or `pwsh`, `g:ale_shell_arguments` will no be used.
+ to execute it's commands. If this command is not set, but g:ale_shell is
+ set, ale will use `&shellcmdflag` as command arguments.
-------------------------------------------------------------------------------
6.1. Highlights *ale-highlights*
diff --git a/test/fix/test_ale_fix.vader b/test/fix/test_ale_fix.vader
index ac15bc05..90407681 100644
--- a/test/fix/test_ale_fix.vader
+++ b/test/fix/test_ale_fix.vader
@@ -26,7 +26,7 @@ Before:
augroup END
if !has('win32')
- let g:ale_shell = '/bin/bash'
+ let &shell = '/bin/bash'
endif
call ale#test#SetDirectory('/testplugin/test')
diff --git a/test/lsp/test_lsp_command_formatting.vader b/test/lsp/test_lsp_command_formatting.vader
index 33928291..9721f37f 100644
--- a/test/lsp/test_lsp_command_formatting.vader
+++ b/test/lsp/test_lsp_command_formatting.vader
@@ -31,6 +31,6 @@ Execute(Command formatting should be applied correctly for LSP linters):
\ g:args
else
AssertEqual
- \ ['true', [g:ale_shell, '-c', '''true'' --foo']],
+ \ ['true', [&shell, '-c', '''true'' --foo']],
\ g:args
endif
diff --git a/test/test_prepare_command.vader b/test/test_prepare_command.vader
index 660235cc..f90c881b 100644
--- a/test/test_prepare_command.vader
+++ b/test/test_prepare_command.vader
@@ -4,7 +4,7 @@ Before:
After:
Restore
- let g:ale_shell = &shell
+ let g:ale_shell = v:null
Execute(sh should be used when the shell is fish):
if !has('win32')