mirror of
				https://github.com/vim/vim.git
				synced 2025-10-29 09:37:35 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			274 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			274 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| vim9script
 | |
| 
 | |
| # Vim syntax file
 | |
| # Language:           MetaPost
 | |
| # Maintainer:         Nicola Vitacolonna <nvitacolonna@gmail.com>
 | |
| # Former Maintainers: Andreas Scherer <andreas.scherer@pobox.com>
 | |
| # Latest Revision:    2022 Aug 12
 | |
| 
 | |
| if exists("b:current_syntax")
 | |
|   finish
 | |
| endif
 | |
| 
 | |
| # Deprecation warnings: to be removed eventually
 | |
| if exists("g:plain_mp_macros")
 | |
|   echomsg "[mp] g:plain_mp_macros is deprecated: use g:mp_plain_macros instead."
 | |
| endif
 | |
| if exists("mfplain_mp_macros")
 | |
|   echomsg "[mp] g:mfplain_mp_macros is deprecated: use g:mp_mfplain_macros instead."
 | |
| endif
 | |
| if exists("other_mp_macros")
 | |
|   echomsg "[mp] g:other_mp_macros is deprecated: use g:mp_other_macros instead."
 | |
| endif
 | |
| 
 | |
| # Store the current values of METAFONT global options
 | |
| const mf_plain_macros = get(g:, "mf_plain_macros", get(g:, "plain_mf_macros", -1))
 | |
| const mf_plain_modes  = get(g:, "mf_plain_modes",  get(g:, "plain_mf_modes",  -1))
 | |
| const mf_other_macros = get(g:, "mf_other_macros", get(g:, "other_mf_macros", -1))
 | |
| 
 | |
| g:mf_plain_macros = 0 # plain.mf has no special meaning for MetaPost
 | |
| g:mf_plain_modes  = 0 # No METAFONT modes
 | |
| g:mf_other_macros = 0 # cmbase.mf, logo.mf, ... neither
 | |
| 
 | |
| # Read the METAFONT syntax to start with
 | |
| runtime! syntax/mf.vim
 | |
| unlet b:current_syntax # Necessary for syn include below
 | |
| 
 | |
| # Restore the value of existing global variables
 | |
| if mf_plain_macros == -1
 | |
|   unlet g:mf_plain_macros
 | |
| else
 | |
|   g:plain_mf_macros = mf_plain_macros
 | |
| endif
 | |
| if mf_plain_modes == -1
 | |
|   unlet g:mf_plain_modes
 | |
| else
 | |
|   g:mf_plain_modes = mf_plain_modes
 | |
| endif
 | |
| if mf_other_macros == -1
 | |
|   unlet g:mf_other_macros
 | |
| else
 | |
|   g:mf_other_macros = mf_other_macros
 | |
| endif
 | |
| 
 | |
| # Use TeX highlighting inside verbatimtex/btex... etex
 | |
| syn include @MPTeX syntax/tex.vim
 | |
| unlet b:current_syntax
 | |
| # These are defined as keywords rather than using matchgroup
 | |
| # in order to make them available to syntaxcomplete.
 | |
| syn keyword mpTeXdelim       btex etex verbatimtex contained
 | |
| syn region mpTeXinsert matchgroup=mpTeXdelim start=/\<verbatimtex\>\|\<btex\>/ end=/\<etex\>/ keepend contains=@MPTeX,mpTeXdelim
 | |
| 
 | |
| # iskeyword must be set after the syn include above, because tex.vim sets `syn
 | |
| # iskeyword`. Note that keywords do not contain numbers (numbers are
 | |
| # subscripts)
 | |
| syntax iskeyword @,_
 | |
| 
 | |
| # MetaPost primitives not found in METAFONT
 | |
| syn keyword mpBoolExp        bounded clipped filled stroked textual arclength
 | |
| syn keyword mpNumExp         arctime blackpart bluepart colormodel cyanpart
 | |
| syn keyword mpNumExp         fontsize greenpart greypart magentapart redpart
 | |
| syn keyword mpPairExp        yellowpart llcorner lrcorner ulcorner urcorner
 | |
| syn keyword mpPathExp        envelope pathpart
 | |
| syn keyword mpPenExp         penpart
 | |
| syn keyword mpPicExp         dashpart glyph infont
 | |
| syn keyword mpStringExp      fontpart readfrom textpart
 | |
| syn keyword mpType           cmykcolor color rgbcolor
 | |
| # Other MetaPost primitives listed in the manual
 | |
