Avoid unnecessary tab/window switch

This commit is contained in:
Junegunn Choi 2014-10-10 04:39:38 +09:00
parent 662274e617
commit da47e6ee56

View File

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