diff --git a/plug.vim b/plug.vim index b245aa7..ca0c3e2 100644 --- a/plug.vim +++ b/plug.vim @@ -2288,7 +2288,12 @@ function! s:preview_commit() wincmd P endif setlocal previewwindow filetype=git buftype=nofile nobuflisted modifiable - execute 'silent %!cd' s:shellesc(g:plugs[name].dir) '&& git show --no-color --pretty=medium' sha + try + let [sh, shrd] = s:chsh(1) + execute 'silent %!cd' s:shellesc(g:plugs[name].dir) '&& git show --no-color --pretty=medium' sha + finally + let [&shell, &shellredir] = [sh, shrd] + endtry setlocal nomodifiable nnoremap q :q wincmd p diff --git a/test/workflow.vader b/test/workflow.vader index 1b3efef..0cc28ae 100644 --- a/test/workflow.vader +++ b/test/workflow.vader @@ -414,6 +414,27 @@ Execute (Test g:plug_pwindow): normal q unlet g:plug_pwindow +Execute (#572 - Commit preview should work with non-POSIX-compliant &shell): + " Invalid shell + let shell = &shell + set shell=shellfish + + try + " Preview commit should still work + PlugDiff + execute "normal ]]jo" + wincmd P + Log getline(1, '$') + Assert getline(1) =~ 'commit', 'Preview window is empty' + AssertEqual 'shellfish', &shell + finally + " Restore &shell + let &shell = shell + unlet shell + pclose + q + endtry + Execute (Reuse Plug window in another tab): let tabnr = tabpagenr() PlugDiff