50 lines
1.1 KiB
VimL
50 lines
1.1 KiB
VimL
|
" @Author: Tom Link (micathom AT gmail com?subject=[vim])
|
||
|
" @Website: http://www.vim.org/account/profile.php?user_id=4037
|
||
|
" @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
|
||
|
" @Revision: 31
|
||
|
|
||
|
|
||
|
" Return a dictionary of bufnumbers => [[tabpage, winnr] ...]
|
||
|
function! tlib#tab#BufMap() "{{{3
|
||
|
let acc = {}
|
||
|
for t in range(tabpagenr('$'))
|
||
|
let bb = tabpagebuflist(t + 1)
|
||
|
for b in range(len(bb))
|
||
|
let bn = bb[b]
|
||
|
let bd = [t + 1, b + 1]
|
||
|
if has_key(acc, bn)
|
||
|
call add(acc[bn], bd)
|
||
|
else
|
||
|
let acc[bn] = [bd]
|
||
|
endif
|
||
|
endfor
|
||
|
endfor
|
||
|
return acc
|
||
|
endf
|
||
|
|
||
|
|
||
|
" Find a buffer's window at some tab page.
|
||
|
function! tlib#tab#TabWinNr(buffer) "{{{3
|
||
|
let bn = bufnr(a:buffer)
|
||
|
let bt = tlib#tab#BufMap()
|
||
|
let tn = tabpagenr()
|
||
|
let wn = winnr()
|
||
|
let bc = get(bt, bn)
|
||
|
if !empty(bc)
|
||
|
for [t, w] in bc
|
||
|
if t == tn
|
||
|
return [t, w]
|
||
|
endif
|
||
|
endfor
|
||
|
return bc[0]
|
||
|
endif
|
||
|
endf
|
||
|
|
||
|
|
||
|
function! tlib#tab#Set(tabnr) "{{{3
|
||
|
if a:tabnr > 0
|
||
|
exec a:tabnr .'tabnext'
|
||
|
endif
|
||
|
endf
|
||
|
|