xref: /vim-8.2.3635/runtime/syntax/fan.vim (revision cb03397a)
1" Vim syntax file
2" Language:     Fantom
3" Maintainer:   Kamil Toman <[email protected]>
4" Last Change:  2010 May 27
5" Based on Java syntax file by Claudio Fleiner <[email protected]>
6
7" Quit when a syntax file was already loaded
8if exists("b:current_syntax")
9  finish
10endif
11
12" keyword definitions
13syn keyword fanExternal	        using native
14syn keyword fanError		goto void serializable volatile
15syn keyword fanConditional	if else switch
16syn keyword fanRepeat		do while for foreach each
17syn keyword fanBoolean		true false
18syn keyword fanConstant 	null
19syn keyword fanTypedef		this super
20syn keyword fanOperator	        new is isnot as
21syn keyword fanLongOperator     plus minus mult div mod get set slice lshift rshift and or xor inverse negate increment decrement equals compare
22syn keyword fanType		Void Bool Int Float Decimal Str Duration Uri Type Range List Map Obj
23syn keyword fanStatement	return
24syn keyword fanStorageClass	static const final
25syn keyword fanSlot      	virtual override once
26syn keyword fanField      	readonly
27syn keyword fanExceptions	throw try catch finally
28syn keyword fanAssert		assert
29syn keyword fanTypedef		class enum mixin
30syn match   fanFacet            "@[_a-zA-Z][_a-zA-Z0-9_]*\>"
31syn keyword fanBranch		break continue
32syn keyword fanScopeDecl	public internal protected private abstract
33
34if exists("fan_space_errors")
35  if !exists("fan_no_trail_space_error")
36    syn match   fanSpaceError  "\s\+$"
37  endif
38  if !exists("fan_no_tab_space_error")
39    syn match   fanSpaceError  " \+\t"me=e-1
40  endif
41endif
42
43syn region  fanLabelRegion     transparent matchgroup=fanLabel start="\<case\>" matchgroup=NONE end=":" contains=fanNumber,fanCharacter
44syn keyword fanLabel		default
45syn keyword fanLabel		case
46
47" The following cluster contains all fan groups except the contained ones
48syn cluster fanTop add=fanExternal,fanError,fanConditional,fanRepeat,fanBoolean,fanConstant,fanTypedef,fanOperator,fanLongOperator,fanType,fanType,fanStatement,fanStorageClass,fanSlot,fanField,fanExceptions,fanAssert,fanClassDecl,fanTypedef,fanFacet,fanBranch,fanScopeDecl,fanLabelRegion,fanLabel
49
50" Comments
51syn keyword fanTodo		 contained TODO FIXME XXX
52syn region  fanComment		 start="/\*"  end="\*/" contains=@fanCommentSpecial,fanTodo,fanComment,@Spell
53syn match   fanCommentStar      contained "^\s*\*[^/]"me=e-1
54syn match   fanCommentStar      contained "^\s*\*$"
55syn match   fanLineComment      "//.*" contains=@fanCommentSpecial2,fanTodo,@Spell
56syn match   fanDocComment       "\*\*.*" contains=@fanCommentSpecial2,fanTodo,@Spell
57hi def link fanCommentString fanString
58hi def link fanComment2String fanString
59hi def link fanCommentCharacter fanCharacter
60
61syn cluster fanTop add=fanComment,fanLineComment,fanDocComment
62
63" match the special comment /**/
64syn match   fanComment		 "/\*\*/"
65
66" Strings and constants
67syn match   fanSpecialError    	 	contained "\\."
68syn match   fanSpecialCharError 	contained "[^']"
69syn match   fanSpecialChar      	contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\|\$\)"
70syn match   fanStringSubst      	contained "\$[A-Za-z][A-Za-z_.]*"
71syn match   fanStringSubst      	contained "\${[^}]*}"
72syn region  fanString		start=+"+ end=+"+ contains=fanSpecialChar,fanSpecialError,fanStringSubst,@Spell
73syn region  fanTripleString	start=+"""+ end=+"""+ contains=fanSpecialChar,fanSpecialError,fanStringSubst,@Spell
74syn region  fanDSL		start=+<|+ end=+|>+
75syn match   fanUri		 "`[^`]*`"
76syn match   fanCharacter	 "'[^']*'" contains=fanSpecialChar,fanSpecialCharError
77syn match   fanCharacter	 "'\\''" contains=fanSpecialChar
78syn match   fanCharacter	 "'[^\\]'"
79syn match   fanNumber		 "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
80syn match   fanNumber		 "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
81syn match   fanNumber		 "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
82syn match   fanNumber		 "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
83
84syn cluster fanTop add=fanString,fanCharacter,fanNumber,fanSpecial,fanStringError
85
86" The default highlighting.
87hi def link fanBranch			Conditional
88hi def link fanLabel			Label
89hi def link fanUserLabel		Label
90hi def link fanConditional		Conditional
91hi def link fanRepeat			Repeat
92hi def link fanExceptions		Exception
93hi def link fanAssert			Statement
94hi def link fanStorageClass		StorageClass
95hi def link fanSlot        		StorageClass
96hi def link fanField        		StorageClass
97hi def link fanScopeDecl		StorageClass
98hi def link fanBoolean		Boolean
99hi def link fanSpecial		Special
100hi def link fanSpecialError		Error
101hi def link fanSpecialCharError	Error
102hi def link fanTripleString		String
103hi def link fanString			String
104hi def link fanDSL			String
105hi def link fanCharacter		String
106hi def link fanStringSubst		Identifier
107hi def link fanUri			SpecialChar
108hi def link fanSpecialChar		SpecialChar
109hi def link fanNumber			Number
110hi def link fanError			Error
111hi def link fanStringError		Error
112hi def link fanStatement		Statement
113hi def link fanOperator		Operator
114hi def link fanLongOperator		Operator
115hi def link fanComment		Comment
116hi def link fanDocComment		Comment
117hi def link fanLineComment		Comment
118hi def link fanConstant		Constant
119hi def link fanTypedef		Typedef
120hi def link fanTodo			Todo
121hi def link fanFacet                  PreProc
122
123hi def link fanCommentTitle		SpecialComment
124hi def link fanCommentStar		SpecialComment
125hi def link fanType			Identifier
126hi def link fanExternal		Include
127
128hi def link fanSpaceError		Error
129
130let b:current_syntax = "fan"
131
132" vim: ts=8
133