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 Sep 4
6
+ " Last Change: 2013 Aug 1
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
16
14
syn keyword rustConditional match if else
17
15
syn keyword rustOperator as
18
16
@@ -34,90 +32,47 @@ syn keyword rustStorage const mut ref static
34
32
syn match rustIdentifier contains =rustIdentifierPrime " \% ([^[:cntrl:][:space:][:punct:][:digit:]]\| _\)\% ([^[:cntrl:][:punct:][:space:]]\| _\) *" display contained
35
33
syn match rustFuncName " \% ([^[:cntrl:][:space:][:punct:][:digit:]]\| _\)\% ([^[:cntrl:][:punct:][:space:]]\| _\) *" display contained
36
34
37
- " Reserved (but not yet used) keywords {{{2
35
+ " reserved
38
36
syn keyword rustKeyword be yield typeof
39
37
40
- " Built-in types {{{2
41
38
syn keyword rustType int uint float char bool u8 u16 u32 u64 f32
42
39
syn keyword rustType f64 i8 i16 i32 i64 str Self
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
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
111
56
112
57
syn keyword rustSelf self
113
58
syn keyword rustBoolean true false
114
59
115
60
syn keyword rustConstant Some None " option
116
61
syn keyword rustConstant Left Right " either
117
62
syn keyword rustConstant Ok Err " result
118
- syn keyword rustConstant Less Equal Greater " Ordering
119
-
120
- " Other syntax {{{2
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
121
76
122
77
" If foo::bar changes to foo.bar, change this ("::" to "\.").
123
78
" If foo::bar changes to Foo::bar, change this (first "\w" to "\u").
@@ -147,8 +102,7 @@ syn match rustMacro '#\w\(\w\)*' contains=rustAssert,rustFail
147
102
syn match rustFormat display " %\(\d\+\$\)\= [-+' #0*]*\(\d *\|\*\|\*\d\+\$\)\(\.\(\d *\|\*\|\*\d\+\$\)\)\=\( [hlLjzt]\| ll\| hh\)\=\( [aAbdiuoxXDOUfFeEgGcCsSpn?]\|\[\^\= .[^]]*\]\) " contained
148
103
syn match rustFormat display " %%" contained
149
104
syn match rustSpecial display contained / \\\( [nrt\\ '"]\| x\x\{ 2}\| u\x\{ 4}\| U\x\{ 8}\) /
150
- syn match rustStringContinuation display contained / \\\n\s */
151
- syn region rustString start =+ "+ skip =+ \\\\\|\\ "+ end =+ "+ contains =rustTodo,rustFormat,rustSpecial,rustStringContinuation
105
+ syn region rustString start =+ L\= "+ skip =+ \\\\\|\\ "+ end =+ "+ contains =rustTodo,rustFormat,rustSpecial
152
106
153
107
syn region rustAttribute start =" #\[ " end =" \] " contains =rustString,rustDeriving
154
108
syn region rustDeriving start =" deriving(" end =" )" contained contains =rustTrait
@@ -183,20 +137,18 @@ syn match rustLifetime display "\'\%([^[:cntrl:][:space:][:punct:][:digit
183
137
syn match rustCharacter / '\( [^'\\ ]\|\\\( [nrt\\ '"]\| x\x\{ 2}\| u\x\{ 4}\| U\x\{ 8}\)\) '/ contains =rustSpecial
184
138
185
139
syn region rustCommentML start =" /\* " end =" \* /" contains =rustTodo
186
- syn region rustComment start =" //" end =" $" contains =rustTodo keepend
140
+ syn region rustComment start =" //" skip = " \\ $ " end =" $" contains =rustTodo keepend
187
141
syn region rustCommentMLDoc start =" /\*\% (!\|\* /\@ !\) " end =" \* /" contains =rustTodo
188
- syn region rustCommentDoc start =" //[/!]" end =" $" contains =rustTodo keepend
142
+ syn region rustCommentDoc start =" //[/!]" skip = " \\ $ " end =" $" contains =rustTodo keepend
189
143
190
144
syn keyword rustTodo contained TODO FIXME XXX NB NOTE
191
145
192
- " Folding rules {{{2
193
146
" Trivial folding rules to begin with.
194
147
" TODO: use the AST to make really good folding
195
148
syn region rustFoldBraces start =" {" end =" }" transparent fold
196
149
" If you wish to enable this, setlocal foldmethod=syntax
197
150
" It's not enabled by default as it would drive some people mad.
198
151
199
- " Default highlighting {{{1
200
152
hi def link rustHexNumber rustNumber
201
153
hi def link rustBinNumber rustNumber
202
154
hi def link rustIdentifierPrime rustIdentifier
@@ -205,13 +157,10 @@ hi def link rustTrait rustType
205
157
hi def link rustSigil StorageClass
206
158
hi def link rustFormat Special
207
159
hi def link rustSpecial Special
208
- hi def link rustStringContinuation Special
209
160
hi def link rustString String
210
161
hi def link rustCharacter Character
211
162
hi def link rustNumber Number
212
163
hi def link rustBoolean Boolean
213
- hi def link rustEnum rustType
214
- hi def link rustEnumVariant rustConstant
215
164
hi def link rustConstant Constant
216
165
hi def link rustSelf Constant
217
166
hi def link rustFloat Float
@@ -222,7 +171,6 @@ hi def link rustIdentifier Identifier
222
171
hi def link rustCapsIdent rustIdentifier
223
172
hi def link rustModPath Include
224
173
hi def link rustModPathSep Delimiter
225
- hi def link rustFunction Function
226
174
hi def link rustFuncName Function
227
175
hi def link rustFuncCall Function
228
176
hi def link rustCommentMLDoc rustCommentDoc
0 commit comments