From 8ec6f1e40f0847f2d3b336dcf16b8ff132d5d57b Mon Sep 17 00:00:00 2001 From: Christian Date: Wed, 18 Nov 2020 14:54:39 +0100 Subject: [PATCH] tabline formatter: prepare for vim9 script implementation --- .../extensions/tabline/formatters/default.vim | 78 ++++++++++--------- 1 file changed, 41 insertions(+), 37 deletions(-) diff --git a/autoload/airline/extensions/tabline/formatters/default.vim b/autoload/airline/extensions/tabline/formatters/default.vim index 5e68c94c..92b60350 100644 --- a/autoload/airline/extensions/tabline/formatters/default.vim +++ b/autoload/airline/extensions/tabline/formatters/default.vim @@ -1,45 +1,49 @@ " MIT License. Copyright (c) 2013-2020 Bailey Ling et al. -" vim: et ts=2 sts=2 sw=2 +" vim: et ts=2 sts=2 sw=2 et fdm=marker scriptencoding utf-8 -function! airline#extensions#tabline#formatters#default#format(bufnr, buffers) - let fnametruncate = get(g:, 'airline#extensions#tabline#fnametruncate', 0) - let fmod = get(g:, 'airline#extensions#tabline#fnamemod', ':~:.') - let _ = '' +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) + let fmod = get(g:, 'airline#extensions#tabline#fnamemod', ':~:.') + let _ = '' - let name = bufname(a:bufnr) - if empty(name) - let _ .= '[No Name]' - elseif name =~ 'term://' - " Neovim Terminal - let _ = substitute(name, '\(term:\)//.*:\(.*\)', '\1 \2', '') - else - if get(g:, 'airline#extensions#tabline#fnamecollapse', 1) - " Does not handle non-ascii characters like Cyrillic: 'D/Учёба/t.c' - "let _ .= substitute(fnamemodify(name, fmod), '\v\w\zs.{-}\ze(\\|/)', '', 'g') - let _ .= pathshorten(fnamemodify(name, fmod)) + let name = bufname(a:bufnr) + if empty(name) + let _ .= '[No Name]' + elseif name =~ 'term://' + " Neovim Terminal + let _ = substitute(name, '\(term:\)//.*:\(.*\)', '\1 \2', '') else - let _ .= fnamemodify(name, fmod) + if get(g:, 'airline#extensions#tabline#fnamecollapse', 1) + " Does not handle non-ascii characters like Cyrillic: 'D/Учёба/t.c' + "let _ .= substitute(fnamemodify(name, fmod), '\v\w\zs.{-}\ze(\\|/)', '', 'g') + let _ .= pathshorten(fnamemodify(name, fmod)) + else + let _ .= fnamemodify(name, fmod) + endif + if a:bufnr != bufnr('%') && fnametruncate && strlen(_) > fnametruncate + let _ = airline#util#strcharpart(_, 0, fnametruncate) + endif endif - if a:bufnr != bufnr('%') && fnametruncate && strlen(_) > fnametruncate - let _ = airline#util#strcharpart(_, 0, fnametruncate) + + return airline#extensions#tabline#formatters#default#wrap_name(a:bufnr, _) + endfunction + + function! airline#extensions#tabline#formatters#default#wrap_name(bufnr, buffer_name) + let buf_nr_format = get(g:, 'airline#extensions#tabline#buffer_nr_format', '%s: ') + let buf_nr_show = get(g:, 'airline#extensions#tabline#buffer_nr_show', 0) + let buf_modified_symbol = g:airline_symbols.modified + + let _ = buf_nr_show ? printf(buf_nr_format, a:bufnr) : '' + let _ .= substitute(a:buffer_name, '\\', '/', 'g') + + if getbufvar(a:bufnr, '&modified') == 1 + let _ .= buf_modified_symbol endif - endif - - return airline#extensions#tabline#formatters#default#wrap_name(a:bufnr, _) -endfunction - -function! airline#extensions#tabline#formatters#default#wrap_name(bufnr, buffer_name) - let buf_nr_format = get(g:, 'airline#extensions#tabline#buffer_nr_format', '%s: ') - let buf_nr_show = get(g:, 'airline#extensions#tabline#buffer_nr_show', 0) - let buf_modified_symbol = g:airline_symbols.modified - - let _ = buf_nr_show ? printf(buf_nr_format, a:bufnr) : '' - let _ .= substitute(a:buffer_name, '\\', '/', 'g') - - if getbufvar(a:bufnr, '&modified') == 1 - let _ .= buf_modified_symbol - endif - return _ -endfunction + return _ + endfunction +else +endif