230 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
		
			
		
	
	
			230 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Plaintext
		
	
	
| 
								 | 
							
								<% USING: kernel io prettyprint words sequences ;
							 | 
						||
| 
								 | 
							
								%>" Vim syntax file
							 | 
						||
| 
								 | 
							
								" Language:	factor
							 | 
						||
| 
								 | 
							
								" Maintainer:	Alex Chapman <chapman.alex@gmail.com>
							 | 
						||
| 
								 | 
							
								" Last Change:	2007 Jan 18
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								" 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
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								" factor is case sensitive.
							 | 
						||
| 
								 | 
							
								syn case match
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								" make all of these characters part of a word (useful for skipping over words with w, e, and b)
							 | 
						||
| 
								 | 
							
								if version >= 600
							 | 
						||
| 
								 | 
							
								    setlocal iskeyword=!,@,33-35,%,$,38-64,A-Z,91-96,a-z,123-126,128-255
							 | 
						||
| 
								 | 
							
								else
							 | 
						||
| 
								 | 
							
								    set iskeyword=!,@,33-35,%,$,38-64,A-Z,91-96,a-z,123-126,128-255
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								syn cluster factorCluster contains=factorComment,factorKeyword,factorRepeat,factorConditional,factorBoolean,factorString,factorSbuf,@factorNumber,@factorNumErr,factorDelimiter,factorChar,factorCharErr,factorBackslash,@factorWordOps,factorAlien,factorTuple
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								syn match factorTodo /\(TODO\|FIXME\|XXX\):\=/ contained
							 | 
						||
| 
								 | 
							
								syn match factorComment /\<#! .*/ contains=factorTodo
							 | 
						||
| 
								 | 
							
								syn match factorComment /\<! .*/ contains=factorTodo
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								syn region None matchgroup=factorDefinition start=/\<\(C\|M\|G\|UNION\|PREDICATE\)\?:\>/ end=/\<;\>/ contains=@factorCluster,factorStackEffect,factorStackEffectErr,factorArray0,factorQuotation0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								syn region None matchgroup=factorGeneric start=/\<GENERIC:\>/ end=/$/ contains=factorStackEffect,factorStackEffectErr
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								syn keyword factorBoolean boolean f general-t t
							 | 
						||
| 
								 | 
							
								syn keyword factorCompileDirective inline foldable parsing
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<%
							 | 
						||
| 
								 | 
							
								! uncomment this if you want all words from all vocabularies highlighted. Note
							 | 
						||
| 
								 | 
							
								! that this changes factor.vim from around 8k to around 100k (and is a bit
							 | 
						||
| 
								 | 
							
								! broken)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								! vocabs [ words [ "syn keyword factorKeyword " write [ pprint " " write ] each "\n" write ] when* ] each %>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								" kernel vocab keywords
							 | 
						||
| 
								 | 
							
								<% { "kernel" "math" "sequences" "namespaces" "arrays" "io" "strings" "vectors" "errors" } [ words "syn keyword factorKeyword " write [ pprint " " write ] each "\n" write ] each %>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								syn cluster factorReal   contains=factorInt,factorFloat,factorRatio,factorBinary,factorHex,factorOctal
							 | 
						||
| 
								 | 
							
								syn cluster factorNumber contains=@factorReal,factorComplex
							 | 
						||
| 
								 | 
							
								syn cluster factorNumErr contains=factorBinErr,factorHexErr,factorOctErr
							 | 
						||
| 
								 | 
							
								syn match   factorInt 		/\<-\=\d\+\>/
							 | 
						||
| 
								 | 
							
								syn match   factorFloat		/\<-\=\d*\.\d\+\>/
							 | 
						||
| 
								 | 
							
								syn match   factorRatio		/\<-\=\d*\.*\d\+\/-\=\d*\.*\d\+\>/
							 | 
						||
| 
								 | 
							
								syn region  factorComplex	start=/\<C{\>/ end=/\<}\>/ contains=@factorReal
							 | 
						||
| 
								 | 
							
								syn match   factorBinErr        /\<BIN:\s\+[01]*[^\s01]\S*\>/
							 | 
						||
