" Vim syntax file " Language: Metafont " Maintainer: Andreas Scherer " Last Change: April 25, 2001 " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded if version < 600 syn clear elseif exists("b:current_syntax") finish endif " Metafont 'primitives' as defined in chapter 25 of 'The METAFONTbook' " Page 210: 'boolean expressions' syn keyword mfBoolExp true false known unknown odd charexists not and or " Page 210: 'numeric expression' syn keyword mfNumExp normaldeviate length ASCII oct hex angle turningnumber syn keyword mfNumExp totalweight directiontime xpart ypart xxpart xypart syn keyword mfNumExp yxpart yypart sqrt sind cosd mlog mexp floor syn keyword mfNumExp uniformdeviate " Page 211: 'internal quantities' syn keyword mfInternal tracingtitles tracingequations tracingcapsules syn keyword mfInternal tracingchoices tracingspecs tracingpens syn keyword mfInternal tracingcommands tracingrestores tracingmacros syn keyword mfInternal tracingedges tracingoutput tracingonline tracingstats syn keyword mfInternal pausing showstopping fontmaking proofing syn keyword mfInternal turningcheck warningcheck smoothing autorounding syn keyword mfInternal granularity fillin year month day time syn keyword mfInternal charcode charext charwd charht chardp charic syn keyword mfInternal chardx chardy designsize hppp vppp xoffset yoffset syn keyword mfInternal boundarychar " Page 212: 'pair expressions' syn keyword mfPairExp point of precontrol postcontrol penoffset rotated syn keyword mfPairExp scaled shifted slanted transformed xscaled yscaled syn keyword mfPairExp zscaled " Page 213: 'path expressions' syn keyword mfPathExp makepath reverse subpath curl tension atleast syn keyword mfPathExp controls cycle " Page 214: 'pen expressions' syn keyword mfPenExp nullpen pencircle makepen " Page 214: 'picutre expressions' syn keyword mfPicExp nullpicture " Page 214: 'string expressions' syn keyword mfStringExp jobname readstring str char decimal substring " Page 217: 'commands and statements' syn keyword mfCommand end dump save interim newinternal randomseed let syn keyword mfCommand delimiters outer everyjob show showvariable showtoken syn keyword mfCommand showdependencies showstats message errmessage errhelp syn keyword mfCommand batchmode nonstopmode scrollmode errorstopmode syn keyword mfCommand addto also contour doublepath withpen withweight cull syn keyword mfCommand keeping dropping display inwindow openwindow at from to syn keyword mfCommand shipout special numspecial " Page 56: 'types' syn keyword mfType boolean numeric pair path pen picture string transform " Page 155: 'grouping' syn keyword mfStatement begingroup endgroup " Page 165: 'definitions' syn keyword mfDefinition enddef def expr suffix text primary secondary syn keyword mfDefinition tertiary vardef primarydef secondarydef tertiarydef " Page 169: 'conditions and loops' syn keyword mfCondition if fi else elseif endfor for forsuffixes forever syn keyword mfCondition step until exitif " Other primitives listed in the index syn keyword mfPrimitive charlist endinput expandafter extensible syn keyword mfPrimitive fontdimen headerbyte inner input intersectiontimes syn keyword mfPrimitive kern ligtable quote scantokens skipto " Keywords defined by plain.mf (defined on pp.262-278) if !exists("plain_mf_macros") let plain_mf_macros = 1 " Set this to '0' if your source gets too colourful " metapost.vim does so to turn off Metafont macros endif if plain_mf_macros syn keyword mfMacro abs addto_currentpicture aspect_ratio base_name syn keyword mfMacro base_version beginchar blacker blankpicture bot bye byte syn keyword mfMacro capsule_def ceiling change_width clear_pen_memory clearit syn keyword mfMacro clearpen clearxy counterclockwise culldraw cullit syn keyword mfMacro currentpen currentpen_path currentpicture syn keyword mfMacro currenttransform currentwindow cutdraw cutoff d decr syn keyword mfMacro define_blacker_pixels define_corrected_pixels syn keyword mfMacro define_good_x_pixels define_good_y_pixels syn keyword mfMacro define_horizontal_corrected_pixels define_pixels syn keyword mfMacro define_whole_blacker_pixels define_whole_pixels syn keyword mfMacro define_whole_vertical_blacker_pixels syn keyword mfMacro define_whole_vertical_pixels dir direction directionpoint syn keyword mfMacro displaying ditto div dotprod down downto draw drawdot syn keyword mfMacro endchar eps epsilon extra_beginchar extra_endchar syn keyword mfMacro extra_setup erase exitunless fill filldraw fix_units flex syn keyword mfMacro font_coding_scheme font_extra_space font_identifier syn keyword mfMacro font_normal_shrink font_normal_space font_normal_stretch syn keyword mfMacro font_quad font_setup font_size font_slant font_x_height syn keyword mfMacro fullcircle generate gfcorners gobble gobbled grayfont h syn keyword mfMacro halfcircle hide hround identity image_rules incr infinity syn keyword mfMacro interact interpath intersectionpoint inverse italcorr syn keyword mfMacro join_radius killtext labelfont labels left lft localfont syn keyword mfMacro loggingall lowres lowres_fix mag magstep makebox makegrid syn keyword mfMacro makelabel maketicks max min mod mode mode_def mode_name syn keyword mfMacro mode_setup nodisplays notransforms number_of_modes numtok syn keyword mfMacro o_correction openit origin pen_bot pen_lft pen_rt pen_top syn keyword mfMacro penlabels penpos penrazor penspeck pensquare penstroke syn keyword mfMacro pickup pixels_per_inch proof proofoffset proofrule syn keyword mfMacro proofrulethickness quartercircle range reflectedabout syn keyword mfMacro relax right rotatedabout rotatedaround round rt rulepen syn keyword mfMacro savepen screenchars screen_rows screen_cols screenrule syn keyword mfMacro screenstrokes shipit showit slantfont smode smoke softjoin syn keyword mfMacro solve stop superellipse takepower tensepath titlefont syn keyword mfMacro tolerance top tracingall tracingnone undraw undrawdot syn keyword mfMacro unfill unfilldraw unitpixel unitsquare unitvector up upto syn keyword mfMacro vround w whatever endif " Some other basic macro names, e.g., from cmbase, logo, etc. if !exists("other_mf_macros") let other_mf_macros = 1 " Set this to '0' if your code gets too colourful " metapost.vim does so to turn off Metafont macros endif if other_mf_macros syn keyword mfMacro beginlogochar 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\)\#\=\>" " Metafont coordinates and points syn match mfCoord "\<[xy]\d\+\>" syn match mfPoint "\" " String constants syn region mfString start=+"+ end=+"+ " Comments: syn match mfComment "%.*$" " synchronizing syn sync maxlines=50 " Define the default highlighting " For version 5.7 and earlier: only when not done already " For version 5.8 and later: only when an item doesn't have highlighting yet if version >= 508 || !exists("did_mf_syntax_inits") if version < 508 let did_mf_syntax_inits = 1 command -nargs=+ HiLink hi link else command -nargs=+ HiLink hi def link endif HiLink mfBoolExp Statement HiLink mfNumExp Statement HiLink mfInternal Identifier HiLink mfPairExp Statement HiLink mfPathExp Statement HiLink mfPenExp Statement HiLink mfPicExp Statement HiLink mfStringExp Statement HiLink mfCommand Statement HiLink mfType Type HiLink mfStatement Statement HiLink mfDefinition Statement HiLink mfCondition Conditional HiLink mfPrimitive Statement HiLink mfMacro Macro HiLink mfCoord Identifier HiLink mfPoint Identifier HiLink mfNumeric Number HiLink mfLength Number HiLink mfComment Comment HiLink mfString String delcommand HiLink endif let b:current_syntax = "mf" " vim: ts=8