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