| 
								 | 
							
								syn match   factorBinary        /\<BIN:\s\+[01]\+\>/
							 | 
						||
| 
								 | 
							
								syn match   factorHexErr        /\<HEX:\s\+\x*[^\x\s]\S*\>/
							 | 
						||
| 
								 | 
							
								syn match   factorHex           /\<HEX:\s\+\x\+\>/
							 | 
						||
| 
								 | 
							
								syn match   factorOctErr        /\<OCT:\s\+\o*[^\o\s]\S*\>/
							 | 
						||
| 
								 | 
							
								syn match   factorOctal         /\<OCT:\s\+\o\+\>/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								syn match factorIn /\<IN:\s\+\S\+\>/
							 | 
						||
| 
								 | 
							
								syn match factorUse /\<USE:\s\+\S\+\>/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								syn match factorCharErr /\<CHAR:\s\+\S\+/
							 | 
						||
| 
								 | 
							
								syn match factorChar /\<CHAR:\s\+\\\=\S\>/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								syn match factorBackslash /\<\\\>\s\+\S\+\>/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								syn region factorUsing start=/\<USING:\>/ end=/;/
							 | 
						||
| 
								 | 
							
								syn region factorRequires start=/\<REQUIRES:\>/ end=/;/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								syn cluster factorWordOps contains=factorSymbol,factorPostpone,factorDefer,factorForget
							 | 
						||
| 
								 | 
							
								syn match factorSymbol /\<SYMBOL:\s\+\S\+\>/
							 | 
						||
| 
								 | 
							
								syn match factorPostpone /\<POSTPONE:\s\+\S\+\>/
							 | 
						||
| 
								 | 
							
								syn match factorDefer /\<DEFER:\s\+\S\+\>/
							 | 
						||
| 
								 | 
							
								syn match factorForget /\<FORGET:\s\+\S\+\>/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								syn match factorAlien /\<ALIEN:\s\+\d\+\>/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								syn region factorTuple start=/\<TUPLE:\>/ end=/\<;\>/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								"TODO:
							 | 
						||
| 
								 | 
							
								"misc:
							 | 
						||
| 
								 | 
							
								" HELP:
							 | 
						||
| 
								 | 
							
								" ARTICLE:
							 | 
						||
| 
								 | 
							
								" PROVIDE:
							 | 
						||
| 
								 | 
							
								" MAIN:
							 | 
						||
| 
								 | 
							
								"literals:
							 | 
						||
| 
								 | 
							
								" PRIMITIVE:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								"C interface:
							 | 
						||
| 
								 | 
							
								" FIELD:
							 | 
						||
| 
								 | 
							
								" BEGIN-STRUCT:
							 | 
						||
| 
								 | 
							
								" C-ENUM:
							 | 
						||
| 
								 | 
							
								" FUNCTION:
							 | 
						||
| 
								 | 
							
								" END-STRUCT
							 | 
						||
| 
								 | 
							
								" DLL"
							 | 
						||
| 
								 | 
							
								" TYPEDEF:
							 | 
						||
| 
								 | 
							
								" LIBRARY:
							 | 
						||
| 
								 | 
							
								" C-UNION:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								syn region factorString start=/"/ skip=/\\"/ end=/"/ oneline
							 | 
						||
| 
								 | 
							
								syn region factorSbuf start=/SBUF" / skip=/\\"/ end=/"/ oneline
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								syn match factorStackEffectErr /\<)\>/
							 | 
						||
| 
								 | 
							
								syn region factorStackEffectErr start=/\<(\>/ end=/\<)\>/
							 | 
						||
| 
								 | 
							
								syn region factorStackEffect start=/\<(\>/ end=/\<)\>/ contained
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								"adapted from lisp.vim
							 | 
						||
| 
								 | 
							
								if exists("g:factor_norainbow") 
							 | 
						||
| 
								 | 
							
								    syn region factorQuotation matchgroup=factorDelimiter start=/\<\[\>/ matchgroup=factorDelimiter end=/\<\]\>/ contains=ALL
							 | 
						||
