vim/radiance.vim 2.9 KiB raw
1
" radiance.vim
2
" Syntax for the Radiance language
3
" (c) Alexis Sellier
4
"
5
" Quit when a syntax file was already loaded
6
if exists("b:current_syntax")
7
  finish
8
endif
9
10
syntax clear
11
12
" Comments
13
syntax match radianceComment "//.*$"
14
syntax match radianceComment "--.*$"
15
syntax keyword radianceTodo TODO FIXME contained containedin=radianceComment
16
17
" Keywords
18
syntax keyword radianceKeyword mod fn return if else while true false and or not case align static
19
syntax keyword radianceKeyword export break continue use loop in for match nil undefined
20
syntax keyword radianceKeyword let mut set as register device constant log record union trait instance
21
syntax keyword radianceKeyword throws throw try catch panic assert super unsafe where
22
syntax keyword radianceType i8 i16 i32 i64 u8 u16 u32 u64 f32 void bool bit opaque Copy Once
23
24
" Double-quoted strings
25
syntax region radianceString start=/"/ skip=/\\"/ end=/"/ contains=radianceEscape
26
" Characters
27
syntax match radianceCharacter /'\h\w*'/ contains=radianceEscape
28
syntax region radianceCharacter start=/'\%(\h\)\@!/ skip=/\\'|\\\\/ end=/'/ oneline contains=radianceEscape
29
" Lexical regions
30
syntax match radianceRegion "'\h\w*\%('\)\@!"
31
" String escapes
32
syntax match radianceEscape contained /\\["'nrtvfab\\]/
33
" Compiler built-in
34
syntax match radianceBuiltin "@\h\w\+"
35
36
" Numbers
37
syntax match radianceNumber "\<0[xX][a-fA-F0-9]\+\>"
38
syntax match radianceNumber "\<0[bB][01]\+\>"
39
syntax match radianceNumber "\<\d\+\>"
40
syntax match radiancePlaceholder "\<_\>"
41
42
" Function names
43
syntax match radianceFunction "\<\h\w*\>\s*?("
44
syntax match radianceFunction "\<\h\w*\>\ze\s*\%('\h\w*\s*\)*("
45
46
" Operators
47
syntax match radianceOperator "[:!?&\-+*/=<>]"
48
syntax match radianceOperator "/"  contains=radianceComment
49
50
" Namespaced identifiers.
51
syntax match radianceNamespaceSep "::" contained
52
syntax match radianceNamespaceAccess "\<\u\w*\%(::\u\w*\)\+" contains=radianceNamespaceSep
53
54
" Braces, parentheses and brackets
55
syntax match radianceBraces "[{}]"
56
syntax match radianceParens "[()]"
57
syntax match radianceBrackets "[\[\]]"
58
59
" Define highlighting
60
highlight default link radianceKeyword Keyword
61
highlight default link radianceBuiltin Special
62
highlight default link radianceType Type
63
highlight default link radianceComment Comment
64
highlight default link radianceTodo Todo
65
highlight default link radianceNumber Number
66
highlight default link radianceFunction Function
67
highlight default link radianceOperator Operator
68
highlight default link radiancePlaceholder Delimiter
69
highlight default link radianceNamespaceSep Delimiter
70
highlight default link radianceBraces Delimiter
71
highlight default link radianceParens Delimiter
72
highlight default link radianceBrackets Delimiter
73
highlight default link radianceString String
74
highlight default link radianceCharacter Character
75
highlight default link radianceRegion Type
76
highlight default link radianceEscape SpecialChar
77
highlight default link radianceNamespaceAccess Normal
78
79
let b:current_syntax = "radiance"