3
3
" Maintainer: Patrick Walton <[email protected] >
4
4
" Maintainer: Ben Blum <[email protected] >
5
5
" Maintainer: Chris Morgan <[email protected] >
6
- " Last Change: 2013 Aug 1
6
+ " Last Change: 2013 Sep 4
7
7
8
8
if version < 600
9
9
syntax clear
10
10
elseif exists (" b:current_syntax" )
11
11
finish
12
12
endif
13
13
14
+ " Syntax definitions {{{1
15
+ " Basic keywords {{{2
14
16
syn keyword rustConditional match if else
15
17
syn keyword rustOperator as
16
18
@@ -32,47 +34,90 @@ syn keyword rustStorage const mut ref static
32
34
syn match rustIdentifier contains =rustIdentifierPrime " \% ([^[:cntrl:][:space:][:punct:][:digit:]]\| _\)\% ([^[:cntrl:][:punct:][:space:]]\| _\) *" display contained
33
35
syn match rustFuncName " \% ([^[:cntrl:][:space:][:punct:][:digit:]]\| _\)\% ([^[:cntrl:][:punct:][:space:]]\| _\) *" display contained
34
36
35
- " reserved
37
+ " Reserved (but not yet used) keywords {{{2
36
38
syn keyword rustKeyword be yield typeof
37
39
40
+ " Built-in types {{{2
38
41
syn keyword rustType int uint float char bool u8 u16 u32 u64 f32
39
42
syn keyword rustType f64 i8 i16 i32 i64 str Self
40
- syn keyword rustType Option Either
41
-
42
- " Types from libc
43
- syn keyword rustType c_float c_double c_void FILE fpos_t
44
- syn keyword rustType DIR dirent
45
- syn keyword rustType c_char c_schar c_uchar
46
- syn keyword rustType c_short c_ushort c_int c_uint c_long c_ulong
47
- syn keyword rustType size_t ptrdiff_t clock_t time_t
48
- syn keyword rustType c_longlong c_ulonglong intptr_t uintptr_t
49
- syn keyword rustType off_t dev_t ino_t pid_t mode_t ssize_t
50
-
51
- syn keyword rustTrait Const Copy Send Owned Sized " inherent traits
52
- syn keyword rustTrait Clone Decodable Encodable IterBytes Rand ToStr
53
- syn keyword rustTrait Eq Ord TotalEq TotalOrd Num Ptr
54
- syn keyword rustTrait Drop Add Sub Mul Quot Rem Neg BitAnd BitOr
55
- syn keyword rustTrait BitXor Shl Shr Index
43
+
44
+ " Things from the prelude (src/libstd/prelude.rs) {{{2
45
+ " This section is just straight transformation of the contents of the prelude,
46
+ " to make it easy to update.
47
+
48
+ " Core operators {{{3
49
+ syn keyword rustEnum Either
50
+ syn keyword rustEnumVariant Left Right
51
+ syn keyword rustTrait Sized
52
+ syn keyword rustTrait Freeze Send
53
+ syn keyword rustTrait Add Sub Mul Div Rem Neg Not
54
+ syn keyword rustTrait BitAnd BitOr BitXor
55
+ syn keyword rustTrait Drop
56
+ syn keyword rustTrait Shl Shr Index
57
+ syn keyword rustEnum Option
58
+ syn keyword rustEnumVariant Some None
59
+ syn keyword rustEnum Result
60
+ syn keyword rustEnumVariant Ok Err
61
+
62
+ " Functions {{{3
63
+ " syn keyword rustFunction print println
64
+ " syn keyword rustFunction range
65
+
66
+ " Types and traits {{{3
67
+ syn keyword rustTrait ToCStr
68
+ syn keyword rustTrait Clone DeepClone
69
+ syn keyword rustTrait Eq ApproxEq Ord TotalEq TotalOrd Ordering Equiv
70
+ syn keyword rustEnumVariant Less Equal Greater
71
+ syn keyword rustTrait Char
72
+ syn keyword rustTrait Container Mutable Map MutableMap Set MutableSet
73
+ syn keyword rustTrait Hash
74
+ syn keyword rustTrait Times
75
+ syn keyword rustTrait FromIterator Extendable
76
+ syn keyword rustTrait Iterator DoubleEndedIterator RandomAccessIterator ClonableIterator
77
+ syn keyword rustTrait OrdIterator MutableDoubleEndedIterator ExactSize
78
+ syn keyword rustTrait Num NumCast CheckedAdd CheckedSub CheckedMul
79
+ syn keyword rustTrait Orderable Signed Unsigned Round
80
+ syn keyword rustTrait Algebraic Trigonometric Exponential Hyperbolic
81
+ syn keyword rustTrait Integer Fractional Real RealExt
82
+ syn keyword rustTrait Bitwise BitCount Bounded
83
+ syn keyword rustTrait Primitive Int Float ToStrRadix
84
+ syn keyword rustTrait GenericPath
85
+ syn keyword rustTrait Path
86
+ syn keyword rustTrait PosixPath
87
+ syn keyword rustTrait WindowsPath
88
+ syn keyword rustTrait RawPtr
89
+ syn keyword rustTrait Ascii AsciiCast OwnedAsciiCast AsciiStr ToBytesConsume
90
+ syn keyword rustTrait Str StrVector StrSlice OwnedStr
91
+ syn keyword rustTrait FromStr
92
+ syn keyword rustTrait IterBytes
93
+ syn keyword rustTrait ToStr ToStrConsume
94
+ syn keyword rustTrait CopyableTuple ImmutableTuple
95
+ syn keyword rustTrait CloneableTuple1 ImmutableTuple1
96
+ syn keyword rustTrait CloneableTuple2 CloneableTuple3 CloneableTuple4 CloneableTuple5
97
+ syn keyword rustTrait CloneableTuple6 CloneableTuple7 CloneableTuple8 CloneableTuple9
98
+ syn keyword rustTrait CloneableTuple10 CloneableTuple11 CloneableTuple12
99
+ syn keyword rustTrait ImmutableTuple2 ImmutableTuple3 ImmutableTuple4 ImmutableTuple5
100
+ syn keyword rustTrait ImmutableTuple6 ImmutableTuple7 ImmutableTuple8 ImmutableTuple9
101
+ syn keyword rustTrait ImmutableTuple10 ImmutableTuple11 ImmutableTuple12
102
+ syn keyword rustTrait Vector VectorVector CopyableVector ImmutableVector
103
+ syn keyword rustTrait ImmutableEqVector ImmutableTotalOrdVector ImmutableCopyableVector
104
+ syn keyword rustTrait OwnedVector OwnedCopyableVector OwnedEqVector MutableVector
105
+ syn keyword rustTrait Reader ReaderUtil Writer WriterUtil
106
+ syn keyword rustTrait Default
107
+
108
+ " syn keyword rustFunction stream
109
+ syn keyword rustTrait Port Chan GenericChan GenericSmartChan GenericPort Peekable
110
+ " syn keyword rustFunction spawn
56
111
57
112
syn keyword rustSelf self
58
113
syn keyword rustBoolean true false
59
114
60
115
syn keyword rustConstant Some None " option
61
116
syn keyword rustConstant Left Right " either
62
117
syn keyword rustConstant Ok Err " result
63
- syn keyword rustConstant Success Failure " task
64
- syn keyword rustConstant Cons Nil " list
65
- " syn keyword rustConstant empty node " tree
66
-
67
- " Constants from libc
68
- syn keyword rustConstant EXIT_FAILURE EXIT_SUCCESS RAND_MAX
69
- syn keyword rustConstant EOF SEEK_SET SEEK_CUR SEEK_END _IOFBF _IONBF
70
- syn keyword rustConstant _IOLBF BUFSIZ FOPEN_MAX FILENAME_MAX L_tmpnam
71
- syn keyword rustConstant TMP_MAX O_RDONLY O_WRONLY O_RDWR O_APPEND O_CREAT
72
- syn keyword rustConstant O_EXCL O_TRUNC S_IFIFO S_IFCHR S_IFBLK S_IFDIR
73
- syn keyword rustConstant S_IFREG S_IFMT S_IEXEC S_IWRITE S_IREAD S_IRWXU
74
- syn keyword rustConstant S_IXUSR S_IWUSR S_IRUSR F_OK R_OK W_OK X_OK
75
- syn keyword rustConstant STDIN_FILENO STDOUT_FILENO STDERR_FILENO
118
+ syn keyword rustConstant Less Equal Greater " Ordering
119
+
120
+ " Other syntax {{{2
76
121
77
122
" If foo::bar changes to foo.bar, change this ("::" to "\.").
78
123
" If foo::bar changes to Foo::bar, change this (first "\w" to "\u").
@@ -102,7 +147,8 @@ syn match rustMacro '#\w\(\w\)*' contains=rustAssert,rustFail
102
147
syn match rustFormat display " %\(\d\+\$\)\= [-+' #0*]*\(\d *\|\*\|\*\d\+\$\)\(\.\(\d *\|\*\|\*\d\+\$\)\)\=\( [hlLjzt]\| ll\| hh\)\=\( [aAbdiuoxXDOUfFeEgGcCsSpn?]\|\[\^\= .[^]]*\]\) " contained
103
148
syn match rustFormat display " %%" contained
104
149
syn match rustSpecial display contained / \\\( [nrt\\ '"]\| x\x\{ 2}\| u\x\{ 4}\| U\x\{ 8}\) /
105
- syn region rustString start =+ L\= "+ skip =+ \\\\\|\\ "+ end =+ "+ contains =rustTodo,rustFormat,rustSpecial
150
+ syn match rustStringContinuation display contained / \\\n\s */
151
+ syn region rustString start =+ "+ skip =+ \\\\\|\\ "+ end =+ "+ contains =rustTodo,rustFormat,rustSpecial,rustStringContinuation
106
152
107
153
syn region rustAttribute start =" #\[ " end =" \] " contains =rustString,rustDeriving
108
154
syn region rustDeriving start =" deriving(" end =" )" contained contains =rustTrait
@@ -137,18 +183,20 @@ syn match rustLifetime display "\'\%([^[:cntrl:][:space:][:punct:][:digit
137
183
syn match rustCharacter / '\( [^'\\ ]\|\\\( [nrt\\ '"]\| x\x\{ 2}\| u\x\{ 4}\| U\x\{ 8}\)\) '/ contains =rustSpecial
138
184
139
185
syn region rustCommentML start =" /\* " end =" \* /" contains =rustTodo
140
- syn region rustComment start =" //" skip = " \\ $ " end =" $" contains =rustTodo keepend
186
+ syn region rustComment start =" //" end =" $" contains =rustTodo keepend
141
187
syn region rustCommentMLDoc start =" /\*\% (!\|\* /\@ !\) " end =" \* /" contains =rustTodo
142
- syn region rustCommentDoc start =" //[/!]" skip = " \\ $ " end =" $" contains =rustTodo keepend
188
+ syn region rustCommentDoc start =" //[/!]" end =" $" contains =rustTodo keepend
143
189
144
190
syn keyword rustTodo contained TODO FIXME XXX NB NOTE
145
191
192
+ " Folding rules {{{2
146
193
" Trivial folding rules to begin with.
147
194
" TODO: use the AST to make really good folding
148
195
syn region rustFoldBraces start =" {" end =" }" transparent fold
149
196
" If you wish to enable this, setlocal foldmethod=syntax
150
197
" It's not enabled by default as it would drive some people mad.
151
198
199
+ " Default highlighting {{{1
152
200
hi def link rustHexNumber rustNumber
153
201
hi def link rustBinNumber rustNumber
154
202
hi def link rustIdentifierPrime rustIdentifier
@@ -157,10 +205,13 @@ hi def link rustTrait rustType
157
205
hi def link rustSigil StorageClass
158
206
hi def link rustFormat Special
159
207
hi def link rustSpecial Special
208
+ hi def link rustStringContinuation Special
160
209
hi def link rustString String
161
210
hi def link rustCharacter Character
162
211
hi def link rustNumber Number
163
212
hi def link rustBoolean Boolean
213
+ hi def link rustEnum rustType
214
+ hi def link rustEnumVariant rustConstant
164
215
hi def link rustConstant Constant
165
216
hi def link rustSelf Constant
166
217
hi def link rustFloat Float
@@ -171,6 +222,7 @@ hi def link rustIdentifier Identifier
171
222
hi def link rustCapsIdent rustIdentifier
172
223
hi def link rustModPath Include
173
224
hi def link rustModPathSep Delimiter
225
+ hi def link rustFunction Function
174
226
hi def link rustFuncName Function
175
227
hi def link rustFuncCall Function
176
228
hi def link rustCommentMLDoc rustCommentDoc
0 commit comments