blob: 5f600e2ebe923d407f44d2882352520877716514 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: Metafont
3" Maintainer: Andreas Scherer <andreas.scherer@pobox.com>
4" Last Change: April 25, 2001
5
Bram Moolenaar89bcfda2016-08-30 23:26:57 +02006" quit when a syntax file was already loaded
7if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +00008 finish
9endif
10
11" Metafont 'primitives' as defined in chapter 25 of 'The METAFONTbook'
12" Page 210: 'boolean expressions'
13syn keyword mfBoolExp true false known unknown odd charexists not and or
14
15" Page 210: 'numeric expression'
16syn keyword mfNumExp normaldeviate length ASCII oct hex angle turningnumber
17syn keyword mfNumExp totalweight directiontime xpart ypart xxpart xypart
18syn keyword mfNumExp yxpart yypart sqrt sind cosd mlog mexp floor
19syn keyword mfNumExp uniformdeviate
20
21" Page 211: 'internal quantities'
22syn keyword mfInternal tracingtitles tracingequations tracingcapsules
23syn keyword mfInternal tracingchoices tracingspecs tracingpens
24syn keyword mfInternal tracingcommands tracingrestores tracingmacros
25syn keyword mfInternal tracingedges tracingoutput tracingonline tracingstats
26syn keyword mfInternal pausing showstopping fontmaking proofing
27syn keyword mfInternal turningcheck warningcheck smoothing autorounding
28syn keyword mfInternal granularity fillin year month day time
29syn keyword mfInternal charcode charext charwd charht chardp charic
30syn keyword mfInternal chardx chardy designsize hppp vppp xoffset yoffset
31syn keyword mfInternal boundarychar
32
33" Page 212: 'pair expressions'
34syn keyword mfPairExp point of precontrol postcontrol penoffset rotated
35syn keyword mfPairExp scaled shifted slanted transformed xscaled yscaled
36syn keyword mfPairExp zscaled
37
38" Page 213: 'path expressions'
39syn keyword mfPathExp makepath reverse subpath curl tension atleast
40syn keyword mfPathExp controls cycle
41
42" Page 214: 'pen expressions'
43syn keyword mfPenExp nullpen pencircle makepen
44
45" Page 214: 'picutre expressions'
46syn keyword mfPicExp nullpicture
47
48" Page 214: 'string expressions'
49syn keyword mfStringExp jobname readstring str char decimal substring
50
51" Page 217: 'commands and statements'
52syn keyword mfCommand end dump save interim newinternal randomseed let
53syn keyword mfCommand delimiters outer everyjob show showvariable showtoken
54syn keyword mfCommand showdependencies showstats message errmessage errhelp
55syn keyword mfCommand batchmode nonstopmode scrollmode errorstopmode
56syn keyword mfCommand addto also contour doublepath withpen withweight cull
57syn keyword mfCommand keeping dropping display inwindow openwindow at from to
58syn keyword mfCommand shipout special numspecial
59
60" Page 56: 'types'
61syn keyword mfType boolean numeric pair path pen picture string transform
62
63" Page 155: 'grouping'
64syn keyword mfStatement begingroup endgroup
65
66" Page 165: 'definitions'
67syn keyword mfDefinition enddef def expr suffix text primary secondary
68syn keyword mfDefinition tertiary vardef primarydef secondarydef tertiarydef
69
70" Page 169: 'conditions and loops'
71syn keyword mfCondition if fi else elseif endfor for forsuffixes forever
72syn keyword mfCondition step until exitif
73
74" Other primitives listed in the index
75syn keyword mfPrimitive charlist endinput expandafter extensible
76syn keyword mfPrimitive fontdimen headerbyte inner input intersectiontimes
77syn keyword mfPrimitive kern ligtable quote scantokens skipto
78
79" Keywords defined by plain.mf (defined on pp.262-278)
80if !exists("plain_mf_macros")
81 let plain_mf_macros = 1 " Set this to '0' if your source gets too colourful
82 " metapost.vim does so to turn off Metafont macros
83endif
84if plain_mf_macros
85 syn keyword mfMacro abs addto_currentpicture aspect_ratio base_name
86 syn keyword mfMacro base_version beginchar blacker blankpicture bot bye byte
87 syn keyword mfMacro capsule_def ceiling change_width clear_pen_memory clearit
88 syn keyword mfMacro clearpen clearxy counterclockwise culldraw cullit
89 syn keyword mfMacro currentpen currentpen_path currentpicture
90 syn keyword mfMacro currenttransform currentwindow cutdraw cutoff d decr
91 syn keyword mfMacro define_blacker_pixels define_corrected_pixels
92 syn keyword mfMacro define_good_x_pixels define_good_y_pixels
93 syn keyword mfMacro define_horizontal_corrected_pixels define_pixels
94 syn keyword mfMacro define_whole_blacker_pixels define_whole_pixels
95 syn keyword mfMacro define_whole_vertical_blacker_pixels
96 syn keyword mfMacro define_whole_vertical_pixels dir direction directionpoint
97 syn keyword mfMacro displaying ditto div dotprod down downto draw drawdot
98 syn keyword mfMacro endchar eps epsilon extra_beginchar extra_endchar
99 syn keyword mfMacro extra_setup erase exitunless fill filldraw fix_units flex
100 syn keyword mfMacro font_coding_scheme font_extra_space font_identifier
101 syn keyword mfMacro font_normal_shrink font_normal_space font_normal_stretch
102 syn keyword mfMacro font_quad font_setup font_size font_slant font_x_height
103 syn keyword mfMacro fullcircle generate gfcorners gobble gobbled grayfont h
104 syn keyword mfMacro halfcircle hide hround identity image_rules incr infinity
105 syn keyword mfMacro interact interpath intersectionpoint inverse italcorr
106 syn keyword mfMacro join_radius killtext labelfont labels left lft localfont
107 syn keyword mfMacro loggingall lowres lowres_fix mag magstep makebox makegrid
108 syn keyword mfMacro makelabel maketicks max min mod mode mode_def mode_name
109 syn keyword mfMacro mode_setup nodisplays notransforms number_of_modes numtok
110 syn keyword mfMacro o_correction openit origin pen_bot pen_lft pen_rt pen_top
111 syn keyword mfMacro penlabels penpos penrazor penspeck pensquare penstroke
112 syn keyword mfMacro pickup pixels_per_inch proof proofoffset proofrule
113 syn keyword mfMacro proofrulethickness quartercircle range reflectedabout
114 syn keyword mfMacro relax right rotatedabout rotatedaround round rt rulepen
115 syn keyword mfMacro savepen screenchars screen_rows screen_cols screenrule
116 syn keyword mfMacro screenstrokes shipit showit slantfont smode smoke softjoin
117 syn keyword mfMacro solve stop superellipse takepower tensepath titlefont
118 syn keyword mfMacro tolerance top tracingall tracingnone undraw undrawdot
119 syn keyword mfMacro unfill unfilldraw unitpixel unitsquare unitvector up upto
120 syn keyword mfMacro vround w whatever
121endif
122
123" Some other basic macro names, e.g., from cmbase, logo, etc.
124if !exists("other_mf_macros")
125 let other_mf_macros = 1 " Set this to '0' if your code gets too colourful
126 " metapost.vim does so to turn off Metafont macros
127endif
128if other_mf_macros
129 syn keyword mfMacro beginlogochar
130endif
131
132" Numeric tokens
133syn match mfNumeric "[-]\=\d\+"
134syn match mfNumeric "[-]\=\.\d\+"
135syn match mfNumeric "[-]\=\d\+\.\d\+"
136
137" Metafont lengths
138syn match mfLength "\<\(bp\|cc\|cm\|dd\|in\|mm\|pc\|pt\)\>"
139syn match mfLength "\<[-]\=\d\+\(bp\|cc\|cm\|dd\|in\|mm\|pc\|pt\)\#\=\>"
140syn match mfLength "\<[-]\=\.\d\+\(bp\|cc\|cm\|dd\|in\|mm\|pc\|pt\)\#\=\>"
141syn match mfLength "\<[-]\=\d\+\.\d\+\(bp\|cc\|cm\|dd\|in\|mm\|pc\|pt\)\#\=\>"
142
143" Metafont coordinates and points
144syn match mfCoord "\<[xy]\d\+\>"
145syn match mfPoint "\<z\d\+\>"
146
147" String constants
148syn region mfString start=+"+ end=+"+
149
150" Comments:
151syn match mfComment "%.*$"
152
153" synchronizing
154syn sync maxlines=50
155
156" Define the default highlighting
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200157" Only when an item doesn't have highlighting yet
Bram Moolenaar071d4272004-06-13 20:20:40 +0000158
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200159hi def link mfBoolExp Statement
160hi def link mfNumExp Statement
161hi def link mfInternal Identifier
162hi def link mfPairExp Statement
163hi def link mfPathExp Statement
164hi def link mfPenExp Statement
165hi def link mfPicExp Statement
166hi def link mfStringExp Statement
167hi def link mfCommand Statement
168hi def link mfType Type
169hi def link mfStatement Statement
170hi def link mfDefinition Statement
171hi def link mfCondition Conditional
172hi def link mfPrimitive Statement
173hi def link mfMacro Macro
174hi def link mfCoord Identifier
175hi def link mfPoint Identifier
176hi def link mfNumeric Number
177hi def link mfLength Number
178hi def link mfComment Comment
179hi def link mfString String
Bram Moolenaar071d4272004-06-13 20:20:40 +0000180
Bram Moolenaar071d4272004-06-13 20:20:40 +0000181
182let b:current_syntax = "mf"
183
184" vim: ts=8