From 55de232426b3861d1cc2385888a6104063318dce Mon Sep 17 00:00:00 2001 From: Tycho Sci Date: Thu, 3 May 2012 16:48:03 +0900 Subject: [PATCH 1/5] vim: Highlight identifiers --- src/etc/vim/syntax/rust.vim | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/etc/vim/syntax/rust.vim b/src/etc/vim/syntax/rust.vim index 26bb0d70417..3e248f4c983 100644 --- a/src/etc/vim/syntax/rust.vim +++ b/src/etc/vim/syntax/rust.vim @@ -15,11 +15,17 @@ if !exists("main_syntax") endif syn keyword rustKeyword alt as assert be bind break -syn keyword rustKeyword check claim cont const copy do else enum export fail -syn keyword rustKeyword fn for if iface impl import in inline lambda let log +syn keyword rustKeyword check claim cont const copy do else export fail +syn keyword rustKeyword for if impl import in inline lambda let log syn keyword rustKeyword loop mod mut mutable native note of prove pure -syn keyword rustKeyword resource ret self syntax to type unchecked +syn keyword rustKeyword ret self syntax to unchecked syn keyword rustKeyword unsafe use while with +" FIXME: Scoped impl's name is also fallen in this category +syn keyword rustKeyword mod iface resource class enum type nextgroup=rustIdentifier skipwhite +syn keyword rustKeyword fn nextgroup=rustFuncName skipwhite + +syn match rustIdentifier "\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" display contained +syn match rustFuncName "\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" display contained " Reserved words syn keyword rustKeyword m32 m64 m128 f80 f16 f128 class trait @@ -59,6 +65,8 @@ hi def link rustNumber Number hi def link rustBoolean Boolean hi def link rustFloat Float hi def link rustKeyword Keyword +hi def link rustIdentifier Identifier +hi def link rustFuncName Function hi def link rustComment Comment hi def link rustMacro Macro hi def link rustType Type From 94b0edc606112ddc71283bdcb5cb826dcbc3d167 Mon Sep 17 00:00:00 2001 From: Tycho Sci Date: Thu, 3 May 2012 17:02:41 +0900 Subject: [PATCH 2/5] vim: Highlight Todo in comments --- src/etc/vim/syntax/rust.vim | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/etc/vim/syntax/rust.vim b/src/etc/vim/syntax/rust.vim index 3e248f4c983..e89ad554c99 100644 --- a/src/etc/vim/syntax/rust.vim +++ b/src/etc/vim/syntax/rust.vim @@ -56,8 +56,10 @@ syn case match syn match rustCharacter "'\([^'\\]\|\\\(['nrt\\\"]\|x\x\{2}\|u\x\{4}\|U\x\{8}\)\)'" -syn region rustComment start="/\*" end="\*/" contains=rustComment -syn region rustComment start="//" skip="\\$" end="$" keepend +syn region rustComment start="/\*" end="\*/" contains=rustComment,rustTodo +syn region rustComment start="//" skip="\\$" end="$" contains=rustTodo keepend + +syn keyword rustTodo TODO FIXME XXX NB hi def link rustString String hi def link rustCharacter Character From 1e44e04a9dc0f801492ea1630d6a42e9df07af99 Mon Sep 17 00:00:00 2001 From: Tycho Sci Date: Thu, 3 May 2012 17:12:46 +0900 Subject: [PATCH 3/5] vim: Update syntax for number/float literals --- src/etc/vim/syntax/rust.vim | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/src/etc/vim/syntax/rust.vim b/src/etc/vim/syntax/rust.vim index e89ad554c99..81936b29d08 100644 --- a/src/etc/vim/syntax/rust.vim +++ b/src/etc/vim/syntax/rust.vim @@ -39,20 +39,25 @@ syn match rustItemPath "\(\w\|::\)\+" syn region rustString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ -"integer number, or floating point number without a dot and with "f". -syn case ignore -syn match rustNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>" -"hex number -syn match rustNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" -syn match rustFloat display contained "\d\+f" -"floating point number, with dot, optional exponent -syn match rustFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" -"floating point number, starting with a dot, optional exponent -syn match rustFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" -"floating point number, without dot, with exponent -syn match rustFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>" +" Number/Float literals +syn match rustNumber display "\<\d\>" +syn match rustNumber display "\<[1-9]\d\+\>" +syn match rustNumber display "\<\d\+\(u\|u8\|u16\|u32\|u64\)\>" +syn match rustNumber display "\<\d\+\(i8\|i16\|i32\|i64\)\>" -syn case match +syn match rustHexNumber display "\<0[xX]\x\+\>" +syn match rustHexNumber display "\<0[xX]\x\+_\(u\|u8\|u16\|u32\|u64\)\>" +syn match rustHexNumber display "\<0[xX]\x\+_\(i8\|i16\|i32\|i64\)\>" +syn match rustOctNumber display "\<0\o\+\>" +syn match rustOctNumber display "\<0\o\+_\(u\|u8\|u16\|u32\|u64\)\>" +syn match rustOctNumber display "\<0\o\+_\(i8\|i16\|i32\|i64\)\>" +syn match rustBinNumber display "\<0[bB][01]\+\>" +syn match rustBinNumber display "\<0[bB][01]\+_\(u\|u8\|u16\|u32\|u64\)\>" +syn match rustBinNumber display "\<0[bB][01]\+_\(i8\|i16\|i32\|i64\)\>" + +syn match rustFloat display "\.\d\+\%([eE][+-]\=\d\+\)\=\>" +syn match rustFloat display "\<\d\+[eE][+-]\=\d\+\>" +syn match rustFloat display "\<\d\+\.\d*\%([eE][+-]\=\d\+\)\=" syn match rustCharacter "'\([^'\\]\|\\\(['nrt\\\"]\|x\x\{2}\|u\x\{4}\|U\x\{8}\)\)'" @@ -61,6 +66,10 @@ syn region rustComment start="//" skip="\\$" end="$" contains=rustTodo ke syn keyword rustTodo TODO FIXME XXX NB +hi def link rustHexNumber rustNumber +hi def link rustOctNumber rustNumber +hi def link rustBinNumber rustNumber + hi def link rustString String hi def link rustCharacter Character hi def link rustNumber Number From bbf73bdfc682dd778cd0827540026477dd073c3f Mon Sep 17 00:00:00 2001 From: Tycho Sci Date: Sat, 5 May 2012 10:20:27 +0900 Subject: [PATCH 4/5] vim: Link rustTodo to Todo for highlighting --- src/etc/vim/syntax/rust.vim | 1 + 1 file changed, 1 insertion(+) diff --git a/src/etc/vim/syntax/rust.vim b/src/etc/vim/syntax/rust.vim index 81936b29d08..ef70383ddac 100644 --- a/src/etc/vim/syntax/rust.vim +++ b/src/etc/vim/syntax/rust.vim @@ -81,6 +81,7 @@ hi def link rustFuncName Function hi def link rustComment Comment hi def link rustMacro Macro hi def link rustType Type +hi def link rustTodo Todo syn sync minlines=200 syn sync maxlines=500 From 16848becaa8a1f812ba5e131cd6d4d4601f63979 Mon Sep 17 00:00:00 2001 From: Tycho Sci Date: Sat, 5 May 2012 11:43:07 +0900 Subject: [PATCH 5/5] vim: Fix syntax of number literals To follow [3.5.2.2 Number literals] in the reference manual. --- src/etc/vim/syntax/rust.vim | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/src/etc/vim/syntax/rust.vim b/src/etc/vim/syntax/rust.vim index ef70383ddac..320f04bb56d 100644 --- a/src/etc/vim/syntax/rust.vim +++ b/src/etc/vim/syntax/rust.vim @@ -39,25 +39,25 @@ syn match rustItemPath "\(\w\|::\)\+" syn region rustString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ -" Number/Float literals -syn match rustNumber display "\<\d\>" -syn match rustNumber display "\<[1-9]\d\+\>" -syn match rustNumber display "\<\d\+\(u\|u8\|u16\|u32\|u64\)\>" -syn match rustNumber display "\<\d\+\(i8\|i16\|i32\|i64\)\>" +" Number literals +syn match rustNumber display "\<[0-9][0-9_]*\>" +syn match rustNumber display "\<[0-9][0-9_]*\(u\|u8\|u16\|u32\|u64\)\>" +syn match rustNumber display "\<[0-9][0-9_]*\(i8\|i16\|i32\|i64\)\>" -syn match rustHexNumber display "\<0[xX]\x\+\>" -syn match rustHexNumber display "\<0[xX]\x\+_\(u\|u8\|u16\|u32\|u64\)\>" -syn match rustHexNumber display "\<0[xX]\x\+_\(i8\|i16\|i32\|i64\)\>" -syn match rustOctNumber display "\<0\o\+\>" -syn match rustOctNumber display "\<0\o\+_\(u\|u8\|u16\|u32\|u64\)\>" -syn match rustOctNumber display "\<0\o\+_\(i8\|i16\|i32\|i64\)\>" -syn match rustBinNumber display "\<0[bB][01]\+\>" -syn match rustBinNumber display "\<0[bB][01]\+_\(u\|u8\|u16\|u32\|u64\)\>" -syn match rustBinNumber display "\<0[bB][01]\+_\(i8\|i16\|i32\|i64\)\>" +syn match rustHexNumber display "\<0x[a-fA-F0-9_]\+\>" +syn match rustHexNumber display "\<0x[a-fA-F0-9_]\+\(u\|u8\|u16\|u32\|u64\)\>" +syn match rustHexNumber display "\<0x[a-fA-F0-9_]\+\(i8\|i16\|i32\|i64\)\>" +syn match rustBinNumber display "\<0b[01_]\+\>" +syn match rustBinNumber display "\<0b[01_]\+\(u\|u8\|u16\|u32\|u64\)\>" +syn match rustBinNumber display "\<0b[01_]\+\(i8\|i16\|i32\|i64\)\>" -syn match rustFloat display "\.\d\+\%([eE][+-]\=\d\+\)\=\>" -syn match rustFloat display "\<\d\+[eE][+-]\=\d\+\>" -syn match rustFloat display "\<\d\+\.\d*\%([eE][+-]\=\d\+\)\=" +syn match rustFloat display "\<[0-9][0-9_]*\(f\|f32\|f64\)\>" +syn match rustFloat display "\<[0-9][0-9_]*\([eE][+-]\=[0-9_]\+\)\>" +syn match rustFloat display "\<[0-9][0-9_]*\([eE][+-]\=[0-9_]\+\)\(f\|f32\|f64\)\>" +syn match rustFloat display "\<[0-9][0-9_]*\.[0-9_]\+\>" +syn match rustFloat display "\<[0-9][0-9_]*\.[0-9_]\+\(f\|f32\|f64\)\>" +syn match rustFloat display "\<[0-9][0-9_]*\.[0-9_]\+\%([eE][+-]\=[0-9_]\+\)\>" +syn match rustFloat display "\<[0-9][0-9_]*\.[0-9_]\+\%([eE][+-]\=[0-9_]\+\)\(f\|f32\|f64\)\>" syn match rustCharacter "'\([^'\\]\|\\\(['nrt\\\"]\|x\x\{2}\|u\x\{4}\|U\x\{8}\)\)'" @@ -67,7 +67,6 @@ syn region rustComment start="//" skip="\\$" end="$" contains=rustTodo ke syn keyword rustTodo TODO FIXME XXX NB hi def link rustHexNumber rustNumber -hi def link rustOctNumber rustNumber hi def link rustBinNumber rustNumber hi def link rustString String