summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--after/syntax/html.vim22
-rw-r--r--after/syntax/rust.vim2
-rw-r--r--ftdetect/polyglot.vim2
-rw-r--r--ftplugin/eelixir.vim91
-rw-r--r--ftplugin/rust.vim23
-rw-r--r--ftplugin/scala.vim1
-rw-r--r--indent/eelixir.vim72
-rw-r--r--indent/scala.vim14
-rw-r--r--syntax/eelixir.vim66
-rw-r--r--syntax/elixir.vim3
-rw-r--r--syntax/go.vim8
-rw-r--r--syntax/php.vim6
-rw-r--r--syntax/rust.vim29
13 files changed, 303 insertions, 36 deletions
diff --git a/after/syntax/html.vim b/after/syntax/html.vim
index 104642c2..8c8e7381 100644
--- a/after/syntax/html.vim
+++ b/after/syntax/html.vim
@@ -9,6 +9,28 @@ syn region coffeeScript start=#<script [^>]*type="text/coffeescript"[^>]*>#
\ end=#</script>#me=s-1 keepend
\ contains=@htmlCoffeeScript,htmlScriptTag,@htmlPreproc
\ containedin=htmlHead
+if !exists("g:less_html_style_tags")
+ let g:less_html_style_tags = 1
+endif
+
+if !g:less_html_style_tags
+ finish
+endif
+
+" Unset (but preserve) so that less will run.
+let s:pre_less_cur_syn = b:current_syntax
+unlet b:current_syntax
+
+" Inspired by code from github.com/kchmck/vim-coffee-script
+" and the html syntax file included with vim 7.4.
+
+syn include @htmlLess syntax/less.vim
+
+" We have to explicitly add to htmlHead (containedin) as that region specifies 'contains'.
+syn region lessStyle start=+<style [^>]*type *=[^>]*text/less[^>]*>+ keepend end=+</style>+ contains=@htmlLess,htmlTag,htmlEndTag,htmlCssStyleComment,@htmlPreproc containedin=htmlHead
+
+" Reset since 'less' isn't really the current_syntax.
+let b:current_syntax = s:pre_less_cur_syn
" Language: Colorful CSS Color Preview
" Author: Aristotle Pagaltzis <pagaltzis@gmx.de>
diff --git a/after/syntax/rust.vim b/after/syntax/rust.vim
index 1ab8394e..735c1e15 100644
--- a/after/syntax/rust.vim
+++ b/after/syntax/rust.vim
@@ -29,5 +29,3 @@ hi link rustNiceOperator Operator
if !exists('g:rust_conceal_mod_path')
hi! link Conceal Operator
endif
-
-setlocal conceallevel=2
diff --git a/ftdetect/polyglot.vim b/ftdetect/polyglot.vim
index 59621bdd..402804b6 100644
--- a/ftdetect/polyglot.vim
+++ b/ftdetect/polyglot.vim
@@ -14,6 +14,8 @@ autocmd BufNewFile,BufRead * call s:DetectCoffee()
au BufRead,BufNewFile *.csv,*.dat,*.tsv,*.tab set filetype=csv
autocmd BufNewFile,BufReadPost *.feature,*.story set filetype=cucumber
au BufNewFile,BufRead Dockerfile set filetype=dockerfile
+au BufRead,BufNewFile *.eex set filetype=eelixir
+au FileType eelixir setl sw=2 sts=2 et iskeyword+=!,?
au BufRead,BufNewFile *.ex,*.exs set filetype=elixir
au FileType elixir setl sw=2 sts=2 et iskeyword+=!,?
autocmd BufNewFile,BufRead *.em set filetype=ember-script
diff --git a/ftplugin/eelixir.vim b/ftplugin/eelixir.vim
new file mode 100644
index 00000000..f97291ba
--- /dev/null
+++ b/ftplugin/eelixir.vim
@@ -0,0 +1,91 @@
+" Vim filetype plugin
+" Language: Embedded Elixir
+" URL: https://github.com/elixir-lang/vim-elixir
+
+if exists("b:did_ftplugin")
+ finish
+endif
+
+let s:save_cpo = &cpo
+set cpo-=C
+
+let s:undo_ftplugin = ""
+let s:browsefilter = "All Files (*.*)\t*.*\n"
+let s:match_words = ""
+
+if !exists("g:eelixir_default_subtype")
+ let g:eelixir_default_subtype = "html"
+endif
+
+if !exists("b:eelixir_subtype")
+ let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$")
+ let b:eelixir_subtype = matchstr(s:lines,'eelixir_subtype=\zs\w\+')
+ if b:eelixir_subtype == ''
+ let b:eelixir_subtype = matchstr(&filetype,'^eex\.\zs\w\+')
+ endif
+ if b:eelixir_subtype == ''
+ let b:eelixir_subtype = matchstr(substitute(expand("%:t"),'\c\%(\.eex\|\.eelixir\)\+$','',''),'\.\zs\w\+$')
+ endif
+ if b:eelixir_subtype == 'ex'
+ let b:eelixir_subtype = 'elixir'
+ elseif b:eelixir_subtype == 'exs'
+ let b:eelixir_subtype = 'elixir'
+ elseif b:eelixir_subtype == 'yml'
+ let b:eelixir_subtype = 'yaml'
+ elseif b:eelixir_subtype == 'js'
+ let b:eelixir_subtype = 'javascript'
+ elseif b:eelixir_subtype == 'txt'
+ " Conventional; not a real file type
+ let b:eelixir_subtype = 'text'
+ elseif b:eelixir_subtype == ''
+ let b:eelixir_subtype = g:eelixir_default_subtype
+ endif
+endif
+
+if exists("b:eelixir_subtype") && b:eelixir_subtype != ''
+ exe "runtime! ftplugin/".b:eelixir_subtype.".vim ftplugin/".b:eelixir_subtype."_*.vim ftplugin/".b:eelixir_subtype."/*.vim"
+else
+ runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim
+endif
+unlet! b:did_ftplugin
+
+" Override our defaults if these were set by an included ftplugin.
+if exists("b:undo_ftplugin")
+ let s:undo_ftplugin = b:undo_ftplugin
+ unlet b:undo_ftplugin
+endif
+if exists("b:browsefilter")
+ let s:browsefilter = b:browsefilter
+ unlet b:browsefilter
+endif
+if exists("b:match_words")
+ let s:match_words = b:match_words
+ unlet b:match_words
+endif
+
+runtime! ftplugin/elixir.vim ftplugin/elixir_*.vim ftplugin/elixir/*.vim
+let b:did_ftplugin = 1
+
+" Combine the new set of values with those previously included.
+if exists("b:undo_ftplugin")
+ let s:undo_ftplugin = b:undo_ftplugin . " | " . s:undo_ftplugin
+endif
+if exists ("b:browsefilter")
+ let s:browsefilter = substitute(b:browsefilter,'\cAll Files (\*\.\*)\t\*\.\*\n','','') . s:browsefilter
+endif
+if exists("b:match_words")
+ let s:match_words = b:match_words . ',' . s:match_words
+endif
+
+" Load the combined list of match_words for matchit.vim
+if exists("loaded_matchit")
+ let b:match_words = s:match_words
+endif
+
+setlocal comments=:<%#
+setlocal commentstring=<%#\ %s\ %>
+
+let b:undo_ftplugin = "setl cms< "
+ \ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin
+
+let &cpo = s:save_cpo
diff --git a/ftplugin/rust.vim b/ftplugin/rust.vim
index 39edc1f9..09eaf62d 100644
--- a/ftplugin/rust.vim
+++ b/ftplugin/rust.vim
@@ -56,6 +56,21 @@ if exists("g:loaded_delimitMate")
let b:delimitMate_excluded_regions = delimitMate#Get("excluded_regions") . ',rustLifetimeCandidate,rustGenericLifetimeCandidate'
endif
+if has("folding") && exists('g:rust_fold') && g:rust_fold != 0
+ let b:rust_set_foldmethod=1
+ setlocal foldmethod=syntax
+ if g:rust_fold == 2
+ setlocal foldlevel<
+ else
+ setlocal foldlevel=99
+ endif
+endif
+
+if has('conceal') && exists('g:rust_conceal')
+ let b:rust_set_conceallevel=1
+ setlocal conceallevel=2
+endif
+
" Motion Commands {{{1
" Bind motion commands to support hanging indents
@@ -103,6 +118,14 @@ let b:undo_ftplugin = "
\|else
\|unlet! b:delimitMate_excluded_regions
\|endif
+ \|if exists('b:rust_set_foldmethod')
+ \|setlocal foldmethod< foldlevel<
+ \|unlet b:rust_set_foldmethod
+ \|endif
+ \|if exists('b:rust_set_conceallevel')
+ \|setlocal conceallevel<
+ \|unlet b:rust_set_conceallevel
+ \|endif
\|unlet! b:rust_last_rustc_args b:rust_last_args
\|delcommand RustRun
\|delcommand RustExpand
diff --git a/ftplugin/scala.vim b/ftplugin/scala.vim
index 18941e07..3f0de967 100644
--- a/ftplugin/scala.vim
+++ b/ftplugin/scala.vim
@@ -1,3 +1,4 @@
+setlocal formatoptions+=ro
setlocal commentstring=//%s
let &l:include = '^\s*import'
let &l:includeexpr = 'substitute(v:fname,"\\.","/","g")'
diff --git a/indent/eelixir.vim b/indent/eelixir.vim
new file mode 100644
index 00000000..7b17c104
--- /dev/null
+++ b/indent/eelixir.vim
@@ -0,0 +1,72 @@
+" Vim indent file
+" Language: Embedded Elixir
+" URL: https://github.com/elixir-lang/vim-elixir
+
+
+if exists("b:did_indent")
+ finish
+endif
+
+runtime! indent/elixir.vim
+unlet! b:did_indent
+setlocal indentexpr=
+
+if exists("b:eelixir_subtype")
+ exe "runtime! indent/".b:eelixir_subtype.".vim"
+else
+ runtime! indent/html.vim
+endif
+unlet! b:did_indent
+
+if &l:indentexpr == ''
+ if &l:cindent
+ let &l:indentexpr = 'cindent(v:lnum)'
+ else
+ let &l:indentexpr = 'indent(prevnonblank(v:lnum-1))'
+ endif
+endif
+let b:eelixir_subtype_indentexpr = &l:indentexpr
+
+let b:did_indent = 1
+
+setlocal indentexpr=GetEelixirIndent()
+setlocal indentkeys=o,O,*<Return>,<>>,{,},0),0],o,O,!^F,=end,=else,=elsif,=catch,=after,=rescue
+
+" Only define the function once.
+if exists("*GetEelixirIndent")
+ finish
+endif
+
+function! GetEelixirIndent(...)
+ if a:0 && a:1 == '.'
+ let v:lnum = line('.')
+ elseif a:0 && a:1 =~ '^\d'
+ let v:lnum = a:1
+ endif
+ let vcol = col('.')
+ call cursor(v:lnum,1)
+ let inelixir = searchpair('<%','','%>','W')
+ call cursor(v:lnum,vcol)
+ if inelixir && getline(v:lnum) !~ '^<%\|^\s*%>'
+ let ind = GetElixirIndent()
+ else
+ exe "let ind = ".b:eelixir_subtype_indentexpr
+ endif
+ let lnum = prevnonblank(v:lnum-1)
+ let line = getline(lnum)
+ let cline = getline(v:lnum)
+ if cline =~# '^\s*<%\s*\%(end\|else\|elsif\|catch\|after\|rescue\)\>.*%>'
+ let ind = ind - &sw
+ elseif line =~# '\S\s*<%\s*end\s*%>'
+ let ind = ind - &sw
+ endif
+ if line =~# '<%[=%]\=\s*.*\<do\s*%>'
+ let ind = ind + &sw
+ elseif line =~# '<%\s*\%(else\|elsif\|catch\|after\|rescue\)\>.*%>'
+ let ind = ind + &sw
+ endif
+ if cline =~# '^\s*%>\s*$'
+ let ind = ind - &sw
+ endif
+ return ind
+endfunction
diff --git a/indent/scala.vim b/indent/scala.vim
index 4053a83c..f533a514 100644
--- a/indent/scala.vim
+++ b/indent/scala.vim
@@ -36,12 +36,12 @@ endfunction
function! scala#GetLine(lnum)
let line = substitute(getline(a:lnum), '//.*$', '', '')
- let line = substitute(line, '"[^"]*"', '""', 'g')
+ let line = substitute(line, '"\(.\|\\"\)\{-}"', '""', 'g')
return line
endfunction
function! scala#CountBrackets(line, openBracket, closedBracket)
- let line = substitute(a:line, '"\(.\|\\"\)*"', '', 'g')
+ let line = substitute(a:line, '"\(.\|\\"\)\{-}"', '', 'g')
let open = substitute(line, '[^' . a:openBracket . ']', '', 'g')
let close = substitute(line, '[^' . a:closedBracket . ']', '', 'g')
return strlen(open) - strlen(close)
@@ -102,7 +102,7 @@ function! scala#CurlyMatcher()
if scala#CountParens(scala#GetLine(matchline)) < 0
let savedpos = getpos('.')
call setpos('.', [savedpos[0], matchline, 9999, savedpos[3]])
- call searchpos('{', 'Wb')
+ call searchpos('{', 'Wbc')
call searchpos(')', 'Wb')
let [lnum, colnum] = searchpairpos('(', '', ')', 'Wbn')
call setpos('.', savedpos)
@@ -133,7 +133,7 @@ function! scala#GetLineAndColumnThatMatchesBracket(openBracket, closedBracket)
call searchpos(a:closedBracket . '\ze[^' . a:closedBracket . a:openBracket . ']*' . a:openBracket, 'W')
else
call setpos('.', [savedpos[0], savedpos[1], 9999, savedpos[3]])
- call searchpos(a:closedBracket, 'Wb')
+ call searchpos(a:closedBracket, 'Wbc')
endif
let [lnum, colnum] = searchpairpos(a:openBracket, '', a:closedBracket, 'Wbn')
call setpos('.', savedpos)
@@ -382,7 +382,11 @@ function! GetScalaIndent()
let curline = scala#GetLine(curlnum)
if prevline =~ '^\s*/\*\*'
- return ind + 1
+ if prevline =~ '\*/\s*$'
+ return ind
+ else
+ return ind + 1
+ endif
endif
if curline =~ '^\s*\*'
diff --git a/syntax/eelixir.vim b/syntax/eelixir.vim
new file mode 100644
index 00000000..f3ea65d4
--- /dev/null
+++ b/syntax/eelixir.vim
@@ -0,0 +1,66 @@
+" Vim syntax file
+" Language: Embedded Elixir
+" URL: https://github.com/elixir-lang/vim-elixir
+
+if exists("b:current_syntax")
+ finish
+endif
+
+if !exists("main_syntax")
+ let main_syntax = 'eelixir'
+endif
+
+if !exists("g:eelixir_default_subtype")
+ let g:eelixir_default_subtype = "html"
+endif
+
+if !exists("b:eelixir_subtype")
+ let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$")
+ let b:eelixir_subtype = matchstr(s:lines,'eelixir_subtype=\zs\w\+')
+ if b:eelixir_subtype == ''
+ let b:eelixir_subtype = matchstr(&filetype,'^eex\.\zs\w\+')
+ endif
+ if b:eelixir_subtype == ''
+ let b:eelixir_subtype = matchstr(substitute(expand("%:t"),'\c\%(\.eex\|\.eelixir\)\+$','',''),'\.\zs\w\+$')
+ endif
+ if b:eelixir_subtype == 'ex'
+ let b:eelixir_subtype = 'elixir'
+ elseif b:eelixir_subtype == 'exs'
+ let b:eelixir_subtype = 'elixir'
+ elseif b:eelixir_subtype == 'yml'
+ let b:eelixir_subtype = 'yaml'
+ elseif b:eelixir_subtype == 'js'
+ let b:eelixir_subtype = 'javascript'
+ elseif b:eelixir_subtype == 'txt'
+ " Conventional; not a real file type
+ let b:eelixir_subtype = 'text'
+ elseif b:eelixir_subtype == ''
+ let b:eelixir_subtype = g:eelixir_default_subtype
+ endif
+endif
+
+if exists("b:eelixir_subtype") && b:eelixir_subtype != ''
+ exe "runtime! syntax/".b:eelixir_subtype.".vim"
+ unlet! b:current_syntax
+endif
+
+syn include @elixirTop syntax/elixir.vim
+
+syn cluster eelixirRegions contains=eelixirBlock,eelixirExpression,eelixirComment
+
+exe 'syn region eelixirExpression matchgroup=eelixirDelimiter start="<%" end="%\@<!%>" contains=@elixirTop containedin=ALLBUT,@eelixirRegions keepend'
+exe 'syn region eelixirExpression matchgroup=eelixirDelimiter start="<%=" end="%\@<!%>" contains=@elixirTop containedin=ALLBUT,@eelixirRegions keepend'
+exe 'syn region eelixirQuote matchgroup=eelixirDelimiter start="<%%" end="%\@<!%>" contains=@elixirTop containedin=ALLBUT,@eelixirRegions keepend'
+exe 'syn region eelixirComment matchgroup=eelixirDelimiter start="<%#" end="%\@<!%>" contains=elixirTodo,@Spell containedin=ALLBUT,@eelixirRegions keepend'
+
+" Define the default highlighting.
+
+hi def link eelixirDelimiter PreProc
+hi def link eelixirComment Comment
+
+let b:current_syntax = 'eelixir'
+
+if main_syntax == 'eelixir'
+ unlet main_syntax
+endif
+
diff --git a/syntax/elixir.vim b/syntax/elixir.vim
index 8f94ff5e..a0c8f289 100644
--- a/syntax/elixir.vim
+++ b/syntax/elixir.vim
@@ -117,7 +117,7 @@ syn keyword elixirDelegateDefine defdelegate nextgroup=elixirDelegateDec
syn keyword elixirOverridableDefine defoverridable nextgroup=elixirOverridableDeclaration skipwhite skipnl
syn keyword elixirExceptionDefine defexception nextgroup=elixirExceptionDeclaration skipwhite skipnl
syn keyword elixirCallbackDefine defcallback nextgroup=elixirCallbackDeclaration skipwhite skipnl
-syn keyword elixirStructDefine defstruct nextgroup=elixirStructDeclaration skipwhite skipnl
+syn keyword elixirStructDefine defstruct skipwhite skipnl
" Declarations
syn match elixirModuleDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias nextgroup=elixirBlock skipwhite skipnl
@@ -131,7 +131,6 @@ syn region elixirDelegateDeclaration start='\[' end='\]' contained con
syn match elixirOverridableDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias skipwhite skipnl
syn match elixirExceptionDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias skipwhite skipnl
syn match elixirCallbackDeclaration "[^[:space:];#<,()\[\]]\+" contained contains=elixirFunctionDeclaration skipwhite skipnl
-syn match elixirStructDeclaration "[^[:space:];#<]\+" contained nextgroup=elixirArguments skipwhite skipnl
syn cluster elixirDeclaration contains=elixirFunctionDeclaration,elixirModuleDeclaration,elixirProtocolDeclaration,elixirImplDeclaration,elixirRecordDeclaration,elixirMacroDeclaration,elixirDelegateDeclaration,elixirOverridableDeclaration,elixirExceptionDeclaration,elixirCallbackDeclaration,elixirStructDeclaration
diff --git a/syntax/go.vim b/syntax/go.vim
index 76377829..5aabac70 100644
--- a/syntax/go.vim
+++ b/syntax/go.vim
@@ -50,19 +50,19 @@ if !exists("go_highlight_trailing_whitespace_error")
endif
if !exists("go_highlight_operators")
- let go_highlight_operators = 1
+ let go_highlight_operators = 0
endif
if !exists("go_highlight_functions")
- let go_highlight_functions = 1
+ let go_highlight_functions = 0
endif
if !exists("go_highlight_methods")
- let go_highlight_methods = 1
+ let go_highlight_methods = 0
endif
if !exists("go_highlight_structs")
- let go_highlight_structs = 1
+ let go_highlight_structs = 0
endif
syn case match
diff --git a/syntax/php.vim b/syntax/php.vim
index 7a3eee73..475d95e7 100644
--- a/syntax/php.vim
+++ b/syntax/php.vim
@@ -3,7 +3,7 @@
"
" {{{ BLOCK: Last-modified
-" Thu, 10 Jul 2014 06:50:23 +0000, PHP 5.6.0RC2
+" Thu, 14 Aug 2014 09:05:56 +0000, PHP 5.6.0RC2
" }}}
"
@@ -182,7 +182,7 @@ endif
syn case match
if index(g:php_syntax_extensions_enabled, "core") >= 0 && index(g:php_syntax_extensions_disabled, "core") < 0 && ( ! exists("b:php_syntax_extensions_enabled") || index(b:php_syntax_extensions_enabled, "core") >= 0) && ( ! exists("b:php_syntax_extensions_disabled") || index(b:php_syntax_extensions_disabled, "core") < 0)
" Core constants
-syn keyword phpConstants DEBUG_BACKTRACE_IGNORE_ARGS DEBUG_BACKTRACE_PROVIDE_OBJECT DEFAULT_INCLUDE_PATH E_ALL E_COMPILE_ERROR E_COMPILE_WARNING E_CORE_ERROR E_CORE_WARNING E_DEPRECATED E_ERROR E_NOTICE E_PARSE E_RECOVERABLE_ERROR E_STRICT E_USER_DEPRECATED E_USER_ERROR E_USER_NOTICE E_USER_WARNING E_WARNING FALSE NULL PEAR_EXTENSION_DIR PEAR_INSTALL_DIR PHP_BINARY PHP_BINDIR PHP_CONFIG_FILE_PATH PHP_CONFIG_FILE_SCAN_DIR PHP_DATADIR PHP_DEBUG PHP_EOL PHP_EXTENSION_DIR PHP_EXTRA_VERSION PHP_INT_MAX PHP_INT_SIZE PHP_LIBDIR PHP_LOCALSTATEDIR PHP_MAJOR_VERSION PHP_MANDIR PHP_MAXPATHLEN PHP_MINOR_VERSION PHP_OS PHP_OUTPUT_HANDLER_CLEAN PHP_OUTPUT_HANDLER_CLEANABLE PHP_OUTPUT_HANDLER_CONT PHP_OUTPUT_HANDLER_DISABLED PHP_OUTPUT_HANDLER_END PHP_OUTPUT_HANDLER_FINAL PHP_OUTPUT_HANDLER_FLUSH PHP_OUTPUT_HANDLER_FLUSHABLE PHP_OUTPUT_HANDLER_REMOVABLE PHP_OUTPUT_HANDLER_START PHP_OUTPUT_HANDLER_STARTED PHP_OUTPUT_HANDLER_STDFLAGS PHP_OUTPUT_HANDLER_WRITE PHP_PREFIX PHP_RELEASE_VERSION PHP_SAPI PHP_SHLIB_SUFFIX PHP_SYSCONFDIR PHP_VERSION PHP_VERSION_ID PHP_ZTS STDERR STDIN STDOUT TRUE UPLOAD_ERR_CANT_WRITE UPLOAD_ERR_EXTENSION UPLOAD_ERR_FORM_SIZE UPLOAD_ERR_INI_SIZE UPLOAD_ERR_NO_FILE UPLOAD_ERR_NO_TMP_DIR UPLOAD_ERR_OK UPLOAD_ERR_PARTIAL ZEND_DEBUG_BUILD ZEND_THREAD_SAFE contained
+syn keyword phpConstants DEBUG_BACKTRACE_IGNORE_ARGS DEBUG_BACKTRACE_PROVIDE_OBJECT DEFAULT_INCLUDE_PATH E_ALL E_COMPILE_ERROR E_COMPILE_WARNING E_CORE_ERROR E_CORE_WARNING E_DEPRECATED E_ERROR E_NOTICE E_PARSE E_RECOVERABLE_ERROR E_STRICT E_USER_DEPRECATED E_USER_ERROR E_USER_NOTICE E_USER_WARNING E_WARNING PEAR_EXTENSION_DIR PEAR_INSTALL_DIR PHP_BINARY PHP_BINDIR PHP_CONFIG_FILE_PATH PHP_CONFIG_FILE_SCAN_DIR PHP_DATADIR PHP_DEBUG PHP_EOL PHP_EXTENSION_DIR PHP_EXTRA_VERSION PHP_INT_MAX PHP_INT_SIZE PHP_LIBDIR PHP_LOCALSTATEDIR PHP_MAJOR_VERSION PHP_MANDIR PHP_MAXPATHLEN PHP_MINOR_VERSION PHP_OS PHP_OUTPUT_HANDLER_CLEAN PHP_OUTPUT_HANDLER_CLEANABLE PHP_OUTPUT_HANDLER_CONT PHP_OUTPUT_HANDLER_DISABLED PHP_OUTPUT_HANDLER_END PHP_OUTPUT_HANDLER_FINAL PHP_OUTPUT_HANDLER_FLUSH PHP_OUTPUT_HANDLER_FLUSHABLE PHP_OUTPUT_HANDLER_REMOVABLE PHP_OUTPUT_HANDLER_START PHP_OUTPUT_HANDLER_STARTED PHP_OUTPUT_HANDLER_STDFLAGS PHP_OUTPUT_HANDLER_WRITE PHP_PREFIX PHP_RELEASE_VERSION PHP_SAPI PHP_SHLIB_SUFFIX PHP_SYSCONFDIR PHP_VERSION PHP_VERSION_ID PHP_ZTS STDERR STDIN STDOUT UPLOAD_ERR_CANT_WRITE UPLOAD_ERR_EXTENSION UPLOAD_ERR_FORM_SIZE UPLOAD_ERR_INI_SIZE UPLOAD_ERR_NO_FILE UPLOAD_ERR_NO_TMP_DIR UPLOAD_ERR_OK UPLOAD_ERR_PARTIAL ZEND_DEBUG_BUILD ZEND_THREAD_SAFE contained
endif
if index(g:php_syntax_extensions_enabled, "curl") >= 0 && index(g:php_syntax_extensions_disabled, "curl") < 0 && ( ! exists("b:php_syntax_extensions_enabled") || index(b:php_syntax_extensions_enabled, "curl") >= 0) && ( ! exists("b:php_syntax_extensions_disabled") || index(b:php_syntax_extensions_disabled, "curl") < 0)
" curl constants
@@ -586,7 +586,7 @@ if !exists("php_ignore_phpdoc") || !php_ignore_phpdoc
syn region phpCommentTitle contained matchgroup=phpDocComment start="/\*\*" matchgroup=phpCommmentTitle keepend end="\.$" end="\.[ \t\r<&]"me=e-1 end="[^{]@"me=s-2,he=s-1 end="\*/"me=s-1,he=s-1 contains=phpCommentStar,phpTodo,phpDocTags,@Spell containedin=phpDocComment
syn region phpDocTags start="{@\(example\|id\|internal\|inheritdoc\|link\|source\|toc\|tutorial\)" end="}" containedin=phpDocComment
- syn match phpDocTags "@\%(abstract\|access\|author\|category\|copyright\|deprecated\|example\|exception\|filesource\|final\|global\|id\|ignore\|inheritdoc\|internal\|license\|link\|magic\|method\|name\|package\|param\|property\|return\|see\|since\|source\|static\|staticvar\|subpackage\|throws\|toc\|todo\|tutorial\|uses\|var\|version\)" containedin=phpDocComment nextgroup=phpDocParam,phpDocIdentifier skipwhite
+ syn match phpDocTags "@\%(abstract\|access\|api\|author\|brief\|bug\|category\|class\|copyright\|created\|date\|deprecated\|details\|example\|exception\|file\|filesource\|final\|global\|id\|ignore\|inheritdoc\|internal\|license\|link\|magic\|method\|name\|package\|param\|property\|return\|see\|since\|source\|static\|staticvar\|struct\|subpackage\|throws\|toc\|todo\|tutorial\|type\|uses\|var\|version\|warning\)" containedin=phpDocComment nextgroup=phpDocParam,phpDocIdentifier skipwhite
syn match phpDocParam "\s\+\zs\%(\h\w*|\?\)\+" nextgroup=phpDocIdentifier skipwhite
syn match phpDocIdentifier "\s\+\zs$\h\w*"
diff --git a/syntax/rust.vim b/syntax/rust.vim
index d8330b84..6ee610d9 100644
--- a/syntax/rust.vim
+++ b/syntax/rust.vim
@@ -11,17 +11,6 @@ elseif exists("b:current_syntax")
finish
endif
-" Fold settings {{{1
-
-if has("folding") && exists('g:rust_fold') && g:rust_fold != 0
- setlocal foldmethod=syntax
- if g:rust_fold == 2
- setlocal foldlevel<
- else
- setlocal foldlevel=99
- endif
-endif
-
" Syntax definitions {{{1
" Basic keywords {{{2
syn keyword rustConditional match if else
@@ -37,7 +26,7 @@ syn keyword rustKeyword fn nextgroup=rustFuncName skipwhite skipempty
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 unsafe virtual where while
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
@@ -95,7 +84,7 @@ syn keyword rustEnumVariant Ok Err
syn keyword rustTrait Ascii AsciiCast OwnedAsciiCast AsciiStr
syn keyword rustTrait IntoBytes
syn keyword rustTrait ToCStr
-syn keyword rustTrait Char
+syn keyword rustTrait Char UnicodeChar
syn keyword rustTrait Clone
syn keyword rustTrait PartialEq PartialOrd Eq Ord Equiv
syn keyword rustEnum Ordering
@@ -113,18 +102,18 @@ syn keyword rustTrait Box
syn keyword rustTrait GenericPath Path PosixPath WindowsPath
syn keyword rustTrait RawPtr
syn keyword rustTrait Buffer Writer Reader Seek
-syn keyword rustTrait Str StrVector StrSlice OwnedStr
-syn keyword rustTrait IntoMaybeOwned StrAllocating
+syn keyword rustTrait Str StrVector StrSlice
+syn keyword rustTrait IntoMaybeOwned StrAllocating UnicodeStrSlice
syn keyword rustTrait ToString IntoStr
syn keyword rustTrait Tuple1 Tuple2 Tuple3 Tuple4
syn keyword rustTrait Tuple5 Tuple6 Tuple7 Tuple8
syn keyword rustTrait Tuple9 Tuple10 Tuple11 Tuple12
syn keyword rustTrait CloneableVector ImmutableCloneableVector
-syn keyword rustTrait MutableCloneableVector MutableOrdVector
-syn keyword rustTrait ImmutableVector MutableVector
-syn keyword rustTrait ImmutableEqVector ImmutableOrdVector
-syn keyword rustTrait Vector VectorVector
-syn keyword rustTrait MutableVectorAllocating
+syn keyword rustTrait MutableCloneableSlice MutableOrdSlice
+syn keyword rustTrait ImmutableSlice MutableSlice
+syn keyword rustTrait ImmutablePartialEqSlice ImmutableOrdSlice
+syn keyword rustTrait Slice VectorVector
+syn keyword rustTrait MutableSliceAllocating
syn keyword rustTrait String
syn keyword rustTrait Vec