From c4729d4c9288af3e6c7f00316e1910c040a6b1d7 Mon Sep 17 00:00:00 2001 From: Nick Nisi Date: Wed, 11 May 2016 18:44:11 -0500 Subject: [PATCH] plug update --- config/nvim/autoload/plug.vim | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/config/nvim/autoload/plug.vim b/config/nvim/autoload/plug.vim index 6096740..b3bc1a6 100644 --- a/config/nvim/autoload/plug.vim +++ b/config/nvim/autoload/plug.vim @@ -722,15 +722,25 @@ function! s:assign_name() silent! execute 'f' fnameescape(name) endfunction +function! s:chsh(swap) + let prev = [&shell, &shellredir] + if !s:is_win && a:swap + set shell=sh shellredir=>%s\ 2>&1 + endif + return prev +endfunction + function! s:bang(cmd, ...) try + let [sh, shrd] = s:chsh(a:0) " FIXME: Escaping is incomplete. We could use shellescape with eval, " but it won't work on Windows. - let cmd = a:0 > 0 ? s:with_cd(a:cmd, a:1) : a:cmd + let cmd = a:0 ? s:with_cd(a:cmd, a:1) : a:cmd let g:_plug_bang = '!'.escape(cmd, '#!%') execute "normal! :execute g:_plug_bang\\" finally unlet g:_plug_bang + let [&shell, &shellredir] = [sh, shrd] endtry return v:shell_error ? 'Exit status: ' . v:shell_error : '' endfunction @@ -1823,10 +1833,7 @@ endfunction function! s:system(cmd, ...) try - let [sh, shrd] = [&shell, &shellredir] - if !s:is_win - set shell=sh shellredir=>%s\ 2>&1 - endif + let [sh, shrd] = s:chsh(1) let cmd = a:0 > 0 ? s:with_cd(a:cmd, a:1) : a:cmd return system(s:is_win ? '('.cmd.')' : cmd) finally