diff options
author | Jesse Luehrs <doy@tozt.net> | 2013-04-11 17:35:07 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2013-04-11 19:04:23 -0500 |
commit | bd7be041069f5124a69e98fd00ad3d94d960adae (patch) | |
tree | 01e7215f82733055a545b478cb2bf76fc6268ee7 /vim | |
parent | 39290e3d5edcab547ee958ee5751721eddea1ebf (diff) | |
download | conf-bd7be041069f5124a69e98fd00ad3d94d960adae.tar.gz conf-bd7be041069f5124a69e98fd00ad3d94d960adae.zip |
copy over the vim plugin for rust
Diffstat (limited to 'vim')
-rw-r--r-- | vim/bundle/rust/after/ftplugin/rust.vim | 5 | ||||
-rw-r--r-- | vim/bundle/rust/after/syntax/rust.vim | 37 | ||||
-rw-r--r-- | vim/bundle/rust/ftdetect/rust.vim | 1 | ||||
-rw-r--r-- | vim/bundle/rust/indent/rust.vim | 8 | ||||
-rw-r--r-- | vim/bundle/rust/syntax/rust.vim | 155 |
5 files changed, 206 insertions, 0 deletions
diff --git a/vim/bundle/rust/after/ftplugin/rust.vim b/vim/bundle/rust/after/ftplugin/rust.vim new file mode 100644 index 0000000..f0f1c85 --- /dev/null +++ b/vim/bundle/rust/after/ftplugin/rust.vim @@ -0,0 +1,5 @@ +"Highlight the 100th text column +"Feature became available in v7.3 +if version >= 703 + set colorcolumn=100 +endif diff --git a/vim/bundle/rust/after/syntax/rust.vim b/vim/bundle/rust/after/syntax/rust.vim new file mode 100644 index 0000000..58a623c --- /dev/null +++ b/vim/bundle/rust/after/syntax/rust.vim @@ -0,0 +1,37 @@ +if exists('g:no_rust_conceal') || !has('conceal') || &enc != 'utf-8' + finish +endif + +" For those who don't want to see `::`... +if exists('g:rust_conceal_mod_path') + syn match rustNiceOperator "::" conceal cchar=ㆍ +endif + +syn match rustRightArrowHead contained ">" conceal cchar= +syn match rustRightArrowTail contained "-" conceal cchar=⟶ +syn match rustNiceOperator "->" contains=rustRightArrowHead,rustRightArrowTail + +syn match rustLeftRightArrowHead contained ">" conceal cchar= +syn match rustLeftRightArrowTail contained "<-" conceal cchar=⟷ +syn match rustNiceOperator "<->" contains=rustLeftRightArrowHead,rustLeftRightArrowTail + +syn match rustFatRightArrowHead contained ">" conceal cchar= +syn match rustFatRightArrowTail contained "=" conceal cchar=⟹ +syn match rustNiceOperator "=>" contains=rustFatRightArrowHead,rustFatRightArrowTail + +syn match rustNiceOperator /\<\@!_\(_*\>\)\@=/ conceal cchar=′ + +" For those who don't want to see `pub`... +if exists('g:rust_conceal_pub') + syn match rustPublicSigil contained "pu" conceal cchar=* + syn match rustPublicRest contained "b" conceal cchar= + syn match rustNiceOperator "pub " contains=rustPublicSigil,rustPublicRest +endif + +hi link rustNiceOperator Operator + +if !exists('g:rust_conceal_mod_path') + hi! link Conceal Operator +endif + +setlocal conceallevel=2 diff --git a/vim/bundle/rust/ftdetect/rust.vim b/vim/bundle/rust/ftdetect/rust.vim new file mode 100644 index 0000000..10b6162 --- /dev/null +++ b/vim/bundle/rust/ftdetect/rust.vim @@ -0,0 +1 @@ +au BufRead,BufNewFile *.rs,*.rc set filetype=rust diff --git a/vim/bundle/rust/indent/rust.vim b/vim/bundle/rust/indent/rust.vim new file mode 100644 index 0000000..43fd917 --- /dev/null +++ b/vim/bundle/rust/indent/rust.vim @@ -0,0 +1,8 @@ +" Vim indent file + +if exists("b:did_indent") + finish +endif + +let b:did_indent = 1 +setlocal smartindent diff --git a/vim/bundle/rust/syntax/rust.vim b/vim/bundle/rust/syntax/rust.vim new file mode 100644 index 0000000..3e6c11c --- /dev/null +++ b/vim/bundle/rust/syntax/rust.vim @@ -0,0 +1,155 @@ +" Vim syntax file +" Language: Rust +" Maintainer: Patrick Walton <pcwalton@mozilla.com> +" Maintainer: Ben Blum <bblum@cs.cmu.edu> +" Last Change: 2012 Dec 25 + +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +syn keyword rustConditional match if else +syn keyword rustOperator as + +syn keyword rustKeyword break copy do drop extern +syn keyword rustKeyword for if impl let log +syn keyword rustKeyword copy do drop extern +syn keyword rustKeyword for impl let log +syn keyword rustKeyword loop mod once priv pub +syn keyword rustKeyword return +syn keyword rustKeyword unsafe use while +" FIXME: Scoped impl's name is also fallen in this category +syn keyword rustKeyword mod trait struct enum type nextgroup=rustIdentifier skipwhite +syn keyword rustKeyword fn nextgroup=rustFuncName skipwhite +syn keyword rustStorage const mut ref static + +syn match rustIdentifier contains=rustIdentifierPrime "\%([^[: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 be + +syn keyword rustType int uint float char bool u8 u16 u32 u64 f32 +syn keyword rustType f64 i8 i16 i32 i64 str Self +syn keyword rustType Option Either + +" Types from libc +syn keyword rustType c_float c_double c_void FILE fpos_t +syn keyword rustType DIR dirent +syn keyword rustType c_char c_schar c_uchar +syn keyword rustType c_short c_ushort c_int c_uint c_long c_ulong +syn keyword rustType size_t ptrdiff_t clock_t time_t +syn keyword rustType c_longlong c_ulonglong intptr_t uintptr_t +syn keyword rustType off_t dev_t ino_t pid_t mode_t ssize_t + +syn keyword rustTrait Const Copy Send Owned " inherent traits +syn keyword rustTrait Eq Ord Num Ptr +syn keyword rustTrait Drop Add Sub Mul Div Modulo Neg BitAnd BitOr +syn keyword rustTrait BitXor Shl Shr Index + +syn keyword rustSelf self +syn keyword rustBoolean true false + +syn keyword rustConstant Some None " option +syn keyword rustConstant Left Right " either +syn keyword rustConstant Ok Err " result +syn keyword rustConstant Success Failure " task +syn keyword rustConstant Cons Nil " list +" syn keyword rustConstant empty node " tree + +" Constants from libc +syn keyword rustConstant EXIT_FAILURE EXIT_SUCCESS RAND_MAX +syn keyword rustConstant EOF SEEK_SET SEEK_CUR SEEK_END _IOFBF _IONBF +syn keyword rustConstant _IOLBF BUFSIZ FOPEN_MAX FILENAME_MAX L_tmpnam +syn keyword rustConstant TMP_MAX O_RDONLY O_WRONLY O_RDWR O_APPEND O_CREAT +syn keyword rustConstant O_EXCL O_TRUNC S_IFIFO S_IFCHR S_IFBLK S_IFDIR +syn keyword rustConstant S_IFREG S_IFMT S_IEXEC S_IWRITE S_IREAD S_IRWXU +syn keyword rustConstant S_IXUSR S_IWUSR S_IRUSR F_OK R_OK W_OK X_OK +syn keyword rustConstant STDIN_FILENO STDOUT_FILENO STDERR_FILENO + +" 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 rustModPathSep "::" + +syn match rustFuncCall "\w\(\w\)*("he=e-1,me=e-1 +syn match rustFuncCall "\w\(\w\)*::<"he=e-3,me=e-3 " foo::<T>(); + +syn match rustMacro '\w\(\w\)*!' +syn match rustMacro '#\w\(\w\)*' + +syn match rustFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlLjzt]\|ll\|hh\)\=\([aAbdiuoxXDOUfFeEgGcCsSpn?]\|\[\^\=.[^]]*\]\)" contained +syn match rustFormat display "%%" contained +syn region rustString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=rustTodo,rustFormat + +syn region rustAttribute start="#\[" end="\]" contains=rustString + +" 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 "\<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 "\<[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\)\>" + +"rustLifetime must appear before rustCharacter, or chars will get the lifetime highlighting +syn match rustLifetime display "\'\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" +syn match rustCharacter "'\([^'\\]\|\\\(['nrt\\\"]\|x\x\{2}\|u\x\{4}\|U\x\{8}\)\)'" + +syn region rustCommentDoc start="/\*[\*!]" end="\*/" +syn region rustCommentDoc start="//[/!]" skip="\\$" end="$" keepend +syn match rustComment "/\*\*/" +syn region rustComment start="/\*\([^\*!]\|$\)" end="\*/" contains=rustTodo +syn region rustComment start="//\([^/!]\|$\)" skip="\\$" end="$" contains=rustTodo keepend + +syn keyword rustTodo contained TODO FIXME XXX NB + +hi def link rustHexNumber rustNumber +hi def link rustBinNumber rustNumber +hi def link rustIdentifierPrime rustIdentifier +hi def link rustTrait rustType + +hi def link rustFormat Special +hi def link rustString String +hi def link rustCharacter Character +hi def link rustNumber Number +hi def link rustBoolean Boolean +hi def link rustConstant Constant +hi def link rustSelf Constant +hi def link rustFloat Float +hi def link rustOperator Operator +hi def link rustKeyword Keyword +hi def link rustConditional Conditional +hi def link rustIdentifier Identifier +hi def link rustModPath Include +hi def link rustFuncName Function +hi def link rustCommentDoc SpecialComment +hi def link rustComment Comment +hi def link rustMacro Macro +hi def link rustType Type +hi def link rustTodo Todo +hi def link rustAttribute PreProc +hi def link rustStorage StorageClass +hi def link rustLifetime Special + +" Other Suggestions: +" hi rustMacro ctermfg=magenta + +syn sync minlines=200 +syn sync maxlines=500 + +let b:current_syntax = "rust" |