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