X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=vim%2F.vim%2Fplugin%2Fbuftabline.vim;h=24a3547376ea0271b65b27c6ddf619ddb9e9d7a6;hb=1de3d4b7a55b2628eeccb0dd704c554bf8aee63e;hp=30a0c3c416c05aa68d0308be711a0791825ea8b7;hpb=6c6fe3e2e925f1413464b5051680df5b3e4ec53a;p=dotfiles.git diff --git a/vim/.vim/plugin/buftabline.vim b/vim/.vim/plugin/buftabline.vim index 30a0c3c..24a3547 100644 --- a/vim/.vim/plugin/buftabline.vim +++ b/vim/.vim/plugin/buftabline.vim @@ -1,28 +1,25 @@ +if exists("g:loaded_mein_buftabline") | finish | endif +let g:loaded_mein_buftabline = 1 + function! BufTabline() redir => bufsRaw silent buffers redir END let bufs = [] - for buf in split(bufsRaw, "\n") - let buf = substitute(buf, "\"", "", "g") - let ents = [] - for ent in split(buf, " ") - if len(ent) == 0 | continue | endif - let ents = add(ents, substitute(ent, "%", "%%", "g")) - endfor - let ents = ents[:-3] - if len(ents) == 4 | let ents = [ents[0], ents[1] . ents[2], ents[3]] | endif - if len(ents) == 3 | let ents = [ents[0] . ":" . ents[1], ents[2]] | endif - let ents[0] = "%#TabLine#" . ents[0] . "%*" - if len(ents[1]) > 20 | let ents[1] = "<" . ents[1][-19:] | endif - if match(ents[0], "%%") == -1 - let ents[1] = "%#TabLine#:" . ents[1] . "%*" - else - let ents[1] = "%#TabLineSel#" . ents[1] . "%*" - endif - let bufs = add(bufs, join(ents[:1], "")) + for buf in split(bufsRaw, "\n")[:16] + let leftIdx = stridx(buf, '"') + let rightIdx = strridx(buf, '"') + let filename = substitute(buf[leftIdx + 1 : rightIdx - 1], "%", "%%", "g") + let linenum = split(buf[rightIdx:], " ")[-1] + let attrs = split(buf[:leftIdx-1], '\s\+') + let attrs = map(attrs, 'substitute(v:val, "%", "%%", "g")') + let attrs = (len(attrs) == 1) ? attrs[0] : attrs[0] . ":" . join(attrs[1:], "") + let attrs = "%#TabLine#" . attrs . "%*" + if len(filename) > 20 | let filename = "<" . filename[-(20-1):] | endif + let hl = (match(attrs, "%%") == -1) ? "%#TabLine#:" : "%#TabLineSel#" + let bufs = add(bufs, attrs . hl . filename . ":" . linenum . "%*") endfor - return join(bufs, "%#Comment#|%*") + return join(bufs, " ") endfunction set showtabline=2