diff --git a/autoload/ale/job.vim b/autoload/ale/job.vim index 0117c7dd..d4771842 100644 --- a/autoload/ale/job.vim +++ b/autoload/ale/job.vim @@ -11,6 +11,12 @@ " A setting for wrapping commands. 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) + +" A setting for the arguments we pass to the shell when executing commands +let g:ale_shell_arguments = get(g:, 'ale_shell_arguments', &shellcmdflag) + if !has_key(s:, 'job_map') let s:job_map = {} endif @@ -188,11 +194,11 @@ function! ale#job#PrepareCommand(buffer, command) abort return 'cmd /s/c "' . l:command . '"' endif - if &shell =~? 'fish$\|pwsh$' - return ['/bin/sh', '-c', l:command] + if g:ale_shell =~? 'fish$\|pwsh$' + return ['/bin/sh', g:ale_shell_arguments, l:command] endif - return split(&shell) + split(&shellcmdflag) + [l:command] + return [g:ale_shell] + split(g:ale_shell_arguments) + [l:command] endfunction " Start a job with options which are agnostic to Vim and NeoVim. diff --git a/doc/ale.txt b/doc/ale.txt index 1a37f73f..7fbaa0df 100644 --- a/doc/ale.txt +++ b/doc/ale.txt @@ -1984,6 +1984,24 @@ g:ale_windows_node_executable_path *g:ale_windows_node_executable_path* scripts are executed with whatever executable is configured with this setting. +g:ale_shell *g:ale_shell* + + Type: |String| + Default: `'&shell'` + + 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'.` + +g:ale_shell_arguments *g:ale_shell_arguments* + + Type: |String| + Default: `'&shellcmdflag'` + + 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'`. ------------------------------------------------------------------------------- 6.1. Highlights *ale-highlights*