| 
								 | 
							
								else
							 | 
						||
| 
								 | 
							
								    syn region factorQuotation0           matchgroup=hlLevel0 start=/\<\[\>/ end=/\<\]\>/ contains=@factorCluster,factorQuotation1,factorArray1
							 | 
						||
| 
								 | 
							
								    syn region factorQuotation1 contained matchgroup=hlLevel1 start=/\<\[\>/ end=/\<\]\>/ contains=@factorCluster,factorQuotation2,factorArray2
							 | 
						||
| 
								 | 
							
								    syn region factorQuotation2 contained matchgroup=hlLevel2 start=/\<\[\>/ end=/\<\]\>/ contains=@factorCluster,factorQuotation3,factorArray3
							 | 
						||
| 
								 | 
							
								    syn region factorQuotation3 contained matchgroup=hlLevel3 start=/\<\[\>/ end=/\<\]\>/ contains=@factorCluster,factorQuotation4,factorArray4
							 | 
						||
| 
								 | 
							
								    syn region factorQuotation4 contained matchgroup=hlLevel4 start=/\<\[\>/ end=/\<\]\>/ contains=@factorCluster,factorQuotation5,factorArray5
							 | 
						||
| 
								 | 
							
								    syn region factorQuotation5 contained matchgroup=hlLevel5 start=/\<\[\>/ end=/\<\]\>/ contains=@factorCluster,factorQuotation6,factorArray6
							 | 
						||
| 
								 | 
							
								    syn region factorQuotation6 contained matchgroup=hlLevel6 start=/\<\[\>/ end=/\<\]\>/ contains=@factorCluster,factorQuotation7,factorArray7
							 | 
						||
| 
								 | 
							
								    syn region factorQuotation7 contained matchgroup=hlLevel7 start=/\<\[\>/ end=/\<\]\>/ contains=@factorCluster,factorQuotation8,factorArray8
							 | 
						||
| 
								 | 
							
								    syn region factorQuotation8 contained matchgroup=hlLevel8 start=/\<\[\>/ end=/\<\]\>/ contains=@factorCluster,factorQuotation9,factorArray9
							 | 
						||
| 
								 | 
							
								    syn region factorQuotation9 contained matchgroup=hlLevel9 start=/\<\[\>/ end=/\<\]\>/ contains=@factorCluster,factorQuotation0,factorArray0
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if exists("g:factor_norainbow") 
							 | 
						||
| 
								 | 
							
								    syn region factorArray    matchgroup=factorDelimiter start=/\<\(V\|H\|T\|W\)\?{\>/  matchgroup=factorDelimiter end=/\<}\>/ contains=ALL
							 | 
						||
| 
								 | 
							
								else
							 | 
						||
| 
								 | 
							
								    syn region factorArray0           matchgroup=hlLevel0 start=/\<\(V\|H\|T\|W\)\?{\>/ end=/\<}\>/ contains=@factorCluster,factorArray1,factorQuotation1
							 | 
						||
| 
								 | 
							
								    syn region factorArray1 contained matchgroup=hlLevel1 start=/\<\(V\|H\|T\|W\)\?{\>/ end=/\<}\>/ contains=@factorCluster,factorArray2,factorQuotation2
							 | 
						||
| 
								 | 
							
								    syn region factorArray2 contained matchgroup=hlLevel2 start=/\<\(V\|H\|T\|W\)\?{\>/ end=/\<}\>/ contains=@factorCluster,factorArray3,factorQuotation3
							 | 
						||
| 
								 | 
							
								    syn region factorArray3 contained matchgroup=hlLevel3 start=/\<\(V\|H\|T\|W\)\?{\>/ end=/\<}\>/ contains=@factorCluster,factorArray4,factorQuotation4
							 | 
						||
| 
								 | 
							
								    syn region factorArray4 contained matchgroup=hlLevel4 start=/\<\(V\|H\|T\|W\)\?{\>/ end=/\<}\>/ contains=@factorCluster,factorArray5,factorQuotation5
							 | 
						||