| syn keyword mpPrimitive      mpxbreak within
 | |
| # Internal quantities not found in METAFONT
 | |
| # (Table 6 in MetaPost: A User's Manual)
 | |
| syn keyword mpInternal       defaultcolormodel hour minute linecap linejoin
 | |
| syn keyword mpInternal       miterlimit mpprocset mpversion numberprecision
 | |
| syn keyword mpInternal       numbersystem outputfilename outputformat
 | |
| syn keyword mpInternal       outputformatoptions outputtemplate prologues
 | |
| syn keyword mpInternal       restoreclipcolor tracinglostchars troffmode
 | |
| syn keyword mpInternal       truecorners
 | |
| # List of commands not found in METAFONT (from MetaPost: A User's Manual)
 | |
| syn keyword mpCommand        clip closefrom dashed filenametemplate fontmapfile
 | |
| syn keyword mpCommand        fontmapline setbounds withcmykcolor withcolor
 | |
| syn keyword mpCommand        withgreyscale withoutcolor withpostscript
 | |
| syn keyword mpCommand        withprescript withrgbcolor write
 | |
| # METAFONT internal variables not found in MetaPost
 | |
| syn keyword notDefined       autorounding chardx chardy fillin granularity
 | |
| syn keyword notDefined       proofing smoothing tracingedges tracingpens
 | |
| syn keyword notDefined       turningcheck xoffset yoffset
 | |
| # Suffix defined only in METAFONT:
 | |
| syn keyword notDefined       nodot
 | |
| # Other not implemented primitives (see MetaPost: A User's Manual, §C.1)
 | |
| syn keyword notDefined       cull display openwindow numspecial totalweight
 | |
| syn keyword notDefined       withweight
 | |
| 
 | |
| # Keywords defined by plain.mp
 | |
| if get(g:, "mp_plain_macros", get(g:, "plain_mp_macros", 1)) || get(b:, "mp_metafun", get(g:, "mp_metafun", 0))
 | |
|   syn keyword mpDef          beginfig clear_pen_memory clearit clearpen clearpen
 | |
|   syn keyword mpDef          clearxy colorpart cutdraw downto draw drawarrow
 | |
|   syn keyword mpDef          drawdblarrow drawdot drawoptions endfig erase
 | |
|   syn keyword mpDef          exitunless fill filldraw flex gobble hide interact
 | |
|   syn keyword mpDef          label loggingall makelabel numtok penstroke pickup
 | |
|   syn keyword mpDef          range reflectedabout rotatedaround shipit
 | |
|   syn keyword mpDef          stop superellipse takepower tracingall tracingnone
 | |
|   syn keyword mpDef          undraw undrawdot unfill unfilldraw upto
 | |
|   syn match   mpDef          "???"
 | |
|   syn keyword mpVardef       arrowhead bbox bot buildcycle byte ceiling center
 | |
|   syn keyword mpVardef       counterclockwise decr dir direction directionpoint
 | |
|   syn keyword mpVardef       dotlabel dotlabels image incr interpath inverse
 | |
|   syn keyword mpVardef       labels lft magstep max min penlabels penpos round
 | |
|   syn keyword mpVardef       rt savepen solve tensepath thelabel top unitvector
 | |
|   syn keyword mpVardef       whatever z
 | |
|   syn keyword mpPrimaryDef   div dotprod gobbled mod
 | |
|   syn keyword mpSecondaryDef intersectionpoint
 | |
|   syn keyword mpTertiaryDef  cutafter cutbefore softjoin thru
 | |
|   syn keyword mpNewInternal  ahangle ahlength bboxmargin beveled butt defaultpen
 | |
|   syn keyword mpNewInternal  defaultscale dotlabeldiam eps epsilon infinity
 | |
|   syn keyword mpNewInternal  join_radius labeloffset mitered pen_bot pen_lft
 | |
|   syn keyword mpNewInternal  pen_rt pen_top rounded squared tolerance
 | |
|   # Predefined constants
 | |
|   syn keyword mpConstant     EOF background base_name base_version black
 | |
|   syn keyword mpConstant     blankpicture blue ditto down evenly fullcircle
 | |
|   syn keyword mpConstant     green halfcircle identity left origin penrazor
 | |
|   syn keyword mpConstant     penspeck pensquare quartercircle red right
 | |
|   syn keyword mpConstant     unitsquare up white withdots
 | |
|   # Other predefined variables
 | |
|   syn keyword mpVariable     currentpen currentpen_path currentpicture cuttings
 | |
