default.vim 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. " MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
  2. " vim: et ts=2 sts=2 sw=2 et
  3. scriptencoding utf-8
  4. if !exists(":def") || !airline#util#has_vim9_script()
  5. function! airline#extensions#tabline#formatters#default#format(bufnr, buffers)
  6. let fnametruncate = get(g:, 'airline#extensions#tabline#fnametruncate', 0)
  7. let fmod = get(g:, 'airline#extensions#tabline#fnamemod', ':~:.')
  8. let _ = ''
  9. let name = bufname(a:bufnr)
  10. if empty(name)
  11. let _ = '[No Name]'
  12. elseif name =~ 'term://'
  13. " Neovim Terminal
  14. let _ = substitute(name, '\(term:\)//.*:\(.*\)', '\1 \2', '')
  15. else
  16. if get(g:, 'airline#extensions#tabline#fnamecollapse', 1)
  17. " Does not handle non-ascii characters like Cyrillic: 'D/Учёба/t.c'
  18. "let _ .= substitute(fnamemodify(name, fmod), '\v\w\zs.{-}\ze(\\|/)', '', 'g')
  19. let _ = pathshorten(fnamemodify(name, fmod))
  20. else
  21. let _ = fnamemodify(name, fmod)
  22. endif
  23. if a:bufnr != bufnr('%') && fnametruncate && strlen(_) > fnametruncate
  24. let _ = airline#util#strcharpart(_, 0, fnametruncate)
  25. endif
  26. endif
  27. return airline#extensions#tabline#formatters#default#wrap_name(a:bufnr, _)
  28. endfunction
  29. function! airline#extensions#tabline#formatters#default#wrap_name(bufnr, buffer_name)
  30. let buf_nr_format = get(g:, 'airline#extensions#tabline#buffer_nr_format', '%s: ')
  31. let buf_nr_show = get(g:, 'airline#extensions#tabline#buffer_nr_show', 0)
  32. let _ = buf_nr_show ? printf(buf_nr_format, a:bufnr) : ''
  33. let _ .= substitute(a:buffer_name, '\\', '/', 'g')
  34. if getbufvar(a:bufnr, '&modified') == 1
  35. let _ .= g:airline_symbols.modified
  36. endif
  37. return _
  38. endfunction
  39. finish
  40. else
  41. " Vim9 Script implementation
  42. def airline#extensions#tabline#formatters#default#format(bufnr: number, buffers: list<number>): string
  43. var fnametruncate = get(g:, 'airline#extensions#tabline#fnametruncate', 0)
  44. var fmod = get(g:, 'airline#extensions#tabline#fnamemod', ':~:.')
  45. var result = ''
  46. var name = bufname(bufnr)
  47. if empty(name)
  48. result = '[No Name]'
  49. elseif name =~ 'term://'
  50. # Neovim Terminal
  51. result = substitute(name, '\(term:\)//.*:\(.*\)', '\1 \2', '')
  52. else
  53. if get(g:, 'airline#extensions#tabline#fnamecollapse', 1)
  54. result = pathshorten(fnamemodify(name, fmod))
  55. else
  56. result = fnamemodify(name, fmod)
  57. endif
  58. if bufnr != bufnr('%') && fnametruncate && strlen(result) > fnametruncate
  59. result = airline#util#strcharpart(result, 0, fnametruncate)
  60. endif
  61. endif
  62. return airline#extensions#tabline#formatters#default#wrap_name(bufnr, result)
  63. enddef
  64. def airline#extensions#tabline#formatters#default#wrap_name(bufnr: number, buffer_name: string): string
  65. var buf_nr_format = get(g:, 'airline#extensions#tabline#buffer_nr_format', '%s: ')
  66. var buf_nr_show = get(g:, 'airline#extensions#tabline#buffer_nr_show', 0)
  67. var result = buf_nr_show ? printf(buf_nr_format, bufnr) : ''
  68. result ..= substitute(buffer_name, '\\', '/', 'g')
  69. if getbufvar(bufnr, '&modified')
  70. result ..= g:airline_symbols.modified
  71. endif
  72. return result
  73. enddef
  74. endif