summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2014-03-01 00:15:51 +0100
committerAdam Stankiewicz <sheerun@sher.pl>2014-03-01 00:15:51 +0100
commit9b3b092d15503ed70ea4bf60c4e1345b196c3677 (patch)
tree45fdb6e08c380ab8bfe0988c66b15ab014688a55
parent959a2ffa3ddf3a716b37e15d0034546236a97957 (diff)
downloadvim-polyglot-9b3b092d15503ed70ea4bf60c4e1345b196c3677.tar.gz
vim-polyglot-9b3b092d15503ed70ea4bf60c4e1345b196c3677.zip
Update
-rw-r--r--after/syntax/tex.vim5
-rw-r--r--autoload/clojurecomplete.vim2
-rw-r--r--ftdetect/polyglot.vim3
-rw-r--r--ftplugin/clojure.vim17
-rw-r--r--ftplugin/csv.vim4
-rw-r--r--ftplugin/latex-box/common.vim2
-rw-r--r--ftplugin/latex-box/complete.vim80
-rw-r--r--ftplugin/latex-box/mappings.vim4
-rw-r--r--ftplugin/ruby.vim1
-rw-r--r--ftplugin/scala.vim24
-rw-r--r--indent/clojure.vim89
-rw-r--r--indent/scala.vim2
-rw-r--r--syntax/clojure.vim9
-rw-r--r--syntax/elixir.vim30
-rw-r--r--syntax/html.vim1
-rw-r--r--syntax/markdown.vim6
-rw-r--r--syntax/mustache.vim2
-rw-r--r--syntax/perl.vim6
-rw-r--r--syntax/php.vim17
-rw-r--r--syntax/ruby.vim7
-rw-r--r--syntax/rust.vim23
-rw-r--r--syntax/scala.vim2
-rw-r--r--syntax/slim.vim3
-rw-r--r--syntax/stylus.vim4
24 files changed, 202 insertions, 141 deletions
diff --git a/after/syntax/tex.vim b/after/syntax/tex.vim
index b11207dc..e096ed46 100644
--- a/after/syntax/tex.vim
+++ b/after/syntax/tex.vim
@@ -2,3 +2,8 @@
" \Cref, \cref, \cpageref, \labelcref, \labelcpageref
syn region texRefZone matchgroup=texStatement start="\\Cref{" end="}\|%stopzone\>" contains=@texRefGroup
syn region texRefZone matchgroup=texStatement start="\\\(label\|\)c\(page\|\)ref{" end="}\|%stopzone\>" contains=@texRefGroup
+
+" adds support for listings package
+syn region texZone start="\\begin{lstlisting}" end="\\end{lstlisting}\|%stopzone\>"
+syn region texZone start="\\lstinputlisting" end="{\s*[a-zA-Z/.0-9_^]\+\s*}"
+syn match texInputFile "\\lstinline\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt
diff --git a/autoload/clojurecomplete.vim b/autoload/clojurecomplete.vim
index c9f8af90..5a41f236 100644
--- a/autoload/clojurecomplete.vim
+++ b/autoload/clojurecomplete.vim
@@ -15,7 +15,7 @@ function! clojurecomplete#Complete(findstart, base)
if a:findstart
return searchpos('\<', 'bnW', line('.'))[1] - 1
else
- return { 'words': filter(copy(s:words), 'v:val =~ "\\V\\^' . a:base . '"') }
+ return { 'words': filter(copy(s:words), 'v:val =~# "\\V\\^' . a:base . '"') }
endif
endfunction
diff --git a/ftdetect/polyglot.vim b/ftdetect/polyglot.vim
index 62821fce..7157e3cd 100644
--- a/ftdetect/polyglot.vim
+++ b/ftdetect/polyglot.vim
@@ -88,7 +88,7 @@ au BufRead,BufNewFile /etc/nginx/*,/usr/local/nginx/*,*/nginx/vhosts.d/*,nginx.c
autocmd BufNewFile,BufRead *.proto setfiletype proto
au BufRead,BufNewFile *.pp set filetype=puppet
au BufNewFile,BufRead *.rb,*.rbw,*.gemspec set filetype=ruby
-au BufNewFile,BufRead *.builder,*.rxml,*.rjs set filetype=ruby
+au BufNewFile,BufRead *.builder,*.rxml,*.rjs,*.ruby set filetype=ruby
au BufNewFile,BufRead [rR]akefile,*.rake set filetype=ruby
au BufNewFile,BufRead [rR]antfile,*.rant set filetype=ruby
au BufNewFile,BufRead .irbrc,irbrc set filetype=ruby
@@ -108,6 +108,7 @@ au BufNewFile,BufRead *.jbuilder set filetype=ruby
au BufNewFile,BufRead Puppetfile set filetype=ruby
au BufNewFile,BufRead [Bb]uildfile set filetype=ruby
au BufNewFile,BufRead Appraisals set filetype=ruby
+au BufNewFile,BufRead Podfile,*.podspec set filetype=ruby
au BufRead,BufNewFile *.rs set filetype=rust
au BufRead,BufNewFile *.sbt set filetype=sbt
fun! s:DetectScala()
diff --git a/ftplugin/clojure.vim b/ftplugin/clojure.vim
index b46b9c80..2741a3a1 100644
--- a/ftplugin/clojure.vim
+++ b/ftplugin/clojure.vim
@@ -15,7 +15,7 @@ let b:did_ftplugin = 1
let s:cpo_save = &cpo
set cpo&vim
-let b:undo_ftplugin = 'setlocal iskeyword< define< formatoptions< comments< commentstring<'
+let b:undo_ftplugin = 'setlocal iskeyword< define< formatoptions< comments< commentstring< lispwords<'
setlocal iskeyword+=?,-,*,!,+,/,=,<,>,.,:,$
@@ -30,6 +30,21 @@ setlocal formatoptions-=t
setlocal comments=n:;
setlocal commentstring=;\ %s
+" Specially indented symbols from clojure.core and clojure.test.
+"
+" Clojure symbols are indented in the defn style when they:
+"
+" * Define vars and anonymous functions
+" * Create new lexical scopes or scopes with altered environments
+" * Create conditional branches from a predicate function or value
+"
+" The arglists for these functions are generally in the form of [x & body];
+" Functions that accept a flat list of forms do not treat the first argument
+" specially and hence are not indented specially.
+"
+" Generated from https://github.com/guns/vim-clojure-static/blob/%%RELEASE_TAG%%/clj/src/vim_clojure_static/generate.clj
+setlocal lispwords=as->,binding,bound-fn,case,catch,cond->,cond->>,condp,def,definline,definterface,defmacro,defmethod,defmulti,defn,defn-,defonce,defprotocol,defrecord,defstruct,deftest,deftest-,deftype,doall,dorun,doseq,dotimes,doto,extend,extend-protocol,extend-type,fn,for,if,if-let,if-not,let,letfn,locking,loop,ns,proxy,reify,set-test,testing,when,when-first,when-let,when-not,while,with-bindings,with-in-str,with-local-vars,with-open,with-precision,with-redefs,with-redefs-fn,with-test
+
" Provide insert mode completions for special forms and clojure.core. As
" 'omnifunc' is set by popular Clojure REPL client plugins, we also set
" 'completefunc' so that the user has some form of completion available when
diff --git a/ftplugin/csv.vim b/ftplugin/csv.vim
index 95058edd..82ef430e 100644
--- a/ftplugin/csv.vim
+++ b/ftplugin/csv.vim
@@ -11,10 +11,10 @@
" though, implementation differs.
" Plugin folklore "{{{2
-if v:version < 700 || exists('b:did_csv_ftplugin')
+if v:version < 700 || exists('b:did_ftplugin')
finish
endif
-let b:did_csv_ftplugin = 1
+let b:did_ftplugin = 1
let s:cpo_save = &cpo
set cpo&vim
diff --git a/ftplugin/latex-box/common.vim b/ftplugin/latex-box/common.vim
index e132e22b..72a6ef0f 100644
--- a/ftplugin/latex-box/common.vim
+++ b/ftplugin/latex-box/common.vim
@@ -102,7 +102,7 @@ function! LatexBox_GetMainTexFile()
endfor
" 3. scan current file for "\begin{document}"
- if &filetype == 'tex' && search('\C\\begin\_\s*{document}', 'nw') != 0
+ if &filetype == 'tex' && search('\m\C\\begin\_\s*{document}', 'nw') != 0
return expand('%:p')
endif
diff --git a/ftplugin/latex-box/complete.vim b/ftplugin/latex-box/complete.vim
index 3b47a2f3..866ffc3c 100644
--- a/ftplugin/latex-box/complete.vim
+++ b/ftplugin/latex-box/complete.vim
@@ -106,13 +106,13 @@ function! LatexBox_Complete(findstart, base)
endwhile
let line_start = line[:pos-1]
- if line_start =~ '\C\\begin\_\s*{$'
+ if line_start =~ '\m\C\\begin\_\s*{$'
let s:completion_type = 'begin'
- elseif line_start =~ '\C\\end\_\s*{$'
+ elseif line_start =~ '\m\C\\end\_\s*{$'
let s:completion_type = 'end'
- elseif line_start =~ g:LatexBox_ref_pattern . '$'
+ elseif line_start =~ '\m' . g:LatexBox_ref_pattern . '$'
let s:completion_type = 'ref'
- elseif line_start =~ g:LatexBox_cite_pattern . '$'
+ elseif line_start =~ '\m' . g:LatexBox_cite_pattern . '$'
let s:completion_type = 'bib'
" check for multiple citations
let pos = col('.') - 1
@@ -369,7 +369,7 @@ function! s:ExtractLabels()
continue
endif
- if 0 == search( '{\w*{', 'ce', lblline )
+ if 0 == search( '\m{\w*{', 'ce', lblline )
let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' )
continue
endif
@@ -382,7 +382,7 @@ function! s:ExtractLabels()
endif
let curnumber = strpart( getline( lblline ), numberbegin, numberend - numberbegin - 1 )
- if 0 == search( '\w*{', 'ce', lblline )
+ if 0 == search( '\m\w*{', 'ce', lblline )
let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' )
continue
endif
@@ -755,6 +755,70 @@ function! s:PromptEnvWrapSelection(...)
endfunction
" }}}
+" List Labels with Prompt {{{
+function! s:PromptLabelList(...)
+ " Check if window already exists
+ let winnr = bufwinnr(bufnr('LaTeX Labels'))
+ if winnr >= 0
+ if a:0 == 0
+ silent execute winnr . 'wincmd w'
+ else
+ " Supplying an argument to this function causes toggling instead
+ " of jumping to the labels window
+ if g:LatexBox_split_resize
+ silent exe "set columns-=" . g:LatexBox_split_width
+ endif
+ silent execute 'bwipeout' . bufnr('LaTeX Labels')
+ endif
+ return
+ endif
+
+ " Get label suggestions
+ let regexp = input('filter labels with regexp: ', '')
+ let labels = s:CompleteLabels(regexp)
+
+ let calling_buf = bufnr('%')
+
+ " Create labels window and set local settings
+ if g:LatexBox_split_resize
+ silent exe "set columns+=" . g:LatexBox_split_width
+ endif
+ silent exe g:LatexBox_split_side g:LatexBox_split_width . 'vnew LaTeX\ Labels'
+ let b:toc = []
+ let b:toc_numbers = 1
+ let b:calling_win = bufwinnr(calling_buf)
+ setlocal filetype=latextoc
+
+ " Add label entries and jump to the closest section
+ for entry in labels
+ let number = matchstr(entry['menu'], '^\s*(\zs[^)]\+\ze)')
+ let page = matchstr(entry['menu'], '^[^)]*)\s*\[\zs[^]]\+\ze\]')
+ let e = {'file': bufname(calling_buf),
+ \ 'level': 'label',
+ \ 'number': number,
+ \ 'text': entry['abbr'],
+ \ 'page': page}
+ call add(b:toc, e)
+ if b:toc_numbers
+ call append('$', e['number'] . "\t" . e['text'])
+ else
+ call append('$', e['text'])
+ endif
+ endfor
+ if !g:LatexBox_toc_hidehelp
+ call append('$', "")
+ call append('$', "<Esc>/q: close")
+ call append('$', "<Space>: jump")
+ call append('$', "<Enter>: jump and close")
+ call append('$', "s: hide numbering")
+ endif
+ 0delete _
+
+ " Lock buffer
+ setlocal nomodifiable
+endfunction
+" }}}
+
" Change Environment {{{
function! s:ChangeEnvPrompt()
@@ -858,4 +922,8 @@ nnoremap <silent> <Plug>LatexChangeEnv :call <SID>ChangeEnvPrompt()<CR>
nnoremap <silent> <Plug>LatexToggleStarEnv :call <SID>LatexToggleStarEnv()<CR>
" }}}
+" Commands {{{
+command! LatexLabels call <SID>PromptLabelList()
+" }}}
+
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/ftplugin/latex-box/mappings.vim b/ftplugin/latex-box/mappings.vim
index 509f5f19..6ff621c1 100644
--- a/ftplugin/latex-box/mappings.vim
+++ b/ftplugin/latex-box/mappings.vim
@@ -23,6 +23,10 @@ map <buffer> <LocalLeader>lv :LatexView<CR>
map <silent> <buffer> <LocalLeader>lt :LatexTOC<CR>
" }}}
+" List of labels {{{
+map <silent> <buffer> <LocalLeader>lj :LatexLabels<CR>
+" }}}
+
" Jump to match {{{
if !exists('g:LatexBox_loaded_matchparen')
nmap <buffer> % <Plug>LatexBox_JumpToMatch
diff --git a/ftplugin/ruby.vim b/ftplugin/ruby.vim
index 9630a940..a8ef8866 100644
--- a/ftplugin/ruby.vim
+++ b/ftplugin/ruby.vim
@@ -34,6 +34,7 @@ if exists("loaded_matchit") && !exists("b:match_words")
let b:match_skip =
\ "synIDattr(synID(line('.'),col('.'),0),'name') =~ '" .
\ "\\<ruby\\%(String\\|StringDelimiter\\|ASCIICode\\|Escape\\|" .
+ \ "Regexp\\|RegexpDelimiter\\|" .
\ "Interpolation\\|NoInterpolation\\|Comment\\|Documentation\\|" .
\ "ConditionalModifier\\|RepeatModifier\\|OptionalDo\\|" .
\ "Function\\|BlockArgument\\|KeywordAsMethod\\|ClassVariable\\|" .
diff --git a/ftplugin/scala.vim b/ftplugin/scala.vim
index b042d4d3..18941e07 100644
--- a/ftplugin/scala.vim
+++ b/ftplugin/scala.vim
@@ -168,3 +168,27 @@ let g:tagbar_type_scala = {
\ 'case class' : 'r'
\ }
\ }
+
+function! s:CreateOrExpression(keywords)
+ return '('.join(a:keywords, '|').')'
+endfunction
+
+function! s:NextSection(backwards)
+ if a:backwards
+ let dir = '?'
+ else
+ let dir = '/'
+ endif
+ let keywords = [ 'def', 'class', 'trait', 'object' ]
+ let keywordsOrExpression = s:CreateOrExpression(keywords)
+
+ let modifiers = [ 'public', 'private', 'private\[\w*\]', 'protected', 'abstract', 'case', 'override', 'implicit', 'final', 'sealed']
+ let modifierOrExpression = s:CreateOrExpression(modifiers)
+
+ let regex = '^ *('.modifierOrExpression.' )* *'.keywordsOrExpression."\r"
+ execute 'silent normal! ' . dir . '\v'.regex
+endfunction
+
+noremap <script> <buffer> <silent> ]] :call <SID>NextSection(0)<cr>
+
+noremap <script> <buffer> <silent> [[ :call <SID>NextSection(1)<cr>
diff --git a/indent/clojure.vim b/indent/clojure.vim
index a92e273c..57196ad7 100644
--- a/indent/clojure.vim
+++ b/indent/clojure.vim
@@ -21,7 +21,7 @@ let b:did_indent = 1
let s:save_cpo = &cpo
set cpo&vim
-let b:undo_indent = 'setlocal autoindent< smartindent< lispwords< expandtab< softtabstop< shiftwidth< indentexpr< indentkeys<'
+let b:undo_indent = 'setlocal autoindent< smartindent< expandtab< softtabstop< shiftwidth< indentexpr< indentkeys<'
setlocal noautoindent nosmartindent
setlocal softtabstop=2 shiftwidth=2 expandtab
@@ -70,7 +70,7 @@ if exists("*searchpairpos")
endfunction
function! s:IsParen()
- return s:CurrentChar() =~ '\v[\(\)\[\]\{\}]' &&
+ return s:CurrentChar() =~# '\v[\(\)\[\]\{\}]' &&
\ s:SynIdName() !~? '\vstring|regex|comment|character'
endfunction
@@ -82,7 +82,7 @@ if exists("*searchpairpos")
\ ? a:patterns
\ : map(split(a:patterns, ','), '"^" . v:val . "$"')
for pat in list
- if a:string =~ pat | return 1 | endif
+ if a:string =~# pat | return 1 | endif
endfor
endfunction
@@ -172,7 +172,7 @@ if exists("*searchpairpos")
call search('\S', 'W')
let w = s:StripNamespaceAndMacroChars(s:CurrentWord())
- if g:clojure_special_indent_words =~ '\<' . w . '\>'
+ if g:clojure_special_indent_words =~# '\V\<' . w . '\>'
return 1
endif
@@ -280,7 +280,7 @@ if exists("*searchpairpos")
" e.g. clojure.core/defn and #'defn should both indent like defn.
let ww = s:StripNamespaceAndMacroChars(w)
- if &lispwords =~ '\V\<' . ww . '\>'
+ if &lispwords =~# '\V\<' . ww . '\>'
return paren[1] + &shiftwidth - 1
endif
@@ -312,85 +312,6 @@ else
endif
-" Specially indented symbols from clojure.core and clojure.test.
-"
-" Clojure symbols are indented in the defn style when they:
-"
-" * Define vars and anonymous functions
-" * Create new lexical scopes or scopes with altered environments
-" * Create conditional branches from a predicate function or value
-"
-" The arglists for these functions are generally in the form of [x & body];
-" Functions that accept a flat list of forms do not treat the first argument
-" specially and hence are not indented specially.
-
-" Definitions
-setlocal lispwords=
-setlocal lispwords+=bound-fn
-setlocal lispwords+=def
-setlocal lispwords+=definline
-setlocal lispwords+=definterface
-setlocal lispwords+=defmacro
-setlocal lispwords+=defmethod
-setlocal lispwords+=defmulti
-setlocal lispwords+=defn
-setlocal lispwords+=defn-
-setlocal lispwords+=defonce
-setlocal lispwords+=defprotocol
-setlocal lispwords+=defrecord
-setlocal lispwords+=defstruct
-setlocal lispwords+=deftest " clojure.test
-setlocal lispwords+=deftest- " clojure.test
-setlocal lispwords+=deftype
-setlocal lispwords+=extend
-setlocal lispwords+=extend-protocol
-setlocal lispwords+=extend-type
-setlocal lispwords+=fn
-setlocal lispwords+=ns
-setlocal lispwords+=proxy
-setlocal lispwords+=reify
-setlocal lispwords+=set-test " clojure.test
-
-" Binding forms
-setlocal lispwords+=as->
-setlocal lispwords+=binding
-setlocal lispwords+=doall
-setlocal lispwords+=dorun
-setlocal lispwords+=doseq
-setlocal lispwords+=dotimes
-setlocal lispwords+=doto
-setlocal lispwords+=for
-setlocal lispwords+=if-let
-setlocal lispwords+=let
-setlocal lispwords+=letfn
-setlocal lispwords+=locking
-setlocal lispwords+=loop
-setlocal lispwords+=testing " clojure.test
-setlocal lispwords+=when-first
-setlocal lispwords+=when-let
-setlocal lispwords+=with-bindings
-setlocal lispwords+=with-in-str
-setlocal lispwords+=with-local-vars
-setlocal lispwords+=with-open
-setlocal lispwords+=with-precision
-setlocal lispwords+=with-redefs
-setlocal lispwords+=with-redefs-fn
-setlocal lispwords+=with-test " clojure.test
-
-" Conditional branching
-setlocal lispwords+=case
-setlocal lispwords+=cond->
-setlocal lispwords+=cond->>
-setlocal lispwords+=condp
-setlocal lispwords+=if
-setlocal lispwords+=if-not
-setlocal lispwords+=when
-setlocal lispwords+=when-not
-setlocal lispwords+=while
-
-" Exception handling
-setlocal lispwords+=catch
-
let &cpo = s:save_cpo
unlet! s:save_cpo
diff --git a/indent/scala.vim b/indent/scala.vim
index da490ace..9cdb0e8d 100644
--- a/indent/scala.vim
+++ b/indent/scala.vim
@@ -515,7 +515,7 @@ function! GetScalaIndent()
endif
let prevCurlyCount = scala#CountCurlies(prevline)
- if prevCurlyCount == 0 && prevline =~ '^.*=>\s*$' && prevline !~ '^\s*this\s*:.*=>\s*$' && curline !~ '^\s*\<case\>'
+ if prevCurlyCount == 0 && prevline =~ '^.*\%(=>\|⇒\)\s*$' && prevline !~ '^\s*this\s*:.*\%(=>\|⇒\)\s*$' && curline !~ '^\s*\<case\>'
call scala#ConditionalConfirm("16")
let ind = ind + &shiftwidth
endif
diff --git a/syntax/clojure.vim b/syntax/clojure.vim
index d2d079b4..4c1824b5 100644
--- a/syntax/clojure.vim
+++ b/syntax/clojure.vim
@@ -121,9 +121,12 @@ syntax keyword clojureCommentTodo contained FIXME XXX TODO FIXME: XXX: TODO:
syntax match clojureComment ";.*$" contains=clojureCommentTodo,@Spell
syntax match clojureComment "#!.*$"
-syntax region clojureSexp matchgroup=clojureParen start="(" matchgroup=clojureParen end=")" contains=TOP,@Spell fold
-syntax region clojureVector matchgroup=clojureParen start="\[" matchgroup=clojureParen end="]" contains=TOP,@Spell fold
-syntax region clojureMap matchgroup=clojureParen start="{" matchgroup=clojureParen end="}" contains=TOP,@Spell fold
+" Generated from https://github.com/guns/vim-clojure-static/blob/%%RELEASE_TAG%%/clj/src/vim_clojure_static/generate.clj
+syntax cluster clojureTop contains=@Spell,clojureAnonArg,clojureBoolean,clojureCharacter,clojureComment,clojureCond,clojureConstant,clojureDefine,clojureDeref,clojureDispatch,clojureError,clojureException,clojureFunc,clojureKeyword,clojureMacro,clojureMap,clojureMeta,clojureNumber,clojureQuote,clojureRegexp,clojureRepeat,clojureSexp,clojureSpecial,clojureString,clojureSymbol,clojureUnquote,clojureVarArg,clojureVariable,clojureVector
+
+syntax region clojureSexp matchgroup=clojureParen start="(" matchgroup=clojureParen end=")" contains=@clojureTop fold
+syntax region clojureVector matchgroup=clojureParen start="\[" matchgroup=clojureParen end="]" contains=@clojureTop fold
+syntax region clojureMap matchgroup=clojureParen start="{" matchgroup=clojureParen end="}" contains=@clojureTop fold
" Highlight superfluous closing parens, brackets and braces.
syntax match clojureError "]\|}\|)"
diff --git a/syntax/elixir.vim b/syntax/elixir.vim
index 08bc6556..0adf8fab 100644
--- a/syntax/elixir.vim
+++ b/syntax/elixir.vim
@@ -27,7 +27,7 @@ syn keyword elixirOperator and not or when xor in
syn match elixirOperator '%=\|\*=\|\*\*=\|+=\|-=\|\^=\|||='
syn match elixirOperator "\%(<=>\|<\%(<\|=\)\@!\|>\%(<\|=\|>\)\@!\|<=\|>=\|===\|==\|=\~\|!=\|!\~\|\s?[ \t]\@=\)"
syn match elixirOperator "!+[ \t]\@=\|&&\|||\|\^\|\*\|+\|-\|/"
-syn match elixirOperator "|\|++\|--\|\*\*\|\/\/\|<-\|<>\|<<\|>>\|=\|\.\|::"
+syn match elixirOperator "|\|++\|--\|\*\*\|\/\/\|\\\\\|<-\|<>\|<<\|>>\|=\|\.\|::"
syn match elixirSymbol '\(:\)\@<!:\%([a-zA-Z_]\w*\%([?!]\|=[>=]\@!\)\?\|<>\|===\?\|>=\?\|<=\?\)'
syn match elixirSymbol '\(:\)\@<!:\%(<=>\|&&\?\|%\(()\|\[\]\|{}\)\|++\?\|--\?\|||\?\|!\|//\|[%&`/|]\)'
@@ -74,26 +74,26 @@ syn match elixirString "\(\w\)\@<!?\%(\\\(x\d{1,2}\|\h{1,2}\h\@!\>\|
syn region elixirBlock matchgroup=elixirKeyword start="\<do\>\(:\)\@!" end="\<end\>" contains=ALLBUT,@elixirNotTop fold
syn region elixirAnonymousFunction matchgroup=elixirKeyword start="\<fn\>" end="\<end\>" contains=ALLBUT,@elixirNotTop fold
-syn region elixirArguments start="(" end=")" contained contains=elixirOperator,elixirSymbol,elixirPseudoVariable,elixirName,elixirBoolean,elixirVariable,elixirUnusedVariable,elixirNumber,elixirDocString,elixirSymbolInterpolated,elixirRegex,elixirRegexEscape,elixirRegexEscapePunctuation,elixirRegexCharClass,elixirRegexQuantifier,elixirSpecial,elixirString,elixirDelimiter
+syn region elixirArguments start="(" end=")" contained contains=elixirOperator,elixirSymbol,elixirPseudoVariable,elixirName,elixirBoolean,elixirVariable,elixirUnusedVariable,elixirNumber,elixirDocString,elixirSymbolInterpolated,elixirRegex,elixirString,elixirDelimiter
syn match elixirDelimEscape "\\[(<{\[)>}\]]" transparent display contained contains=NONE
-syn region elixirSigil matchgroup=elixirDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
-syn region elixirSigil matchgroup=elixirDelimiter start="%[BCRW]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
-syn region elixirSigil matchgroup=elixirDelimiter start="%[BCRW]\={" end="}" skip="\\\\\|\\}" contains=elixirDelimEscape fold
-syn region elixirSigil matchgroup=elixirDelimiter start="%[BCRW]\=<" end=">" skip="\\\\\|\\>" contains=elixirDelimEscape fold
-syn region elixirSigil matchgroup=elixirDelimiter start="%[BCRW]\=\[" end="\]" skip="\\\\\|\\\]" contains=elixirDelimEscape fold
-syn region elixirSigil matchgroup=elixirDelimiter start="%[BCRW]\=(" end=")" skip="\\\\\|\\)" contains=elixirDelimEscape fold
+syn region elixirSigil matchgroup=elixirDelimiter start="[%~]\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
+syn region elixirSigil matchgroup=elixirDelimiter start="[%~][SCRW]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
+syn region elixirSigil matchgroup=elixirDelimiter start="[%~][SCRW]\={" end="}" skip="\\\\\|\\}" contains=elixirDelimEscape fold
+syn region elixirSigil matchgroup=elixirDelimiter start="[%~][SCRW]\=<" end=">" skip="\\\\\|\\>" contains=elixirDelimEscape fold
+syn region elixirSigil matchgroup=elixirDelimiter start="[%~][SCRW]\=\[" end="\]" skip="\\\\\|\\\]" contains=elixirDelimEscape fold
+syn region elixirSigil matchgroup=elixirDelimiter start="[%~][SCRW]\=(" end=")" skip="\\\\\|\\)" contains=elixirDelimEscape fold
-syn region elixirSigil matchgroup=elixirDelimiter start="%[bcrw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
-syn region elixirSigil matchgroup=elixirDelimiter start="%[bcrw]{" end="}" skip="\\\\\|\\}" fold contains=@elixirStringContained,elixirRegexEscapePunctuation
-syn region elixirSigil matchgroup=elixirDelimiter start="%[bcrw]<" end=">" skip="\\\\\|\\>" fold contains=@elixirStringContained,elixirRegexEscapePunctuation
-syn region elixirSigil matchgroup=elixirDelimiter start="%[bcrw]\[" end="\]" skip="\\\\\|\\\]" fold contains=@elixirStringContained,elixirRegexEscapePunctuation
-syn region elixirSigil matchgroup=elixirDelimiter start="%[bcrw](" end=")" skip="\\\\\|\\)" fold contains=@elixirStringContained,elixirRegexEscapePunctuation
+syn region elixirSigil matchgroup=elixirDelimiter start="[%~][scrw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
+syn region elixirSigil matchgroup=elixirDelimiter start="[%~][scrw]{" end="}" skip="\\\\\|\\}" fold contains=@elixirStringContained,elixirRegexEscapePunctuation
+syn region elixirSigil matchgroup=elixirDelimiter start="[%~][scrw]<" end=">" skip="\\\\\|\\>" fold contains=@elixirStringContained,elixirRegexEscapePunctuation
+syn region elixirSigil matchgroup=elixirDelimiter start="[%~][scrw]\[" end="\]" skip="\\\\\|\\\]" fold contains=@elixirStringContained,elixirRegexEscapePunctuation
+syn region elixirSigil matchgroup=elixirDelimiter start="[%~][scrw](" end=")" skip="\\\\\|\\)" fold contains=@elixirStringContained,elixirRegexEscapePunctuation
" Sigils surrounded with docString
-syn region elixirSigil matchgroup=elixirDelimiter start=+%[BCRWbcrw]\z("""\)+ end=+^\s*\zs\z1+ skip=+\\"+ fold
-syn region elixirSigil matchgroup=elixirDelimiter start=+%[BCRWbcrw]\z('''\)+ end=+^\s*\zs\z1+ skip=+\\'+ fold
+syn region elixirSigil matchgroup=elixirDelimiter start=+[%~][SCRWscrw]\z("""\)+ end=+^\s*\zs\z1+ skip=+\\"+ fold
+syn region elixirSigil matchgroup=elixirDelimiter start=+[%~][SCRWscrw]\z('''\)+ end=+^\s*\zs\z1+ skip=+\\'+ fold
" Defines
syn keyword elixirDefine def nextgroup=elixirFunctionDeclaration skipwhite skipnl
diff --git a/syntax/html.vim b/syntax/html.vim
index b9b4d86f..eedd6582 100644
--- a/syntax/html.vim
+++ b/syntax/html.vim
@@ -41,6 +41,7 @@ syn keyword htmlTagName contained linearGradient marker mask pattern radialGradi
syn keyword htmlTagName contained missing-glyph mpath
syn keyword htmlTagName contained text textPath tref tspan vkern
+" Custom Element
syn match htmlTagName contained "\<[a-z_]\+\(\-[a-z_]\+\)\+\>"
" HTML 5 arguments
diff --git a/syntax/markdown.vim b/syntax/markdown.vim
index ba0d5565..8fc47278 100644
--- a/syntax/markdown.vim
+++ b/syntax/markdown.vim
@@ -85,6 +85,9 @@ syn region markdownCode matchgroup=markdownCodeDelimiter start="`" end="`" keepe
syn region markdownCode matchgroup=markdownCodeDelimiter start="`` \=" end=" \=``" keepend contains=markdownLineStart
syn region markdownCode matchgroup=markdownCodeDelimiter start="^\s*```.*$" end="^\s*```\ze\s*$" keepend
+syn match markdownFootnote "\[^[^\]]\]\s*$"
+syn match markdownFootnoteDefinition "^\[^[^\]]\]:"
+
if main_syntax ==# 'markdown'
for s:type in g:markdown_fenced_languages
exe 'syn region markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' matchgroup=markdownCodeDelimiter start="^\s*```\s*'.matchstr(s:type,'[^=]*').'\>.*$" end="^\s*```\ze\s*$" keepend contains=@markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\.','','g')
@@ -108,6 +111,9 @@ hi def link markdownListMarker htmlTagName
hi def link markdownBlockquote Comment
hi def link markdownRule PreProc
+hi def link markdownFootnote Typedef
+hi def link markdownFootnoteDefinition Typedef
+
hi def link markdownLinkText htmlLink
hi def link markdownIdDeclaration Typedef
hi def link markdownId Type
diff --git a/syntax/mustache.vim b/syntax/mustache.vim
index cae672ca..3fc0bf3f 100644
--- a/syntax/mustache.vim
+++ b/syntax/mustache.vim
@@ -43,7 +43,7 @@ syntax match mustacheError '}}}\?'
syntax match mustacheInsideError '{{[{#<>=!\/]\?'
syntax region mustacheInside start=/{{/ end=/}}}\?/ keepend containedin=TOP,@htmlMustacheContainer
syntax match mustacheOperators '=\|\.\|/' contained containedin=mustacheInside,@htmlMustacheContainer
-syntax region mustacheSection start='{{[#/]'lc=2 end=/}}/me=e-2 contained containedin=mustacheInside,@htmlMustacheContainer
+syntax region mustacheSection start='{{[#^/]'lc=2 end=/}}/me=e-2 contained containedin=mustacheInside,@htmlMustacheContainer
syntax region mustachePartial start=/{{[<>]/lc=2 end=/}}/me=e-2 contained containedin=mustacheInside,@htmlMustacheContainer
syntax region mustacheMarkerSet start=/{{=/lc=2 end=/=}}/me=e-2 contained containedin=mustacheInside,@htmlMustacheContainer
syntax match mustacheHandlebars '{{\|}}' contained containedin=mustacheInside,@htmlMustacheContainer
diff --git a/syntax/perl.vim b/syntax/perl.vim
index 61c7dd9b..4b1c89b8 100644
--- a/syntax/perl.vim
+++ b/syntax/perl.vim
@@ -365,8 +365,10 @@ else
syn match perlSubAttributes "" contained nextgroup=perlSubError
syn match perlSubAttributes ":\_s*" contained nextgroup=@perlSubAttrMaybe
endif
-syn match perlSubPrototypeError "(\%(\_s*\%(\%(\\\%([$@%&*]\|\[[$@%&*]\+\]\)\|[$&*]\|[@%]\%(\_s*)\)\@=\|;\%(\_s*[)$@%&*\\]\)\@=\|_\%(\_s*[);]\)\@=\)\_s*\)*\)\@>\zs\_[^)]\+" contained
-syn match perlSubPrototype +(\_[^)]*)\_s*\|+ nextgroup=perlSubAttributes,perlComment contained contains=perlSubPrototypeError
+if !exists("perl_no_subprototype_error") " Set 1 if using signatures feature in perl5.19.9
+ syn match perlSubPrototypeError "(\%(\_s*\%(\%(\\\%([$@%&*]\|\[[$@%&*]\+\]\)\|[$&*]\|[@%]\%(\_s*)\)\@=\|;\%(\_s*[)$@%&*\\]\)\@=\|_\%(\_s*[);]\)\@=\)\_s*\)*\)\@>\zs\_[^)]\+" contained
+ syn match perlSubPrototype +(\_[^)]*)\_s*\|+ nextgroup=perlSubAttributes,perlComment contained contains=perlSubPrototypeError
+endif
syn match perlSubName +\%(\h\|::\|'\w\)\%(\w\|::\|'\w\)*\_s*\|+ contained nextgroup=perlSubPrototype,perlComment
syn match perlFunction +\<sub\>\_s*+ nextgroup=perlSubName
diff --git a/syntax/php.vim b/syntax/php.vim
index 4f6ae245..8637609e 100644
--- a/syntax/php.vim
+++ b/syntax/php.vim
@@ -126,7 +126,7 @@ syn case match
syn keyword phpConstants E_ERROR E_RECOVERABLE_ERROR E_WARNING E_PARSE E_NOTICE E_STRICT E_DEPRECATED E_CORE_ERROR E_CORE_WARNING E_COMPILE_ERROR E_COMPILE_WARNING E_USER_ERROR E_USER_WARNING E_USER_NOTICE E_USER_DEPRECATED E_ALL DEBUG_BACKTRACE_PROVIDE_OBJECT DEBUG_BACKTRACE_IGNORE_ARGS TRUE FALSE NULL ZEND_THREAD_SAFE ZEND_DEBUG_BUILD PHP_VERSION PHP_MAJOR_VERSION PHP_MINOR_VERSION PHP_RELEASE_VERSION PHP_EXTRA_VERSION PHP_VERSION_ID PHP_ZTS PHP_DEBUG PHP_OS PHP_SAPI DEFAULT_INCLUDE_PATH PEAR_INSTALL_DIR PEAR_EXTENSION_DIR PHP_EXTENSION_DIR PHP_PREFIX PHP_BINDIR PHP_MANDIR PHP_LIBDIR PHP_DATADIR PHP_SYSCONFDIR PHP_LOCALSTATEDIR PHP_CONFIG_FILE_PATH PHP_CONFIG_FILE_SCAN_DIR PHP_SHLIB_SUFFIX PHP_EOL PHP_MAXPATHLEN PHP_INT_MAX PHP_INT_SIZE PHP_BINARY PHP_OUTPUT_HANDLER_START PHP_OUTPUT_HANDLER_WRITE PHP_OUTPUT_HANDLER_FLUSH PHP_OUTPUT_HANDLER_CLEAN PHP_OUTPUT_HANDLER_FINAL PHP_OUTPUT_HANDLER_CONT PHP_OUTPUT_HANDLER_END PHP_OUTPUT_HANDLER_CLEANABLE PHP_OUTPUT_HANDLER_FLUSHABLE PHP_OUTPUT_HANDLER_REMOVABLE PHP_OUTPUT_HANDLER_STDFLAGS PHP_OUTPUT_HANDLER_STARTED PHP_OUTPUT_HANDLER_DISABLED UPLOAD_ERR_OK UPLOAD_ERR_INI_SIZE UPLOAD_ERR_FORM_SIZE UPLOAD_ERR_PARTIAL UPLOAD_ERR_NO_FILE UPLOAD_ERR_NO_TMP_DIR UPLOAD_ERR_CANT_WRITE UPLOAD_ERR_EXTENSION STDIN STDOUT STDERR contained
" curl
-syn keyword phpConstants CURLOPT_AUTOREFERER CURLOPT_BINARYTRANSFER CURLOPT_BUFFERSIZE CURLOPT_CAINFO CURLOPT_CAPATH CURLOPT_CLOSEPOLICY CURLOPT_CONNECTTIMEOUT CURLOPT_COOKIE CURLOPT_COOKIEFILE CURLOPT_COOKIEJAR CURLOPT_COOKIESESSION CURLOPT_CRLF CURLOPT_CUSTOMREQUEST CURLOPT_DNS_CACHE_TIMEOUT CURLOPT_DNS_USE_GLOBAL_CACHE CURLOPT_EGDSOCKET CURLOPT_ENCODING CURLOPT_FAILONERROR CURLOPT_FILE CURLOPT_FILETIME CURLOPT_FOLLOWLOCATION CURLOPT_FORBID_REUSE CURLOPT_FRESH_CONNECT CURLOPT_FTPAPPEND CURLOPT_FTPLISTONLY CURLOPT_FTPPORT CURLOPT_FTP_USE_EPRT CURLOPT_FTP_USE_EPSV CURLOPT_HEADER CURLOPT_HEADERFUNCTION CURLOPT_HTTP200ALIASES CURLOPT_HTTPGET CURLOPT_HTTPHEADER CURLOPT_HTTPPROXYTUNNEL CURLOPT_HTTP_VERSION CURLOPT_INFILE CURLOPT_INFILESIZE CURLOPT_INTERFACE CURLOPT_KRB4LEVEL CURLOPT_LOW_SPEED_LIMIT CURLOPT_LOW_SPEED_TIME CURLOPT_MAXCONNECTS CURLOPT_MAXREDIRS CURLOPT_NETRC CURLOPT_NOBODY CURLOPT_NOPROGRESS CURLOPT_NOSIGNAL CURLOPT_PORT CURLOPT_POST CURLOPT_POSTFIELDS CURLOPT_POSTQUOTE CURLOPT_PREQUOTE CURLOPT_PRIVATE CURLOPT_PROGRESSFUNCTION CURLOPT_PROXY CURLOPT_PROXYPORT CURLOPT_PROXYTYPE CURLOPT_PROXYUSERPWD CURLOPT_PUT CURLOPT_QUOTE CURLOPT_RANDOM_FILE CURLOPT_RANGE CURLOPT_READDATA CURLOPT_READFUNCTION CURLOPT_REFERER CURLOPT_RESUME_FROM CURLOPT_RETURNTRANSFER CURLOPT_SHARE CURLOPT_SSLCERT CURLOPT_SSLCERTPASSWD CURLOPT_SSLCERTTYPE CURLOPT_SSLENGINE CURLOPT_SSLENGINE_DEFAULT CURLOPT_SSLKEY CURLOPT_SSLKEYPASSWD CURLOPT_SSLKEYTYPE CURLOPT_SSLVERSION CURLOPT_SSL_CIPHER_LIST CURLOPT_SSL_VERIFYHOST CURLOPT_SSL_VERIFYPEER CURLOPT_STDERR CURLOPT_TELNETOPTIONS CURLOPT_TIMECONDITION CURLOPT_TIMEOUT CURLOPT_TIMEVALUE CURLOPT_TRANSFERTEXT CURLOPT_UNRESTRICTED_AUTH CURLOPT_UPLOAD CURLOPT_URL CURLOPT_USERAGENT CURLOPT_USERPWD CURLOPT_VERBOSE CURLOPT_WRITEFUNCTION CURLOPT_WRITEHEADER CURLCLOSEPOLICY_CALLBACK CURLCLOSEPOLICY_LEAST_RECENTLY_USED CURLCLOSEPOLICY_LEAST_TRAFFIC CURLCLOSEPOLICY_OLDEST CURLCLOSEPOLICY_SLOWEST CURLE_ABORTED_BY_CALLBACK CURLE_BAD_CALLING_ORDER CURLE_BAD_CONTENT_ENCODING CURLE_BAD_DOWNLOAD_RESUME CURLE_BAD_FUNCTION_ARGUMENT CURLE_BAD_PASSWORD_ENTERED CURLE_COULDNT_CONNECT CURLE_COULDNT_RESOLVE_HOST CURLE_COULDNT_RESOLVE_PROXY CURLE_FAILED_INIT CURLE_FILE_COULDNT_READ_FILE CURLE_FTP_ACCESS_DENIED CURLE_FTP_BAD_DOWNLOAD_RESUME CURLE_FTP_CANT_GET_HOST CURLE_FTP_CANT_RECONNECT CURLE_FTP_COULDNT_GET_SIZE CURLE_FTP_COULDNT_RETR_FILE CURLE_FTP_COULDNT_SET_ASCII CURLE_FTP_COULDNT_SET_BINARY CURLE_FTP_COULDNT_STOR_FILE CURLE_FTP_COULDNT_USE_REST CURLE_FTP_PARTIAL_FILE CURLE_FTP_PORT_FAILED CURLE_FTP_QUOTE_ERROR CURLE_FTP_USER_PASSWORD_INCORRECT CURLE_FTP_WEIRD_227_FORMAT CURLE_FTP_WEIRD_PASS_REPLY CURLE_FTP_WEIRD_PASV_REPLY CURLE_FTP_WEIRD_SERVER_REPLY CURLE_FTP_WEIRD_USER_REPLY CURLE_FTP_WRITE_ERROR CURLE_FUNCTION_NOT_FOUND CURLE_GOT_NOTHING CURLE_HTTP_NOT_FOUND CURLE_HTTP_PORT_FAILED CURLE_HTTP_POST_ERROR CURLE_HTTP_RANGE_ERROR CURLE_HTTP_RETURNED_ERROR CURLE_LDAP_CANNOT_BIND CURLE_LDAP_SEARCH_FAILED CURLE_LIBRARY_NOT_FOUND CURLE_MALFORMAT_USER CURLE_OBSOLETE CURLE_OK CURLE_OPERATION_TIMEDOUT CURLE_OPERATION_TIMEOUTED CURLE_OUT_OF_MEMORY CURLE_PARTIAL_FILE CURLE_READ_ERROR CURLE_RECV_ERROR CURLE_SEND_ERROR CURLE_SHARE_IN_USE CURLE_SSL_CACERT CURLE_SSL_CERTPROBLEM CURLE_SSL_CIPHER CURLE_SSL_CONNECT_ERROR CURLE_SSL_ENGINE_NOTFOUND CURLE_SSL_ENGINE_SETFAILED CURLE_SSL_PEER_CERTIFICATE CURLE_TELNET_OPTION_SYNTAX CURLE_TOO_MANY_REDIRECTS CURLE_UNKNOWN_TELNET_OPTION CURLE_UNSUPPORTED_PROTOCOL CURLE_URL_MALFORMAT CURLE_URL_MALFORMAT_USER CURLE_WRITE_ERROR CURLINFO_CONNECT_TIME CURLINFO_CONTENT_LENGTH_DOWNLOAD CURLINFO_CONTENT_LENGTH_UPLOAD CURLINFO_CONTENT_TYPE CURLINFO_EFFECTIVE_URL CURLINFO_FILETIME CURLINFO_HEADER_OUT CURLINFO_HEADER_SIZE CURLINFO_HTTP_CODE CURLINFO_LASTONE CURLINFO_NAMELOOKUP_TIME CURLINFO_PRETRANSFER_TIME CURLINFO_PRIVATE CURLINFO_REDIRECT_COUNT CURLINFO_REDIRECT_TIME CURLINFO_REQUEST_SIZE CURLINFO_SIZE_DOWNLOAD CURLINFO_SIZE_UPLOAD CURLINFO_SPEED_DOWNLOAD CURLINFO_SPEED_UPLOAD CURLINFO_SSL_VERIFYRESULT CURLINFO_STARTTRANSFER_TIME CURLINFO_TOTAL_TIME CURLMSG_DONE CURLVERSION_NOW CURLM_BAD_EASY_HANDLE CURLM_BAD_HANDLE CURLM_CALL_MULTI_PERFORM CURLM_INTERNAL_ERROR CURLM_OK CURLM_OUT_OF_MEMORY CURLPROXY_HTTP CURLPROXY_SOCKS4 CURLPROXY_SOCKS5 CURLSHOPT_NONE CURLSHOPT_SHARE CURLSHOPT_UNSHARE CURL_HTTP_VERSION_1_0 CURL_HTTP_VERSION_1_1 CURL_HTTP_VERSION_NONE CURL_LOCK_DATA_COOKIE CURL_LOCK_DATA_DNS CURL_LOCK_DATA_SSL_SESSION CURL_NETRC_IGNORED CURL_NETRC_OPTIONAL CURL_NETRC_REQUIRED CURL_SSLVERSION_DEFAULT CURL_SSLVERSION_SSLv2 CURL_SSLVERSION_SSLv3 CURL_SSLVERSION_TLSv1 CURL_TIMECOND_IFMODSINCE CURL_TIMECOND_IFUNMODSINCE CURL_TIMECOND_LASTMOD CURL_TIMECOND_NONE CURL_VERSION_IPV6 CURL_VERSION_KERBEROS4 CURL_VERSION_LIBZ CURL_VERSION_SSL CURLOPT_HTTPAUTH CURLAUTH_ANY CURLAUTH_ANYSAFE CURLAUTH_BASIC CURLAUTH_DIGEST CURLAUTH_GSSNEGOTIATE CURLAUTH_NONE CURLAUTH_NTLM CURLINFO_HTTP_CONNECTCODE CURLOPT_FTP_CREATE_MISSING_DIRS CURLOPT_PROXYAUTH CURLE_FILESIZE_EXCEEDED CURLE_LDAP_INVALID_URL CURLINFO_HTTPAUTH_AVAIL CURLINFO_RESPONSE_CODE CURLINFO_PROXYAUTH_AVAIL CURLOPT_FTP_RESPONSE_TIMEOUT CURLOPT_IPRESOLVE CURLOPT_MAXFILESIZE CURL_IPRESOLVE_V4 CURL_IPRESOLVE_V6 CURL_IPRESOLVE_WHATEVER CURLE_FTP_SSL_FAILED CURLFTPSSL_ALL CURLFTPSSL_CONTROL CURLFTPSSL_NONE CURLFTPSSL_TRY CURLOPT_FTP_SSL CURLOPT_NETRC_FILE CURLFTPAUTH_DEFAULT CURLFTPAUTH_SSL CURLFTPAUTH_TLS CURLOPT_FTPSSLAUTH CURLOPT_FTP_ACCOUNT CURLOPT_TCP_NODELAY CURLINFO_OS_ERRNO CURLINFO_NUM_CONNECTS CURLINFO_SSL_ENGINES CURLINFO_COOKIELIST CURLOPT_COOKIELIST CURLOPT_IGNORE_CONTENT_LENGTH CURLOPT_FTP_SKIP_PASV_IP CURLOPT_FTP_FILEMETHOD CURLOPT_CONNECT_ONLY CURLOPT_LOCALPORT CURLOPT_LOCALPORTRANGE CURLFTPMETHOD_MULTICWD CURLFTPMETHOD_NOCWD CURLFTPMETHOD_SINGLECWD CURLINFO_FTP_ENTRY_PATH CURLOPT_FTP_ALTERNATIVE_TO_USER CURLOPT_MAX_RECV_SPEED_LARGE CURLOPT_MAX_SEND_SPEED_LARGE CURLOPT_SSL_SESSIONID_CACHE CURLMOPT_PIPELINING CURLE_SSH CURLOPT_FTP_SSL_CCC CURLOPT_SSH_AUTH_TYPES CURLOPT_SSH_PRIVATE_KEYFILE CURLOPT_SSH_PUBLIC_KEYFILE CURLFTPSSL_CCC_ACTIVE CURLFTPSSL_CCC_NONE CURLFTPSSL_CCC_PASSIVE CURLOPT_CONNECTTIMEOUT_MS CURLOPT_HTTP_CONTENT_DECODING CURLOPT_HTTP_TRANSFER_DECODING CURLOPT_TIMEOUT_MS CURLMOPT_MAXCONNECTS CURLOPT_KRBLEVEL CURLOPT_NEW_DIRECTORY_PERMS CURLOPT_NEW_FILE_PERMS CURLOPT_APPEND CURLOPT_DIRLISTONLY CURLOPT_USE_SSL CURLUSESSL_ALL CURLUSESSL_CONTROL CURLUSESSL_NONE CURLUSESSL_TRY CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 CURLOPT_PROXY_TRANSFER_MODE CURLPAUSE_ALL CURLPAUSE_CONT CURLPAUSE_RECV CURLPAUSE_RECV_CONT CURLPAUSE_SEND CURLPAUSE_SEND_CONT CURL_READFUNC_PAUSE CURL_WRITEFUNC_PAUSE CURLINFO_REDIRECT_URL CURLINFO_APPCONNECT_TIME CURLINFO_PRIMARY_IP CURLOPT_ADDRESS_SCOPE CURLOPT_CRLFILE CURLOPT_ISSUERCERT CURLOPT_KEYPASSWD CURLSSH_AUTH_ANY CURLSSH_AUTH_DEFAULT CURLSSH_AUTH_HOST CURLSSH_AUTH_KEYBOARD CURLSSH_AUTH_NONE CURLSSH_AUTH_PASSWORD CURLSSH_AUTH_PUBLICKEY CURLINFO_CERTINFO CURLOPT_CERTINFO CURLOPT_PASSWORD CURLOPT_POSTREDIR CURLOPT_PROXYPASSWORD CURLOPT_PROXYUSERNAME CURLOPT_USERNAME CURLAUTH_DIGEST_IE CURLINFO_CONDITION_UNMET CURLOPT_NOPROXY CURLOPT_PROTOCOLS CURLOPT_REDIR_PROTOCOLS CURLOPT_SOCKS5_GSSAPI_NEC CURLOPT_SOCKS5_GSSAPI_SERVICE CURLOPT_TFTP_BLKSIZE CURLPROTO_ALL CURLPROTO_DICT CURLPROTO_FILE CURLPROTO_FTP CURLPROTO_FTPS CURLPROTO_HTTP CURLPROTO_HTTPS CURLPROTO_LDAP CURLPROTO_LDAPS CURLPROTO_SCP CURLPROTO_SFTP CURLPROTO_TELNET CURLPROTO_TFTP CURLOPT_SSH_KNOWNHOSTS CURLINFO_RTSP_CLIENT_CSEQ CURLINFO_RTSP_CSEQ_RECV CURLINFO_RTSP_SERVER_CSEQ CURLINFO_RTSP_SESSION_ID CURLOPT_FTP_USE_PRET CURLOPT_MAIL_FROM CURLOPT_MAIL_RCPT CURLOPT_RTSP_CLIENT_CSEQ CURLOPT_RTSP_REQUEST CURLOPT_RTSP_SERVER_CSEQ CURLOPT_RTSP_SESSION_ID CURLOPT_RTSP_STREAM_URI CURLOPT_RTSP_TRANSPORT CURLPROTO_IMAP CURLPROTO_IMAPS CURLPROTO_POP3 CURLPROTO_POP3S CURLPROTO_RTSP CURLPROTO_SMTP CURLPROTO_SMTPS CURL_RTSPREQ_ANNOUNCE CURL_RTSPREQ_DESCRIBE CURL_RTSPREQ_GET_PARAMETER CURL_RTSPREQ_OPTIONS CURL_RTSPREQ_PAUSE CURL_RTSPREQ_PLAY CURL_RTSPREQ_RECEIVE CURL_RTSPREQ_RECORD CURL_RTSPREQ_SETUP CURL_RTSPREQ_SET_PARAMETER CURL_RTSPREQ_TEARDOWN CURLINFO_LOCAL_IP CURLINFO_LOCAL_PORT CURLINFO_PRIMARY_PORT CURLOPT_FNMATCH_FUNCTION CURLOPT_WILDCARDMATCH CURLPROTO_RTMP CURLPROTO_RTMPE CURLPROTO_RTMPS CURLPROTO_RTMPT CURLPROTO_RTMPTE CURLPROTO_RTMPTS CURL_FNMATCHFUNC_FAIL CURL_FNMATCHFUNC_MATCH CURL_FNMATCHFUNC_NOMATCH CURLPROTO_GOPHER CURLAUTH_ONLY CURLOPT_RESOLVE CURLOPT_TLSAUTH_PASSWORD CURLOPT_TLSAUTH_TYPE CURLOPT_TLSAUTH_USERNAME CURL_TLSAUTH_SRP CURLOPT_ACCEPT_ENCODING CURLOPT_TRANSFER_ENCODING CURLGSSAPI_DELEGATION_FLAG CURLGSSAPI_DELEGATION_POLICY_FLAG CURLOPT_GSSAPI_DELEGATION CURLOPT_ACCEPTTIMEOUT_MS CURLOPT_DNS_SERVERS CURLOPT_MAIL_AUTH CURLOPT_SSL_OPTIONS CURLOPT_TCP_KEEPALIVE CURLOPT_TCP_KEEPIDLE CURLOPT_TCP_KEEPINTVL CURLSSLOPT_ALLOW_BEAST CURLOPT_SAFE_UPLOAD contained
+syn keyword phpConstants CURLOPT_AUTOREFERER CURLOPT_BINARYTRANSFER CURLOPT_BUFFERSIZE CURLOPT_CAINFO CURLOPT_CAPATH CURLOPT_CLOSEPOLICY CURLOPT_CONNECTTIMEOUT CURLOPT_COOKIE CURLOPT_COOKIEFILE CURLOPT_COOKIEJAR CURLOPT_COOKIESESSION CURLOPT_CRLF CURLOPT_CUSTOMREQUEST CURLOPT_DNS_CACHE_TIMEOUT CURLOPT_DNS_USE_GLOBAL_CACHE CURLOPT_EGDSOCKET CURLOPT_ENCODING CURLOPT_FAILONERROR CURLOPT_FILE CURLOPT_FILETIME CURLOPT_FOLLOWLOCATION CURLOPT_FORBID_REUSE CURLOPT_FRESH_CONNECT CURLOPT_FTPAPPEND CURLOPT_FTPLISTONLY CURLOPT_FTPPORT CURLOPT_FTP_USE_EPRT CURLOPT_FTP_USE_EPSV CURLOPT_HEADER CURLOPT_HEADERFUNCTION CURLOPT_HTTP200ALIASES CURLOPT_HTTPGET CURLOPT_HTTPHEADER CURLOPT_HTTPPROXYTUNNEL CURLOPT_HTTP_VERSION CURLOPT_INFILE CURLOPT_INFILESIZE CURLOPT_INTERFACE CURLOPT_KRB4LEVEL CURLOPT_LOW_SPEED_LIMIT CURLOPT_LOW_SPEED_TIME CURLOPT_MAXCONNECTS CURLOPT_MAXREDIRS CURLOPT_NETRC CURLOPT_NOBODY CURLOPT_NOPROGRESS CURLOPT_NOSIGNAL CURLOPT_PORT CURLOPT_POST CURLOPT_POSTFIELDS CURLOPT_POSTQUOTE CURLOPT_PREQUOTE CURLOPT_PRIVATE CURLOPT_PROGRESSFUNCTION CURLOPT_PROXY CURLOPT_PROXYPORT CURLOPT_PROXYTYPE CURLOPT_PROXYUSERPWD CURLOPT_PUT CURLOPT_QUOTE CURLOPT_RANDOM_FILE CURLOPT_RANGE CURLOPT_READDATA CURLOPT_READFUNCTION CURLOPT_REFERER CURLOPT_RESUME_FROM CURLOPT_RETURNTRANSFER CURLOPT_SHARE CURLOPT_SSLCERT CURLOPT_SSLCERTPASSWD CURLOPT_SSLCERTTYPE CURLOPT_SSLENGINE CURLOPT_SSLENGINE_DEFAULT CURLOPT_SSLKEY CURLOPT_SSLKEYPASSWD CURLOPT_SSLKEYTYPE CURLOPT_SSLVERSION CURLOPT_SSL_CIPHER_LIST CURLOPT_SSL_VERIFYHOST CURLOPT_SSL_VERIFYPEER CURLOPT_STDERR CURLOPT_TELNETOPTIONS CURLOPT_TIMECONDITION CURLOPT_TIMEOUT CURLOPT_TIMEVALUE CURLOPT_TRANSFERTEXT CURLOPT_UNRESTRICTED_AUTH CURLOPT_UPLOAD CURLOPT_URL CURLOPT_USERAGENT CURLOPT_USERPWD CURLOPT_VERBOSE CURLOPT_WRITEFUNCTION CURLOPT_WRITEHEADER CURLCLOSEPOLICY_CALLBACK CURLCLOSEPOLICY_LEAST_RECENTLY_USED CURLCLOSEPOLICY_LEAST_TRAFFIC CURLCLOSEPOLICY_OLDEST CURLCLOSEPOLICY_SLOWEST CURLE_ABORTED_BY_CALLBACK CURLE_BAD_CALLING_ORDER CURLE_BAD_CONTENT_ENCODING CURLE_BAD_DOWNLOAD_RESUME CURLE_BAD_FUNCTION_ARGUMENT CURLE_BAD_PASSWORD_ENTERED CURLE_COULDNT_CONNECT CURLE_COULDNT_RESOLVE_HOST CURLE_COULDNT_RESOLVE_PROXY CURLE_FAILED_INIT CURLE_FILE_COULDNT_READ_FILE CURLE_FTP_ACCESS_DENIED CURLE_FTP_BAD_DOWNLOAD_RESUME CURLE_FTP_CANT_GET_HOST CURLE_FTP_CANT_RECONNECT CURLE_FTP_COULDNT_GET_SIZE CURLE_FTP_COULDNT_RETR_FILE CURLE_FTP_COULDNT_SET_ASCII CURLE_FTP_COULDNT_SET_BINARY CURLE_FTP_COULDNT_STOR_FILE CURLE_FTP_COULDNT_USE_REST CURLE_FTP_PARTIAL_FILE CURLE_FTP_PORT_FAILED CURLE_FTP_QUOTE_ERROR CURLE_FTP_USER_PASSWORD_INCORRECT CURLE_FTP_WEIRD_227_FORMAT CURLE_FTP_WEIRD_PASS_REPLY CURLE_FTP_WEIRD_PASV_REPLY CURLE_FTP_WEIRD_SERVER_REPLY CURLE_FTP_WEIRD_USER_REPLY CURLE_FTP_WRITE_ERROR CURLE_FUNCTION_NOT_FOUND CURLE_GOT_NOTHING CURLE_HTTP_NOT_FOUND CURLE_HTTP_PORT_FAILED CURLE_HTTP_POST_ERROR CURLE_HTTP_RANGE_ERROR CURLE_HTTP_RETURNED_ERROR CURLE_LDAP_CANNOT_BIND CURLE_LDAP_SEARCH_FAILED CURLE_LIBRARY_NOT_FOUND CURLE_MALFORMAT_USER CURLE_OBSOLETE CURLE_OK CURLE_OPERATION_TIMEDOUT CURLE_OPERATION_TIMEOUTED CURLE_OUT_OF_MEMORY CURLE_PARTIAL_FILE CURLE_READ_ERROR CURLE_RECV_ERROR CURLE_SEND_ERROR CURLE_SHARE_IN_USE CURLE_SSL_CACERT CURLE_SSL_CERTPROBLEM CURLE_SSL_CIPHER CURLE_SSL_CONNECT_ERROR CURLE_SSL_ENGINE_NOTFOUND CURLE_SSL_ENGINE_SETFAILED CURLE_SSL_PEER_CERTIFICATE CURLE_TELNET_OPTION_SYNTAX CURLE_TOO_MANY_REDIRECTS CURLE_UNKNOWN_TELNET_OPTION CURLE_UNSUPPORTED_PROTOCOL CURLE_URL_MALFORMAT CURLE_URL_MALFORMAT_USER CURLE_WRITE_ERROR CURLINFO_CONNECT_TIME CURLINFO_CONTENT_LENGTH_DOWNLOAD CURLINFO_CONTENT_LENGTH_UPLOAD CURLINFO_CONTENT_TYPE CURLINFO_EFFECTIVE_URL CURLINFO_FILETIME CURLINFO_HEADER_OUT CURLINFO_HEADER_SIZE CURLINFO_HTTP_CODE CURLINFO_LASTONE CURLINFO_NAMELOOKUP_TIME CURLINFO_PRETRANSFER_TIME CURLINFO_PRIVATE CURLINFO_REDIRECT_COUNT CURLINFO_REDIRECT_TIME CURLINFO_REQUEST_SIZE CURLINFO_SIZE_DOWNLOAD CURLINFO_SIZE_UPLOAD CURLINFO_SPEED_DOWNLOAD CURLINFO_SPEED_UPLOAD CURLINFO_SSL_VERIFYRESULT CURLINFO_STARTTRANSFER_TIME CURLINFO_TOTAL_TIME CURLMSG_DONE CURLVERSION_NOW CURLM_BAD_EASY_HANDLE CURLM_BAD_HANDLE CURLM_CALL_MULTI_PERFORM CURLM_INTERNAL_ERROR CURLM_OK CURLM_OUT_OF_MEMORY CURLPROXY_HTTP CURLPROXY_SOCKS4 CURLPROXY_SOCKS5 CURLSHOPT_NONE CURLSHOPT_SHARE CURLSHOPT_UNSHARE CURL_HTTP_VERSION_1_0 CURL_HTTP_VERSION_1_1 CURL_HTTP_VERSION_NONE CURL_LOCK_DATA_COOKIE CURL_LOCK_DATA_DNS CURL_LOCK_DATA_SSL_SESSION CURL_NETRC_IGNORED CURL_NETRC_OPTIONAL CURL_NETRC_REQUIRED CURL_SSLVERSION_DEFAULT CURL_SSLVERSION_SSLv2 CURL_SSLVERSION_SSLv3 CURL_SSLVERSION_TLSv1 CURL_TIMECOND_IFMODSINCE CURL_TIMECOND_IFUNMODSINCE CURL_TIMECOND_LASTMOD CURL_TIMECOND_NONE CURL_VERSION_IPV6 CURL_VERSION_KERBEROS4 CURL_VERSION_LIBZ CURL_VERSION_SSL CURLOPT_HTTPAUTH CURLAUTH_ANY CURLAUTH_ANYSAFE CURLAUTH_BASIC CURLAUTH_DIGEST CURLAUTH_GSSNEGOTIATE CURLAUTH_NONE CURLAUTH_NTLM CURLINFO_HTTP_CONNECTCODE CURLOPT_FTP_CREATE_MISSING_DIRS CURLOPT_PROXYAUTH CURLE_FILESIZE_EXCEEDED CURLE_LDAP_INVALID_URL CURLINFO_HTTPAUTH_AVAIL CURLINFO_RESPONSE_CODE CURLINFO_PROXYAUTH_AVAIL CURLOPT_FTP_RESPONSE_TIMEOUT CURLOPT_IPRESOLVE CURLOPT_MAXFILESIZE CURL_IPRESOLVE_V4 CURL_IPRESOLVE_V6 CURL_IPRESOLVE_WHATEVER CURLE_FTP_SSL_FAILED CURLFTPSSL_ALL CURLFTPSSL_CONTROL CURLFTPSSL_NONE CURLFTPSSL_TRY CURLOPT_FTP_SSL CURLOPT_NETRC_FILE CURLFTPAUTH_DEFAULT CURLFTPAUTH_SSL CURLFTPAUTH_TLS CURLOPT_FTPSSLAUTH CURLOPT_FTP_ACCOUNT CURLOPT_TCP_NODELAY CURLINFO_OS_ERRNO CURLINFO_NUM_CONNECTS CURLINFO_SSL_ENGINES CURLINFO_COOKIELIST CURLOPT_COOKIELIST CURLOPT_IGNORE_CONTENT_LENGTH CURLOPT_FTP_SKIP_PASV_IP CURLOPT_FTP_FILEMETHOD CURLOPT_CONNECT_ONLY CURLOPT_LOCALPORT CURLOPT_LOCALPORTRANGE CURLFTPMETHOD_MULTICWD CURLFTPMETHOD_NOCWD CURLFTPMETHOD_SINGLECWD CURLINFO_FTP_ENTRY_PATH CURLOPT_FTP_ALTERNATIVE_TO_USER CURLOPT_MAX_RECV_SPEED_LARGE CURLOPT_MAX_SEND_SPEED_LARGE CURLOPT_SSL_SESSIONID_CACHE CURLMOPT_PIPELINING CURLE_SSH CURLOPT_FTP_SSL_CCC CURLOPT_SSH_AUTH_TYPES CURLOPT_SSH_PRIVATE_KEYFILE CURLOPT_SSH_PUBLIC_KEYFILE CURLFTPSSL_CCC_ACTIVE CURLFTPSSL_CCC_NONE CURLFTPSSL_CCC_PASSIVE CURLOPT_CONNECTTIMEOUT_MS CURLOPT_HTTP_CONTENT_DECODING CURLOPT_HTTP_TRANSFER_DECODING CURLOPT_TIMEOUT_MS CURLMOPT_MAXCONNECTS CURLOPT_KRBLEVEL CURLOPT_NEW_DIRECTORY_PERMS CURLOPT_NEW_FILE_PERMS CURLOPT_APPEND CURLOPT_DIRLISTONLY CURLOPT_USE_SSL CURLUSESSL_ALL CURLUSESSL_CONTROL CURLUSESSL_NONE CURLUSESSL_TRY CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 CURLOPT_PROXY_TRANSFER_MODE CURLPAUSE_ALL CURLPAUSE_CONT CURLPAUSE_RECV CURLPAUSE_RECV_CONT CURLPAUSE_SEND CURLPAUSE_SEND_CONT CURL_READFUNC_PAUSE CURL_WRITEFUNC_PAUSE CURLINFO_REDIRECT_URL CURLINFO_APPCONNECT_TIME CURLINFO_PRIMARY_IP CURLOPT_ADDRESS_SCOPE CURLOPT_CRLFILE CURLOPT_ISSUERCERT CURLOPT_KEYPASSWD CURLSSH_AUTH_ANY CURLSSH_AUTH_DEFAULT CURLSSH_AUTH_HOST CURLSSH_AUTH_KEYBOARD CURLSSH_AUTH_NONE CURLSSH_AUTH_PASSWORD CURLSSH_AUTH_PUBLICKEY CURLINFO_CERTINFO CURLOPT_CERTINFO CURLOPT_PASSWORD CURLOPT_POSTREDIR CURLOPT_PROXYPASSWORD CURLOPT_PROXYUSERNAME CURLOPT_USERNAME CURLAUTH_DIGEST_IE CURLINFO_CONDITION_UNMET CURLOPT_NOPROXY CURLOPT_PROTOCOLS CURLOPT_REDIR_PROTOCOLS CURLOPT_SOCKS5_GSSAPI_NEC CURLOPT_SOCKS5_GSSAPI_SERVICE CURLOPT_TFTP_BLKSIZE CURLPROTO_ALL CURLPROTO_DICT CURLPROTO_FILE CURLPROTO_FTP CURLPROTO_FTPS CURLPROTO_HTTP CURLPROTO_HTTPS CURLPROTO_LDAP CURLPROTO_LDAPS CURLPROTO_SCP CURLPROTO_SFTP CURLPROTO_TELNET CURLPROTO_TFTP CURLOPT_SSH_KNOWNHOSTS CURLINFO_RTSP_CLIENT_CSEQ CURLINFO_RTSP_CSEQ_RECV CURLINFO_RTSP_SERVER_CSEQ CURLINFO_RTSP_SESSION_ID CURLOPT_FTP_USE_PRET CURLOPT_MAIL_FROM CURLOPT_MAIL_RCPT CURLOPT_RTSP_CLIENT_CSEQ CURLOPT_RTSP_REQUEST CURLOPT_RTSP_SERVER_CSEQ CURLOPT_RTSP_SESSION_ID CURLOPT_RTSP_STREAM_URI CURLOPT_RTSP_TRANSPORT CURLPROTO_IMAP CURLPROTO_IMAPS CURLPROTO_POP3 CURLPROTO_POP3S CURLPROTO_RTSP CURLPROTO_SMTP CURLPROTO_SMTPS CURL_RTSPREQ_ANNOUNCE CURL_RTSPREQ_DESCRIBE CURL_RTSPREQ_GET_PARAMETER CURL_RTSPREQ_OPTIONS CURL_RTSPREQ_PAUSE CURL_RTSPREQ_PLAY CURL_RTSPREQ_RECEIVE CURL_RTSPREQ_RECORD CURL_RTSPREQ_SETUP CURL_RTSPREQ_SET_PARAMETER CURL_RTSPREQ_TEARDOWN CURLINFO_LOCAL_IP CURLINFO_LOCAL_PORT CURLINFO_PRIMARY_PORT CURLOPT_FNMATCH_FUNCTION CURLOPT_WILDCARDMATCH CURLPROTO_RTMP CURLPROTO_RTMPE CURLPROTO_RTMPS CURLPROTO_RTMPT CURLPROTO_RTMPTE CURLPROTO_RTMPTS CURL_FNMATCHFUNC_FAIL CURL_FNMATCHFUNC_MATCH CURL_FNMATCHFUNC_NOMATCH CURLPROTO_GOPHER CURLAUTH_ONLY CURLOPT_RESOLVE CURLOPT_TLSAUTH_PASSWORD CURLOPT_TLSAUTH_TYPE CURLOPT_TLSAUTH_USERNAME CURL_TLSAUTH_SRP CURLOPT_ACCEPT_ENCODING CURLOPT_TRANSFER_ENCODING CURLGSSAPI_DELEGATION_FLAG CURLGSSAPI_DELEGATION_POLICY_FLAG CURLOPT_GSSAPI_DELEGATION CURLOPT_SAFE_UPLOAD contained
" date
syn keyword phpConstants DATE_ATOM DATE_COOKIE DATE_ISO8601 DATE_RFC822 DATE_RFC850 DATE_RFC1036 DATE_RFC1123 DATE_RFC2822 DATE_RFC3339 DATE_RSS DATE_W3C SUNFUNCS_RET_TIMESTAMP SUNFUNCS_RET_STRING SUNFUNCS_RET_DOUBLE ATOM COOKIE ISO8601 RFC822 RFC850 RFC1036 RFC1123 RFC2822 RFC3339 RSS W3C AFRICA AMERICA ANTARCTICA ARCTIC ASIA ATLANTIC AUSTRALIA EUROPE INDIAN PACIFIC UTC ALL ALL_WITH_BC PER_COUNTRY EXCLUDE_START_DATE contained
@@ -186,7 +186,7 @@ syn keyword phpConstants PHP_SESSION_DISABLED PHP_SESSION_NONE PHP_SESSION_ACTIV
syn keyword phpConstants SOAP_1_1 SOAP_1_2 SOAP_PERSISTENCE_SESSION SOAP_PERSISTENCE_REQUEST SOAP_FUNCTIONS_ALL SOAP_ENCODED SOAP_LITERAL SOAP_RPC SOAP_DOCUMENT SOAP_ACTOR_NEXT SOAP_ACTOR_NONE SOAP_ACTOR_UNLIMATERECEIVER SOAP_COMPRESSION_ACCEPT SOAP_COMPRESSION_GZIP SOAP_COMPRESSION_DEFLATE SOAP_AUTHENTICATION_BASIC SOAP_AUTHENTICATION_DIGEST UNKNOWN_TYPE XSD_STRING XSD_BOOLEAN XSD_DECIMAL XSD_FLOAT XSD_DOUBLE XSD_DURATION XSD_DATETIME XSD_TIME XSD_DATE XSD_GYEARMONTH XSD_GYEAR XSD_GMONTHDAY XSD_GDAY XSD_GMONTH XSD_HEXBINARY XSD_BASE64BINARY XSD_ANYURI XSD_QNAME XSD_NOTATION XSD_NORMALIZEDSTRING XSD_TOKEN XSD_LANGUAGE XSD_NMTOKEN XSD_NAME XSD_NCNAME XSD_ID XSD_IDREF XSD_IDREFS XSD_ENTITY XSD_ENTITIES XSD_INTEGER XSD_NONPOSITIVEINTEGER XSD_NEGATIVEINTEGER XSD_LONG XSD_INT XSD_SHORT XSD_BYTE XSD_NONNEGATIVEINTEGER XSD_UNSIGNEDLONG XSD_UNSIGNEDINT XSD_UNSIGNEDSHORT XSD_UNSIGNEDBYTE XSD_POSITIVEINTEGER XSD_NMTOKENS XSD_ANYTYPE XSD_ANYXML APACHE_MAP SOAP_ENC_OBJECT SOAP_ENC_ARRAY XSD_1999_TIMEINSTANT XSD_NAMESPACE XSD_1999_NAMESPACE SOAP_SINGLE_ELEMENT_ARRAYS SOAP_WAIT_ONE_WAY_CALLS SOAP_USE_XSI_ARRAY_TYPE WSDL_CACHE_NONE WSDL_CACHE_DISK WSDL_CACHE_MEMORY WSDL_CACHE_BOTH SOAP_SSL_METHOD_TLS SOAP_SSL_METHOD_SSLv2 SOAP_SSL_METHOD_SSLv3 SOAP_SSL_METHOD_SSLv23 contained
" sockets
-syn keyword phpConstants AF_UNIX AF_INET AF_INET6 SOCK_STREAM SOCK_DGRAM SOCK_RAW SOCK_SEQPACKET SOCK_RDM MSG_OOB MSG_WAITALL MSG_CTRUNC MSG_TRUNC MSG_PEEK MSG_DONTROUTE MSG_EOR MSG_EOF MSG_CONFIRM MSG_ERRQUEUE MSG_NOSIGNAL MSG_DONTWAIT MSG_MORE MSG_WAITFORONE MSG_CMSG_CLOEXEC SO_DEBUG SO_REUSEADDR SO_REUSEPORT SO_KEEPALIVE SO_DONTROUTE SO_LINGER SO_BROADCAST SO_OOBINLINE SO_SNDBUF SO_RCVBUF SO_SNDLOWAT SO_RCVLOWAT SO_SNDTIMEO SO_RCVTIMEO SO_TYPE SO_ERROR SO_BINDTODEVICE SOL_SOCKET SOMAXCONN TCP_NODELAY PHP_NORMAL_READ PHP_BINARY_READ MCAST_JOIN_GROUP MCAST_LEAVE_GROUP MCAST_BLOCK_SOURCE MCAST_UNBLOCK_SOURCE MCAST_JOIN_SOURCE_GROUP MCAST_LEAVE_SOURCE_GROUP IP_MULTICAST_IF IP_MULTICAST_TTL IP_MULTICAST_LOOP IPV6_MULTICAST_IF IPV6_MULTICAST_HOPS IPV6_MULTICAST_LOOP SOCKET_EPERM SOCKET_ENOENT SOCKET_EINTR SOCKET_EIO SOCKET_ENXIO SOCKET_E2BIG SOCKET_EBADF SOCKET_EAGAIN SOCKET_ENOMEM SOCKET_EACCES SOCKET_EFAULT SOCKET_ENOTBLK SOCKET_EBUSY SOCKET_EEXIST SOCKET_EXDEV SOCKET_ENODEV SOCKET_ENOTDIR SOCKET_EISDIR SOCKET_EINVAL SOCKET_ENFILE SOCKET_EMFILE SOCKET_ENOTTY SOCKET_ENOSPC SOCKET_ESPIPE SOCKET_EROFS SOCKET_EMLINK SOCKET_EPIPE SOCKET_ENAMETOOLONG SOCKET_ENOLCK SOCKET_ENOSYS SOCKET_ENOTEMPTY SOCKET_ELOOP SOCKET_EWOULDBLOCK SOCKET_ENOMSG SOCKET_EIDRM SOCKET_ECHRNG SOCKET_EL2NSYNC SOCKET_EL3HLT SOCKET_EL3RST SOCKET_ELNRNG SOCKET_EUNATCH SOCKET_ENOCSI SOCKET_EL2HLT SOCKET_EBADE SOCKET_EBADR SOCKET_EXFULL SOCKET_ENOANO SOCKET_EBADRQC SOCKET_EBADSLT SOCKET_ENOSTR SOCKET_ENODATA SOCKET_ETIME SOCKET_ENOSR SOCKET_ENONET SOCKET_EREMOTE SOCKET_ENOLINK SOCKET_EADV SOCKET_ESRMNT SOCKET_ECOMM SOCKET_EPROTO SOCKET_EMULTIHOP SOCKET_EBADMSG SOCKET_ENOTUNIQ SOCKET_EBADFD SOCKET_EREMCHG SOCKET_ERESTART SOCKET_ESTRPIPE SOCKET_EUSERS SOCKET_ENOTSOCK SOCKET_EDESTADDRREQ SOCKET_EMSGSIZE SOCKET_EPROTOTYPE SOCKET_ENOPROTOOPT SOCKET_EPROTONOSUPPORT SOCKET_ESOCKTNOSUPPORT SOCKET_EOPNOTSUPP SOCKET_EPFNOSUPPORT SOCKET_EAFNOSUPPORT SOCKET_EADDRINUSE SOCKET_EADDRNOTAVAIL SOCKET_ENETDOWN SOCKET_ENETUNREACH SOCKET_ENETRESET SOCKET_ECONNABORTED SOCKET_ECONNRESET SOCKET_ENOBUFS SOCKET_EISCONN SOCKET_ENOTCONN SOCKET_ESHUTDOWN SOCKET_ETOOMANYREFS SOCKET_ETIMEDOUT SOCKET_ECONNREFUSED SOCKET_EHOSTDOWN SOCKET_EHOSTUNREACH SOCKET_EALREADY SOCKET_EINPROGRESS SOCKET_EISNAM SOCKET_EREMOTEIO SOCKET_EDQUOT SOCKET_ENOMEDIUM SOCKET_EMEDIUMTYPE IPPROTO_IP IPPROTO_IPV6 SOL_TCP SOL_UDP IPV6_UNICAST_HOPS IPV6_RECVPKTINFO IPV6_PKTINFO IPV6_RECVHOPLIMIT IPV6_HOPLIMIT IPV6_RECVTCLASS IPV6_TCLASS SCM_RIGHTS SCM_CREDENTIALS SO_PASSCRED contained
+syn keyword phpConstants AF_UNIX AF_INET AF_INET6 SOCK_STREAM SOCK_DGRAM SOCK_RAW SOCK_SEQPACKET SOCK_RDM MSG_OOB MSG_WAITALL MSG_CTRUNC MSG_TRUNC MSG_PEEK MSG_DONTROUTE MSG_EOR MSG_EOF MSG_CONFIRM MSG_ERRQUEUE MSG_NOSIGNAL MSG_DONTWAIT MSG_MORE MSG_WAITFORONE MSG_CMSG_CLOEXEC SO_DEBUG SO_REUSEADDR SO_KEEPALIVE SO_DONTROUTE SO_LINGER SO_BROADCAST SO_OOBINLINE SO_SNDBUF SO_RCVBUF SO_SNDLOWAT SO_RCVLOWAT SO_SNDTIMEO SO_RCVTIMEO SO_TYPE SO_ERROR SO_BINDTODEVICE SOL_SOCKET SOMAXCONN TCP_NODELAY PHP_NORMAL_READ PHP_BINARY_READ MCAST_JOIN_GROUP MCAST_LEAVE_GROUP MCAST_BLOCK_SOURCE MCAST_UNBLOCK_SOURCE MCAST_JOIN_SOURCE_GROUP MCAST_LEAVE_SOURCE_GROUP IP_MULTICAST_IF IP_MULTICAST_TTL IP_MULTICAST_LOOP IPV6_MULTICAST_IF IPV6_MULTICAST_HOPS IPV6_MULTICAST_LOOP SOCKET_EPERM SOCKET_ENOENT SOCKET_EINTR SOCKET_EIO SOCKET_ENXIO SOCKET_E2BIG SOCKET_EBADF SOCKET_EAGAIN SOCKET_ENOMEM SOCKET_EACCES SOCKET_EFAULT SOCKET_ENOTBLK SOCKET_EBUSY SOCKET_EEXIST SOCKET_EXDEV SOCKET_ENODEV SOCKET_ENOTDIR SOCKET_EISDIR SOCKET_EINVAL SOCKET_ENFILE SOCKET_EMFILE SOCKET_ENOTTY SOCKET_ENOSPC SOCKET_ESPIPE SOCKET_EROFS SOCKET_EMLINK SOCKET_EPIPE SOCKET_ENAMETOOLONG SOCKET_ENOLCK SOCKET_ENOSYS SOCKET_ENOTEMPTY SOCKET_ELOOP SOCKET_EWOULDBLOCK SOCKET_ENOMSG SOCKET_EIDRM SOCKET_ECHRNG SOCKET_EL2NSYNC SOCKET_EL3HLT SOCKET_EL3RST SOCKET_ELNRNG SOCKET_EUNATCH SOCKET_ENOCSI SOCKET_EL2HLT SOCKET_EBADE SOCKET_EBADR SOCKET_EXFULL SOCKET_ENOANO SOCKET_EBADRQC SOCKET_EBADSLT SOCKET_ENOSTR SOCKET_ENODATA SOCKET_ETIME SOCKET_ENOSR SOCKET_ENONET SOCKET_EREMOTE SOCKET_ENOLINK SOCKET_EADV SOCKET_ESRMNT SOCKET_ECOMM SOCKET_EPROTO SOCKET_EMULTIHOP SOCKET_EBADMSG SOCKET_ENOTUNIQ SOCKET_EBADFD SOCKET_EREMCHG SOCKET_ERESTART SOCKET_ESTRPIPE SOCKET_EUSERS SOCKET_ENOTSOCK SOCKET_EDESTADDRREQ SOCKET_EMSGSIZE SOCKET_EPROTOTYPE SOCKET_ENOPROTOOPT SOCKET_EPROTONOSUPPORT SOCKET_ESOCKTNOSUPPORT SOCKET_EOPNOTSUPP SOCKET_EPFNOSUPPORT SOCKET_EAFNOSUPPORT SOCKET_EADDRINUSE SOCKET_EADDRNOTAVAIL SOCKET_ENETDOWN SOCKET_ENETUNREACH SOCKET_ENETRESET SOCKET_ECONNABORTED SOCKET_ECONNRESET SOCKET_ENOBUFS SOCKET_EISCONN SOCKET_ENOTCONN SOCKET_ESHUTDOWN SOCKET_ETOOMANYREFS SOCKET_ETIMEDOUT SOCKET_ECONNREFUSED SOCKET_EHOSTDOWN SOCKET_EHOSTUNREACH SOCKET_EALREADY SOCKET_EINPROGRESS SOCKET_EISNAM SOCKET_EREMOTEIO SOCKET_EDQUOT SOCKET_ENOMEDIUM SOCKET_EMEDIUMTYPE IPPROTO_IP IPPROTO_IPV6 SOL_TCP SOL_UDP IPV6_UNICAST_HOPS IPV6_RECVPKTINFO IPV6_PKTINFO IPV6_RECVHOPLIMIT IPV6_HOPLIMIT IPV6_RECVTCLASS IPV6_TCLASS SCM_RIGHTS SCM_CREDENTIALS SO_PASSCRED contained
" SPL
syn keyword phpConstants LEAVES_ONLY SELF_FIRST CHILD_FIRST CATCH_GET_CHILD CALL_TOSTRING TOSTRING_USE_KEY TOSTRING_USE_CURRENT TOSTRING_USE_INNER FULL_CACHE USE_KEY MATCH GET_MATCH ALL_MATCHES SPLIT REPLACE BYPASS_CURRENT BYPASS_KEY PREFIX_LEFT PREFIX_MID_HAS_NEXT PREFIX_MID_LAST PREFIX_END_HAS_NEXT PREFIX_END_LAST PREFIX_RIGHT STD_PROP_LIST ARRAY_AS_PROPS CHILD_ARRAYS_ONLY CURRENT_MODE_MASK CURRENT_AS_PATHNAME CURRENT_AS_FILEINFO CURRENT_AS_SELF KEY_MODE_MASK KEY_AS_PATHNAME FOLLOW_SYMLINKS KEY_AS_FILENAME NEW_CURRENT_AND_KEY OTHER_MODE_MASK SKIP_DOTS UNIX_PATHS DROP_NEW_LINE READ_AHEAD SKIP_EMPTY READ_CSV IT_MODE_LIFO IT_MODE_FIFO IT_MODE_DELETE IT_MODE_KEEP EXTR_BOTH EXTR_PRIORITY EXTR_DATA MIT_NEED_ANY MIT_NEED_ALL MIT_KEYS_NUMERIC MIT_KEYS_ASSOC contained
@@ -423,10 +423,10 @@ if !exists("php_ignore_phpdoc")
syn case ignore
syn region phpDocComment start="/\*\*" end="\*/" keepend contains=phpCommentTitle,phpDocTags,phpTodo,@Spell
- 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=phpComment
+ 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=phpComment
- 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\)\s\+\S\+.*" contains=phpDocParam containedin=phpComment
+ 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\)\s\+\S\+.*" contains=phpDocParam containedin=phpDocComment
syn match phpDocParam "\s\S\+" contained contains=phpDocIdentifier
syn match phpDocIdentifier contained "$\h\w*"
@@ -479,8 +479,11 @@ else
syn match phpParent "[({[\]})]" contained
endif
+" Static classes
+syn match phpStaticClasses "\v\h\w+(::)@=" contained display
+
" Clusters
-syn cluster phpClConst contains=phpFunctions,phpClasses,phpIdentifier,phpStatement,phpKeyword,phpOperator,phpSplatOperator,phpStringSingle,phpStringDouble,phpBacktick,phpNumber,phpType,phpBoolean,phpStructure,phpMethodsVar,phpConstants,phpException,phpSuperglobals,phpMagicConstants,phpServerVars
+syn cluster phpClConst contains=phpFunctions,phpClasses,phpStaticClasses,phpIdentifier,phpStatement,phpKeyword,phpOperator,phpSplatOperator,phpStringSingle,phpStringDouble,phpBacktick,phpNumber,phpType,phpBoolean,phpStructure,phpMethodsVar,phpConstants,phpException,phpSuperglobals,phpMagicConstants,phpServerVars
syn cluster phpClInside contains=@phpClConst,phpComment,phpDocComment,phpParent,phpParentError,phpInclude,phpHereDoc,phpNowDoc
syn cluster phpClFunction contains=@phpClInside,phpDefine,phpParentError,phpStorageClass,phpKeyword
syn cluster phpClTop contains=@phpClFunction,phpFoldFunction,phpFoldClass,phpFoldInterface,phpFoldTry,phpFoldCatch
@@ -579,6 +582,8 @@ if !exists("did_php_syn_inits")
hi def link phpFCKeyword phpKeyword
hi def link phpSCKeyword phpKeyword
+ hi def link phpStaticClasses phpClasses
+
if exists("php_var_selector_is_identifier")
hi def link phpVarSelector phpIdentifier
else
diff --git a/syntax/ruby.vim b/syntax/ruby.vim
index 75da6085..052d602e 100644
--- a/syntax/ruby.vim
+++ b/syntax/ruby.vim
@@ -101,9 +101,9 @@ syn match rubySymbol "[]})\"':]\@<!:\$\%(-.\|[`~<=>_,;:!?/.'"@$*\&+0]\)"
syn match rubySymbol "[]})\"':]\@<!:\%(\$\|@@\=\)\=\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*"
syn match rubySymbol "[]})\"':]\@<!:\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\%([?!=]>\@!\)\="
syn match rubySymbol "\%([{(,]\_s*\)\@<=\l\w*[!?]\=::\@!"he=e-1
-syn match rubySymbol "[]})\"':]\@<!\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:\s\@="he=e-1
+syn match rubySymbol "[]})\"':]\@<!\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],]\@="he=e-1
syn match rubySymbol "\%([{(,]\_s*\)\@<=[[:space:],{]\l\w*[!?]\=::\@!"hs=s+1,he=e-1
-syn match rubySymbol "[[:space:],{(]\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:\s\@="hs=s+1,he=e-1
+syn match rubySymbol "[[:space:],{(]\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],]\@="hs=s+1,he=e-1
syn region rubySymbol start="[]})\"':]\@<!:'" end="'" skip="\\\\\|\\'" contains=rubyQuoteEscape fold
syn region rubySymbol start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial fold
@@ -143,6 +143,7 @@ syn region rubyString matchgroup=rubyStringDelimiter start="%[qwi]<" end="
syn region rubyString matchgroup=rubyStringDelimiter start="%[qwi]\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimEscape
syn region rubyString matchgroup=rubyStringDelimiter start="%[qwi](" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimEscape
syn region rubyString matchgroup=rubyStringDelimiter start="%q " end=" " skip="\\\\\|\\)" fold
+
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\z([~`!@#$%^&*_\-+=|\:;"',.? /]\)" end="\z1" skip="\\\\\|\\\z1" fold
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimEscape
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimEscape
@@ -197,7 +198,7 @@ syn match rubyControl "\<\%(and\|break\|in\|next\|not\|or\|redo\|rescue
syn match rubyOperator "\<defined?" display
syn match rubyKeyword "\<\%(super\|yield\)\>[?!]\@!"
syn match rubyBoolean "\<\%(true\|false\)\>[?!]\@!"
-syn match rubyPseudoVariable "\<\%(nil\|self\|__ENCODING__\|__FILE__\|__LINE__\|__callee__\|__method__\)\>[?!]\@!" " TODO: reorganise
+syn match rubyPseudoVariable "\<\%(nil\|self\|__ENCODING__\|__dir__\|__FILE__\|__LINE__\|__callee__\|__method__\)\>[?!]\@!" " TODO: reorganise
syn match rubyBeginEnd "\<\%(BEGIN\|END\)\>[?!]\@!"
" Expensive Mode - match 'end' with the appropriate opening keyword for syntax
diff --git a/syntax/rust.vim b/syntax/rust.vim
index 0d248354..837a8787 100644
--- a/syntax/rust.vim
+++ b/syntax/rust.vim
@@ -3,7 +3,7 @@
" Maintainer: Patrick Walton <pcwalton@mozilla.com>
" Maintainer: Ben Blum <bblum@cs.cmu.edu>
" Maintainer: Chris Morgan <me@chrismorgan.info>
-" Last Change: 2014 Jan 4
+" Last Change: 2014 Feb 14
if version < 600
syntax clear
@@ -18,7 +18,8 @@ syn keyword rustOperator as
syn match rustAssert "\<assert\(\w\)*!" contained
syn match rustFail "\<fail\(\w\)*!" contained
-syn keyword rustKeyword break continue do extern
+syn keyword rustKeyword break continue do
+syn keyword rustKeyword extern nextgroup=rustExternCrate skipwhite
syn keyword rustKeyword for in if impl let
syn keyword rustKeyword loop once priv pub
syn keyword rustKeyword return
@@ -31,6 +32,10 @@ syn keyword rustKeyword proc
syn keyword rustStorage mut ref static
syn keyword rustObsoleteStorage const
+syn keyword rustInvalidBareKeyword crate
+
+syn keyword rustExternCrate crate contained nextgroup=rustIdentifier 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
@@ -80,24 +85,18 @@ syn keyword rustTrait Iterator DoubleEndedIterator RandomAccessIterator Cloneabl
syn keyword rustTrait OrdIterator MutableDoubleEndedIterator ExactSize
syn keyword rustTrait Algebraic Trigonometric Exponential Hyperbolic
-syn keyword rustTrait Bitwise Bounded Integer Fractional Real RealExt
-syn keyword rustTrait Num NumCast CheckedAdd CheckedSub CheckedMul
+syn keyword rustTrait Bitwise Bounded Fractional
+syn keyword rustTrait Num NumCast CheckedAdd CheckedSub CheckedMul CheckedDiv
syn keyword rustTrait Orderable Signed Unsigned Round
syn keyword rustTrait Primitive Int Float ToStrRadix ToPrimitive FromPrimitive
syn keyword rustTrait GenericPath Path PosixPath WindowsPath
syn keyword rustTrait RawPtr
syn keyword rustTrait Buffer Writer Reader Seek
-syn keyword rustTrait SendStr SendStrOwned SendStrStatic IntoSendStr
-syn keyword rustTrait Str StrVector StrSlice OwnedStr
-syn keyword rustTrait IterBytes
+syn keyword rustTrait Str StrVector StrSlice OwnedStr IntoMaybeOwned
syn keyword rustTrait ToStr IntoStr
-syn keyword rustTrait CloneableTuple ImmutableTuple
syn keyword rustTrait Tuple1 Tuple2 Tuple3 Tuple4
syn keyword rustTrait Tuple5 Tuple6 Tuple7 Tuple8
syn keyword rustTrait Tuple9 Tuple10 Tuple11 Tuple12
-syn keyword rustTrait ImmutableTuple1 ImmutableTuple2 ImmutableTuple3 ImmutableTuple4
-syn keyword rustTrait ImmutableTuple5 ImmutableTuple6 ImmutableTuple7 ImmutableTuple8
-syn keyword rustTrait ImmutableTuple9 ImmutableTuple10 ImmutableTuple11 ImmutableTuple12
syn keyword rustTrait ImmutableEqVector ImmutableTotalOrdVector ImmutableCloneableVector
syn keyword rustTrait OwnedVector OwnedCloneableVector OwnedEqVector MutableVector
syn keyword rustTrait Vector VectorVector CloneableVector ImmutableVector
@@ -246,6 +245,8 @@ hi def link rustDeriving PreProc
hi def link rustStorage StorageClass
hi def link rustObsoleteStorage Error
hi def link rustLifetime Special
+hi def link rustInvalidBareKeyword Error
+hi def link rustExternCrate rustKeyword
" Other Suggestions:
" hi rustAttribute ctermfg=cyan
diff --git a/syntax/scala.vim b/syntax/scala.vim
index 1ee87478..ce309a89 100644
--- a/syntax/scala.vim
+++ b/syntax/scala.vim
@@ -10,7 +10,7 @@ syn case match
syn sync minlines=200 maxlines=1000
syn keyword scalaKeyword catch do else final finally for forSome if
-syn keyword scalaKeyword match return throw try while yield
+syn keyword scalaKeyword match return throw try while yield macro
syn keyword scalaKeyword class trait object extends with nextgroup=scalaInstanceDeclaration skipwhite
syn keyword scalaKeyword case nextgroup=scalaKeyword,scalaCaseFollowing skipwhite
syn keyword scalaKeyword val nextgroup=scalaNameDefinition,scalaQuasiQuotes skipwhite
diff --git a/syntax/slim.vim b/syntax/slim.vim
index 26b35967..71d1e2af 100644
--- a/syntax/slim.vim
+++ b/syntax/slim.vim
@@ -37,7 +37,7 @@ syn match slimDocTypeKeyword "^\s*\(doctype\)\s\+" nextgroup=slimDocType
syn keyword slimTodo FIXME TODO NOTE OPTIMIZE XXX contained
syn keyword htmlTagName contained script
-syn match slimTag "\w\+" contained contains=htmlTagName nextgroup=@slimComponent
+syn match slimTag "\w\+[><]*" contained contains=htmlTagName nextgroup=@slimComponent
syn match slimIdChar "#{\@!" contained nextgroup=slimId
syn match slimId "\%(\w\|-\)\+" contained nextgroup=@slimComponent
syn match slimClassChar "\." contained nextgroup=slimClass
@@ -79,6 +79,7 @@ syn match slimIEConditional "\%(^\s*/\)\@<=\[\s*if\>[^]]*]" contained containedi
hi def link slimAttrString String
hi def link slimBegin String
hi def link slimClass Type
+hi def link slimAttr Type
hi def link slimClassChar Type
hi def link slimComment Comment
hi def link slimDocType Identifier
diff --git a/syntax/stylus.vim b/syntax/stylus.vim
index 930e0b9b..6099e638 100644
--- a/syntax/stylus.vim
+++ b/syntax/stylus.vim
@@ -317,7 +317,6 @@ endif
" Based On: Tim Pope (sass.vim)
syn case ignore
-syn region cssInclude start="@import" end="\n" contains=cssComment,cssFuncVal,cssRuleProp
syn cluster stylusCssSelectors contains=cssTagName,cssSelector,cssPseudo
syn cluster stylusCssValues contains=cssValueLength,cssValueInteger,cssValueNumber,cssValueAngle,cssValueTime,cssValueFrequency,cssColorVal,cssCommonVal,cssFontVal,cssListVal,cssTextVal,cssVisualVal,cssBorderVal,cssBackgroundVal,cssFuncVal,cssAdvancedVal
@@ -345,6 +344,9 @@ syn match stylusFunction "\<\%(opposite-position\|image-size\|add-property\)\>(\
syn keyword stylusVariable null true false arguments
syn keyword stylusControl if else unless for in return
+syn match stylusImport "@\%(import\|require\)" nextgroup=stylusImportList
+syn match stylusImportList "[^;]\+" contained contains=cssString.*,cssMediaType,cssURL
+
syn match stylusAmpersand "&"
syn match stylusClass "[[:alnum:]_-]\+" contained
syn match stylusClassChar "\.[[:alnum:]_-]\@=" nextgroup=stylusClass