]> Sergey Matveev's repositories - dotfiles.git/blob - vim/.vim/plugin/buftabline.vim
30a0c3c416c05aa68d0308be711a0791825ea8b7
[dotfiles.git] / vim / .vim / plugin / buftabline.vim
1 function! BufTabline()
2     redir => bufsRaw
3     silent buffers
4     redir END
5     let bufs = []
6     for buf in split(bufsRaw, "\n")
7         let buf = substitute(buf, "\"", "", "g")
8         let ents = []
9         for ent in split(buf, " ")
10             if len(ent) == 0 | continue | endif
11             let ents = add(ents, substitute(ent, "%", "%%", "g"))
12         endfor
13         let ents = ents[:-3]
14         if len(ents) == 4 | let ents = [ents[0], ents[1] . ents[2], ents[3]] | endif
15         if len(ents) == 3 | let ents = [ents[0] . ":" . ents[1], ents[2]] | endif
16         let ents[0] = "%#TabLine#" . ents[0] . "%*"
17         if len(ents[1]) > 20 | let ents[1] = "<" . ents[1][-19:] | endif
18         if match(ents[0], "%%") == -1
19             let ents[1] = "%#TabLine#:" . ents[1] . "%*"
20         else
21             let ents[1] = "%#TabLineSel#" . ents[1] . "%*"
22         endif
23         let bufs = add(bufs, join(ents[:1], ""))
24     endfor
25     return join(bufs, "%#Comment#|%*")
26 endfunction
27
28 set showtabline=2
29 set tabline=%!BufTabline()