neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

mf.vim (15423B)


      1 " Vim syntax file
      2 " Language:           METAFONT
      3 " Maintainer:         Nicola Vitacolonna <nvitacolonna@gmail.com>
      4 " Former Maintainers: Andreas Scherer <andreas.scherer@pobox.com>
      5 " Last Change:        2016 Oct 1
      6 
      7 if exists("b:current_syntax")
      8  finish
      9 endif
     10 
     11 syn iskeyword @,_
     12 
     13 " METAFONT 'primitives' as defined in chapter 25 of 'The METAFONTbook'
     14 " Page 210: 'boolean expressions'
     15 syn keyword mfBoolExp        and charexists false known not odd or true unknown
     16 
     17 " Page 210: 'numeric expression'
     18 syn keyword mfNumExp         ASCII angle cosd directiontime floor hex length
     19 syn keyword mfNumExp         mexp mlog normaldeviate oct sind sqrt totalweight
     20 syn keyword mfNumExp         turningnumber uniformdeviate xpart xxpart xypart
     21 syn keyword mfNumExp         ypart yxpart yypart
     22 
     23 " Page 211: 'internal quantities'
     24 syn keyword mfInternal       autorounding boundarychar charcode chardp chardx
     25 syn keyword mfInternal       chardy charext charht charic charwd day designsize
     26 syn keyword mfInternal       fillin fontmaking granularity hppp jobname month
     27 syn keyword mfInternal       pausing proofing showstopping smoothing time
     28 syn keyword mfInternal       tracingcapsules tracingchoices tracingcommands
     29 syn keyword mfInternal       tracingedges tracingequations tracingmacros
     30 syn keyword mfInternal       tracingonline tracingoutput tracingpens
     31 syn keyword mfInternal       tracingrestores tracingspecs tracingstats
     32 syn keyword mfInternal       tracingtitles turningcheck vppp warningcheck
     33 syn keyword mfInternal       xoffset year yoffset
     34 
     35 " Page 212: 'pair expressions'
     36 syn keyword mfPairExp        of penoffset point postcontrol precontrol rotated
     37 syn keyword mfPairExp        scaled shifted slanted transformed xscaled yscaled
     38 syn keyword mfPairExp        zscaled
     39 
     40 " Page 213: 'path expressions'
     41 syn keyword mfPathExp        atleast controls curl cycle makepath reverse
     42 syn keyword mfPathExp        subpath tension
     43 
     44 " Page 214: 'pen expressions'
     45 syn keyword mfPenExp         makepen nullpen pencircle
     46 
     47 " Page 214: 'picture expressions'
     48 syn keyword mfPicExp         nullpicture
     49 
     50 " Page 214: 'string expressions'
     51 syn keyword mfStringExp      char decimal readstring str substring
     52 
     53 " Page 217: 'commands and statements'
     54 syn keyword mfCommand        addto also at batchmode contour cull delimiters
     55 syn keyword mfCommand        display doublepath dropping dump end errhelp
     56 syn keyword mfCommand        errmessage errorstopmode everyjob from interim
     57 syn keyword mfCommand        inwindow keeping let message newinternal
     58 syn keyword mfCommand        nonstopmode numspecial openwindow outer randomseed
     59 syn keyword mfCommand        save scrollmode shipout show showdependencies
     60 syn keyword mfCommand        showstats showtoken showvariable special to withpen
     61 syn keyword mfCommand        withweight
     62 
     63 " Page 56: 'types'
     64 syn keyword mfType           boolean numeric pair path pen picture string
     65 syn keyword mfType           transform
     66 
     67 " Page 155: 'grouping'
     68 syn keyword mfStatement      begingroup endgroup
     69 
     70 " Page 165: 'definitions'
     71 syn keyword mfDefinition     def enddef expr primary primarydef secondary
     72 syn keyword mfDefinition     secondarydef suffix tertiary tertiarydef text
     73 syn keyword mfDefinition     vardef
     74 
     75 " Page 169: 'conditions and loops'
     76 syn keyword mfCondition      else elseif endfor exitif fi for forever
     77 syn keyword mfCondition      forsuffixes if step until
     78 
     79 " Other primitives listed in the index
     80 syn keyword mfPrimitive      charlist endinput expandafter extensible fontdimen
     81 syn keyword mfPrimitive      headerbyte inner input intersectiontimes kern
     82 syn keyword mfPrimitive      ligtable quote scantokens skipto
     83 
     84 " Implicit suffix parameters
     85 syn match   mfSuffixParam    "@#\|#@\|@"
     86 
     87 " These are just tags, but given their special status, we
     88 " highlight them as variables
     89 syn keyword mfVariable       x y
     90 
     91 " Keywords defined by plain.mf (defined on pp.262-278)
     92 if get(g:, "plain_mf_macros", 1)
     93  syn keyword mfDef          addto_currentpicture beginchar capsule_def
     94  syn keyword mfDef          change_width clear_pen_memory clearit clearpen
     95  syn keyword mfDef          clearxy culldraw cullit cutdraw
     96  syn keyword mfDef          define_blacker_pixels define_corrected_pixels
     97  syn keyword mfDef          define_good_x_pixels define_good_y_pixels
     98  syn keyword mfDef          define_horizontal_corrected_pixels define_pixels
     99  syn keyword mfDef          define_whole_blacker_pixels define_whole_pixels
    100  syn keyword mfDef          define_whole_vertical_blacker_pixels
    101  syn keyword mfDef          define_whole_vertical_pixels downto draw drawdot
    102  syn keyword mfDef          endchar erase exitunless fill filldraw fix_units
    103  syn keyword mfDef          flex font_coding_scheme font_extra_space
    104  syn keyword mfDef          font_identifier font_normal_shrink
    105  syn keyword mfDef          font_normal_space font_normal_stretch font_quad
    106  syn keyword mfDef          font_size font_slant font_x_height gfcorners gobble
    107  syn keyword mfDef          hide imagerules interact italcorr killtext
    108  syn keyword mfDef          loggingall lowres_fix makebox makegrid maketicks
    109  syn keyword mfDef          mode_def mode_setup nodisplays notransforms numtok
    110  syn keyword mfDef          openit penrazor pensquare penstroke pickup
    111  syn keyword mfDef          proofoffset proofrule range reflectedabout
    112  syn keyword mfDef          rotatedaround screenchars screenrule screenstrokes
    113  syn keyword mfDef          shipit showit smode stop superellipse takepower
    114  syn keyword mfDef          tracingall tracingnone undraw undrawdot unfill
    115  syn keyword mfDef          unfilldraw upto z
    116  syn match   mfDef          "???"
    117  syn keyword mfVardef       bot byte ceiling counterclockwise cutoff decr dir
    118  syn keyword mfVardef       direction directionpoint grayfont hround incr
    119  syn keyword mfVardef       interpath inverse labelfont labels lft magstep
    120  " Note: nodot is not a vardef, it is used as in makelabel.lft.nodot("5",z5)
    121  " (METAFONT only)
    122  syn keyword mfVardef       makelabel max min nodot penlabels penpos
    123  syn keyword mfVardef       proofrulethickness round rt savepen slantfont solve
    124  syn keyword mfVardef       tensepath titlefont top unitvector vround whatever
    125  syn match   mpVardef       "\<good\.\%(x\|y\|lft\|rt\|top\|bot\)\>"
    126  syn keyword mfPrimaryDef   div dotprod gobbled mod
    127  syn keyword mfSecondaryDef intersectionpoint
    128  syn keyword mfTertiaryDef  softjoin thru
    129  syn keyword mfNewInternal  blacker currentwindow displaying eps epsilon
    130  syn keyword mfNewInternal  infinity join_radius number_of_modes o_correction
    131  syn keyword mfNewInternal  pen_bot pen_lft pen_rt pen_top pixels_per_inch
    132  syn keyword mfNewInternal  screen_cols screen_rows tolerance
    133  " Predefined constants
    134  syn keyword mfConstant     base_name base_version blankpicture ditto down
    135  syn keyword mfConstant     fullcircle halfcircle identity left lowres origin
    136  syn keyword mfConstant     penspeck proof quartercircle right rulepen smoke
    137  syn keyword mfConstant     unitpixel unitsquare up
    138  " Other predefined variables
    139  syn keyword mfVariable     aspect_ratio currentpen extra_beginchar
    140  syn keyword mfVariable     extra_endchar currentpen_path currentpicture
    141  syn keyword mfVariable     currenttransform d extra_setup h localfont mag mode
    142  syn keyword mfVariable     mode_name w
    143  " let statements:
    144  syn keyword mfnumExp       abs
    145  syn keyword mfPairExp      rotatedabout
    146  syn keyword mfCommand      bye relax
    147 endif
    148 
    149 " By default, METAFONT loads modes.mf, too
    150 if get(g:, "plain_mf_modes", 1)
    151  syn keyword mfConstant     APSSixMed AgfaFourZeroZero AgfaThreeFourZeroZero
    152  syn keyword mfConstant     AtariNineFive AtariNineSix AtariSLMEightZeroFour
    153  syn keyword mfConstant     AtariSMOneTwoFour CItohEightFiveOneZero
    154  syn keyword mfConstant     CItohThreeOneZero CanonBJCSixZeroZero CanonCX
    155  syn keyword mfConstant     CanonEX CanonLBPLX CanonLBPTen CanonSX ChelgraphIBX
    156  syn keyword mfConstant     CompugraphicEightSixZeroZero
    157  syn keyword mfConstant     CompugraphicNineSixZeroZero DD DEClarge DECsmall
    158  syn keyword mfConstant     DataDiscNew EightThree EpsonAction
    159  syn keyword mfConstant     EpsonLQFiveZeroZeroLo EpsonLQFiveZeroZeroMed
    160  syn keyword mfConstant     EpsonMXFX EpsonSQEightSevenZero EpsonStylusPro
    161  syn keyword mfConstant     EpsonStylusProHigh EpsonStylusProLow
    162  syn keyword mfConstant     EpsonStylusProMed FourFour GThreefax HPDeskJet
    163  syn keyword mfConstant     HPLaserJetIIISi IBMFourTwoFiveZero IBMFourTwoOneSix
    164  syn keyword mfConstant     IBMFourTwoThreeZero IBMFourZeroOneNine
    165  syn keyword mfConstant     IBMFourZeroThreeNine IBMFourZeroTwoNine
    166  syn keyword mfConstant     IBMProPrinter IBMSixOneFiveFour IBMSixSixSevenZero
    167  syn keyword mfConstant     IBMThreeEightOneTwo IBMThreeEightTwoZero
    168  syn keyword mfConstant     IBMThreeOneNineThree IBMThreeOneSevenNine
    169  syn keyword mfConstant     IBMUlfHolleberg LASevenFive LNOthreR LNOthree
    170  syn keyword mfConstant     LNZeroOne LNZeroThree LPSFourZero LPSTwoZero
    171  syn keyword mfConstant     LexmarkFourZeroThreeNine LexmarkOptraR
    172  syn keyword mfConstant     LexmarkOptraS LinotypeLThreeThreeZero
    173  syn keyword mfConstant     LinotypeOneZeroZero LinotypeOneZeroZeroLo
    174  syn keyword mfConstant     LinotypeThreeZeroZeroHi MacTrueSize NeXTprinter
    175  syn keyword mfConstant     NeXTscreen NecTwoZeroOne Newgen NineOne
    176  syn keyword mfConstant     OCESixSevenFiveZeroPS OneTwoZero OneZeroZero
    177  syn keyword mfConstant     PrintwareSevenTwoZeroIQ Prism QMSOneSevenTwoFive
    178  syn keyword mfConstant     QMSOneSevenZeroZero QMSTwoFourTwoFive RicohA
    179  syn keyword mfConstant     RicohFortyEighty RicohFourZeroEightZero RicohLP
    180  syn keyword mfConstant     SparcPrinter StarNLOneZero VAXstation VTSix
    181  syn keyword mfConstant     VarityperFiveZeroSixZeroW
    182  syn keyword mfConstant     VarityperFourThreeZeroZeroHi
    183  syn keyword mfConstant     VarityperFourThreeZeroZeroLo
    184  syn keyword mfConstant     VarityperFourTwoZeroZero VarityperSixZeroZero
    185  syn keyword mfConstant     XeroxDocutech XeroxEightSevenNineZero
    186  syn keyword mfConstant     XeroxFourZeroFiveZero XeroxNineSevenZeroZero
    187  syn keyword mfConstant     XeroxPhaserSixTwoZeroZeroDP XeroxThreeSevenZeroZero
    188  syn keyword mfConstant     Xerox_world agfafzz agfatfzz amiga aps apssixhi
    189  syn keyword mfConstant     aselect atariezf atarinf atarins atariotf bitgraph
    190  syn keyword mfConstant     bjtenex bjtzzex bjtzzl bjtzzs boise canonbjc
    191  syn keyword mfConstant     canonex canonlbp cg cgl cgnszz citohtoz corona crs
    192  syn keyword mfConstant     cthreeten cx datadisc declarge decsmall deskjet
    193  syn keyword mfConstant     docutech dover dp dpdfezzz eighthre elvira epscszz
    194  syn keyword mfConstant     epsdraft epsdrft epsdrftl epsfast epsfastl epshi
    195  syn keyword mfConstant     epslo epsmed epsmedl epson epsonact epsonfx epsonl
    196  syn keyword mfConstant     epsonlo epsonlol epsonlq epsonsq epstylus epstylwr
    197  syn keyword mfConstant     epstyplo epstypmd epstypml epstypro epswlo epswlol
    198  syn keyword mfConstant     esphi fourfour gpx gtfax gtfaxhi gtfaxl gtfaxlo
    199  syn keyword mfConstant     gtfaxlol help hifax highfax hplaser hprugged ibm_a
    200  syn keyword mfConstant     ibmd ibmega ibmegal ibmfzon ibmfztn ibmpp ibmppl
    201  syn keyword mfConstant     ibmsoff ibmteot ibmtetz ibmtont ibmtosn ibmtosnl
    202  syn keyword mfConstant     ibmvga ibx imagen imagewriter itoh itohl itohtoz
    203  syn keyword mfConstant     itohtozl iw jetiiisi kyocera laserjet laserjetfive
    204  syn keyword mfConstant     laserjetfivemp laserjetfour laserjetfourthousand
    205  syn keyword mfConstant     laserjetfourzerozerozero laserjethi laserjetlo
    206  syn keyword mfConstant     laserjettwoonezerozero
    207  syn keyword mfConstant     laserjettwoonezerozerofastres lasermaster
    208  syn keyword mfConstant     laserwriter lasf lexmarkr lexmarks lexmarku
    209  syn keyword mfConstant     linohalf linohi linolo linolttz linoone linosuper
    210  syn keyword mfConstant     linothree linothreelo linotzzh ljfive ljfivemp
    211  syn keyword mfConstant     ljfour ljfzzz ljfzzzfr ljlo ljtozz ljtozzfr lmaster
    212  syn keyword mfConstant     lnotr lnzo lps lpstz lqhires lqlores lqmed lqmedl
    213  syn keyword mfConstant     lqmedres lview lviewl lwpro macmag mactrue modes_mf
    214  syn keyword mfConstant     ncd nec nechi neclm nectzo newdd newddl nexthi
    215  syn keyword mfConstant     nextscreen nextscrn nineone nullmode ocessfz
    216  syn keyword mfConstant     okidata okidatal okifourten okifte okihi onetz
    217  syn keyword mfConstant     onezz pcprevw pcscreen phaser phaserfs phasertf
    218  syn keyword mfConstant     phasertfl phasertl pixpt printware prntware
    219  syn keyword mfConstant     proprinter qms qmsesz qmsostf qmsoszz qmstftf ricoh
    220  syn keyword mfConstant     ricoha ricohlp ricohsp sherpa sparcptr starnlt
    221  syn keyword mfConstant     starnltl styletwo stylewr stylewri stylewriter sun
    222  syn keyword mfConstant     supre swtwo toshiba ultre varityper vs vtftzz
    223  syn keyword mfConstant     vtftzzhi vtftzzlo vtfzszw vtszz xpstzz xpstzzl
    224  syn keyword mfConstant     xrxesnz xrxfzfz xrxnszz xrxtszz
    225  syn keyword mfDef          BCPL_string coding_scheme font_face_byte
    226  syn keyword mfDef          font_family landscape
    227  syn keyword mfDef          mode_extra_info mode_help mode_param
    228  syn keyword mfNewInternal  blacker_min
    229 endif
    230 
    231 " Some other basic macro names, e.g., from cmbase, logo, etc.
    232 if get(g:, "other_mf_macros", 1)
    233  syn keyword mfDef          beginlogochar
    234  syn keyword mfDef          font_setup
    235  syn keyword mfPrimitive    generate
    236 endif
    237 
    238 " Numeric tokens
    239 syn match     mfNumeric      "[-]\=\d\+"
    240 syn match     mfNumeric      "[-]\=\.\d\+"
    241 syn match     mfNumeric      "[-]\=\d\+\.\d\+"
    242 
    243 " METAFONT lengths
    244 syn match     mfLength       "\<\(bp\|cc\|cm\|dd\|in\|mm\|pc\|pt\)\>"
    245 syn match     mfLength       "[-]\=\d\+\(bp\|cc\|cm\|dd\|in\|mm\|pc\|pt\)\#\="
    246 syn match     mfLength       "[-]\=\.\d\+\(bp\|cc\|cm\|dd\|in\|mm\|pc\|pt\)\#\="
    247 syn match     mfLength       "[-]\=\d\+\.\d\+\(bp\|cc\|cm\|dd\|in\|mm\|pc\|pt\)\#\="
    248 
    249 " String constants
    250 syn match     mfOpenString   /"[^"]*/
    251 syn region    mfString       oneline keepend start=+"+ end=+"+
    252 
    253 " Comments:
    254 syn keyword   mfTodoComment  contained TODO FIXME XXX DEBUG NOTE
    255 syn match     mfComment      "%.*$" contains=mfTodoComment,@Spell
    256 
    257 " synchronizing
    258 syn sync maxlines=50
    259 
    260 " Define the default highlighting
    261 hi def link mfBoolExp      Statement
    262 hi def link mfNumExp       Statement
    263 hi def link mfPairExp      Statement
    264 hi def link mfPathExp      Statement
    265 hi def link mfPenExp       Statement
    266 hi def link mfPicExp       Statement
    267 hi def link mfStringExp    Statement
    268 hi def link mfInternal     Identifier
    269 hi def link mfCommand      Statement
    270 hi def link mfType         Type
    271 hi def link mfStatement    Statement
    272 hi def link mfDefinition   Statement
    273 hi def link mfCondition    Conditional
    274 hi def link mfPrimitive    Statement
    275 hi def link mfDef          Function
    276 hi def link mfVardef       mfDef
    277 hi def link mfPrimaryDef   mfDef
    278 hi def link mfSecondaryDef mfDef
    279 hi def link mfTertiaryDef  mfDef
    280 hi def link mfCoord        Identifier
    281 hi def link mfPoint        Identifier
    282 hi def link mfNumeric      Number
    283 hi def link mfLength       Number
    284 hi def link mfComment      Comment
    285 hi def link mfString       String
    286 hi def link mfOpenString   Todo
    287 hi def link mfSuffixParam  Label
    288 hi def link mfNewInternal  mfInternal
    289 hi def link mfVariable     Identifier
    290 hi def link mfConstant     Constant
    291 hi def link mfTodoComment  Todo
    292 
    293 let b:current_syntax = "mf"
    294 
    295 " vim:sw=2