| 
								 | 
							
								    syn region factorArray5 contained matchgroup=hlLevel5 start=/\<\(V\|H\|T\|W\)\?{\>/ end=/\<}\>/ contains=@factorCluster,factorArray6,factorQuotation6
							 | 
						||
| 
								 | 
							
								    syn region factorArray6 contained matchgroup=hlLevel6 start=/\<\(V\|H\|T\|W\)\?{\>/ end=/\<}\>/ contains=@factorCluster,factorArray7,factorQuotation7
							 | 
						||
| 
								 | 
							
								    syn region factorArray7 contained matchgroup=hlLevel7 start=/\<\(V\|H\|T\|W\)\?{\>/ end=/\<}\>/ contains=@factorCluster,factorArray8,factorQuotation8
							 | 
						||
| 
								 | 
							
								    syn region factorArray8 contained matchgroup=hlLevel8 start=/\<\(V\|H\|T\|W\)\?{\>/ end=/\<}\>/ contains=@factorCluster,factorArray9,factorQuotation9
							 | 
						||
| 
								 | 
							
								    syn region factorArray9 contained matchgroup=hlLevel9 start=/\<\(V\|H\|T\|W\)\?{\>/ end=/\<}\>/ contains=@factorCluster,factorArray0,factorQuotation0
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								syn match factorBracketErr /\<\]\>/
							 | 
						||
| 
								 | 
							
								syn match factorBracketErr /\<}\>/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								syn sync lines=100
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if version >= 508 || !exists("did_factor_syn_inits")
							 | 
						||
| 
								 | 
							
								    if version <= 508
							 | 
						||
| 
								 | 
							
									let did_factor_syn_inits = 1
							 | 
						||
| 
								 | 
							
									command -nargs=+ HiLink hi link <args>
							 | 
						||
| 
								 | 
							
								    else
							 | 
						||
| 
								 | 
							
									command -nargs=+ HiLink hi def link <args>
							 | 
						||
| 
								 | 
							
								    endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    HiLink factorComment	Comment
							 | 
						||
| 
								 | 
							
								    HiLink factorStackEffect	Typedef
							 | 
						||
| 
								 | 
							
								    HiLink factorTodo		Todo
							 | 
						||
| 
								 | 
							
								    HiLink factorInclude	Include
							 | 
						||
| 
								 | 
							
								    HiLink factorRepeat		Repeat
							 | 
						||
| 
								 | 
							
								    HiLink factorConditional	Conditional
							 | 
						||
| 
								 | 
							
								    HiLink factorKeyword	Keyword
							 | 
						||
| 
								 | 
							
								    HiLink factorOperator	Operator
							 | 
						||
| 
								 | 
							
								    HiLink factorBoolean	Boolean
							 | 
						||
| 
								 | 
							
								    HiLink factorDefinition	Typedef
							 | 
						||
| 
								 | 
							
								    HiLink factorString		String
							 | 
						||
| 
								 | 
							
								    HiLink factorSbuf		String
							 | 
						||
| 
								 | 
							
								    HiLink factorBracketErr     Error
							 | 
						||
| 
								 | 
							
								    HiLink factorStackEffectErr Error
							 | 
						||
| 
								 | 
							
								    HiLink factorComplex	Number
							 | 
						||
| 
								 | 
							
								    HiLink factorRatio          Number
							 | 
						||
| 
								 | 
							
								    HiLink factorBinary         Number
							 | 
						||
| 
								 | 
							
								    HiLink factorBinErr         Error
							 | 
						||
| 
								 | 
							
								    HiLink factorHex            Number
							 | 
						||
| 
								 | 
							
								    HiLink factorHexErr         Error
							 | 
						||
| 
								 | 
							
								    HiLink factorOctal          Number
							 | 
						||
| 
								 | 
							
								    HiLink factorOctErr         Error
							 | 
						||
| 
								 | 
							
								    HiLink factorFloat		Float
							 | 
						||
| 
								 | 
							
								    HiLink factorInt		Number
							 | 
						||
| 
								 | 
							
								    HiLink factorUsing          Include
							 | 
						||
| 
								 | 
							
								    HiLink factorUse            Include
							 | 
						||
