vimtex.vim 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. " MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
  2. " Plugin: https://github.com/lervag/vimtex
  3. " vim: et ts=2 sts=2 sw=2
  4. scriptencoding utf-8
  5. let s:spc = g:airline_symbols.space
  6. function! s:SetDefault(var, val)
  7. if !exists(a:var)
  8. execute 'let ' . a:var . '=' . string(a:val)
  9. endif
  10. endfunction
  11. " Left and right delimiters (added only when status string is not empty)
  12. call s:SetDefault( 'g:airline#extensions#vimtex#left', "{")
  13. call s:SetDefault( 'g:airline#extensions#vimtex#right', "}")
  14. " The current tex file is the main project file
  15. call s:SetDefault( 'g:airline#extensions#vimtex#main', "" )
  16. "
  17. " The current tex file is a subfile of the project
  18. " and the compilation is set for the main file
  19. call s:SetDefault( 'g:airline#extensions#vimtex#sub_main', "m")
  20. "
  21. " The current tex file is a subfile of the project
  22. " and the compilation is set for this subfile
  23. call s:SetDefault( 'g:airline#extensions#vimtex#sub_local', "l")
  24. "
  25. " Compilation is running and continuous compilation is off
  26. call s:SetDefault( 'g:airline#extensions#vimtex#compiled', "c₁")
  27. " Compilation is running and continuous compilation is on
  28. call s:SetDefault( 'g:airline#extensions#vimtex#continuous', "c")
  29. " Viewer is opened
  30. call s:SetDefault( 'g:airline#extensions#vimtex#viewer', "v")
  31. function! airline#extensions#vimtex#init(ext)
  32. call airline#parts#define_raw('vimtex', '%{airline#extensions#vimtex#get_scope()}')
  33. call a:ext.add_statusline_func('airline#extensions#vimtex#apply')
  34. endfunction
  35. function! airline#extensions#vimtex#apply(...)
  36. if exists("b:vimtex")
  37. let w:airline_section_x = get(w:, 'airline_section_x', g:airline_section_x)
  38. let w:airline_section_x.=s:spc.g:airline_left_alt_sep.s:spc.'%{airline#extensions#vimtex#get_scope()}'
  39. endif
  40. endfunction
  41. function! airline#extensions#vimtex#get_scope()
  42. let l:status = ''
  43. let vt_local = get(b:, 'vimtex_local', {})
  44. if empty(vt_local)
  45. let l:status .= g:airline#extensions#vimtex#main
  46. else
  47. if get(vt_local, 'active')
  48. let l:status .= g:airline#extensions#vimtex#sub_local
  49. else
  50. let l:status .= g:airline#extensions#vimtex#sub_main
  51. endif
  52. endif
  53. if get(get(get(b:, 'vimtex', {}), 'viewer', {}), 'xwin_id')
  54. let l:status .= g:airline#extensions#vimtex#viewer
  55. endif
  56. let l:compiler = get(get(b:, 'vimtex', {}), 'compiler', {})
  57. if !empty(l:compiler)
  58. if has_key(l:compiler, 'is_running') && b:vimtex.compiler.is_running()
  59. if get(l:compiler, 'continuous')
  60. let l:status .= g:airline#extensions#vimtex#continuous
  61. else
  62. let l:status .= g:airline#extensions#vimtex#compiled
  63. endif
  64. endif
  65. endif
  66. if !empty(l:status)
  67. let l:status = g:airline#extensions#vimtex#left . l:status . g:airline#extensions#vimtex#right
  68. endif
  69. return l:status
  70. endfunction