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

Avoid unnecessary tab/window switch

Junegunn Choi 11 лет назад
Родитель
Сommit
da47e6ee56
1 измененных файлов с 15 добавлено и 9 удалено
  1. 15 9
      plug.vim

+ 15 - 9
plug.vim

@@ -506,23 +506,29 @@ function! s:switch_in()
     return 0
   endif
 
-  let s:pos = [tabpagenr(), winnr(), winsaveview()]
-  execute 'normal!' s:plug_tab.'gt'
-  let winnr = bufwinnr(s:plug_buf)
-  execute winnr 'wincmd w'
+  if winbufnr(0) != s:plug_buf
+    let s:pos = [tabpagenr(), winnr(), winsaveview()]
+    execute 'normal!' s:plug_tab.'gt'
+    let winnr = bufwinnr(s:plug_buf)
+    execute winnr.'wincmd w'
+    call add(s:pos, winsaveview())
+  else
+    let s:pos = [winsaveview()]
+  endif
 
-  call add(s:pos, winsaveview())
   setlocal modifiable
   return 1
 endfunction
 
 function! s:switch_out()
-  call winrestview(s:pos[3])
+  call winrestview(s:pos[-1])
   setlocal nomodifiable
 
-  execute 'normal!' s:pos[0].'gt'
-  execute s:pos[1] 'wincmd w'
-  call winrestview(s:pos[2])
+  if len(s:pos) > 1
+    execute 'normal!' s:pos[0].'gt'
+    execute s:pos[1] 'wincmd w'
+    call winrestview(s:pos[2])
+  endif
 endfunction
 
 function! s:prepare()