forked from aniani/vim
		
	
		
			
	
	
		
			121 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
		
		
			
		
	
	
			121 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
|   | " Vim syntax file | ||
|  | " Language:	Renderman shader language | ||
|  | " Maintainer:	Dan Piponi <dan@tanelorn.demon.co.uk> | ||
|  | " 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 | ||
|  | 
 | ||
|  | " A bunch of useful Renderman keywords including special | ||
|  | " RenderMan control structures | ||
|  | syn keyword slStatement	break return continue | ||
|  | syn keyword slConditional	if else | ||
|  | syn keyword slRepeat		while for | ||
|  | syn keyword slRepeat		illuminance illuminate solar | ||
|  | 
 | ||
|  | syn keyword slTodo contained	TODO FIXME XXX | ||
|  | 
 | ||
|  | " String and Character constants | ||
|  | " Highlight special characters (those which have a backslash) differently | ||
|  | syn match slSpecial contained	"\\[0-9][0-9][0-9]\|\\." | ||
|  | syn region slString		start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=slSpecial | ||
|  | syn match slCharacter		"'[^\\]'" | ||
|  | syn match slSpecialCharacter	"'\\.'" | ||
|  | syn match slSpecialCharacter	"'\\[0-9][0-9]'" | ||
|  | syn match slSpecialCharacter	"'\\[0-9][0-9][0-9]'" | ||
|  | 
 | ||
|  | "catch errors caused by wrong parenthesis | ||
|  | syn region slParen		transparent start='(' end=')' contains=ALLBUT,slParenError,slIncluded,slSpecial,slTodo,slUserLabel | ||
|  | syn match slParenError		")" | ||
|  | syn match slInParen contained	"[{}]" | ||
|  | 
 | ||
|  | "integer number, or floating point number without a dot and with "f". | ||
|  | syn case ignore | ||
|  | syn match slNumber		"\<[0-9]\+\(u\=l\=\|lu\|f\)\>" | ||
|  | "floating point number, with dot, optional exponent | ||
|  | syn match slFloat		"\<[0-9]\+\.[0-9]*\(e[-+]\=[0-9]\+\)\=[fl]\=\>" | ||
|  | "floating point number, starting with a dot, optional exponent | ||
|  | syn match slFloat		"\.[0-9]\+\(e[-+]\=[0-9]\+\)\=[fl]\=\>" | ||
|  | "floating point number, without dot, with exponent | ||
|  | syn match slFloat		"\<[0-9]\+e[-+]\=[0-9]\+[fl]\=\>" | ||
|  | "hex number | ||
|  | syn match slNumber		"\<0x[0-9a-f]\+\(u\=l\=\|lu\)\>" | ||
|  | "syn match slIdentifier	"\<[a-z_][a-z0-9_]*\>" | ||
|  | syn case match | ||
|  | 
 | ||
|  | if exists("sl_comment_strings") | ||
|  |   " A comment can contain slString, slCharacter and slNumber. | ||
|  |   " But a "*/" inside a slString in a slComment DOES end the comment!  So we | ||
|  |   " need to use a special type of slString: slCommentString, which also ends on | ||
|  |   " "*/", and sees a "*" at the start of the line as comment again. | ||
|  |   " Unfortunately this doesn't very well work for // type of comments :-( | ||
|  |   syntax match slCommentSkip	contained "^\s*\*\($\|\s\+\)" | ||
|  |   syntax region slCommentString	contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=slSpecial,slCommentSkip | ||
|  |   syntax region slComment2String	contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=slSpecial | ||
|  |   syntax region slComment	start="/\*" end="\*/" contains=slTodo,slCommentString,slCharacter,slNumber | ||
|  | else | ||
|  |   syn region slComment		start="/\*" end="\*/" contains=slTodo | ||
|  | endif | ||
|  | syntax match slCommentError	"\*/" | ||
|  | 
 | ||
|  | syn keyword slOperator	sizeof | ||
|  | syn keyword slType		float point color string vector normal matrix void | ||
|  | syn keyword slStorageClass	varying uniform extern | ||
|  | syn keyword slStorageClass	light surface volume displacement transformation imager | ||
|  | syn keyword slVariable	Cs Os P dPdu dPdv N Ng u v du dv s t | ||
|  | syn keyword slVariable L Cl Ol E I ncomps time Ci Oi | ||
|  | syn keyword slVariable Ps alpha | ||
|  | syn keyword slVariable dtime dPdtime | ||
|  | 
 | ||
|  | syn sync ccomment slComment minlines=10 | ||
|  | 
 | ||
|  | " 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_sl_syntax_inits") | ||
|  |   if version < 508 | ||
|  |     let did_sl_syntax_inits = 1 | ||
|  |     command -nargs=+ HiLink hi link <args> | ||
|  |   else | ||
|  |     command -nargs=+ HiLink hi def link <args> | ||
|  |   endif | ||
|  | 
 | ||
|  |   HiLink slLabel	Label | ||
|  |   HiLink slUserLabel	Label | ||
|  |   HiLink slConditional	Conditional | ||
|  |   HiLink slRepeat	Repeat | ||
|  |   HiLink slCharacter	Character | ||
|  |   HiLink slSpecialCharacter slSpecial | ||
|  |   HiLink slNumber	Number | ||
|  |   HiLink slFloat	Float | ||
|  |   HiLink slParenError	slError | ||
|  |   HiLink slInParen	slError | ||
|  |   HiLink slCommentError	slError | ||
|  |   HiLink slOperator	Operator | ||
|  |   HiLink slStorageClass	StorageClass | ||
|  |   HiLink slError	Error | ||
|  |   HiLink slStatement	Statement | ||
|  |   HiLink slType		Type | ||
|  |   HiLink slCommentError	slError | ||
|  |   HiLink slCommentString slString | ||
|  |   HiLink slComment2String slString | ||
|  |   HiLink slCommentSkip	slComment | ||
|  |   HiLink slString	String | ||
|  |   HiLink slComment	Comment | ||
|  |   HiLink slSpecial	SpecialChar | ||
|  |   HiLink slTodo	Todo | ||
|  |   HiLink slVariable	Identifier | ||
|  |   "HiLink slIdentifier	Identifier | ||
|  | 
 | ||
|  |   delcommand HiLink | ||
|  | endif | ||
|  | 
 | ||
|  | let b:current_syntax = "sl" | ||
|  | 
 | ||
|  | " vim: ts=8 |