aboutsummaryrefslogtreecommitdiff
path: root/vim/bundle/tlib_vim/autoload/tlib/tab.vim
blob: fa6bb8d0f743831ec67a4044e01308d63bede0b2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
" @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