vim9script

# Vim syntax file
# Language:           METAFONT
# Maintainer:         Nicola Vitacolonna <nvitacolonna@gmail.com>
# Former Maintainers: Andreas Scherer <andreas.scherer@pobox.com>
# Latest Revision:    2022 Aug 12

if exists("b:current_syntax")
  finish
endif

# Deprecation warnings: to be removed eventually
if exists("g:plain_mf_macros")
  echomsg "[mf] g:plain_mf_macros is deprecated: use g:mf_plain_macros instead."
endif
if exists("g:plain_mf_modes")
  echomsg "[mf] g:plain_mf_modes is deprecated: use g:mf_plain_modes instead."
endif
if exists("g:other_mf_macros")
  echomsg "[mf] g:other_mf_macros is deprecated: use g:mf_other_macros instead."
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:, "mf_plain_macros", 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", get(g:, "mf_plain_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:, "mf_other_macros", 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=100

# 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

b:current_syntax = "mf"

# vim: sw=2 fdm=marker
