vim9: Rewrite tabline#formatters#default to Vim9Script

This commit is contained in:
Christian Brabandt 2021-05-08 00:48:18 +02:00
parent 725e881ac9
commit e608a0c016
No known key found for this signature in database
GPG Key ID: F3F92DA383FDDE09
1 changed files with 72 additions and 33 deletions

View File

@ -1,45 +1,84 @@
" MIT License. Copyright (c) 2013-2021 Bailey Ling et al. " MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
" vim: et ts=2 sts=2 sw=2 " vim: et ts=2 sts=2 sw=2 et
scriptencoding utf-8 scriptencoding utf-8
function! airline#extensions#tabline#formatters#default#format(bufnr, buffers) if !exists(":def") || (exists(":def") && get(g:, "airline_experimental", 0) == 0)
let fnametruncate = get(g:, 'airline#extensions#tabline#fnametruncate', 0) function! airline#extensions#tabline#formatters#default#format(bufnr, buffers)
let fmod = get(g:, 'airline#extensions#tabline#fnamemod', ':~:.') let fnametruncate = get(g:, 'airline#extensions#tabline#fnametruncate', 0)
let _ = '' let fmod = get(g:, 'airline#extensions#tabline#fnamemod', ':~:.')
let _ = ''
let name = bufname(a:bufnr) let name = bufname(a:bufnr)
if empty(name) if empty(name)
let _ .= '[No Name]' let _ = '[No Name]'
elseif name =~ 'term://' elseif name =~ 'term://'
" Neovim Terminal " Neovim Terminal
let _ = substitute(name, '\(term:\)//.*:\(.*\)', '\1 \2', '') 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))
else 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 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_nr_show ? printf(buf_nr_format, a:bufnr) : ''
let _ .= substitute(a:buffer_name, '\\', '/', 'g')
if getbufvar(a:bufnr, '&modified') == 1
let _ .= g:airline_symbols.modified
endif endif
endif return _
endfunction
else
" Vim9 Script implementation
def airline#extensions#tabline#formatters#default#format(bufnr: number, buffers: list<number>): string
var fnametruncate = get(g:, 'airline#extensions#tabline#fnametruncate', 0)
var fmod = get(g:, 'airline#extensions#tabline#fnamemod', ':~:.')
var result = ''
return airline#extensions#tabline#formatters#default#wrap_name(a:bufnr, _) var name = bufname(bufnr)
endfunction 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 = airline#util#strcharpart(result, 0, fnametruncate)
endif
endif
return airline#extensions#tabline#formatters#default#wrap_name(bufnr, result)
enddef
function! airline#extensions#tabline#formatters#default#wrap_name(bufnr, buffer_name) def airline#extensions#tabline#formatters#default#wrap_name(bufnr: number, buffer_name: string): string
let buf_nr_format = get(g:, 'airline#extensions#tabline#buffer_nr_format', '%s: ') var 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) var 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) : '' var result = buf_nr_show ? printf(buf_nr_format, bufnr) : ''
let _ .= substitute(a:buffer_name, '\\', '/', 'g') result ..= substitute(buffer_name, '\\', '/', 'g')
if getbufvar(a:bufnr, '&modified') == 1 if getbufvar(bufnr, '&modified') == 1
let _ .= buf_modified_symbol result ..= g:airline_symbols.modified
endif endif
return _ return result
endfunction enddef
endif