|   syn keyword mpVariable     defaultfont extra_beginfig extra_endfig
 | |
|   syn keyword mpVariable     laboff labxf labyf laboff labxf labyf
 | |
|   syn match   mpVariable     /\.\%(lft\|rt\|bot\|top\|ulft\|urt\|llft\|lrt\)\>/
 | |
|   # let statements:
 | |
|   syn keyword mpnumExp       abs
 | |
|   syn keyword mpDef          rotatedabout
 | |
|   syn keyword mpCommand      bye relax
 | |
|   # on and off are not technically keywords, but it is nice to highlight them
 | |
|   # inside dashpattern().
 | |
|   syn keyword mpOnOff        off on contained
 | |
|   syn keyword mpDash         dashpattern contained
 | |
|   syn region  mpDashPattern start="dashpattern\s*" end=")"he=e-1 contains=mfNumeric,mfLength,mpOnOff,mpDash
 | |
| endif
 | |
| 
 | |
| # Keywords defined by mfplain.mp
 | |
| if get(g:, "mp_mfplain_macros", get(g:, "mfplain_mp_macros", 0))
 | |
|   syn keyword mpDef          beginchar capsule_def change_width
 | |
|   syn keyword mpDef          define_blacker_pixels define_corrected_pixels
 | |
|   syn keyword mpDef          define_good_x_pixels define_good_y_pixels
 | |
|   syn keyword mpDef          define_horizontal_corrected_pixels define_pixels
 | |
|   syn keyword mpDef          define_whole_blacker_pixels define_whole_pixels
 | |
|   syn keyword mpDef          define_whole_vertical_blacker_pixels
 | |
|   syn keyword mpDef          define_whole_vertical_pixels endchar
 | |
|   syn keyword mpDef          font_coding_scheme font_extra_space font_identifier
 | |
|   syn keyword mpDef          font_normal_shrink font_normal_space
 | |
|   syn keyword mpDef          font_normal_stretch font_quad font_size font_slant
 | |
|   syn keyword mpDef          font_x_height italcorr labelfont lowres_fix makebox
 | |
|   syn keyword mpDef          makegrid maketicks mode_def mode_setup proofrule
 | |
|   syn keyword mpDef          smode
 | |
|   syn keyword mpVardef       hround proofrulethickness vround
 | |
|   syn keyword mpNewInternal  blacker o_correction
 | |
|   syn keyword mpVariable     extra_beginchar extra_endchar extra_setup rulepen
 | |
|   # plus some no-ops, also from mfplain.mp
 | |
|   syn keyword mpDef          cull cullit gfcorners imagerules nodisplays
 | |
|   syn keyword mpDef          notransforms openit proofoffset screenchars
 | |
|   syn keyword mpDef          screenrule screenstrokes showit
 | |
|   syn keyword mpVardef       grayfont slantfont titlefont
 | |
|   syn keyword mpVariable     currenttransform
 | |
|   syn keyword mpConstant     unitpixel
 | |
|   # These are not listed in the MetaPost manual, and some are ignored by
 | |
|   # MetaPost, but are nonetheless defined in mfplain.mp
 | |
|   syn keyword mpDef          killtext
 | |
|   syn match   mpVardef       "\<good\.\%(x\|y\|lft\|rt\|top\|bot\)\>"
 | |
|   syn keyword mpVariable     aspect_ratio localfont mag mode mode_name
 | |
|   syn keyword mpVariable     proofcolor
 | |
|   syn keyword mpConstant     lowres proof smoke
 | |
|   syn keyword mpNewInternal  autorounding bp_per_pixel granularity
 | |
|   syn keyword mpNewInternal  number_of_modes proofing smoothing turningcheck
 | |
| endif
 | |
| 
 | |
| # Keywords defined by all base macro packages:
 | |
| # - (r)boxes.mp
 | |
| # - format.mp
 | |
| # - graph.mp
 | |
| # - marith.mp
 | |
| # - sarith.mp
 | |
| # - string.mp
 | |
| # - TEX.mp
 | |
| if get(g:, "mp_other_macros", get(g:, "other_mp_macros", 1))
 | |
|   # boxes and rboxes
 | |
|   syn keyword mpDef          boxjoin drawboxed drawboxes drawunboxed
 | |
|   syn keyword mpNewInternal  circmargin defaultdx defaultdy rbox_radius
 | |
|   syn keyword mpVardef       boxit bpath circleit fixpos fixsize generic_declare
 | |
