300 lines
15 KiB
VimL
300 lines
15 KiB
VimL
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1
|
||
|
|
||
|
" Vim syntax file
|
||
|
" Language: METAFONT
|
||
|
" Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
|
||
|
" Former Maintainers: Andreas Scherer <andreas.scherer@pobox.com>
|
||
|
" Last Change: 2016 Oct 1
|
||
|
|
||
|
if exists("b:current_syntax")
|
||
|
finish
|
||
|
endif
|
||
|
|
||
|
syn iskeyword @,_
|
||
|
|
||
|
" METAFONT 'primitives' as defined in chapter 25 of 'The METAFONTbook'
|
||
|
" Page 210: 'boolean expressions'
|
||
|
syn keyword mfBoolExp and charexists false known not odd or true unknown
|
||
|
|
||
|
" Page 210: 'numeric expression'
|
||
|
syn keyword mfNumExp ASCII angle cosd directiontime floor hex length
|
||
|
syn keyword mfNumExp mexp mlog normaldeviate oct sind sqrt totalweight
|
||
|
syn keyword mfNumExp turningnumber uniformdeviate xpart xxpart xypart
|
||
|
syn keyword mfNumExp ypart yxpart yypart
|
||
|
|
||
|
" Page 211: 'internal quantities'
|
||
|
syn keyword mfInternal autorounding boundarychar charcode chardp chardx
|
||
|
syn keyword mfInternal chardy charext charht charic charwd day designsize
|
||
|
syn keyword mfInternal fillin fontmaking granularity hppp jobname month
|
||
|
syn keyword mfInternal pausing proofing showstopping smoothing time
|
||
|
syn keyword mfInternal tracingcapsules tracingchoices tracingcommands
|
||
|
syn keyword mfInternal tracingedges tracingequations tracingmacros
|
||
|
syn keyword mfInternal tracingonline tracingoutput tracingpens
|
||
|
syn keyword mfInternal tracingrestores tracingspecs tracingstats
|
||
|
syn keyword mfInternal tracingtitles turningcheck vppp warningcheck
|
||
|
syn keyword mfInternal xoffset year yoffset
|
||
|
|
||
|
" Page 212: 'pair expressions'
|
||
|
syn keyword mfPairExp of penoffset point postcontrol precontrol rotated
|
||
|
syn keyword mfPairExp scaled shifted slanted transformed xscaled yscaled
|
||
|
syn keyword mfPairExp zscaled
|
||
|
|
||
|
" Page 213: 'path expressions'
|
||
|
syn keyword mfPathExp atleast controls curl cycle makepath reverse
|
||
|
syn keyword mfPathExp subpath tension
|
||
|
|
||
|
" Page 214: 'pen expressions'
|
||
|
syn keyword mfPenExp makepen nullpen pencircle
|
||
|
|
||
|
" Page 214: 'picture expressions'
|
||
|
syn keyword mfPicExp nullpicture
|
||
|
|
||
|
" Page 214: 'string expressions'
|
||
|
syn keyword mfStringExp char decimal readstring str substring
|
||
|
|
||
|
" Page 217: 'commands and statements'
|
||
|
syn keyword mfCommand addto also at batchmode contour cull delimiters
|
||
|
syn keyword mfCommand display doublepath dropping dump end errhelp
|
||
|
syn keyword mfCommand errmessage errorstopmode everyjob from interim
|
||
|
syn keyword mfCommand inwindow keeping let message newinternal
|
||
|
syn keyword mfCommand nonstopmode numspecial openwindow outer randomseed
|
||
|
syn keyword mfCommand save scrollmode shipout show showdependencies
|
||
|
syn keyword mfCommand showstats showtoken showvariable special to withpen
|
||
|
syn keyword mfCommand withweight
|
||
|
|
||
|
" Page 56: 'types'
|
||
|
syn keyword mfType boolean numeric pair path pen picture string
|
||
|
syn keyword mfType transform
|
||
|
|
||
|
" Page 155: 'grouping'
|
||
|
syn keyword mfStatement begingroup endgroup
|
||
|
|
||
|
" Page 165: 'definitions'
|
||
|
syn keyword mfDefinition def enddef expr primary primarydef secondary
|
||
|
syn keyword mfDefinition secondarydef suffix tertiary tertiarydef text
|
||
|
syn keyword mfDefinition vardef
|
||
|
|
||
|
" Page 169: 'conditions and loops'
|
||
|
syn keyword mfCondition else elseif endfor exitif fi for forever
|
||
|
syn keyword mfCondition forsuffixes if step until
|
||
|
|
||
|
" Other primitives listed in the index
|
||
|
syn keyword mfPrimitive charlist endinput expandafter extensible fontdimen
|
||
|
syn keyword mfPrimitive headerbyte inner input intersectiontimes kern
|
||
|
syn keyword mfPrimitive ligtable quote scantokens skipto
|
||
|
|
||
|
" Implicit suffix parameters
|
||
|
syn match mfSuffixParam "@#\|#@\|@"
|
||
|
|
||
|
" These are just tags, but given their special status, we
|
||
|
" highlight them as variables
|
||
|
syn keyword mfVariable x y
|
||
|
|
||
|
" Keywords defined by plain.mf (defined on pp.262-278)
|
||
|
if get(g:, "plain_mf_macros", 1)
|
||
|
syn keyword mfDef addto_currentpicture beginchar capsule_def
|
||
|
syn keyword mfDef change_width clear_pen_memory clearit clearpen
|
||
|
syn keyword mfDef clearxy culldraw cullit cutdraw
|
||
|
syn keyword mfDef define_blacker_pixels define_corrected_pixels
|
||
|
syn keyword mfDef define_good_x_pixels define_good_y_pixels
|
||
|
syn keyword mfDef define_horizontal_corrected_pixels define_pixels
|
||
|
syn keyword mfDef define_whole_blacker_pixels define_whole_pixels
|
||
|
syn keyword mfDef define_whole_vertical_blacker_pixels
|
||
|
syn keyword mfDef define_whole_vertical_pixels downto draw drawdot
|
||
|
syn keyword mfDef endchar erase exitunless fill filldraw fix_units
|
||
|
syn keyword mfDef flex font_coding_scheme font_extra_space
|
||
|
syn keyword mfDef font_identifier font_normal_shrink
|
||
|
syn keyword mfDef font_normal_space font_normal_stretch font_quad
|
||
|
syn keyword mfDef font_size font_slant font_x_height gfcorners gobble
|
||
|
syn keyword mfDef hide imagerules interact italcorr killtext
|
||
|
syn keyword mfDef loggingall lowres_fix makebox makegrid maketicks
|
||
|
syn keyword mfDef mode_def mode_setup nodisplays notransforms numtok
|
||
|
syn keyword mfDef openit penrazor pensquare penstroke pickup
|
||
|
syn keyword mfDef proofoffset proofrule range reflectedabout
|
||
|
syn keyword mfDef rotatedaround screenchars screenrule screenstrokes
|
||
|
syn keyword mfDef shipit showit smode stop superellipse takepower
|
||
|
syn keyword mfDef tracingall tracingnone undraw undrawdot unfill
|
||
|
syn keyword mfDef unfilldraw upto z
|
||
|
syn match mfDef "???"
|
||
|
syn keyword mfVardef bot byte ceiling counterclockwise cutoff decr dir
|
||
|
syn keyword mfVardef direction directionpoint grayfont hround incr
|
||
|
syn keyword mfVardef interpath inverse labelfont labels lft magstep
|
||
|
" Note: nodot is not a vardef, it is used as in makelabel.lft.nodot("5",z5)
|
||
|
" (METAFONT only)
|
||
|
syn keyword mfVardef makelabel max min nodot penlabels penpos
|
||
|
syn keyword mfVardef proofrulethickness round rt savepen slantfont solve
|
||
|
syn keyword mfVardef tensepath titlefont top unitvector vround whatever
|
||
|
syn match mpVardef "\<good\.\%(x\|y\|lft\|rt\|top\|bot\)\>"
|
||
|
syn keyword mfPrimaryDef div dotprod gobbled mod
|
||
|
syn keyword mfSecondaryDef intersectionpoint
|
||
|
syn keyword mfTertiaryDef softjoin thru
|
||
|
syn keyword mfNewInternal blacker currentwindow displaying eps epsilon
|
||
|
syn keyword mfNewInternal infinity join_radius number_of_modes o_correction
|
||
|
syn keyword mfNewInternal pen_bot pen_lft pen_rt pen_top pixels_per_inch
|
||
|
syn keyword mfNewInternal screen_cols screen_rows tolerance
|
||
|
" Predefined constants
|
||
|
syn keyword mfConstant base_name base_version blankpicture ditto down
|
||
|
syn keyword mfConstant fullcircle halfcircle identity left lowres origin
|
||
|
syn keyword mfConstant penspeck proof quartercircle right rulepen smoke
|
||
|
syn keyword mfConstant unitpixel unitsquare up
|
||
|
" Other predefined variables
|
||
|
syn keyword mfVariable aspect_ratio currentpen extra_beginchar
|
||
|
syn keyword mfVariable extra_endchar currentpen_path currentpicture
|
||
|
syn keyword mfVariable currenttransform d extra_setup h localfont mag mode
|
||
|
syn keyword mfVariable mode_name w
|
||
|
" let statements:
|
||
|
syn keyword mfnumExp abs
|
||
|
syn keyword mfPairExp rotatedabout
|
||
|
syn keyword mfCommand bye relax
|
||
|
endif
|
||
|
|
||
|
" By default, METAFONT loads modes.mf, too
|
||
|
if get(g:, "plain_mf_modes", 1)
|
||
|
syn keyword mfConstant APSSixMed AgfaFourZeroZero AgfaThreeFourZeroZero
|
||
|
syn keyword mfConstant AtariNineFive AtariNineSix AtariSLMEightZeroFour
|
||
|
syn keyword mfConstant AtariSMOneTwoFour CItohEightFiveOneZero
|
||
|
syn keyword mfConstant CItohThreeOneZero CanonBJCSixZeroZero CanonCX
|
||
|
syn keyword mfConstant CanonEX CanonLBPLX CanonLBPTen CanonSX ChelgraphIBX
|
||
|
syn keyword mfConstant CompugraphicEightSixZeroZero
|
||
|
syn keyword mfConstant CompugraphicNineSixZeroZero DD DEClarge DECsmall
|
||
|
syn keyword mfConstant DataDiscNew EightThree EpsonAction
|
||
|
syn keyword mfConstant EpsonLQFiveZeroZeroLo EpsonLQFiveZeroZeroMed
|
||
|
syn keyword mfConstant EpsonMXFX EpsonSQEightSevenZero EpsonStylusPro
|
||
|
syn keyword mfConstant EpsonStylusProHigh EpsonStylusProLow
|
||
|
syn keyword mfConstant EpsonStylusProMed FourFour GThreefax HPDeskJet
|
||
|
syn keyword mfConstant HPLaserJetIIISi IBMFourTwoFiveZero IBMFourTwoOneSix
|
||
|
syn keyword mfConstant IBMFourTwoThreeZero IBMFourZeroOneNine
|
||
|
syn keyword mfConstant IBMFourZeroThreeNine IBMFourZeroTwoNine
|
||
|
syn keyword mfConstant IBMProPrinter IBMSixOneFiveFour IBMSixSixSevenZero
|
||
|
syn keyword mfConstant IBMThreeEightOneTwo IBMThreeEightTwoZero
|
||
|
syn keyword mfConstant IBMThreeOneNineThree IBMThreeOneSevenNine
|
||
|
syn keyword mfConstant IBMUlfHolleberg LASevenFive LNOthreR LNOthree
|
||
|
syn keyword mfConstant LNZeroOne LNZeroThree LPSFourZero LPSTwoZero
|
||
|
syn keyword mfConstant LexmarkFourZeroThreeNine LexmarkOptraR
|
||
|
syn keyword mfConstant LexmarkOptraS LinotypeLThreeThreeZero
|
||
|
syn keyword mfConstant LinotypeOneZeroZero LinotypeOneZeroZeroLo
|
||
|
syn keyword mfConstant LinotypeThreeZeroZeroHi MacTrueSize NeXTprinter
|
||
|
syn keyword mfConstant NeXTscreen NecTwoZeroOne Newgen NineOne
|
||
|
syn keyword mfConstant OCESixSevenFiveZeroPS OneTwoZero OneZeroZero
|
||
|
syn keyword mfConstant PrintwareSevenTwoZeroIQ Prism QMSOneSevenTwoFive
|
||
|
syn keyword mfConstant QMSOneSevenZeroZero QMSTwoFourTwoFive RicohA
|
||
|
syn keyword mfConstant RicohFortyEighty RicohFourZeroEightZero RicohLP
|
||
|
syn keyword mfConstant SparcPrinter StarNLOneZero VAXstation VTSix
|
||
|
syn keyword mfConstant VarityperFiveZeroSixZeroW
|
||
|
syn keyword mfConstant VarityperFourThreeZeroZeroHi
|
||
|
syn keyword mfConstant VarityperFourThreeZeroZeroLo
|
||
|
syn keyword mfConstant VarityperFourTwoZeroZero VarityperSixZeroZero
|
||
|
syn keyword mfConstant XeroxDocutech XeroxEightSevenNineZero
|
||
|
syn keyword mfConstant XeroxFourZeroFiveZero XeroxNineSevenZeroZero
|
||
|
syn keyword mfConstant XeroxPhaserSixTwoZeroZeroDP XeroxThreeSevenZeroZero
|
||
|
syn keyword mfConstant Xerox_world agfafzz agfatfzz amiga aps apssixhi
|
||
|
syn keyword mfConstant aselect atariezf atarinf atarins atariotf bitgraph
|
||
|
syn keyword mfConstant bjtenex bjtzzex bjtzzl bjtzzs boise canonbjc
|
||
|
syn keyword mfConstant canonex canonlbp cg cgl cgnszz citohtoz corona crs
|
||
|
syn keyword mfConstant cthreeten cx datadisc declarge decsmall deskjet
|
||
|
syn keyword mfConstant docutech dover dp dpdfezzz eighthre elvira epscszz
|
||
|
syn keyword mfConstant epsdraft epsdrft epsdrftl epsfast epsfastl epshi
|
||
|
syn keyword mfConstant epslo epsmed epsmedl epson epsonact epsonfx epsonl
|
||
|
syn keyword mfConstant epsonlo epsonlol epsonlq epsonsq epstylus epstylwr
|
||
|
syn keyword mfConstant epstyplo epstypmd epstypml epstypro epswlo epswlol
|
||
|
syn keyword mfConstant esphi fourfour gpx gtfax gtfaxhi gtfaxl gtfaxlo
|
||
|
syn keyword mfConstant gtfaxlol help hifax highfax hplaser hprugged ibm_a
|
||
|
syn keyword mfConstant ibmd ibmega ibmegal ibmfzon ibmfztn ibmpp ibmppl
|
||
|
syn keyword mfConstant ibmsoff ibmteot ibmtetz ibmtont ibmtosn ibmtosnl
|
||
|
syn keyword mfConstant ibmvga ibx imagen imagewriter itoh itohl itohtoz
|
||
|
syn keyword mfConstant itohtozl iw jetiiisi kyocera laserjet laserjetfive
|
||
|
syn keyword mfConstant laserjetfivemp laserjetfour laserjetfourthousand
|
||
|
syn keyword mfConstant laserjetfourzerozerozero laserjethi laserjetlo
|
||
|
syn keyword mfConstant laserjettwoonezerozero
|
||
|
syn keyword mfConstant laserjettwoonezerozerofastres lasermaster
|
||
|
syn keyword mfConstant laserwriter lasf lexmarkr lexmarks lexmarku
|
||
|
syn keyword mfConstant linohalf linohi linolo linolttz linoone linosuper
|
||
|
syn keyword mfConstant linothree linothreelo linotzzh ljfive ljfivemp
|
||
|
syn keyword mfConstant ljfour ljfzzz ljfzzzfr ljlo ljtozz ljtozzfr lmaster
|
||
|
syn keyword mfConstant lnotr lnzo lps lpstz lqhires lqlores lqmed lqmedl
|
||
|
syn keyword mfConstant lqmedres lview lviewl lwpro macmag mactrue modes_mf
|
||
|
syn keyword mfConstant ncd nec nechi neclm nectzo newdd newddl nexthi
|
||
|
syn keyword mfConstant nextscreen nextscrn nineone nullmode ocessfz
|
||
|
syn keyword mfConstant okidata okidatal okifourten okifte okihi onetz
|
||
|
syn keyword mfConstant onezz pcprevw pcscreen phaser phaserfs phasertf
|
||
|
syn keyword mfConstant phasertfl phasertl pixpt printware prntware
|
||
|
syn keyword mfConstant proprinter qms qmsesz qmsostf qmsoszz qmstftf ricoh
|
||
|
syn keyword mfConstant ricoha ricohlp ricohsp sherpa sparcptr starnlt
|
||
|
syn keyword mfConstant starnltl styletwo stylewr stylewri stylewriter sun
|
||
|
syn keyword mfConstant supre swtwo toshiba ultre varityper vs vtftzz
|
||
|
syn keyword mfConstant vtftzzhi vtftzzlo vtfzszw vtszz xpstzz xpstzzl
|
||
|
syn keyword mfConstant xrxesnz xrxfzfz xrxnszz xrxtszz
|
||
|
syn keyword mfDef BCPL_string coding_scheme font_face_byte
|
||
|
syn keyword mfDef font_family landscape
|
||
|
syn keyword mfDef mode_extra_info mode_help mode_param
|
||
|
syn keyword mfNewInternal blacker_min
|
||
|
endif
|
||
|
|
||
|
" Some other basic macro names, e.g., from cmbase, logo, etc.
|
||
|
if get(g:, "other_mf_macros", 1)
|
||
|
syn keyword mfDef beginlogochar
|
||
|
syn keyword mfDef font_setup
|
||
|
syn keyword mfPrimitive generate
|
||
|
endif
|
||
|
|
||
|
" Numeric tokens
|
||
|
syn match mfNumeric "[-]\=\d\+"
|
||
|
syn match mfNumeric "[-]\=\.\d\+"
|
||
|
syn match mfNumeric "[-]\=\d\+\.\d\+"
|
||
|
|
||
|
" METAFONT lengths
|
||
|
syn match mfLength "\<\(bp\|cc\|cm\|dd\|in\|mm\|pc\|pt\)\>"
|
||
|
syn match mfLength "[-]\=\d\+\(bp\|cc\|cm\|dd\|in\|mm\|pc\|pt\)\#\="
|
||
|
syn match mfLength "[-]\=\.\d\+\(bp\|cc\|cm\|dd\|in\|mm\|pc\|pt\)\#\="
|
||
|
syn match mfLength "[-]\=\d\+\.\d\+\(bp\|cc\|cm\|dd\|in\|mm\|pc\|pt\)\#\="
|
||
|
|
||
|
" String constants
|
||
|
syn match mfOpenString /"[^"]*/
|
||
|
syn region mfString oneline keepend start=+"+ end=+"+
|
||
|
|
||
|
" Comments:
|
||
|
syn keyword mfTodoComment contained TODO FIXME XXX DEBUG NOTE
|
||
|
syn match mfComment "%.*$" contains=mfTodoComment,@Spell
|
||
|
|
||
|
" synchronizing
|
||
|
syn sync maxlines=50
|
||
|
|
||
|
" Define the default highlighting
|
||
|
hi def link mfBoolExp Statement
|
||
|
hi def link mfNumExp Statement
|
||
|
hi def link mfPairExp Statement
|
||
|
hi def link mfPathExp Statement
|
||
|
hi def link mfPenExp Statement
|
||
|
hi def link mfPicExp Statement
|
||
|
hi def link mfStringExp Statement
|
||
|
hi def link mfInternal Identifier
|
||
|
hi def link mfCommand Statement
|
||
|
hi def link mfType Type
|
||
|
hi def link mfStatement Statement
|
||
|
hi def link mfDefinition Statement
|
||
|
hi def link mfCondition Conditional
|
||
|
hi def link mfPrimitive Statement
|
||
|
hi def link mfDef Function
|
||
|
hi def link mfVardef mfDef
|
||
|
hi def link mfPrimaryDef mfDef
|
||
|
hi def link mfSecondaryDef mfDef
|
||
|
hi def link mfTertiaryDef mfDef
|
||
|
hi def link mfCoord Identifier
|
||
|
hi def link mfPoint Identifier
|
||
|
hi def link mfNumeric Number
|
||
|
hi def link mfLength Number
|
||
|
hi def link mfComment Comment
|
||
|
hi def link mfString String
|
||
|
hi def link mfOpenString Todo
|
||
|
hi def link mfSuffixParam Label
|
||
|
hi def link mfNewInternal mfInternal
|
||
|
hi def link mfVariable Identifier
|
||
|
hi def link mfConstant Constant
|
||
|
hi def link mfTodoComment Todo
|
||
|
|
||
|
let b:current_syntax = "mf"
|
||
|
|
||
|
" vim:sw=2
|
||
|
|
||
|
endif
|