Fix #749 - Use /bin/sh when the shell is fish
This commit is contained in:
parent
b44f6053d1
commit
751d965265
@ -174,9 +174,15 @@ function! ale#job#PrepareCommand(command) abort
|
|||||||
" NeoVim handles this issue automatically if the command is a String,
|
" NeoVim handles this issue automatically if the command is a String,
|
||||||
" but we'll do this explicitly, so we use thes same exact command for both
|
" but we'll do this explicitly, so we use thes same exact command for both
|
||||||
" versions.
|
" versions.
|
||||||
return has('win32')
|
if ale#Has('win32')
|
||||||
\ ? 'cmd /c ' . a:command
|
return 'cmd /c ' . a:command
|
||||||
\ : split(&shell) + split(&shellcmdflag) + [a:command]
|
endif
|
||||||
|
|
||||||
|
if &shell =~? 'fish$'
|
||||||
|
return ['/bin/sh', '-c', a:command]
|
||||||
|
endif
|
||||||
|
|
||||||
|
return split(&shell) + split(&shellcmdflag) + [a:command]
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Start a job with options which are agnostic to Vim and NeoVim.
|
" Start a job with options which are agnostic to Vim and NeoVim.
|
||||||
|
37
test/test_prepare_command.vader
Normal file
37
test/test_prepare_command.vader
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
Before:
|
||||||
|
Save &shell
|
||||||
|
Save &shellcmdflag
|
||||||
|
|
||||||
|
After:
|
||||||
|
Restore
|
||||||
|
let g:ale_has_override = {}
|
||||||
|
|
||||||
|
Execute(sh should be used when the shell is fish):
|
||||||
|
" Set something else, so we will replace that too.
|
||||||
|
let &shellcmdflag = '-f'
|
||||||
|
|
||||||
|
let &shell = 'fish'
|
||||||
|
|
||||||
|
AssertEqual ['/bin/sh', '-c', 'foobar'], ale#job#PrepareCommand('foobar')
|
||||||
|
|
||||||
|
let &shell = '/usr/bin/fish'
|
||||||
|
|
||||||
|
AssertEqual ['/bin/sh', '-c', 'foobar'], ale#job#PrepareCommand('foobar')
|
||||||
|
|
||||||
|
let &shell = '/usr/local/bin/fish'
|
||||||
|
|
||||||
|
AssertEqual ['/bin/sh', '-c', 'foobar'], ale#job#PrepareCommand('foobar')
|
||||||
|
|
||||||
|
Execute(Other shells should be used when set):
|
||||||
|
let &shell = '/bin/bash'
|
||||||
|
let &shellcmdflag = '-c'
|
||||||
|
|
||||||
|
AssertEqual ['/bin/bash', '-c', 'foobar'], ale#job#PrepareCommand('foobar')
|
||||||
|
|
||||||
|
Execute(cmd /c as a string should be used on Windows):
|
||||||
|
let &shell = 'who cares'
|
||||||
|
let &shellcmdflag = 'whatever'
|
||||||
|
|
||||||
|
let g:ale_has_override = {'win32': 1}
|
||||||
|
|
||||||
|
AssertEqual 'cmd /c foobar', ale#job#PrepareCommand('foobar')
|
Loading…
Reference in New Issue
Block a user