From 9387517f01b9a485012ed7df802c93563e7f35b6 Mon Sep 17 00:00:00 2001 From: Christian Date: Wed, 18 Nov 2020 15:01:00 +0100 Subject: [PATCH] default tablineformatter: implement as vim9 script --- .../extensions/tabline/formatters/default.vim | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/autoload/airline/extensions/tabline/formatters/default.vim b/autoload/airline/extensions/tabline/formatters/default.vim index 92b60350..9a0d10c1 100644 --- a/autoload/airline/extensions/tabline/formatters/default.vim +++ b/autoload/airline/extensions/tabline/formatters/default.vim @@ -3,7 +3,6 @@ scriptencoding utf-8 -unlet! g:airline_experimental if !exists(":def") || (exists(":def") && get(g:, "airline_experimental", 0)==0) function! airline#extensions#tabline#formatters#default#format(bufnr, buffers) let fnametruncate = get(g:, 'airline#extensions#tabline#fnametruncate', 0) @@ -46,4 +45,38 @@ if !exists(":def") || (exists(":def") && get(g:, "airline_experimental", 0)==0) return _ endfunction else + " New Vim9 script implementation {{{1 + def airline#extensions#tabline#formatters#default#format(bufnr: number, buffers: list): string # {{{2 + var fmod = get(g:, 'airline#extensions#tabline#fnamemod', ':~:.') + var result = '' + var fnametruncate = get(g:, 'airline#extensions#tabline#fnametruncate', 0) + + var name = bufname(bufnr) + if empty(name) + result = '[No Name]' + elseif name =~ 'term://' + # Neovim Terminal + result = substitute(name, '\(term:\)//.*:\(.*\)', '\1 \2', '') + else + if get(g:, 'airline#extensions#tabline#fnamecollapse', 1) + result = pathshorten(fnamemodify(name, fmod)) + else + result = fnamemodify(name, fmod) + endif + if bufnr != bufnr('%') && fnametruncate && strlen(result) > fnametruncate + result = strpart(result, 0, fnametruncate) + endif + endif + return airline#extensions#tabline#formatters#default#wrap_name(bufnr, result) + enddef + def airline#extensions#tabline#formatters#default#wrap_name(bufnr: number, buffer_name: string): string # {{{2 + var buf_nr_show = get(g:, 'airline#extensions#tabline#buffer_nr_show', 0) + var buf_nr_format = get(g:, 'airline#extensions#tabline#buffer_nr_format', '%s: ') + var result = buf_nr_show ? printf(buf_nr_format, bufnr) : '' + result = result .. substitute(buffer_name, '\\', '/', 'g') + if getbufvar(bufnr, '&modified') == 1 + result = result .. g:airline_symbols.modified + endif + return result + enddef endif