From ca6ffac4e4683705b895e368375103315ca0e1ca Mon Sep 17 00:00:00 2001 From: Chris Morgan Date: Fri, 4 Jul 2014 10:45:36 +1000 Subject: [PATCH 1/2] =?UTF-8?q?Highlight=20$(=E2=80=A6)*=20and=20$foo=20in?= =?UTF-8?q?=20Vim.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/etc/vim/syntax/rust.vim | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/etc/vim/syntax/rust.vim b/src/etc/vim/syntax/rust.vim index 1b75538d2f7..5f89f562d7f 100644 --- a/src/etc/vim/syntax/rust.vim +++ b/src/etc/vim/syntax/rust.vim @@ -60,6 +60,10 @@ syn region rustBoxPlacementBalance start="(" end=")" containedin=rustBoxPlace syn region rustBoxPlacementBalance start="\[" end="\]" containedin=rustBoxPlacement transparent " {} are handled by rustFoldBraces +syn region rustMacroRepeat matchgroup=rustMacroRepeatDelimiters start="$(" end=")" contains=TOP nextgroup=rustMacroRepeatCount +syn match rustMacroRepeatCount ".\?[*+]" contained +syn match rustMacroVariable "$\w\+" + " Reserved (but not yet used) keywords {{{2 syn keyword rustReservedKeyword alignof be do offsetof priv pure sizeof typeof unsized yield @@ -233,6 +237,9 @@ hi def link rustBinNumber rustNumber hi def link rustIdentifierPrime rustIdentifier hi def link rustTrait rustType +hi def link rustMacroRepeatCount rustMacroRepeatDelimiters +hi def link rustMacroRepeatDelimiters Macro +hi def link rustMacroVariable Define hi def link rustSigil StorageClass hi def link rustEscape Special hi def link rustEscapeUnicode rustEscape From 0a0c6da564e91a241feadae8bc1f5ad879045042 Mon Sep 17 00:00:00 2001 From: Chris Morgan Date: Fri, 4 Jul 2014 10:47:13 +1000 Subject: [PATCH 2/2] Fix :syn-include usage of Vim filetype. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- src/etc/vim/syntax/rust.vim | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/etc/vim/syntax/rust.vim b/src/etc/vim/syntax/rust.vim index 5f89f562d7f..e3fadccd1c9 100644 --- a/src/etc/vim/syntax/rust.vim +++ b/src/etc/vim/syntax/rust.vim @@ -3,7 +3,7 @@ " Maintainer: Patrick Walton " Maintainer: Ben Blum " Maintainer: Chris Morgan -" Last Change: July 06, 2014 +" Last Change: July 18, 2014 if version < 600 syntax clear @@ -38,7 +38,7 @@ syn keyword rustKeyword for in if impl let syn keyword rustKeyword loop once proc pub syn keyword rustKeyword return super syn keyword rustKeyword unsafe virtual while -syn keyword rustKeyword use nextgroup=rustModPath skipwhite skipempty +syn keyword rustKeyword use nextgroup=rustModPath,rustModPathInUse skipwhite skipempty " FIXME: Scoped impl's name is also fallen in this category syn keyword rustKeyword mod trait struct enum type nextgroup=rustIdentifier skipwhite skipempty syn keyword rustStorage mut ref static const @@ -142,8 +142,9 @@ syn keyword rustBoolean true false " If foo::bar changes to foo.bar, change this ("::" to "\."). " If foo::bar changes to Foo::bar, change this (first "\w" to "\u"). syn match rustModPath "\w\(\w\)*::[^<]"he=e-3,me=e-3 -syn match rustModPath "\w\(\w\)*" contained " only for 'use path;' +syn match rustModPathInUse "\w\(\w\)*" contained " only for 'use path;' syn match rustModPathSep "::" +" rustModPathInUse is split out from rustModPath so that :syn-include can get the group list right. syn match rustFuncCall "\w\(\w\)*("he=e-1,me=e-1 syn match rustFuncCall "\w\(\w\)*::<"he=e-3,me=e-3 " foo::(); @@ -262,6 +263,7 @@ hi def link rustReservedKeyword Error hi def link rustConditional Conditional hi def link rustIdentifier Identifier hi def link rustCapsIdent rustIdentifier +hi def link rustModPathInUse rustModPath hi def link rustModPath Include hi def link rustModPathSep Delimiter hi def link rustFunction Function