summaryrefslogtreecommitdiffstats
path: root/autoload/vimtex/syntax.vim
blob: 428ccaaa1c10c405d465a954fddcf9bf953dcb9d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'latex') == -1

" vimtex - LaTeX plugin for Vim
"
" Maintainer: Karl Yngve Lervåg
" Email:      karl.yngve@gmail.com
"

function! vimtex#syntax#init() abort " {{{1
  if !get(g:, 'vimtex_syntax_enabled', 1) | return | endif

  " The following ensures that syntax addons are not loaded until after the
  " filetype plugin has been sourced. See e.g. #1428 for more info.
  if exists('b:vimtex')
    call vimtex#syntax#load()
  else
    augroup vimtex_syntax
      autocmd!
      autocmd User VimtexEventInitPost call vimtex#syntax#load()
    augroup END
  endif
endfunction

" }}}1
function! vimtex#syntax#load() abort " {{{1
  if s:is_loaded() | return | endif

  " Initialize project cache (used e.g. for the minted package)
  if !has_key(b:vimtex, 'syntax')
    let b:vimtex.syntax = {}
  endif

  " Initialize b:vimtex_syntax
  let b:vimtex_syntax = {}

  " Reset included syntaxes (necessary e.g. when doing :e)
  call vimtex#syntax#misc#include_reset()

  " Set some better defaults
  syntax spell toplevel
  syntax sync maxlines=500

  " Load some general syntax improvements
  call vimtex#syntax#load#general()

  " Load syntax for documentclass and packages
  call vimtex#syntax#load#packages()

  " Hack to make it possible to determine if vimtex syntax was loaded
  syntax match texVimtexLoaded 'dummyVimtexLoadedText' contained
endfunction

" }}}1

function! s:is_loaded() abort " {{{1
  if exists('*execute')
    let l:result = split(execute('syntax'), "\n")
    return !empty(filter(l:result, 'v:val =~# "texVimtexLoaded"'))
  else
    return 0
  endif
endfunction

" }}}1

endif