Skip to content

Commit 0a0c6da

Browse files
committed
Fix :syn-include usage of Vim filetype.
Here’s what the Vim manual says in *:syn-include*: :sy[ntax] include [@{grouplist-name}] {file-name} All syntax items declared in the included file will have the "contained" flag added. In addition, if a group list is specified, all top-level syntax items in the included file will be added to that list. We had two rules for `rustModPath`, one `contained` and the other not. The effect was that the second (now renamed to `rustModPathInUse`) was being included in the group list, and thus that all identifiers were being highlighted as `Include`, which is definitely not what we wanted.
1 parent ca6ffac commit 0a0c6da

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

src/etc/vim/syntax/rust.vim

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
" Maintainer: Patrick Walton <[email protected]>
44
" Maintainer: Ben Blum <[email protected]>
55
" Maintainer: Chris Morgan <[email protected]>
6-
" Last Change: July 06, 2014
6+
" Last Change: July 18, 2014
77

88
if version < 600
99
syntax clear
@@ -38,7 +38,7 @@ syn keyword rustKeyword for in if impl let
3838
syn keyword rustKeyword loop once proc pub
3939
syn keyword rustKeyword return super
4040
syn keyword rustKeyword unsafe virtual while
41-
syn keyword rustKeyword use nextgroup=rustModPath skipwhite skipempty
41+
syn keyword rustKeyword use nextgroup=rustModPath,rustModPathInUse skipwhite skipempty
4242
" FIXME: Scoped impl's name is also fallen in this category
4343
syn keyword rustKeyword mod trait struct enum type nextgroup=rustIdentifier skipwhite skipempty
4444
syn keyword rustStorage mut ref static const
@@ -142,8 +142,9 @@ syn keyword rustBoolean true false
142142
" If foo::bar changes to foo.bar, change this ("::" to "\.").
143143
" If foo::bar changes to Foo::bar, change this (first "\w" to "\u").
144144
syn match rustModPath "\w\(\w\)*::[^<]"he=e-3,me=e-3
145-
syn match rustModPath "\w\(\w\)*" contained " only for 'use path;'
145+
syn match rustModPathInUse "\w\(\w\)*" contained " only for 'use path;'
146146
syn match rustModPathSep "::"
147+
" rustModPathInUse is split out from rustModPath so that :syn-include can get the group list right.
147148

148149
syn match rustFuncCall "\w\(\w\)*("he=e-1,me=e-1
149150
syn match rustFuncCall "\w\(\w\)*::<"he=e-3,me=e-3 " foo::<T>();
@@ -262,6 +263,7 @@ hi def link rustReservedKeyword Error
262263
hi def link rustConditional Conditional
263264
hi def link rustIdentifier Identifier
264265
hi def link rustCapsIdent rustIdentifier
266+
hi def link rustModPathInUse rustModPath
265267
hi def link rustModPath Include
266268
hi def link rustModPathSep Delimiter
267269
hi def link rustFunction Function

0 commit comments

Comments
 (0)