blob: dc352fd6ff2c79bcf2accaf07b534367b14c03ba [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: TeX
3" Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +00004" Last Change: Jun 15, 2004
5" Version: 25
Bram Moolenaar071d4272004-06-13 20:20:40 +00006" URL: http://www.erols.com/astronaut/vim/index.html#vimlinks_syntax
7"
8" Notes: {{{1
9"
10" 1. If you have a \begin{verbatim} that appears to overrun its boundaries,
11" use %stopzone.
12"
13" 2. Run-on equations ($..$ and $$..$$, particularly) can also be stopped
14" by suitable use of %stopzone.
15"
16" 3. If you have a slow computer, you may wish to modify
17"
18" syn sync maxlines=200
19" syn sync minlines=50
20"
21" to values that are more to your liking.
22"
23" 4. There is no match-syncing for $...$ and $$...$$; hence large
24" equation blocks constructed that way may exhibit syncing problems.
25" (there's no difference between begin/end patterns)
26"
27" 5. If you have the variable "g:tex_no_error" defined then none of the
28" lexical error-checking will be done.
29"
30" ie. let g:tex_no_error=1
31
32" Version Clears: {{{1
33" For version 5.x: Clear all syntax items
34" For version 6.x: Quit when a syntax file was already loaded
35if version < 600
36 syntax clear
37elseif exists("b:current_syntax")
38 finish
39endif
40
41" Define the default highlighting. {{{1
42" For version 5.7 and earlier: only when not done already
43" For version 5.8 and later: only when an item doesn't have highlighting yet
44if version >= 508 || !exists("did_tex_syntax_inits")
45 let did_tex_syntax_inits = 1
46 if version < 508
47 command -nargs=+ HiLink hi link <args>
48 else
49 command -nargs=+ HiLink hi def link <args>
50 endif
51endif
52if exists("g:tex_tex") && !exists("g:tex_no_error")
53 let g:tex_no_error= 1
54endif
55
56" Determine whether or not to use "*.sty" mode
57" The user may override the normal determination by setting
58" g:tex_stylish to 1 (for "*.sty" mode)
59" or to 0 else (normal "*.tex" mode)
60" or on a buffer-by-buffer basis with b:tex_stylish
61let b:extfname=expand("%:e")
62if exists("g:tex_stylish")
63 let b:tex_stylish= g:tex_stylish
64elseif !exists("b:tex_stylish")
65 if b:extfname == "sty" || b:extfname == "cls" || b:extfname == "clo" || b:extfname == "dtx" || b:extfname == "ltx"
66 let b:tex_stylish= 1
67 else
68 let b:tex_stylish= 0
69 endif
70endif
71
72" (La)TeX keywords: only use the letters a-zA-Z {{{1
73" but _ is the only one that causes problems.
74if version < 600
75 set isk-=_
76 if b:tex_stylish
77 set isk+=@
78 endif
79else
80 setlocal isk-=_
81 if b:tex_stylish
82 setlocal isk+=@
83 endif
84endif
85
86" Clusters: {{{1
87" --------
88syn cluster texCmdGroup contains=texCmdBody,texComment,texDefParm,texDelimiter,texDocType,texInput,texLength,texLigature,texMathDelim,texMathOper,texNewCmd,texNewEnv,texRefZone,texSection,texSectionMarker,texSectionName,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle
89if !exists("g:tex_no_error")
90 syn cluster texCmdGroup add=texMathError
91endif
92syn cluster texEnvGroup contains=texMatcher,texMathDelim,texSpecialChar,texStatement
93syn cluster texMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +000094syn cluster texRefGroup contains=texMatcher,texComment,texDelimiter
Bram Moolenaar071d4272004-06-13 20:20:40 +000095if !exists("tex_no_math")
96 syn cluster texMathZones contains=texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ
97 syn cluster texMatchGroup add=@texMathZones
98 syn cluster texMathDelimGroup contains=texMathDelimBad,texMathDelimKey,texMathDelimSet1,texMathDelimSet2
99 syn cluster texMathMatchGroup contains=@texMathZones,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMathDelim,texMathMatcher,texMathOper,texNewCmd,texNewEnv,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone
100 syn cluster texMathZoneGroup contains=texComment,texDelimiter,texLength,texMathDelim,texMathMatcher,texMathOper,texRefZone,texSpecialChar,texStatement,texTypeSize,texTypeStyle
101 if !exists("g:tex_no_error")
102 syn cluster texMathMatchGroup add=texMathError
103 syn cluster texMathZoneGroup add=texMathError
104 endif
105endif
106
107" Try to flag {} and () mismatches: {{{1
108if !exists("g:tex_no_error")
109 syn region texMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texMatchGroup,texError
110 syn region texMatcher matchgroup=Delimiter start="\[" end="]" contains=@texMatchGroup,texError
111else
112 syn region texMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texMatchGroup
113 syn region texMatcher matchgroup=Delimiter start="\[" end="]" contains=@texMatchGroup
114endif
115syn region texParen start="(" end=")" contains=@texMatchGroup
116if !exists("g:tex_no_error")
117 syn match texError "[}\])]"
118endif
119if !exists("tex_no_math")
120 if !exists("g:tex_no_error")
121 syn match texMathError "}" contained
122 endif
123 syn region texMathMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\}" end="}" end="%stopzone\>" contained contains=@texMathMatchGroup
124endif
125
126" TeX/LaTeX keywords: {{{1
127" Instead of trying to be All Knowing, I just match \..alphameric..
128" Note that *.tex files may not have "@" in their \commands
129if exists("g:tex_tex") || b:tex_stylish
130 syn match texStatement "\\[a-zA-Z@]\+"
131else
132 syn match texStatement "\\\a\+"
133 if !exists("g:tex_no_error")
134 syn match texError "\\\a*@[a-zA-Z@]*"
135 endif
136endif
137
138" TeX/LaTeX delimiters: {{{1
139syn match texDelimiter "&"
140syn match texDelimiter "\\\\"
141
142" Tex/Latex Options: {{{1
143syn match texOption "[^\\]\zs#\d\+\|^#\d\+"
144
145" texAccent (tnx to Karim Belabas) avoids annoying highlighting for accents: {{{1
146if b:tex_stylish
147 syn match texAccent "\\[bcdvuH][^a-zA-Z@]"me=e-1
148 syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)[^a-zA-Z@]"me=e-1
149else
150 syn match texAccent "\\[bcdvuH]\A"me=e-1
151 syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)\A"me=e-1
152endif
153syn match texAccent "\\[bcdvuH]$"
154syn match texAccent +\\[=^.\~"`']+
155syn match texAccent +\\['=t'.c^ud"vb~Hr]{\a}+
156syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)$"
157
158" \begin{}/\end{} section markers: {{{1
159syn match texSectionMarker "\\begin\>\|\\end\>" nextgroup=texSectionName
160syn region texSectionName matchgroup=Delimiter start="{" end="}" contained nextgroup=texSectionModifier
161syn region texSectionModifier matchgroup=Delimiter start="\[" end="]" contained
162
163" \documentclass, \documentstyle, \usepackage: {{{1
164syn match texDocType "\\documentclass\>\|\\documentstyle\>\|\\usepackage\>" nextgroup=texSectionName,texDocTypeArgs
165syn region texDocTypeArgs matchgroup=Delimiter start="\[" end="]" contained nextgroup=texSectionName
166
167" TeX input: {{{1
168syn match texInput "\\input\s\+[a-zA-Z/.0-9_^]\+"hs=s+7 contains=texStatement
169syn match texInputFile "\\include\(graphics\|list\)\=\(\[.\{-}\]\)\=\s*{.\{-}}" contains=texStatement,texInputCurlies
170syn match texInputFile "\\\(epsfig\|input\|usepackage\)\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt
171syn match texInputCurlies "[{}]" contained
172syn region texInputFileOpt matchgroup=Delimiter start="\[" end="\]" contained
173
174" Type Styles (LaTeX 2.09): {{{1
175syn match texTypeStyle "\\rm\>"
176syn match texTypeStyle "\\em\>"
177syn match texTypeStyle "\\bf\>"
178syn match texTypeStyle "\\it\>"
179syn match texTypeStyle "\\sl\>"
180syn match texTypeStyle "\\sf\>"
181syn match texTypeStyle "\\sc\>"
182syn match texTypeStyle "\\tt\>"
183
184" Type Styles: attributes, commands, families, etc (LaTeX2E): {{{1
185syn match texTypeStyle "\\textbf\>"
186syn match texTypeStyle "\\textit\>"
187syn match texTypeStyle "\\textmd\>"
188syn match texTypeStyle "\\textrm\>"
189syn match texTypeStyle "\\textsc\>"
190syn match texTypeStyle "\\textsf\>"
191syn match texTypeStyle "\\textsl\>"
192syn match texTypeStyle "\\texttt\>"
193syn match texTypeStyle "\\textup\>"
194syn match texTypeStyle "\\emph\>"
195
196syn match texTypeStyle "\\mathbb\>"
197syn match texTypeStyle "\\mathbf\>"
198syn match texTypeStyle "\\mathcal\>"
199syn match texTypeStyle "\\mathfrak\>"
200syn match texTypeStyle "\\mathit\>"
201syn match texTypeStyle "\\mathnormal\>"
202syn match texTypeStyle "\\mathrm\>"
203syn match texTypeStyle "\\mathsf\>"
204syn match texTypeStyle "\\mathtt\>"
205
206syn match texTypeStyle "\\rmfamily\>"
207syn match texTypeStyle "\\sffamily\>"
208syn match texTypeStyle "\\ttfamily\>"
209
210syn match texTypeStyle "\\itshape\>"
211syn match texTypeStyle "\\scshape\>"
212syn match texTypeStyle "\\slshape\>"
213syn match texTypeStyle "\\upshape\>"
214
215syn match texTypeStyle "\\bfseries\>"
216syn match texTypeStyle "\\mdseries\>"
217
218" Some type sizes: {{{1
219syn match texTypeSize "\\tiny\>"
220syn match texTypeSize "\\scriptsize\>"
221syn match texTypeSize "\\footnotesize\>"
222syn match texTypeSize "\\small\>"
223syn match texTypeSize "\\normalsize\>"
224syn match texTypeSize "\\large\>"
225syn match texTypeSize "\\Large\>"
226syn match texTypeSize "\\LARGE\>"
227syn match texTypeSize "\\huge\>"
228syn match texTypeSize "\\Huge\>"
229
230" Spacecodes (TeX'isms): {{{1
231" \mathcode`\^^@="2201 \delcode`\(="028300 \sfcode`\)=0 \uccode`X=`X \lccode`x=`x
232syn match texSpaceCode "\\\(math\|cat\|del\|lc\|sf\|uc\)code`"me=e-1 nextgroup=texSpaceCodeChar
233syn match texSpaceCodeChar "`\\\=.\(\^.\)\==\(\d\|\"\x\{1,6}\|`.\)" contained
234
235" Sections, subsections, etc: {{{1
236syn match texSection "\\\(sub\)*section\*\=\>"
237syn match texSection "\\\(title\|author\|part\|chapter\|paragraph\|subparagraph\)\>"
238syn match texSection "\\begin\s*{\s*abstract\s*}\|\\end\s*{\s*abstract\s*}"
239
240" Bad Math (mismatched): {{{1
241if !exists("tex_no_math")
242 syn match texBadMath "\\end\s*{\s*\(array\|gathered\|bBpvV]matrix\|split\|subequations\|smallmatrix\|xxalignat\)\s*}"
243 syn match texBadMath "\\end\s*{\s*\(align\|alignat\|displaymath\|displaymath\|eqnarray\|equation\|flalign\|gather\|math\|multline\|xalignat\)\*\=\s*}"
244 syn match texBadMath "\\[\])]"
245endif
246
247" Math Zones: {{{1
248if !exists("tex_no_math")
249 " TexNewMathZone: creates a mathzone with the given suffix and mathzone name. {{{2
250 " Starred forms are created if starform is true. Starred
251 " forms have syntax group and synchronization groups with a
252 " "S" appended. Handles: cluster, syntax, sync, and HiLink.
253 fun! TexNewMathZone(sfx,mathzone,starform)
254 let grpname = "texMathZone".a:sfx
255 let syncname = "texSyncMathZone".a:sfx
256 exe "syn cluster texMathZones add=".grpname
257 exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\s*}'."'".' keepend contains=@texMathZoneGroup'
258 exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
259 exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
260 exe 'HiLink '.grpname.' texMath'
261 if a:starform
262 let grpname = "texMathZone".a:sfx.'S'
263 let syncname = "texSyncMathZone".a:sfx.'S'
264 exe "syn cluster texMathZones add=".grpname
265 exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\*\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\*\s*}'."'".' keepend contains=@texMathZoneGroup'
266 exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
267 exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
268 exe 'HiLink '.grpname.' texMath'
269 endif
270 endfun
271
272 " Standard Math Zones: {{{2
273 call TexNewMathZone("A","align",1)
274 call TexNewMathZone("B","alignat",1)
275 call TexNewMathZone("C","displaymath",1)
276 call TexNewMathZone("D","eqnarray",1)
277 call TexNewMathZone("E","equation",1)
278 call TexNewMathZone("F","flalign",1)
279 call TexNewMathZone("G","gather",1)
280 call TexNewMathZone("H","math",1)
281 call TexNewMathZone("I","multline",1)
282 call TexNewMathZone("J","subequations",0)
283 call TexNewMathZone("K","xalignat",1)
284 call TexNewMathZone("L","xxalignat",0)
285
286 " Inline Math Zones: {{{2
287 syn region texMathZoneV matchgroup=Delimiter start="\\(" matchgroup=Delimiter end="\\)\|%stopzone\>" keepend contains=@texMathZoneGroup
288 syn region texMathZoneW matchgroup=Delimiter start="\\\[" matchgroup=Delimiter end="\\]\|%stopzone\>" keepend contains=@texMathZoneGroup
289 syn region texMathZoneX matchgroup=Delimiter start="\$" skip="\\\\\|\\\$" matchgroup=Delimiter end="\$" end="%stopzone\>" contains=@texMathZoneGroup
290 syn region texMathZoneY matchgroup=Delimiter start="\$\$" matchgroup=Delimiter end="\$\$" end="%stopzone\>" keepend contains=@texMathZoneGroup
291 syn region texMathZoneZ matchgroup=texStatement start="\\ensuremath\s*{" matchgroup=texStatement end="}" end="%stopzone\>" contains=@texMathZoneGroup
292
293 syn match texMathOper "[_^=]" contained
294
295 " \left..something.. and \right..something.. support: {{{2
296 syn match texMathDelimBad contained "\S"
297 syn match texMathDelim contained "\\\(left\|right\|[bB]igg\=[lr]\)\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad
298 syn match texMathDelim contained "\\\(left\|right\)arrow\>\|\<\([aA]rrow\|brace\)\=vert\>"
299 syn match texMathDelim contained "\\lefteqn\>"
300 syn match texMathDelimSet2 contained "\\" nextgroup=texMathDelimKey,texMathDelimBad
301 syn match texMathDelimSet1 contained "[<>()[\]|/.]\|\\[{}|]"
302 syn keyword texMathDelimKey contained backslash lceil lVert rgroup uparrow
303 syn keyword texMathDelimKey contained downarrow lfloor rangle rmoustache Uparrow
304 syn keyword texMathDelimKey contained Downarrow lgroup rbrace rvert updownarrow
305 syn keyword texMathDelimKey contained langle lmoustache rceil rVert Updownarrow
306 syn keyword texMathDelimKey contained lbrace lvert rfloor
307endif
308
309" Special TeX characters ( \$ \& \% \# \{ \} \_ \S \P ) : {{{1
310syn match texSpecialChar "\\[$&%#{}_]"
311if b:tex_stylish
312 syn match texSpecialChar "\\[SP@][^a-zA-Z@]"me=e-1
313else
314 syn match texSpecialChar "\\[SP@]\A"me=e-1
315endif
316syn match texSpecialChar "\\\\"
317if !exists("tex_no_math")
318 syn match texOnlyMath "[_^]"
319endif
320syn match texSpecialChar "\^\^[0-9a-f]\{2}\|\^\^\S"
321
322" Comments: {{{1
323" Normal TeX LaTeX : %....
324" Documented TeX Format: ^^A... -and- leading %s (only)
325syn cluster texCommentGroup contains=texTodo,@Spell
326syn case ignore
327syn keyword texTodo contained combak fixme todo
328syn case match
329if b:extfname == "dtx"
330 syn match texComment "\^\^A.*$" contains=@texCommentGroup
331 syn match texComment "^%\+" contains=@texCommentGroup
332else
333 syn match texComment "%.*$" contains=@texCommentGroup
334endif
335
336" Separate lines used for verb` and verb# so that the end conditions {{{1
337" will appropriately terminate. Ideally vim would let me save a
338" character from the start pattern and re-use it in the end-pattern.
339syn region texZone start="\\begin{verbatim}" end="\\end{verbatim}\|%stopzone\>"
340if version < 600
341 syn region texZone start="\\verb\*\=`" end="`\|%stopzone\>"
342 syn region texZone start="\\verb\*\=#" end="#\|%stopzone\>"
343else
344 if b:tex_stylish
345 syn region texZone start="\\verb\*\=\z([^\ta-zA-Z@]\)" end="\z1\|%stopzone\>"
346 else
347 syn region texZone start="\\verb\*\=\z([^\ta-zA-Z]\)" end="\z1\|%stopzone\>"
348 endif
349endif
350
351" Tex Reference Zones: {{{1
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +0000352syn region texZone matchgroup=texStatement start="@samp{" end="}\|%stopzone\>" contains=@texRefGroup
353syn region texRefZone matchgroup=texStatement start="\\nocite{" end="}\|%stopzone\>" contains=@texRefGroup
354syn region texRefZone matchgroup=texStatement start="\\bibliography{" end="}\|%stopzone\>" contains=@texRefGroup
355syn region texRefZone matchgroup=texStatement start="\\cite\([tp]\*\=\)\={" end="}\|%stopzone\>" contains=@texRefGroup
356syn region texRefZone matchgroup=texStatement start="\\label{" end="}\|%stopzone\>" contains=@texRefGroup
357syn region texRefZone matchgroup=texStatement start="\\\(page\|eq\)ref{" end="}\|%stopzone\>" contains=@texRefGroup
358syn region texRefZone matchgroup=texStatement start="\\v\=ref{" end="}\|%stopzone\>" contains=@texRefGroup
Bram Moolenaar071d4272004-06-13 20:20:40 +0000359
360" Handle newcommand, newenvironment : {{{1
361syn match texNewCmd "\\newcommand\>" nextgroup=texCmdName skipwhite skipnl
362syn region texCmdName contained matchgroup=Delimiter start="{"rs=s+1 end="}" nextgroup=texCmdArgs,texCmdBody skipwhite skipnl
363syn region texCmdArgs contained matchgroup=Delimiter start="\["rs=s+1 end="]" nextgroup=texCmdBody skipwhite skipnl
364syn region texCmdBody contained matchgroup=Delimiter start="{"rs=s+1 skip="\\\\\|\\[{}]" matchgroup=Delimiter end="}" contains=@texCmdGroup
365syn match texNewEnv "\\newenvironment\>" nextgroup=texEnvName skipwhite skipnl
366syn region texEnvName contained matchgroup=Delimiter start="{"rs=s+1 end="}" nextgroup=texEnvBgn skipwhite skipnl
367syn region texEnvBgn contained matchgroup=Delimiter start="{"rs=s+1 end="}" nextgroup=texEnvEnd skipwhite skipnl contains=@texEnvGroup
368syn region texEnvEnd contained matchgroup=Delimiter start="{"rs=s+1 end="}" skipwhite skipnl contains=@texEnvGroup
369
370" Definitions/Commands: {{{1
371syn match texDefCmd "\\def\>" nextgroup=texDefName skipwhite skipnl
372if b:tex_stylish
373 syn match texDefName contained "\\[a-zA-Z@]\+" nextgroup=texDefParms,texCmdBody skipwhite skipnl
374 syn match texDefName contained "\\[^a-zA-Z@]" nextgroup=texDefParms,texCmdBody skipwhite skipnl
375else
376 syn match texDefName contained "\\\a\+" nextgroup=texDefParms,texCmdBody skipwhite skipnl
377 syn match texDefName contained "\\\A" nextgroup=texDefParms,texCmdBody skipwhite skipnl
378endif
379syn match texDefParms contained "#[^{]*" contains=texDefParm nextgroup=texCmdBody skipwhite skipnl
380syn match texDefParm contained "#\d\+"
381
382" TeX Lengths: {{{1
383syn match texLength "\<\d\+\(\.\d\+\)\=\s*\(true\)\=\s*\(bp\|cc\|cm\|dd\|em\|ex\|in\|mm\|pc\|pt\|sp\)\>"
384
385" TeX String Delimiters: {{{1
386syn match texString "\(``\|''\|,,\)"
387
388" LaTeX synchronization: {{{1
389syn sync maxlines=200
390syn sync minlines=50
391
392syn sync match texSyncStop groupthere NONE "%stopzone\>"
393
394" Synchronization: {{{1
395" The $..$ and $$..$$ make for impossible sync patterns
396" (one can't tell if a "$$" starts or stops a math zone by itself)
397" The following grouptheres coupled with minlines above
398" help improve the odds of good syncing.
399if !exists("tex_no_math")
400 syn sync match texSyncMathZoneA groupthere NONE "\\end{abstract}"
401 syn sync match texSyncMathZoneA groupthere NONE "\\end{center}"
402 syn sync match texSyncMathZoneA groupthere NONE "\\end{description}"
403 syn sync match texSyncMathZoneA groupthere NONE "\\end{enumerate}"
404 syn sync match texSyncMathZoneA groupthere NONE "\\end{itemize}"
405 syn sync match texSyncMathZoneA groupthere NONE "\\end{table}"
406 syn sync match texSyncMathZoneA groupthere NONE "\\end{tabular}"
407 syn sync match texSyncMathZoneA groupthere NONE "\\\(sub\)*section\>"
408endif
409
410" Highlighting: {{{1
411if did_tex_syntax_inits == 1
412 let did_tex_syntax_inits= 2
413 " TeX highlighting groups which should share similar highlighting
414 if !exists("g:tex_no_error")
415 if !exists("tex_no_math")
416 HiLink texBadMath texError
417 HiLink texMathDelimBad texError
418 HiLink texMathError texError
419 if !b:tex_stylish
420 HiLink texOnlyMath texError
421 endif
422 endif
423 HiLink texError Error
424 endif
425
426 HiLink texDefCmd texDef
427 HiLink texDefName texDef
428 HiLink texDocType texCmdName
429 HiLink texDocTypeArgs texCmdArgs
430 HiLink texInputFileOpt texCmdArgs
431 HiLink texInputCurlies texDelimiter
432 HiLink texLigature texSpecialChar
433 if !exists("tex_no_math")
434 HiLink texMathDelimSet1 texMathDelim
435 HiLink texMathDelimSet2 texMathDelim
436 HiLink texMathDelimKey texMathDelim
437 HiLink texMathMatcher texMath
438 HiLink texMathZoneW texMath
439 HiLink texMathZoneX texMath
440 HiLink texMathZoneY texMath
441 HiLink texMathZoneZ texMath
442 endif
443 HiLink texSectionMarker texCmdName
444 HiLink texSectionName texSection
445 HiLink texSpaceCode texStatement
446 HiLink texTypeSize texType
447 HiLink texTypeStyle texType
448
449 " Basic TeX highlighting groups
450 HiLink texCmdArgs Number
451 HiLink texCmdName Statement
452 HiLink texComment Comment
453 HiLink texDef Statement
454 HiLink texDefParm Special
455 HiLink texDelimiter Delimiter
456 HiLink texInput Special
457 HiLink texInputFile Special
458 HiLink texLength Number
459 HiLink texMath Special
460 HiLink texMathDelim Statement
461 HiLink texMathOper Operator
462 HiLink texNewCmd Statement
463 HiLink texNewEnv Statement
464 HiLink texOption Number
465 HiLink texRefZone Special
466 HiLink texSection PreCondit
467 HiLink texSpaceCodeChar Special
468 HiLink texSpecialChar SpecialChar
469 HiLink texStatement Statement
470 HiLink texString String
471 HiLink texTodo Todo
472 HiLink texType Type
473 HiLink texZone PreCondit
474
475 delcommand HiLink
476endif
477
478" Current Syntax: {{{1
479unlet b:extfname
480let b:current_syntax = "tex"
481" vim: ts=8 fdm=marker