blob: 19a47ed6b9cfdcc033e0aa75aad7d6c1c3695fd4 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: FORM
Bram Moolenaar5c736222010-01-06 20:54:52 +01003" Version: 2.0
Bram Moolenaar071d4272004-06-13 20:20:40 +00004" Maintainer: Michael M. Tung <michael.tung@uni-mainz.de>
Bram Moolenaar5c736222010-01-06 20:54:52 +01005" 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>
Bram Moolenaar071d4272004-06-13 20:20:40 +00008
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
12" to the maintainer.
13
14" For version 5.x: Clear all syntax items
15" For version 6.x: Quit when a syntax file was already loaded
16if version < 600
17 syntax clear
18elseif exists("b:current_syntax")
19 finish
20endif
21
22syn case ignore
23
Bram Moolenaar5c736222010-01-06 20:54:52 +010024" a bunch of useful FORM keywords
Bram Moolenaar071d4272004-06-13 20:20:40 +000025syn keyword formType global local
26syn keyword formHeaderStatement symbol symbols cfunction cfunctions
27syn keyword formHeaderStatement function functions vector vectors
Bram Moolenaar5c736222010-01-06 20:54:52 +010028syn keyword formHeaderStatement tensor tensors ctensor ctensors
29syn keyword formHeaderStatement set sets index indices table ctable
Bram Moolenaar071d4272004-06-13 20:20:40 +000030syn keyword formHeaderStatement dimension dimensions unittrace
Bram Moolenaar5c736222010-01-06 20:54:52 +010031syn keyword formConditional if else elseif endif while
Bram Moolenaar071d4272004-06-13 20:20:40 +000032syn keyword formConditional repeat endrepeat label goto
Bram Moolenaar5c736222010-01-06 20:54:52 +010033syn keyword formConditional argument endargument exit
34syn keyword formConditional inexpression inside term
35syn keyword formConditional endinexpression endinside endterm
36syn keyword formStatement abrackets also antibrackets antisymmetrize
37syn keyword formStatement argexplode argimplode apply auto autodeclare
38syn keyword formStatement brackets chainin chainout chisholm cleartable
39syn keyword formStatement collect commuting compress contract
40syn keyword formStatement cyclesymmetrize deallocatetable delete
41syn keyword formStatement dimension discard disorder drop factarg fill
42syn keyword formStatement fillexpression fixindex format funpowers hide
43syn keyword formStatement identify idnew idold ifmatch inparallel
44syn keyword formStatement insidefirst keep load makeinteger many metric
45syn keyword formStatement moduleoption modulus multi multiply ndrop
46syn keyword formStatement nfunctions nhide normalize notinparallel
47syn keyword formStatement nprint nskip ntable ntensors nunhide nwrite
48syn keyword formStatement off on once only polyfun pophide print
49syn keyword formStatement printtable propercount pushhide ratio
50syn keyword formStatement rcyclesymmetrize redefine renumber
51syn keyword formStatement replaceinarg replaceloop save select
52syn keyword formStatement setexitflag skip slavepatchsize sort splitarg
53syn keyword formStatement splitfirstarg splitlastarg sum symmetrize
54syn keyword formStatement tablebase testuse threadbucketsize totensor
55syn keyword formStatement tovector trace4 tracen tryreplace unhide
56syn keyword formStatement unittrace vectors write
57" for compatibility with older FORM versions:
58syn keyword formStatement id bracket count match traceN
Bram Moolenaar071d4272004-06-13 20:20:40 +000059
60" some special functions
Bram Moolenaar5c736222010-01-06 20:54:52 +010061syn keyword formStatement abs_ bernoulli_ binom_ conjg_ count_
62syn keyword formStatement d_ dd_ delta_ deltap_ denom_ distrib_
63syn keyword formStatement dum_ dummy_ dummyten_ e_ exp_ fac_
64syn keyword formStatement factorin_ firstbracket_ g5_ g6_ g7_
65syn keyword formStatement g_ gcd_ gi_ integer_ invfac_ match_
66syn keyword formStatement max_ maxpowerof_ min_ minpowerof_
67syn keyword formStatement mod_ nargs_ nterms_ pattern_ poly_
68syn keyword formStatement polyadd_ polydiv_ polygcd_ polyintfac_
69syn keyword formStatement polymul_ polynorm_ polyrem_ polysub_
70syn keyword formStatement replace_ reverse_ root_ setfun_ sig_
71syn keyword formStatement sign_ sum_ sump_ table_ tbl_ term_
72syn keyword formStatement termsin_ termsinbracket_ theta_ thetap_
73syn keyword formStatement 5_ 6_ 7_
74
75syn keyword formReserved sqrt_ ln_ sin_ cos_ tan_ asin_ acos_
76syn keyword formReserved atan_ atan2_ sinh_ cosh_ tanh_ asinh_
77syn keyword formReserved acosh_ atanh_ li2_ lin_
78
79syn keyword formTodo contained TODO FIXME XXX
80
81syn match formSpecial display contained "\\\(n\|t\|b\|\\\|\"\)"
82syn match formSpecial display contained "%\(%\|e\|E\|s\|f\|\$\)"
83syn match formSpecial "\<N\d\+_[?]"
Bram Moolenaar071d4272004-06-13 20:20:40 +000084
85" pattern matching for keywords
Bram Moolenaar5c736222010-01-06 20:54:52 +010086syn match formComment "^\ *\*.*$" contains=formTodo
87syn match formComment "\;\ *\*.*$" contains=formTodo
88syn region formString start=+"+ end=+"+ contains=formSpecial
Bram Moolenaar071d4272004-06-13 20:20:40 +000089syn region formString start=+'+ end=+'+
Bram Moolenaar5c736222010-01-06 20:54:52 +010090syn region formNestedString start=+`+ end=+'+ contains=formNestedString
Bram Moolenaar071d4272004-06-13 20:20:40 +000091syn match formPreProc "^\=\#[a-zA-z][a-zA-Z0-9]*\>"
92syn match formNumber "\<\d\+\>"
93syn match formNumber "\<\d\+\.\d*\>"
94syn match formNumber "\.\d\+\>"
95syn match formNumber "-\d" contains=Number
96syn match formNumber "-\.\d" contains=Number
97syn match formNumber "i_\+\>"
98syn match formNumber "fac_\+\>"
Bram Moolenaar5c736222010-01-06 20:54:52 +010099" pattern matching wildcards
100syn match formNumber "?[A-z0-9]*"
101" dollar-variables (new in 3.x)
102syn match formNumber "\\$[A-z0-9]*"
103" scalar products
104syn match formNumber "^\=[a-zA-z][a-zA-Z0-9]*\.[a-zA-z][a-zA-Z0-9]*\>"
105
Bram Moolenaar071d4272004-06-13 20:20:40 +0000106syn match formDirective "^\=\.[a-zA-z][a-zA-Z0-9]*\>"
107
108" hi User Labels
109syn sync ccomment formComment minlines=10
110
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
114if version >= 508 || !exists("did_form_syn_inits")
115 if version < 508
116 let did_form_syn_inits = 1
117 command -nargs=+ HiLink hi link <args>
118 else
119 command -nargs=+ HiLink hi def link <args>
120 endif
121
122 HiLink formConditional Conditional
123 HiLink formNumber Number
124 HiLink formStatement Statement
125 HiLink formComment Comment
126 HiLink formPreProc PreProc
127 HiLink formDirective PreProc
128 HiLink formType Type
129 HiLink formString String
Bram Moolenaar5c736222010-01-06 20:54:52 +0100130 HiLink formNestedString String
131 HiLink formReserved Error
132 HiLink formTodo Todo
133 HiLink formSpecial SpecialChar
Bram Moolenaar071d4272004-06-13 20:20:40 +0000134
135 if !exists("form_enhanced_color")
136 HiLink formHeaderStatement Statement
137 else
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
143 else
144 hi HeaderStatement term=underline ctermfg=DarkGreen guifg=SeaGreen gui=bold
145 endif
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
150 endif
151 endif
152
153 delcommand HiLink
154endif
155
156 let b:current_syntax = "form"
157
158" vim: ts=8