| " Vim syntax file |
| " Language: MetaPost |
| " Maintainer: Andreas Scherer <andreas.scherer@pobox.com> |
| " Last Change: April 30, 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 |
| |
| let plain_mf_macros = 0 " plain.mf has no special meaning for MetaPost |
| let other_mf_macros = 0 " cmbase.mf, logo.mf, ... neither |
| |
| " Read the Metafont syntax to start with |
| if version < 600 |
| source <sfile>:p:h/mf.vim |
| else |
| runtime! syntax/mf.vim |
| endif |
| |
| " MetaPost has TeX inserts for typeset labels |
| " verbatimtex, btex, and etex will be treated as keywords |
| syn match mpTeXbegin "\(verbatimtex\|btex\)" |
| syn match mpTeXend "etex" |
| syn region mpTeXinsert start="\(verbatimtex\|btex\)"hs=e+1 end="etex"he=s-1 contains=mpTeXbegin,mpTeXend keepend |
| |
| " MetaPost primitives not found in Metafont |
| syn keyword mpInternal bluepart clip color dashed fontsize greenpart infont |
| syn keyword mpInternal linecap linejoin llcorner lrcorner miterlimit mpxbreak |
| syn keyword mpInternal prologues redpart setbounds tracinglostchars |
| syn keyword mpInternal truecorners ulcorner urcorner withcolor |
| |
| " Metafont primitives not found in MetaPost |
| syn keyword notDefined autorounding chardx chardy fillin granularity hppp |
| syn keyword notDefined proofing smoothing tracingedges tracingpens |
| syn keyword notDefined turningcheck vppp xoffset yoffset |
| |
| " Keywords defined by plain.mp |
| if !exists("plain_mp_macros") |
| let plain_mp_macros = 1 " Set this to '0' if your source gets too colourful |
| endif |
| if plain_mp_macros |
| syn keyword mpMacro ahangle ahlength background bbox bboxmargin beginfig |
| syn keyword mpMacro beveled black blue buildcycle butt center cutafter |
| syn keyword mpMacro cutbefore cuttings dashpattern defaultfont defaultpen |
| syn keyword mpMacro defaultscale dotlabel dotlabels drawarrow drawdblarrow |
| syn keyword mpMacro drawoptions endfig evenly extra_beginfig extra_endfig |
| syn keyword mpMacro green label labeloffset mitered red rounded squared |
| syn keyword mpMacro thelabel white base_name base_version |
| syn keyword mpMacro upto downto exitunless relax gobble gobbled |
| syn keyword mpMacro interact loggingall tracingall tracingnone |
| syn keyword mpMacro eps epsilon infinity right left up down origin |
| syn keyword mpMacro quartercircle halfcircle fullcircle unitsquare identity |
| syn keyword mpMacro blankpicture withdots ditto EOF pensquare penrazor |
| syn keyword mpMacro penspeck whatever abs round ceiling byte dir unitvector |
| syn keyword mpMacro inverse counterclockwise tensepath mod div dotprod |
| syn keyword mpMacro takepower direction directionpoint intersectionpoint |
| syn keyword mpMacro softjoin incr decr reflectedabout rotatedaround |
| syn keyword mpMacro rotatedabout min max flex superellipse interpath |
| syn keyword mpMacro magstep currentpen currentpen_path currentpicture |
| syn keyword mpMacro fill draw filldraw drawdot unfill undraw unfilldraw |
| syn keyword mpMacro undrawdot erase cutdraw image pickup numeric_pickup |
| syn keyword mpMacro pen_lft pen_rt pen_top pen_bot savepen clearpen |
| syn keyword mpMacro clear_pen_memory lft rt top bot ulft urt llft lrt |
| syn keyword mpMacro penpos penstroke arrowhead makelabel labels penlabel |
| syn keyword mpMacro range numtok thru clearxy clearit clearpen pickup |
| syn keyword mpMacro shipit bye hide stop solve |
| endif |
| |
| " Keywords defined by mfplain.mp |
| if !exists("mfplain_mp_macros") |
| let mfplain_mp_macros = 0 " Set this to '1' to include these macro names |
| endif |
| if mfplain_mp_macros |
| syn keyword mpMacro beginchar blacker capsule_def change_width |
| syn keyword mpMacro define_blacker_pixels define_corrected_pixels |
| syn keyword mpMacro define_good_x_pixels define_good_y_pixels |
| syn keyword mpMacro define_horizontal_corrected_pixels |
| syn keyword mpMacro define_pixels define_whole_blacker_pixels |
| syn keyword mpMacro define_whole_vertical_blacker_pixels |
| syn keyword mpMacro define_whole_vertical_pixels endchar |
| syn keyword mpMacro extra_beginchar extra_endchar extra_setup |
| syn keyword mpMacro font_coding_scheme font_extra_space font_identifier |
| syn keyword mpMacro font_normal_shrink font_normal_space |
| syn keyword mpMacro font_normal_stretch font_quad font_size |
| syn keyword mpMacro font_slant font_x_height italcorr labelfont |
| syn keyword mpMacro makebox makegrid maketicks mode_def mode_setup |
| syn keyword mpMacro o_correction proofrule proofrulethickness rulepen smode |
| |
| " plus some no-ops, also from mfplain.mp |
| syn keyword mpMacro cullit currenttransform gfcorners grayfont hround |
| syn keyword mpMacro imagerules lowres_fix nodisplays notransforms openit |
| syn keyword mpMacro proofoffset screenchars screenrule screenstrokes |
| syn keyword mpMacro showit slantfont titlefont unitpixel vround |
| endif |
| |
| " Keywords defined by other macro packages, e.g., boxes.mp |
| if !exists("other_mp_macros") |
| let other_mp_macros = 1 " Set this to '0' if your source gets too colourful |
| endif |
| if other_mp_macros |
| syn keyword mpMacro circmargin defaultdx defaultdy |
| syn keyword mpMacro boxit boxjoin bpath circleit drawboxed drawboxes |
| syn keyword mpMacro drawunboxed fixpos fixsize pic |
| endif |
| |
| " 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_mp_syntax_inits") |
| if version < 508 |
| let did_mp_syntax_inits = 1 |
| command -nargs=+ HiLink hi link <args> |
| else |
| command -nargs=+ HiLink hi def link <args> |
| endif |
| |
| HiLink mpTeXinsert String |
| HiLink mpTeXbegin Statement |
| HiLink mpTeXend Statement |
| HiLink mpInternal mfInternal |
| HiLink mpMacro Macro |
| |
| delcommand HiLink |
| endif |
| |
| let b:current_syntax = "mp" |
| |
| " vim: ts=8 |