mirror of
				https://github.com/vim/vim.git
				synced 2025-10-31 09:57:14 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			87 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| " Vim syntax file
 | |
| " Language:	Modula 2
 | |
| " Maintainer:	pf@artcom0.north.de (Peter Funk)
 | |
| "   based on original work of Bram Moolenaar <Bram@vim.org>
 | |
| " Last Change:	2001 May 09
 | |
| 
 | |
| " For version 5.x: Clear all syntax items
 | |
| " For version 6.x: Quit when a syntax file was already loaded
 | |
| if version < 600
 | |
|   syntax clear
 | |
| elseif exists("b:current_syntax")
 | |
|   finish
 | |
| endif
 | |
| 
 | |
| " Don't ignore case (Modula-2 is case significant). This is the default in vim
 | |
| 
 | |
| " Especially emphasize headers of procedures and modules:
 | |
| syn region modula2Header matchgroup=modula2Header start="PROCEDURE " end="(" contains=modula2Ident oneline
 | |
| syn region modula2Header matchgroup=modula2Header start="MODULE " end=";" contains=modula2Ident oneline
 | |
| syn region modula2Header matchgroup=modula2Header start="BEGIN (\*" end="\*)" contains=modula2Ident oneline
 | |
| syn region modula2Header matchgroup=modula2Header start="END " end=";" contains=modula2Ident oneline
 | |
| syn region modula2Keyword start="END" end=";" contains=ALLBUT,modula2Ident oneline
 | |
| 
 | |
| " Some very important keywords which should be emphasized more than others:
 | |
| syn keyword modula2AttKeyword CONST EXIT HALT RETURN TYPE VAR
 | |
| " All other keywords in alphabetical order:
 | |
| syn keyword modula2Keyword AND ARRAY BY CASE DEFINITION DIV DO ELSE
 | |
| syn keyword modula2Keyword ELSIF EXPORT FOR FROM IF IMPLEMENTATION IMPORT
 | |
| syn keyword modula2Keyword IN LOOP MOD NOT OF OR POINTER QUALIFIED RECORD
 | |
| syn keyword modula2Keyword SET THEN TO UNTIL WHILE WITH
 | |
| 
 | |
| syn keyword modula2Type ADDRESS BITSET BOOLEAN CARDINAL CHAR INTEGER REAL WORD
 | |
| syn keyword modula2StdFunc ABS CAP CHR DEC EXCL INC INCL ORD SIZE TSIZE VAL
 | |
| syn keyword modula2StdConst FALSE NIL TRUE
 | |
| " The following may be discussed, since NEW and DISPOSE are some kind of
 | |
| " special builtin macro functions:
 | |
| syn keyword modula2StdFunc NEW DISPOSE
 | |
| " The following types are added later on and may be missing from older
 | |
| " Modula-2 Compilers (they are at least missing from the original report
 | |
| " by N.Wirth from March 1980 ;-)  Highlighting should apply nevertheless:
 | |
| syn keyword modula2Type BYTE LONGCARD LONGINT LONGREAL PROC SHORTCARD SHORTINT
 | |
| " same note applies to min and max, which were also added later to m2:
 | |
| syn keyword modula2StdFunc MAX MIN
 | |
| " The underscore was originally disallowed in m2 ids, it was also added later:
 | |
| syn match   modula2Ident " [A-Z,a-z][A-Z,a-z,0-9,_]*" contained
 | |
| 
 | |
| " Comments may be nested in Modula-2:
 | |
| syn region modula2Comment start="(\*" end="\*)" contains=modula2Comment,modula2Todo
 | |
| syn keyword modula2Todo	contained TODO FIXME XXX
 | |
| 
 | |
| " Strings
 | |
| syn region modula2String start=+"+ end=+"+
 | |
| syn region modula2String start="'" end="'"
 | |
| syn region modula2Set start="{" end="}"
 | |
| 
 | |
| " 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_modula2_syntax_inits")
 | |
|   if version < 508
 | |
|     let did_modula2_syntax_inits = 1
 | |
|     command -nargs=+ HiLink hi link <args>
 | |
|   else
 | |
|     command -nargs=+ HiLink hi def link <args>
 | |
|   endif
 | |
| 
 | |
|   HiLink modula2Ident		Identifier
 | |
|   HiLink modula2StdConst	Boolean
 | |
|   HiLink modula2Type		Identifier
 | |
|   HiLink modula2StdFunc		Identifier
 | |
|   HiLink modula2Header		Type
 | |
|   HiLink modula2Keyword		Statement
 | |
|   HiLink modula2AttKeyword	PreProc
 | |
|   HiLink modula2Comment		Comment
 | |
|   " The following is just a matter of taste (you want to try this instead):
 | |
|   " hi modula2Comment term=bold ctermfg=DarkBlue guifg=Blue gui=bold
 | |
|   HiLink modula2Todo		Todo
 | |
|   HiLink modula2String		String
 | |
|   HiLink modula2Set		String
 | |
| 
 | |
|   delcommand HiLink
 | |
| endif
 | |
| 
 | |
| let b:current_syntax = "modula2"
 | |
| 
 | |
| " vim: ts=8
 |