summaryrefslogtreecommitdiff
path: root/runtime/syntax/mp.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/syntax/mp.vim')
-rw-r--r--runtime/syntax/mp.vim132
1 files changed, 132 insertions, 0 deletions
diff --git a/runtime/syntax/mp.vim b/runtime/syntax/mp.vim
new file mode 100644
index 000000000..c0fd60b3d
--- /dev/null
+++ b/runtime/syntax/mp.vim
@@ -0,0 +1,132 @@
+" 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