Skip to content

Commit

Permalink
added rust, updated bundles, passable rspec stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
cfeduke committed Jan 4, 2013
1 parent 7981dcd commit f140e68
Show file tree
Hide file tree
Showing 3 changed files with 163 additions and 9 deletions.
145 changes: 145 additions & 0 deletions syntax/rust.vim
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
" Vim syntax file
" Language: Rust
" Maintainer: Patrick Walton <pcwalton@mozilla.com>
" Maintainer: Ben Blum <bblum@cs.cmu.edu>
" Last Change: 2012 Dec 14

if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif

syn match rustAssert "\<assert\(\w\)*"
syn keyword rustKeyword as break
syn keyword rustKeyword const copy do drop else export extern fail
syn keyword rustKeyword for if impl let log
syn keyword rustKeyword loop match mod move mut once priv pure
syn match rustKeyword "\<pub\>"
syn keyword rustKeyword ref return static
syn match rustKeyword "\<unsafe\>" " Allows also matching unsafe::foo()
syn keyword rustKeyword 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 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

syn keyword rustType int uint float char bool u8 u16 u32 u64 f32
syn keyword rustType f64 i8 i16 i32 i64 str
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 Add Sub Mul Div Modulo Neg BitAnd BitOr BitXor
syn keyword rustTrait 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 contains=rustAssert
syn match rustFuncCall "\w\(\w\)*::<"he=e-3,me=e-3 contains=rustAssert " 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\)\>"

syn match rustCharacter "'\([^'\\]\|\\\(['nrt\\\"]\|x\x\{2}\|u\x\{4}\|U\x\{8}\)\)'"

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 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 rustAssert Keyword
hi def link rustKeyword Keyword
hi def link rustIdentifier Identifier
hi def link rustModPath Include
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
hi def link rustAttribute PreProc

" Other Suggestions:
" hi rustAssert ctermfg=yellow
" hi rustMacro ctermfg=magenta

syn sync minlines=200
syn sync maxlines=500

let b:current_syntax = "rust"
3 changes: 1 addition & 2 deletions update_bundles.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,8 @@
"git://github.com/wincent/Command-T.git",
"git://github.com/sjl/gundo.vim.git",
"git://github.com/godlygeek/tabular.git",
"git://github.com/rson/vim-conque.git",
"git://github.com/skwp/vim-ruby-conque.git",
"git://github.com/vim-scripts/vim-creole.git",
"git://github.com/sebastiangeiger/sweet-rspec-vim.git",
]

vim_org_scripts = [
Expand Down
24 changes: 17 additions & 7 deletions vimrc
Original file line number Diff line number Diff line change
Expand Up @@ -274,13 +274,23 @@ nmap <leader>vrc :tabedit $MYVIMRC<CR>
" undo trees
nnoremap <F4> :GundoToggle<CR>
" rspec
" Cmd-Shift-R for RSpec
nmap <silent> <D-R> :call RunRspecCurrentFileConque()<CR>
" Cmd-Shift-L for RSpec Current Line
nmap <silent> <D-L> :call RunRspecCurrentLineConque()<CR>
" ,Cmd-R for Last conque command
nmap <silent> <leader><D-R> :call RunLastConqueCommand()<CR>
for f in split(glob('~/.vim/scripts/*.vim'), '\n')
exe 'source' f
endfor

" textmate like CMD+L inserts =>
inoremap <C-l> =>
" rspec
if has("gui_running")
set macmeta
endif
let $SWEET_VIM_RSPEC_SHOW_PASSING="false"
map <D-r> :SweetVimRspecRunFile<CR> "(CMD-r) or (Apple-r)
imap <D-r> <ESC>:SweetVimRspecRunFile<CR> "(CMD-r) or (Apple-r)
map <D-R> :SweetVimRspecRunFocused<CR> "(SHIFT-CMD-r)
imap <D-R> <ESC>:SweetVimRspecRunFocused<CR> "(SHIFT-CMD-r)
map <M-D-r> :SweetVimRspecRunPrevious<CR>
imap <M-D-r> <ESC>:SweetVimRspecRunPrevious<CR>
"highlight RSpecFailed guibg=#671d1a
"highlight RSpecPending guibg=#54521a

0 comments on commit f140e68

Please sign in to comment.