forked from aniani/vim
		
	
		
			
	
	
		
			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 |