vim-polyglot/syntax/form.vim
2017-09-27 20:43:42 +02:00

150 lines
6.3 KiB
VimL

if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1
" Vim syntax file
" Language: FORM
" Version: 2.0
" Maintainer: Michael M. Tung <michael.tung@uni-mainz.de>
" Last Change: <Thu Oct 23 13:11:21 CEST 2008>
" Past Change: <October 2008 Thomas Reiter thomasr@nikhef.nl>
" Past Change: <Wed, 2005/05/25 09:24:58 arwagner wptx44>
" First public release based on 'Symbolic Manipulation with FORM'
" by J.A.M. Vermaseren, CAN, Netherlands, 1991.
" This syntax file is still in development. Please send suggestions
" to the maintainer.
" quit when a syntax file was already loaded
if exists("b:current_syntax")
finish
endif
syn case ignore
" a bunch of useful FORM keywords
syn keyword formType global local
syn keyword formHeaderStatement symbol symbols cfunction cfunctions
syn keyword formHeaderStatement function functions vector vectors
syn keyword formHeaderStatement tensor tensors ctensor ctensors
syn keyword formHeaderStatement set sets index indices table ctable
syn keyword formHeaderStatement dimension dimensions unittrace
syn keyword formConditional if else elseif endif while
syn keyword formConditional repeat endrepeat label goto
syn keyword formConditional argument endargument exit
syn keyword formConditional inexpression inside term
syn keyword formConditional endinexpression endinside endterm
syn keyword formStatement abrackets also antibrackets antisymmetrize
syn keyword formStatement argexplode argimplode apply auto autodeclare
syn keyword formStatement brackets chainin chainout chisholm cleartable
syn keyword formStatement collect commuting compress contract
syn keyword formStatement cyclesymmetrize deallocatetable delete
syn keyword formStatement dimension discard disorder drop factarg fill
syn keyword formStatement fillexpression fixindex format funpowers hide
syn keyword formStatement identify idnew idold ifmatch inparallel
syn keyword formStatement insidefirst keep load makeinteger many metric
syn keyword formStatement moduleoption modulus multi multiply ndrop
syn keyword formStatement nfunctions nhide normalize notinparallel
syn keyword formStatement nprint nskip ntable ntensors nunhide nwrite
syn keyword formStatement off on once only polyfun pophide print
syn keyword formStatement printtable propercount pushhide ratio
syn keyword formStatement rcyclesymmetrize redefine renumber
syn keyword formStatement replaceinarg replaceloop save select
syn keyword formStatement setexitflag skip slavepatchsize sort splitarg
syn keyword formStatement splitfirstarg splitlastarg sum symmetrize
syn keyword formStatement tablebase testuse threadbucketsize totensor
syn keyword formStatement tovector trace4 tracen tryreplace unhide
syn keyword formStatement unittrace vectors write
" for compatibility with older FORM versions:
syn keyword formStatement id bracket count match traceN
" some special functions
syn keyword formStatement abs_ bernoulli_ binom_ conjg_ count_
syn keyword formStatement d_ dd_ delta_ deltap_ denom_ distrib_
syn keyword formStatement dum_ dummy_ dummyten_ e_ exp_ fac_
syn keyword formStatement factorin_ firstbracket_ g5_ g6_ g7_
syn keyword formStatement g_ gcd_ gi_ integer_ invfac_ match_
syn keyword formStatement max_ maxpowerof_ min_ minpowerof_
syn keyword formStatement mod_ nargs_ nterms_ pattern_ poly_
syn keyword formStatement polyadd_ polydiv_ polygcd_ polyintfac_
syn keyword formStatement polymul_ polynorm_ polyrem_ polysub_
syn keyword formStatement replace_ reverse_ root_ setfun_ sig_
syn keyword formStatement sign_ sum_ sump_ table_ tbl_ term_
syn keyword formStatement termsin_ termsinbracket_ theta_ thetap_
syn keyword formStatement 5_ 6_ 7_
syn keyword formReserved sqrt_ ln_ sin_ cos_ tan_ asin_ acos_
syn keyword formReserved atan_ atan2_ sinh_ cosh_ tanh_ asinh_
syn keyword formReserved acosh_ atanh_ li2_ lin_
syn keyword formTodo contained TODO FIXME XXX
syn match formSpecial display contained "\\\(n\|t\|b\|\\\|\"\)"
syn match formSpecial display contained "%\(%\|e\|E\|s\|f\|\$\)"
syn match formSpecial "\<N\d\+_[?]"
" pattern matching for keywords
syn match formComment "^\ *\*.*$" contains=formTodo
syn match formComment "\;\ *\*.*$" contains=formTodo
syn region formString start=+"+ end=+"+ contains=formSpecial
syn region formString start=+'+ end=+'+
syn region formNestedString start=+`+ end=+'+ contains=formNestedString
syn match formPreProc "^\=\#[a-zA-Z][a-zA-Z0-9]*\>"
syn match formNumber "\<\d\+\>"
syn match formNumber "\<\d\+\.\d*\>"
syn match formNumber "\.\d\+\>"
syn match formNumber "-\d" contains=Number
syn match formNumber "-\.\d" contains=Number
syn match formNumber "i_\+\>"
syn match formNumber "fac_\+\>"
" pattern matching wildcards
syn match formNumber "?[a-zA-Z0-9]*"
" dollar-variables (new in 3.x)
syn match formNumber "\\$[a-zA-Z0-9]*"
" scalar products
syn match formNumber "^\=[a-zA-Z][a-zA-Z0-9]*\.[a-zA-Z][a-zA-Z0-9]*\>"
syn match formDirective "^\=\.[a-zA-Z][a-zA-Z0-9]*\>"
" hi User Labels
syn sync ccomment formComment minlines=10
" Define the default highlighting.
" Only when an item doesn't have highlighting yet
hi def link formConditional Conditional
hi def link formNumber Number
hi def link formStatement Statement
hi def link formComment Comment
hi def link formPreProc PreProc
hi def link formDirective PreProc
hi def link formType Type
hi def link formString String
hi def link formNestedString String
hi def link formReserved Error
hi def link formTodo Todo
hi def link formSpecial SpecialChar
if !exists("form_enhanced_color")
hi def link formHeaderStatement Statement
else
" enhanced color mode
hi def link formHeaderStatement HeaderStatement
" dark and a light background for local types
if &background == "dark"
hi HeaderStatement term=underline ctermfg=LightGreen guifg=LightGreen gui=bold
else
hi HeaderStatement term=underline ctermfg=DarkGreen guifg=SeaGreen gui=bold
endif
" change slightly the default for dark gvim
if has("gui_running") && &background == "dark"
hi Conditional guifg=LightBlue gui=bold
hi Statement guifg=LightYellow
endif
endif
let b:current_syntax = "form"
" vim: ts=8
endif