mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			97 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| " Vim syntax file
 | |
| " Language:		Modula-3
 | |
| " Maintainer:		Doug Kearns <dougkearns@gmail.com>
 | |
| " Previous Maintainer:	Timo Pedersen <dat97tpe@ludat.lth.se>
 | |
| " Last Change:		2021 Apr 08
 | |
| 
 | |
| if exists("b:current_syntax")
 | |
|   finish
 | |
| endif
 | |
| 
 | |
| " Modula-3 keywords
 | |
| syn keyword modula3Keyword ANY ARRAY AS BITS BRANDED BY CASE CONST DEFINITION
 | |
| syn keyword modula3Keyword EVAL EXIT EXCEPT EXCEPTION EXIT EXPORTS FINALLY
 | |
| syn keyword modula3Keyword FROM GENERIC IMPORT LOCK METHOD OF RAISE RAISES
 | |
| syn keyword modula3Keyword READONLY RECORD REF RETURN SET TRY TYPE TYPECASE
 | |
| syn keyword modula3Keyword UNSAFE VALUE VAR WITH
 | |
| 
 | |
| syn match modula3keyword "\<UNTRACED\>"
 | |
| 
 | |
| " Special keywords, block delimiters etc
 | |
| syn keyword modula3Block PROCEDURE FUNCTION MODULE INTERFACE REPEAT THEN
 | |
| syn keyword modula3Block BEGIN END OBJECT METHODS OVERRIDES RECORD REVEAL
 | |
| syn keyword modula3Block WHILE UNTIL DO TO IF FOR ELSIF ELSE LOOP
 | |
| 
 | |
| " Reserved identifiers
 | |
| syn keyword modula3Identifier ABS ADR ADRSIZE BITSIZE BYTESIZE CEILING DEC
 | |
| syn keyword modula3Identifier DISPOSE FIRST FLOAT FLOOR INC ISTYPE LAST
 | |
| syn keyword modula3Identifier LOOPHOLE MAX MIN NARROW NEW NUMBER ORD ROUND
 | |
| syn keyword modula3Identifier SUBARRAY TRUNC TYPECODE VAL
 | |
| 
 | |
| " Predefined types
 | |
| syn keyword modula3Type ADDRESS BOOLEAN CARDINAL CHAR EXTENDED INTEGER
 | |
| syn keyword modula3Type LONGCARD LONGINT LONGREAL MUTEX NULL REAL REFANY TEXT
 | |
| syn keyword modula3Type WIDECHAR
 | |
| 
 | |
| syn match modula3Type "\<\%(UNTRACED\s\+\)\=ROOT\>"
 | |
| 
 | |
| " Operators
 | |
| syn keyword modulaOperator DIV MOD IN AND OR NOT
 | |
| 
 | |
| if exists("modula3_operators")
 | |
|   syn match modula3Operator "\^"
 | |
|   syn match modula3Operator "+\|-\|\*\|/\|&"
 | |
|   " TODO: need to exclude = in procedure definitions
 | |
|   syn match modula3Operator "<=\|<\|>=\|>\|:\@<!=\|#"
 | |
| endif
 | |
| 
 | |
| " Booleans
 | |
| syn keyword modula3Boolean TRUE FALSE
 | |
| 
 | |
| " Nil
 | |
| syn keyword modula3Nil NIL
 | |
| 
 | |
| " Integers
 | |
| syn match modula3Integer "\<\d\+L\=\>"
 | |
| syn match modula3Integer "\<\d\d\=_\x\+L\=\>"
 | |
| 
 | |
| " Reals
 | |
| syn match modula3Real	 "\c\<\d\+\.\d\+\%([EDX][+-]\=\d\+\)\=\>"
 | |
| 
 | |
| " String escape sequences
 | |
| syn match modula3Escape "\\['"ntrf]" contained display
 | |
| syn match modula3Escape "\\\o\{3}"   contained display
 | |
| syn match modula3Escape "\\\\"	     contained display
 | |
| 
 | |
| " Characters
 | |
| syn match modula3Character "'\%([^']\|\\.\|\\\o\{3}\)'" contains=modula3Escape
 | |
| 
 | |
| " Strings
 | |
| syn region modula3String start=+"+ end=+"+ contains=modula3Escape
 | |
| 
 | |
| " Pragmas
 | |
| syn region modula3Pragma start="<\*" end="\*>"
 | |
| 
 | |
| " Comments
 | |
| syn region modula3Comment start="(\*" end="\*)" contains=modula3Comment,@Spell
 | |
| 
 | |
| " Default highlighting
 | |
| hi def link modula3Block	Statement
 | |
| hi def link modula3Boolean	Boolean
 | |
| hi def link modula3Character	Character
 | |
| hi def link modula3Comment	Comment
 | |
| hi def link modula3Escape	Special
 | |
| hi def link modula3Identifier	Keyword
 | |
| hi def link modula3Integer	Number
 | |
| hi def link modula3Keyword	Statement
 | |
| hi def link modula3Nil		Constant
 | |
| hi def link modula3Operator	Operator
 | |
| hi def link modula3Pragma	PreProc
 | |
| hi def link modula3Real		Float
 | |
| hi def link modula3String	String
 | |
| hi def link modula3Type		Type
 | |
| 
 | |
| let b:current_syntax = "modula3"
 | |
| 
 | |
| " vim: nowrap sw=2 sts=2 ts=8 noet:
 | 
