summaryrefslogtreecommitdiffstats
path: root/autoload/vimtex/syntax/load.vim
diff options
context:
space:
mode:
Diffstat (limited to 'autoload/vimtex/syntax/load.vim')
-rw-r--r--autoload/vimtex/syntax/load.vim82
1 files changed, 82 insertions, 0 deletions
diff --git a/autoload/vimtex/syntax/load.vim b/autoload/vimtex/syntax/load.vim
new file mode 100644
index 00000000..d1b8b09b
--- /dev/null
+++ b/autoload/vimtex/syntax/load.vim
@@ -0,0 +1,82 @@
+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#load#general() abort " {{{1
+ " I don't see why we can't match Math zones in the MatchNMGroup
+ if !exists('g:tex_no_math')
+ syntax cluster texMatchNMGroup add=@texMathZones
+ endif
+
+ " Todo elements
+ syntax match texStatement '\\todo\w*' contains=texTodo
+ syntax match texTodo '\\todo\w*'
+
+ " Fix strange mistake in main syntax file where \usepackage is added to the
+ " texInputFile group
+ syntax match texDocType /\\usepackage\>/
+ \ nextgroup=texBeginEndName,texDocTypeArgs
+
+ " Improve support for italic font, bold font and some conceals
+ if get(g:, 'tex_fast', 'b') =~# 'b'
+ let s:conceal = (has('conceal') && get(g:, 'tex_conceal', 'b') =~# 'b')
+ \ ? 'concealends' : ''
+
+ for [s:style, s:group, s:commands] in [
+ \ ['texItalStyle', 'texItalGroup', ['emph', 'textit']],
+ \ ['texBoldStyle', 'texBoldGroup', ['textbf']],
+ \]
+ for s:cmd in s:commands
+ execute 'syntax region' s:style 'matchgroup=texTypeStyle'
+ \ 'start="\\' . s:cmd . '\s*{" end="}"'
+ \ 'contains=@Spell,@' . s:group
+ \ s:conceal
+ endfor
+ execute 'syntax cluster texMatchGroup add=' . s:style
+ endfor
+ endif
+
+ " Allow arguments in newenvironments
+ syntax region texEnvName contained matchgroup=Delimiter
+ \ start="{"rs=s+1 end="}"
+ \ nextgroup=texEnvBgn,texEnvArgs contained skipwhite skipnl
+ syntax region texEnvArgs contained matchgroup=Delimiter
+ \ start="\["rs=s+1 end="]"
+ \ nextgroup=texEnvBgn,texEnvArgs skipwhite skipnl
+ syntax cluster texEnvGroup add=texDefParm,texNewEnv,texComment
+
+ " Add support for \renewenvironment and \renewcommand
+ syntax match texNewEnv "\\renewenvironment\>"
+ \ nextgroup=texEnvName skipwhite skipnl
+ syntax match texNewCmd "\\renewcommand\>"
+ \ nextgroup=texCmdName skipwhite skipnl
+
+ " Match nested DefParms
+ syntax match texDefParmNested contained "##\+\d\+"
+ highlight def link texDefParmNested Identifier
+ syntax cluster texEnvGroup add=texDefParmNested
+ syntax cluster texCmdGroup add=texDefParmNested
+endfunction
+
+" }}}1
+function! vimtex#syntax#load#packages() abort " {{{1
+ try
+ call vimtex#syntax#p#{b:vimtex.documentclass}#load()
+ catch /E117:/
+ endtry
+
+ for l:pkg in map(keys(b:vimtex.packages), "substitute(v:val, '-', '_', 'g')")
+ try
+ call vimtex#syntax#p#{l:pkg}#load()
+ catch /E117:/
+ endtry
+ endfor
+endfunction
+
+" }}}1
+
+endif