xref: /vim-8.2.3635/runtime/syntax/mp.vim (revision 071d4279)
1" Vim syntax file
2" Language:	MetaPost
3" Maintainer:	Andreas Scherer <[email protected]>
4" Last Change:	April 30, 2001
5
6" For version 5.x: Clear all syntax items
7" For version 6.x: Quit when a syntax file was already loaded
8if version < 600
9  syn clear
10elseif exists("b:current_syntax")
11  finish
12endif
13
14let plain_mf_macros = 0 " plain.mf has no special meaning for MetaPost
15let other_mf_macros = 0 " cmbase.mf, logo.mf, ... neither
16
17" Read the Metafont syntax to start with
18if version < 600
19  source <sfile>:p:h/mf.vim
20else
21  runtime! syntax/mf.vim
22endif
23
24" MetaPost has TeX inserts for typeset labels
25" verbatimtex, btex, and etex will be treated as keywords
26syn match mpTeXbegin "\(verbatimtex\|btex\)"
27syn match mpTeXend "etex"
28syn region mpTeXinsert start="\(verbatimtex\|btex\)"hs=e+1 end="etex"he=s-1 contains=mpTeXbegin,mpTeXend keepend
29
30" MetaPost primitives not found in Metafont
31syn keyword mpInternal bluepart clip color dashed fontsize greenpart infont
32syn keyword mpInternal linecap linejoin llcorner lrcorner miterlimit mpxbreak
33syn keyword mpInternal prologues redpart setbounds tracinglostchars
34syn keyword mpInternal truecorners ulcorner urcorner withcolor
35
36" Metafont primitives not found in MetaPost
37syn keyword notDefined autorounding chardx chardy fillin granularity hppp
38syn keyword notDefined proofing smoothing tracingedges tracingpens
39syn keyword notDefined turningcheck vppp xoffset yoffset
40
41" Keywords defined by plain.mp
42if !exists("plain_mp_macros")
43  let plain_mp_macros = 1 " Set this to '0' if your source gets too colourful
44endif
45if plain_mp_macros
46  syn keyword mpMacro ahangle ahlength background bbox bboxmargin beginfig
47  syn keyword mpMacro beveled black blue buildcycle butt center cutafter
48  syn keyword mpMacro cutbefore cuttings dashpattern defaultfont defaultpen
49  syn keyword mpMacro defaultscale dotlabel dotlabels drawarrow drawdblarrow
50  syn keyword mpMacro drawoptions endfig evenly extra_beginfig extra_endfig
51  syn keyword mpMacro green label labeloffset mitered red rounded squared
52  syn keyword mpMacro thelabel white base_name base_version
53  syn keyword mpMacro upto downto exitunless relax gobble gobbled
54  syn keyword mpMacro interact loggingall tracingall tracingnone
55  syn keyword mpMacro eps epsilon infinity right left up down origin
56  syn keyword mpMacro quartercircle halfcircle fullcircle unitsquare identity
57  syn keyword mpMacro blankpicture withdots ditto EOF pensquare penrazor
58  syn keyword mpMacro penspeck whatever abs round ceiling byte dir unitvector
59  syn keyword mpMacro inverse counterclockwise tensepath mod div dotprod
60  syn keyword mpMacro takepower direction directionpoint intersectionpoint
61  syn keyword mpMacro softjoin incr decr reflectedabout rotatedaround
62  syn keyword mpMacro rotatedabout min max flex superellipse interpath
63  syn keyword mpMacro magstep currentpen currentpen_path currentpicture
64  syn keyword mpMacro fill draw filldraw drawdot unfill undraw unfilldraw
65  syn keyword mpMacro undrawdot erase cutdraw image pickup numeric_pickup
66  syn keyword mpMacro pen_lft pen_rt pen_top pen_bot savepen clearpen
67  syn keyword mpMacro clear_pen_memory lft rt top bot ulft urt llft lrt
68  syn keyword mpMacro penpos penstroke arrowhead makelabel labels penlabel
69  syn keyword mpMacro range numtok thru clearxy clearit clearpen pickup
70  syn keyword mpMacro shipit bye hide stop solve
71endif
72
73" Keywords defined by mfplain.mp
74if !exists("mfplain_mp_macros")
75  let mfplain_mp_macros = 0 " Set this to '1' to include these macro names
76endif
77if mfplain_mp_macros
78  syn keyword mpMacro beginchar blacker capsule_def change_width
79  syn keyword mpMacro define_blacker_pixels define_corrected_pixels
80  syn keyword mpMacro define_good_x_pixels define_good_y_pixels
81  syn keyword mpMacro define_horizontal_corrected_pixels
82  syn keyword mpMacro define_pixels define_whole_blacker_pixels
83  syn keyword mpMacro define_whole_vertical_blacker_pixels
84  syn keyword mpMacro define_whole_vertical_pixels endchar
85  syn keyword mpMacro extra_beginchar extra_endchar extra_setup
86  syn keyword mpMacro font_coding_scheme font_extra_space font_identifier
87  syn keyword mpMacro font_normal_shrink font_normal_space
88  syn keyword mpMacro font_normal_stretch font_quad font_size
89  syn keyword mpMacro font_slant font_x_height italcorr labelfont
90  syn keyword mpMacro makebox makegrid maketicks mode_def mode_setup
91  syn keyword mpMacro o_correction proofrule proofrulethickness rulepen smode
92
93  " plus some no-ops, also from mfplain.mp
94  syn keyword mpMacro cullit currenttransform gfcorners grayfont hround
95  syn keyword mpMacro imagerules lowres_fix nodisplays notransforms openit
96  syn keyword mpMacro proofoffset screenchars screenrule screenstrokes
97  syn keyword mpMacro showit slantfont titlefont unitpixel vround
98endif
99
100" Keywords defined by other macro packages, e.g., boxes.mp
101if !exists("other_mp_macros")
102  let other_mp_macros = 1 " Set this to '0' if your source gets too colourful
103endif
104if other_mp_macros
105  syn keyword mpMacro circmargin defaultdx defaultdy
106  syn keyword mpMacro boxit boxjoin bpath circleit drawboxed drawboxes
107  syn keyword mpMacro drawunboxed fixpos fixsize pic
108endif
109
110" Define the default highlighting
111" For version 5.7 and earlier: only when not done already
112" For version 5.8 and later: only when an item doesn't have highlighting yet
113if version >= 508 || !exists("did_mp_syntax_inits")
114  if version < 508
115    let did_mp_syntax_inits = 1
116    command -nargs=+ HiLink hi link <args>
117  else
118    command -nargs=+ HiLink hi def link <args>
119  endif
120
121  HiLink mpTeXinsert	String
122  HiLink mpTeXbegin	Statement
123  HiLink mpTeXend	Statement
124  HiLink mpInternal	mfInternal
125  HiLink mpMacro	Macro
126
127  delcommand HiLink
128endif
129
130let b:current_syntax = "mp"
131
132" vim: ts=8
133