|   syn keyword mpVardef       generic_redeclare generisize pic rboxit str_prefix
 | |
|   # format
 | |
|   syn keyword mpVardef       Mformat format init_numbers roundd
 | |
|   syn keyword mpVariable     Fe_base Fe_plus
 | |
|   syn keyword mpConstant     Ten_to
 | |
|   # graph
 | |
|   syn keyword mpDef          Gfor Gxyscale OUT auto begingraph endgraph gdata
 | |
|   syn keyword mpDef          gdraw gdrawarrow gdrawdblarrow gfill plot
 | |
|   syn keyword mpVardef       augment autogrid frame gdotlabel glabel grid itick
 | |
|   syn keyword mpVardef       otick
 | |
|   syn keyword mpVardef       Mreadpath setcoords setrange
 | |
|   syn keyword mpNewInternal  Gmarks Gminlog Gpaths linear log
 | |
|   syn keyword mpVariable     Autoform Gemarks Glmarks Gumarks
 | |
|   syn keyword mpConstant     Gtemplate
 | |
|   syn match   mpVariable     /Gmargin\.\%(low\|high\)/
 | |
|   # marith
 | |
|   syn keyword mpVardef       Mabs Meform Mexp Mexp_str Mlog Mlog_Str Mlog_str
 | |
|   syn keyword mpPrimaryDef   Mdiv Mmul
 | |
|   syn keyword mpSecondaryDef Madd Msub
 | |
|   syn keyword mpTertiaryDef  Mleq
 | |
|   syn keyword mpNewInternal  Mten Mzero
 | |
|   # sarith
 | |
|   syn keyword mpVardef       Sabs Scvnum
 | |
|   syn keyword mpPrimaryDef   Sdiv Smul
 | |
|   syn keyword mpSecondaryDef Sadd Ssub
 | |
|   syn keyword mpTertiaryDef  Sleq Sneq
 | |
|   # string
 | |
|   syn keyword mpVardef       cspan isdigit loptok
 | |
|   # TEX
 | |
|   syn keyword mpVardef       TEX TEXPOST TEXPRE
 | |
| endif
 | |
| 
 | |
| if get(b:, "mp_metafun", get(g:, "mp_metafun", 0))
 | |
|   # MetaFun additions to MetaPost base file
 | |
|   syn keyword mpConstant cyan magenta yellow
 | |
|   syn keyword mpConstant penspec
 | |
|   syn keyword mpNumExp   graypart greycolor graycolor
 | |
| 
 | |
|   # Highlight TeX keywords (for MetaPost embedded in ConTeXt documents)
 | |
|   syn match   mpTeXKeyword  '\\[a-zA-Z@]\+'
 | |
| 
 | |
|   syn keyword mpPrimitive runscript
 | |
| 
 | |
|   runtime! syntax/shared/context-data-metafun.vim
 | |
| 
 | |
|   hi def link metafunCommands   Statement
 | |
|   hi def link metafunInternals  Identifier
 | |
| endif
 | |
| 
 | |
| # Define the default highlighting
 | |
| hi def link mpTeXdelim     mpPrimitive
 | |
| hi def link mpBoolExp      mfBoolExp
 | |
| hi def link mpNumExp       mfNumExp
 | |
| hi def link mpPairExp      mfPairExp
 | |
| hi def link mpPathExp      mfPathExp
 | |
| hi def link mpPenExp       mfPenExp
 | |
| hi def link mpPicExp       mfPicExp
 | |
| hi def link mpStringExp    mfStringExp
 | |
| hi def link mpInternal     mfInternal
 | |
| hi def link mpCommand      mfCommand
 | |
| hi def link mpType         mfType
 | |
| hi def link mpPrimitive    mfPrimitive
 | |
| hi def link mpDef          mfDef
 | |
| hi def link mpVardef       mpDef
 | |
| hi def link mpPrimaryDef   mpDef
 | |
| hi def link mpSecondaryDef mpDef
 | |
| hi def link mpTertiaryDef  mpDef
 | |
| hi def link mpNewInternal  mpInternal
 | |
| hi def link mpVariable     mfVariable
 | |
| hi def link mpConstant     mfConstant
 | |
| hi def link mpOnOff        mpPrimitive
 | |
| hi def link mpDash         mpPrimitive
 | |
| hi def link mpTeXKeyword   Identifier
 | |
| 
 | |
| b:current_syntax = "mp"
 | |
| 
 | |
| # vim: sw=2 fdm=marker
 |