xref: /vim-8.2.3635/runtime/syntax/form.vim (revision cb03397a)
1" Vim syntax file
2" Language:	FORM
3" Version: 2.0
4" Maintainer:	Michael M. Tung <[email protected]>
5" Last Change: <Thu Oct 23 13:11:21 CEST 2008>
6" Past Change: <October 2008 Thomas Reiter [email protected]>
7" Past Change: <Wed, 2005/05/25 09:24:58 arwagner wptx44>
8
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
24" a bunch of useful FORM keywords
25syn keyword formType		global local
26syn keyword formHeaderStatement	symbol symbols cfunction cfunctions
27syn keyword formHeaderStatement	function functions vector vectors
28syn keyword formHeaderStatement tensor tensors ctensor ctensors
29syn keyword formHeaderStatement	set sets index indices table ctable
30syn keyword formHeaderStatement	dimension dimensions unittrace
31syn keyword formConditional	if else elseif endif while
32syn keyword formConditional	repeat endrepeat label goto
33syn 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
59
60" some special functions
61syn 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\+_[?]"
84
85" pattern matching for keywords
86syn match   formComment		"^\ *\*.*$" contains=formTodo
87syn match   formComment		"\;\ *\*.*$" contains=formTodo
88syn region  formString		start=+"+  end=+"+ contains=formSpecial
89syn region  formString		start=+'+  end=+'+
90syn region  formNestedString	start=+`+  end=+'+ contains=formNestedString
91syn 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_\+\>"
99" 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
106syn 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
130  HiLink formNestedString	String
131  HiLink formReserved           Error
132  HiLink formTodo               Todo
133  HiLink formSpecial            SpecialChar
134
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
159