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