| 
								 | 
							
								    HiLink factorRequires       Include
							 | 
						||
| 
								 | 
							
								    HiLink factorIn             Define
							 | 
						||
| 
								 | 
							
								    HiLink factorChar           Character
							 | 
						||
| 
								 | 
							
								    HiLink factorCharErr        Error
							 | 
						||
| 
								 | 
							
								    HiLink factorDelimiter      Delimiter
							 | 
						||
| 
								 | 
							
								    HiLink factorBackslash      Special
							 | 
						||
| 
								 | 
							
								    HiLink factorCompileDirective Keyword
							 | 
						||
| 
								 | 
							
								    HiLink factorSymbol         Define
							 | 
						||
| 
								 | 
							
								    HiLink factorPostpone       Define
							 | 
						||
| 
								 | 
							
								    HiLink factorDefer          Define
							 | 
						||
| 
								 | 
							
								    HiLink factorForget         Define
							 | 
						||
| 
								 | 
							
								    HiLink factorAlien          Define
							 | 
						||
| 
								 | 
							
								    HiLink factorTuple          Typedef
							 | 
						||
| 
								 | 
							
								    HiLink factorGeneric        Define
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if &bg == "dark"
							 | 
						||
| 
								 | 
							
									hi   hlLevel0 ctermfg=red         guifg=red1
							 | 
						||
| 
								 | 
							
									hi   hlLevel1 ctermfg=yellow      guifg=orange1
							 | 
						||
| 
								 | 
							
									hi   hlLevel2 ctermfg=green       guifg=yellow1
							 | 
						||
| 
								 | 
							
									hi   hlLevel3 ctermfg=cyan        guifg=greenyellow
							 | 
						||
| 
								 | 
							
									hi   hlLevel4 ctermfg=magenta     guifg=green1
							 | 
						||
| 
								 | 
							
									hi   hlLevel5 ctermfg=red         guifg=springgreen1
							 | 
						||
| 
								 | 
							
									hi   hlLevel6 ctermfg=yellow      guifg=cyan1
							 | 
						||
| 
								 | 
							
									hi   hlLevel7 ctermfg=green       guifg=slateblue1
							 | 
						||
| 
								 | 
							
									hi   hlLevel8 ctermfg=cyan        guifg=magenta1
							 | 
						||
| 
								 | 
							
									hi   hlLevel9 ctermfg=magenta     guifg=purple1
							 | 
						||
| 
								 | 
							
								    else
							 | 
						||
| 
								 | 
							
									hi   hlLevel0 ctermfg=red         guifg=red3
							 | 
						||
| 
								 | 
							
									hi   hlLevel1 ctermfg=darkyellow  guifg=orangered3
							 | 
						||
| 
								 | 
							
									hi   hlLevel2 ctermfg=darkgreen   guifg=orange2
							 | 
						||
| 
								 | 
							
									hi   hlLevel3 ctermfg=blue        guifg=yellow3
							 | 
						||
| 
								 | 
							
									hi   hlLevel4 ctermfg=darkmagenta guifg=olivedrab4
							 | 
						||
| 
								 | 
							
									hi   hlLevel5 ctermfg=red         guifg=green4
							 | 
						||
| 
								 | 
							
									hi   hlLevel6 ctermfg=darkyellow  guifg=paleturquoise3
							 | 
						||
| 
								 | 
							
									hi   hlLevel7 ctermfg=darkgreen   guifg=deepskyblue4
							 | 
						||
| 
								 | 
							
									hi   hlLevel8 ctermfg=blue        guifg=darkslateblue
							 | 
						||
| 
								 | 
							
									hi   hlLevel9 ctermfg=darkmagenta guifg=darkviolet
							 | 
						||
| 
								 | 
							
								    endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    delcommand HiLink
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								let b:current_syntax = "factor"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set sw=4
							 | 
						||
| 
								 | 
							
								set ts=4
							 | 
						||
| 
								 | 
							
								set expandtab
							 | 
						||
| 
								 | 
							
								set autoindent " annoying?
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								" vim: syntax=vim
							 |