mirror of
				https://github.com/vim/vim.git
				synced 2025-10-30 09:47:20 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			197 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			197 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| " Eiffel syntax file
 | |
| " Language:	Eiffel
 | |
| " Maintainer:	Reimer Behrends <behrends@cse.msu.edu>
 | |
| "		With much input from Jocelyn Fiat <fiat@eiffel.com>
 | |
| " See http://www.cse.msu.edu/~behrends/vim/ for the most current version.
 | |
| " 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
 | |
| 
 | |
| " Option handling
 | |
| 
 | |
| if exists("eiffel_ignore_case")
 | |
|   syn case ignore
 | |
| else
 | |
|   syn case match
 | |
|   if exists("eiffel_pedantic") || exists("eiffel_strict")
 | |
|     syn keyword eiffelError	current void result precursor none
 | |
|     syn keyword eiffelError	CURRENT VOID RESULT PRECURSOR None
 | |
|     syn keyword eiffelError	TRUE FALSE
 | |
|   endif
 | |
|   if exists("eiffel_pedantic")
 | |
|     syn keyword eiffelError	true false
 | |
|     syn match eiffelError	"\<[a-z_]\+[A-Z][a-zA_Z_]*\>"
 | |
|     syn match eiffelError	"\<[A-Z][a-z_]*[A-Z][a-zA-Z_]*\>"
 | |
|   endif
 | |
|   if exists("eiffel_lower_case_predef")
 | |
|     syn keyword eiffelPredefined current void result precursor
 | |
|   endif
 | |
| endif
 | |
| 
 | |
| if exists("eiffel_hex_constants")
 | |
|   syn match  eiffelNumber	"\d[0-9a-fA-F]*[xX]"
 | |
| endif
 | |
| 
 | |
| " Keyword definitions
 | |
| 
 | |
| syn keyword eiffelTopStruct	indexing feature creation inherit
 | |
| syn match   eiffelTopStruct	"\<class\>"
 | |
| syn match   eiffelKeyword	"\<end\>"
 | |
| syn match   eiffelTopStruct	"^end\>\(\s*--\s\+class\s\+\<[A-Z][A-Z0-9_]*\>\)\=" contains=eiffelClassName
 | |
| syn match   eiffelBrackets	"[[\]]"
 | |
| syn match eiffelBracketError	"\]"
 | |
| syn region eiffelGeneric	transparent matchgroup=eiffelBrackets start="\[" end="\]" contains=ALLBUT,eiffelBracketError,eiffelGenericDecl,eiffelStringError,eiffelStringEscape,eiffelGenericCreate,eiffelTopStruct
 | |
| if exists("eiffel_ise")
 | |
|   syn match   eiffelCreate	"\<create\>"
 | |
|   syn match   eiffelTopStruct	contained "\<create\>"
 | |
|   syn match   eiffelGenericCreate  contained "\<create\>"
 | |
|   syn match   eiffelTopStruct	"^create\>"
 | |
|   syn region  eiffelGenericDecl	transparent matchgroup=eiffelBrackets contained start="\[" end="\]" contains=ALLBUT,eiffelCreate,eiffelTopStruct,eiffelGeneric,eiffelBracketError,eiffelStringEscape,eiffelStringError,eiffelBrackets
 | |
|   syn region  eiffelClassHeader	start="^class\>" end="$" contains=ALLBUT,eiffelCreate,eiffelGenericCreate,eiffelGeneric,eiffelStringEscape,eiffelStringError,eiffelBrackets
 | |
| endif
 | |
| syn keyword eiffelDeclaration	is do once deferred unique local
 | |
| syn keyword eiffelDeclaration	Unique
 | |
| syn keyword eiffelProperty	expanded obsolete separate frozen
 | |
| syn keyword eiffelProperty	prefix infix
 | |
| syn keyword eiffelInheritClause	rename redefine undefine select export as
 | |
| syn keyword eiffelAll		all
 | |
| syn keyword eiffelKeyword	external alias
 | |
| syn keyword eiffelStatement	if else elseif inspect
 | |
| syn keyword eiffelStatement	when then
 | |
| syn match   eiffelAssertion	"\<require\(\s\+else\)\=\>"
 | |
| syn match   eiffelAssertion	"\<ensure\(\s\+then\)\=\>"
 | |
| syn keyword eiffelAssertion	check
 | |
| syn keyword eiffelDebug		debug
 | |
| syn keyword eiffelStatement	from until loop
 | |
| syn keyword eiffelAssertion	variant
 | |
| syn match   eiffelAssertion	"\<invariant\>"
 | |
| syn match   eiffelTopStruct	"^invariant\>"
 | |
| syn keyword eiffelException	rescue retry
 | |
| 
 | |
| syn keyword eiffelPredefined	Current Void Result Precursor
 | |
| 
 | |
| " Operators
 | |
| syn match   eiffelOperator	"\<and\(\s\+then\)\=\>"
 | |
| syn match   eiffelOperator	"\<or\(\s\+else\)\=\>"
 | |
| syn keyword eiffelOperator	xor implies not
 | |
| syn keyword eiffelOperator	strip old
 | |
| syn keyword eiffelOperator	Strip
 | |
| syn match   eiffelOperator	"\$"
 | |
| syn match   eiffelCreation	"!"
 | |
| syn match   eiffelExport	"[{}]"
 | |
| syn match   eiffelArray		"<<"
 | |
| syn match   eiffelArray		">>"
 | |
| syn match   eiffelConstraint	"->"
 | |
