Просмотр исходного кода

Commit preview should work with non-POSIX-compliant &shell

Close #572
Junegunn Choi 9 лет назад
Родитель
Сommit
93ffcb36de
2 измененных файлов с 27 добавлено и 1 удалено
  1. 6 1
      plug.vim
  2. 21 0
      test/workflow.vader

+ 6 - 1
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 <silent> <buffer> q :q<cr>
   wincmd p

+ 21 - 0
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