]> Sergey Matveev's repositories - dotfiles.git/blob - vim/.vim/pack/stargrave/start/buftabline/autoload/buftabline.vim
d5c2721b8929573105f3f2ed0c496bedbed2f074
[dotfiles.git] / vim / .vim / pack / stargrave / start / buftabline / autoload / buftabline.vim
1 vim9script
2
3 export def Do(): string
4     var bufsRaw = execute("buffers", "silent")
5     var bufs: list<string>
6     var leftIdx: number
7     var rightIdx: number
8     var filename: string
9     var linenum: string
10     var attrs: list<string>
11     var attr: string
12     var hl: string
13     for buf in split(bufsRaw, "\n")[ : 16]
14         leftIdx = stridx(buf, '"')
15         rightIdx = strridx(buf, '"')
16         filename = substitute(
17             strpart(buf, leftIdx + 1, rightIdx - leftIdx - 1), "%", "%%", "g")
18         linenum = split(strpart(buf, rightIdx), " ")[-1]
19         attrs = split(strpart(buf, 0, leftIdx - 1), '\s\+')
20         attrs = map(attrs, 'substitute(v:val, "%", "%%", "g")')
21         attr = (len(attrs) == 1) ? attrs[0] : attrs[0] .. ":" .. join(attrs[1 :], "")
22         attr = "%#TabLine#" .. attr .. "%*"
23         if len(filename) > 20 | filename = "<" .. filename[-(20 - 1) :] | endif
24         hl = (match(attr, "%%") == -1) ? "%#TabLine#:" : "%#TabLineSel#"
25         bufs = add(bufs, attr .. hl .. filename .. ":" .. linenum .. "%*")
26     endfor
27     return join(bufs, "  ")
28 enddef