소스 검색

Add GV.vim-style q mapping (#827)

* Add GV.vim-style q mapping

* Fix test cases

Co-authored-by: Junegunn Choi <junegunn.c@gmail.com>
Rosen Stoyanov 4 년 전
부모
커밋
cffcfe150b
2개의 변경된 파일20개의 추가작업 그리고 2개의 파일을 삭제
  1. 10 1
      plug.vim
  2. 10 1
      test/workflow.vader

+ 10 - 1
plug.vim

@@ -935,7 +935,7 @@ function! s:prepare(...)
     call s:new_window()
   endif
 
-  nnoremap <silent> <buffer> q  :if b:plug_preview==1<bar>pc<bar>endif<bar>bd<cr>
+  nnoremap <silent> <buffer> q :call <SID>close_pane()<cr>
   if a:0 == 0
     call s:finish_bindings()
   endif
@@ -957,6 +957,15 @@ function! s:prepare(...)
   endif
 endfunction
 
+function! s:close_pane()
+  if b:plug_preview == 1
+    pc
+    let b:plug_preview = -1
+  else
+    bd
+  endif
+endfunction
+
 function! s:assign_name()
   " Assign buffer name
   let prefix = '[Plugins]'

+ 10 - 1
test/workflow.vader

@@ -428,13 +428,17 @@ Execute (New commits on remote, PlugUpdate, then PlugDiff):
   execute "normal Xy\<cr>"
   AssertExpect '^- ', 1
 
-  " q will close preview window as well
+  " q will only close preview window
   normal q
 
   " We no longer have preview window
   silent! wincmd P
   AssertEqual 0, &previewwindow
 
+  " And we're still on main vim-plug window
+  AssertEqual 'vim-plug', &filetype
+  normal q
+
   " q should not close preview window if it's already open
   pedit
   PlugDiff
@@ -459,6 +463,11 @@ Execute (Test g:plug_pwindow):
   AssertEqual 2, winnr()
   AssertEqual 5, winheight('.')
   wincmd p
+
+  " Close preview window
+  normal q
+
+  " Close main window
   normal q
   unlet g:plug_pwindow