4 " Maintainer: Michael M. Tung <michael.tung@uni-mainz.de>
5 " Last Change: <Thu Oct 23 13:11:21 CEST 2008>
6 " Past Change: <October 2008 Thomas Reiter thomasr@nikhef.nl>
7 " Past Change: <Wed, 2005/05/25 09:24:58 arwagner wptx44>
9 " First public release based on 'Symbolic Manipulation with FORM'
10 " by J.A.M. Vermaseren, CAN, Netherlands, 1991.
11 " This syntax file is still in development. Please send suggestions
14 " For version 5.x: Clear all syntax items
15 " For version 6.x: Quit when a syntax file was already loaded
18 elseif exists("b:current_syntax")
24 " a bunch of useful FORM keywords
25 syn keyword formType global local
26 syn keyword formHeaderStatement symbol symbols cfunction cfunctions
27 syn keyword formHeaderStatement function functions vector vectors
28 syn keyword formHeaderStatement tensor tensors ctensor ctensors
29 syn keyword formHeaderStatement set sets index indices table ctable
30 syn keyword formHeaderStatement dimension dimensions unittrace
31 syn keyword formConditional if else elseif endif while
32 syn keyword formConditional repeat endrepeat label goto
33 syn keyword formConditional argument endargument exit
34 syn keyword formConditional inexpression inside term
35 syn keyword formConditional endinexpression endinside endterm
36 syn keyword formStatement abrackets also antibrackets antisymmetrize
37 syn keyword formStatement argexplode argimplode apply auto autodeclare
38 syn keyword formStatement brackets chainin chainout chisholm cleartable
39 syn keyword formStatement collect commuting compress contract
40 syn keyword formStatement cyclesymmetrize deallocatetable delete
41 syn keyword formStatement dimension discard disorder drop factarg fill
42 syn keyword formStatement fillexpression fixindex format funpowers hide
43 syn keyword formStatement identify idnew idold ifmatch inparallel
44 syn keyword formStatement insidefirst keep load makeinteger many metric
45 syn keyword formStatement moduleoption modulus multi multiply ndrop
46 syn keyword formStatement nfunctions nhide normalize notinparallel
47 syn keyword formStatement nprint nskip ntable ntensors nunhide nwrite
48 syn keyword formStatement off on once only polyfun pophide print
49 syn keyword formStatement printtable propercount pushhide ratio
50 syn keyword formStatement rcyclesymmetrize redefine renumber
51 syn keyword formStatement replaceinarg replaceloop save select
52 syn keyword formStatement setexitflag skip slavepatchsize sort splitarg
53 syn keyword formStatement splitfirstarg splitlastarg sum symmetrize
54 syn keyword formStatement tablebase testuse threadbucketsize totensor
55 syn keyword formStatement tovector trace4 tracen tryreplace unhide
56 syn keyword formStatement unittrace vectors write
57 " for compatibility with older FORM versions:
58 syn keyword formStatement id bracket count match traceN
60 " some special functions
61 syn keyword formStatement abs_ bernoulli_ binom_ conjg_ count_
62 syn keyword formStatement d_ dd_ delta_ deltap_ denom_ distrib_
63 syn keyword formStatement dum_ dummy_ dummyten_ e_ exp_ fac_
64 syn keyword formStatement factorin_ firstbracket_ g5_ g6_ g7_
65 syn keyword formStatement g_ gcd_ gi_ integer_ invfac_ match_
66 syn keyword formStatement max_ maxpowerof_ min_ minpowerof_
67 syn keyword formStatement mod_ nargs_ nterms_ pattern_ poly_
68 syn keyword formStatement polyadd_ polydiv_ polygcd_ polyintfac_
69 syn keyword formStatement polymul_ polynorm_ polyrem_ polysub_
70 syn keyword formStatement replace_ reverse_ root_ setfun_ sig_
71 syn keyword formStatement sign_ sum_ sump_ table_ tbl_ term_
72 syn keyword formStatement termsin_ termsinbracket_ theta_ thetap_
73 syn keyword formStatement 5_ 6_ 7_
75 syn keyword formReserved sqrt_ ln_ sin_ cos_ tan_ asin_ acos_
76 syn keyword formReserved atan_ atan2_ sinh_ cosh_ tanh_ asinh_
77 syn keyword formReserved acosh_ atanh_ li2_ lin_
79 syn keyword formTodo contained TODO FIXME XXX
81 syn match formSpecial display contained "\\\(n\|t\|b\|\\\|\"\)"
82 syn match formSpecial display contained "%\(%\|e\|E\|s\|f\|\$\)"
83 syn match formSpecial "\<N\d\+_[?]"
85 " pattern matching for keywords
86 syn match formComment "^\ *\*.*$" contains=formTodo
87 syn match formComment "\;\ *\*.*$" contains=formTodo
88 syn region formString start=+"+ end=+"+ contains=formSpecial
89 syn region formString start=+'+ end=+'+
90 syn region formNestedString start=+`+ end=+'+ contains=formNestedString
91 syn match formPreProc "^\=\#[a-zA-z][a-zA-Z0-9]*\>"
92 syn match formNumber "\<\d\+\>"
93 syn match formNumber "\<\d\+\.\d*\>"
94 syn match formNumber "\.\d\+\>"
95 syn match formNumber "-\d" contains=Number
96 syn match formNumber "-\.\d" contains=Number
97 syn match formNumber "i_\+\>"
98 syn match formNumber "fac_\+\>"
99 " pattern matching wildcards
100 syn match formNumber "?[A-z0-9]*"
101 " dollar-variables (new in 3.x)
102 syn match formNumber "\\$[A-z0-9]*"
104 syn match formNumber "^\=[a-zA-z][a-zA-Z0-9]*\.[a-zA-z][a-zA-Z0-9]*\>"
106 syn match formDirective "^\=\.[a-zA-z][a-zA-Z0-9]*\>"
109 syn sync ccomment formComment minlines=10
111 " Define the default highlighting.
112 " For version 5.7 and earlier: only when not done already
113 " For version 5.8 and later: only when an item doesn't have highlighting yet
114 if version >= 508 || !exists("did_form_syn_inits")
116 let did_form_syn_inits = 1
117 command -nargs=+ HiLink hi link <args>
119 command -nargs=+ HiLink hi def link <args>
122 HiLink formConditional Conditional
123 HiLink formNumber Number
124 HiLink formStatement Statement
125 HiLink formComment Comment
126 HiLink formPreProc PreProc
127 HiLink formDirective PreProc
129 HiLink formString String
130 HiLink formNestedString String
131 HiLink formReserved Error
133 HiLink formSpecial SpecialChar
135 if !exists("form_enhanced_color")
136 HiLink formHeaderStatement Statement
138 " enhanced color mode
139 HiLink formHeaderStatement HeaderStatement
140 " dark and a light background for local types
141 if &background == "dark"
142 hi HeaderStatement term=underline ctermfg=LightGreen guifg=LightGreen gui=bold
144 hi HeaderStatement term=underline ctermfg=DarkGreen guifg=SeaGreen gui=bold
146 " change slightly the default for dark gvim
147 if has("gui_running") && &background == "dark"
148 hi Conditional guifg=LightBlue gui=bold
149 hi Statement guifg=LightYellow
156 let b:current_syntax = "form"