| syn match   eiffelOperator	"[@#|&][^ \e\t\b%]*"
 | |
| 
 | |
| " Special classes
 | |
| syn keyword eiffelAnchored	like
 | |
| syn keyword eiffelBitType	BIT
 | |
| 
 | |
| " Constants
 | |
| if !exists("eiffel_pedantic")
 | |
|   syn keyword eiffelBool	true false
 | |
| endif
 | |
| syn keyword eiffelBool		True False
 | |
| syn region  eiffelString	start=+"+ skip=+%"+ end=+"+ contains=eiffelStringEscape,eiffelStringError
 | |
| syn match   eiffelStringEscape	contained "%[^/]"
 | |
| syn match   eiffelStringEscape	contained "%/\d\+/"
 | |
| syn match   eiffelStringEscape	contained "^[ \t]*%"
 | |
| syn match   eiffelStringEscape	contained "%[ \t]*$"
 | |
| syn match   eiffelStringError	contained "%/[^0-9]"
 | |
| syn match   eiffelStringError	contained "%/\d\+[^0-9/]"
 | |
| syn match   eiffelBadConstant	"'\(%[^/]\|%/\d\+/\|[^'%]\)\+'"
 | |
| syn match   eiffelBadConstant	"''"
 | |
| syn match   eiffelCharacter	"'\(%[^/]\|%/\d\+/\|[^'%]\)'" contains=eiffelStringEscape
 | |
| syn match   eiffelNumber	"-\=\<\d\+\(_\d\+\)*\>"
 | |
| syn match   eiffelNumber	"\<[01]\+[bB]\>"
 | |
| syn match   eiffelNumber	"-\=\<\d\+\(_\d\+\)*\.\(\d\+\(_\d\+\)*\)\=\([eE][-+]\=\d\+\(_\d\+\)*\)\="
 | |
| syn match   eiffelNumber	"-\=\.\d\+\(_\d\+\)*\([eE][-+]\=\d\+\(_\d\+\)*\)\="
 | |
| syn match   eiffelComment	"--.*" contains=eiffelTodo
 | |
| 
 | |
| syn case match
 | |
| 
 | |
| " Case sensitive stuff
 | |
| 
 | |
| syn keyword eiffelTodo		contained TODO XXX FIXME
 | |
| syn match   eiffelClassName	"\<[A-Z][A-Z0-9_]*\>"
 | |
| 
 | |
| " Catch mismatched parentheses
 | |
| syn match eiffelParenError	")"
 | |
| syn region eiffelParen		transparent start="(" end=")" contains=ALLBUT,eiffelParenError,eiffelStringError,eiffelStringEscape
 | |
| 
 | |
| " Should suffice for even very long strings and expressions
 | |
| syn sync lines=40
 | |
| 
 | |
| " 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_eiffel_syntax_inits")
 | |
|   if version < 508
 | |
|     let did_eiffel_syntax_inits = 1
 | |
|     command -nargs=+ HiLink hi link <args>
 | |
|   else
 | |
|     command -nargs=+ HiLink hi def link <args>
 | |
|   endif
 | |
| 
 | |
|   HiLink eiffelKeyword		Statement
 | |
|   HiLink eiffelProperty		Statement
 | |
|   HiLink eiffelInheritClause	Statement
 | |
|   HiLink eiffelStatement	Statement
 | |
|   HiLink eiffelDeclaration	Statement
 | |
|   HiLink eiffelAssertion	Statement
 | |
|   HiLink eiffelDebug		Statement
 | |
|   HiLink eiffelException	Statement
 | |
|   HiLink eiffelGenericCreate	Statement
 | |
| 
 | |
| 
 | |
|   HiLink eiffelTopStruct	PreProc
 | |
| 
 | |
|   HiLink eiffelAll		Special
 | |
|   HiLink eiffelAnchored		Special
 | |
|   HiLink eiffelBitType		Special
 | |
| 
 | |
| 
 | |
|   HiLink eiffelBool		Boolean
 | |
|   HiLink eiffelString		String
 | |
|   HiLink eiffelCharacter	Character
 | |
|   HiLink eiffelClassName	Type
 | |
|   HiLink eiffelNumber		Number
 | |
| 
 | |
|   HiLink eiffelStringEscape	Special
 | |
| 
 | |
|   HiLink eiffelOperator		Special
 | |
|   HiLink eiffelArray		Special
 | |
|   HiLink eiffelExport		Special
 | |
|   HiLink eiffelCreation		Special
 | |
|   HiLink eiffelBrackets		Special
 | |
|   HiLink eiffelGeneric		Special
 | |
|   HiLink eiffelGenericDecl	Special
 | |
|   HiLink eiffelConstraint	Special
 | |
|   HiLink eiffelCreate		Special
 | |
| 
 | |
|   HiLink eiffelPredefined	Constant
 | |
| 
 | |
|   HiLink eiffelComment		Comment
 | |
| 
 | |
|   HiLink eiffelError		Error
 | |
|   HiLink eiffelBadConstant	Error
 | |
|   HiLink eiffelStringError	Error
 | |
|   HiLink eiffelParenError	Error
 | |
|   HiLink eiffelBracketError	Error
 | |
| 
 | |
|   HiLink eiffelTodo		Todo
 | |
| 
 | |
|   delcommand HiLink
 | |
| endif
 | |
| 
 | |
| let b:current_syntax = "eiffel"
 | |
| 
 | |
| " vim: ts=8
 |