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

Add g:plug_pwindow for customizing preview window layout

Close #504
Junegunn Choi 9 лет назад
Родитель
Сommit
e15598fe45
3 измененных файлов с 26 добавлено и 5 удалено
  1. 1 0
      README.md
  2. 9 5
      plug.vim
  3. 16 0
      test/workflow.vader

+ 1 - 0
README.md

@@ -141,6 +141,7 @@ Reload .vimrc and `:PlugInstall` to install plugins.
 | `g:plug_retries`    | 2                                 | Number of retries in case of timeout (*Ruby & Python*) |
 | `g:plug_shallow`    | 1                                 | Use shallow clone                                      |
 | `g:plug_window`     | `vertical topleft new`            | Command to open plug window                            |
+| `g:plug_pwindow`    | `above 12new`                     | Command to open preview window in `PlugDiff`           |
 | `g:plug_url_format` | `https://git::@github.com/%s.git` | `printf` format to build repo URL (Only applies to the subsequent `Plug` commands) |
 
 

+ 9 - 5
plug.vim

@@ -2181,11 +2181,15 @@ function! s:preview_commit()
     return
   endif
 
-  execute 'pedit' sha
-  wincmd P
-  setlocal filetype=git buftype=nofile nobuflisted modifiable
-  execute 'silent read !cd' s:shellesc(g:plugs[name].dir) '&& git show --no-color --pretty=medium' sha
-  normal! gg"_dd
+  if exists('g:plug_pwindow') && !s:is_preview_window_open()
+    execute g:plug_pwindow
+    execute 'e' sha
+  else
+    execute 'pedit' sha
+    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
   setlocal nomodifiable
   nnoremap <silent> <buffer> q :q<cr>
   wincmd p

+ 16 - 0
test/workflow.vader

@@ -365,6 +365,22 @@ Execute (New commits on remote, PlugUpdate, then PlugDiff):
   AssertEqual 1, &previewwindow
   pclose
 
+Execute (Test g:plug_pwindow):
+  let g:plug_pwindow = 'below 5new'
+  PlugDiff
+  AssertExpect '^- ', 1
+  execute "normal ]]jo"
+
+  AssertEqual 0, &previewwindow
+  AssertEqual 1, winnr()
+  wincmd P
+  AssertEqual 1, &previewwindow
+  AssertEqual 2, winnr()
+  AssertEqual 5, winheight('.')
+  wincmd p
+  normal q
+  unlet g:plug_pwindow
+
 Execute (Reuse Plug window in another tab):
   let tabnr = tabpagenr()
   PlugDiff