summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2019-03-04 09:15:44 +0100
committerAdam Stankiewicz <sheerun@sher.pl>2019-03-04 09:15:44 +0100
commited677c34d55a0e025b7008f29419498a3989cde2 (patch)
tree62efef78ed05b2b4e61efb21e40a6b337359eb8e
parentc161994e9607399a7b365ab274592bfc4f100306 (diff)
downloadvim-polyglot-ed677c34d55a0e025b7008f29419498a3989cde2.tar.gz
vim-polyglot-ed677c34d55a0e025b7008f29419498a3989cde2.zip
Update
-rw-r--r--README.md2
-rw-r--r--after/syntax/yaml.vim2
-rw-r--r--autoload/RstFold.vim14
-rw-r--r--autoload/elixir/indent.vim2
-rw-r--r--autoload/go/config.vim10
-rw-r--r--autoload/rubycomplete.vim66
-rw-r--r--autoload/rust.vim59
-rw-r--r--compiler/ruby.vim1
-rw-r--r--compiler/sbt.vim4
-rw-r--r--extras/flow.vim38
-rw-r--r--ftdetect/polyglot.vim66
-rw-r--r--ftplugin/elixir.vim6
-rw-r--r--ftplugin/eruby.vim17
-rw-r--r--ftplugin/graphql.vim2
-rw-r--r--ftplugin/kotlin.vim9
-rw-r--r--ftplugin/rst.vim9
-rw-r--r--ftplugin/ruby.vim36
-rw-r--r--ftplugin/rust.vim10
-rw-r--r--ftplugin/terraform.vim4
-rw-r--r--ftplugin/toml.vim20
-rw-r--r--indent/ansible.vim2
-rw-r--r--indent/blade.vim4
-rw-r--r--indent/crystal.vim6
-rw-r--r--indent/eruby.vim16
-rw-r--r--indent/graphql.vim2
-rw-r--r--indent/ruby.vim33
-rw-r--r--syntax/crystal.vim30
-rw-r--r--syntax/dart.vim5
-rw-r--r--syntax/elixir.vim181
-rw-r--r--syntax/gitrebase.vim6
-rw-r--r--syntax/go.vim74
-rw-r--r--syntax/i3config.vim18
-rw-r--r--syntax/javascript.vim6
-rw-r--r--syntax/julia.vim54
-rw-r--r--syntax/kotlin.vim19
-rw-r--r--syntax/markdown.vim26
-rw-r--r--syntax/mustache.vim2
-rw-r--r--syntax/pug.vim13
-rw-r--r--syntax/python.vim28
-rw-r--r--syntax/racket.vim39
-rw-r--r--syntax/rst.vim4
-rw-r--r--syntax/ruby.vim635
-rw-r--r--syntax/rust.vim4
-rw-r--r--syntax/terraform.vim692
-rw-r--r--syntax/vifm.vim12
45 files changed, 1579 insertions, 709 deletions
diff --git a/README.md b/README.md
index 2e9b1013..4f9489d5 100644
--- a/README.md
+++ b/README.md
@@ -94,7 +94,7 @@ If you need full functionality of any plugin, please use it directly with your p
- [jst](https://github.com/briancollins/vim-jst) (syntax, indent)
- [jsx](https://github.com/mxw/vim-jsx) (after)
- [julia](https://github.com/JuliaEditorSupport/julia-vim) (syntax, indent, autoload, ftplugin)
-- [kotlin](https://github.com/udalov/kotlin-vim) (syntax, indent)
+- [kotlin](https://github.com/udalov/kotlin-vim) (syntax, indent, ftplugin)
- [latex](https://github.com/LaTeX-Box-Team/LaTeX-Box) (syntax, indent, ftplugin)
- [less](https://github.com/groenewege/vim-less) (syntax, indent, ftplugin)
- [liquid](https://github.com/tpope/vim-liquid) (syntax, indent, ftplugin)
diff --git a/after/syntax/yaml.vim b/after/syntax/yaml.vim
index 489691b5..a73bbf56 100644
--- a/after/syntax/yaml.vim
+++ b/after/syntax/yaml.vim
@@ -27,7 +27,7 @@ syn match yamlBlock "[>|]\d\?[+-]"
syn region yamlComment start="\#" end="$"
syn match yamlIndicator "#YAML:\S\+"
-syn region yamlString start="\(^\|\s\|\[\|\,\|\-\)'" end="'" skip="\\'"
+syn region yamlString start="\(^\|\s\|\[\|\,\|\-\)\@<='" end="'" skip="\\'"
syn region yamlString start='"' end='"' skip='\\"' contains=yamlEscape
syn region yamlString matchgroup=yamlBlock start=/[>|]\s*\n\+\z(\s\+\)\S/rs=s+1 skip=/^\%(\z1\S\|^$\)/ end=/^\z1\@!.*/me=s-1
syn region yamlString matchgroup=yamlBlock start=/[>|]\(\d\|[+-]\)\s*\n\+\z(\s\+\)\S/rs=s+2 skip=/^\%(\z1\S\|^$\)/ end=/^\z1\@!.*/me=s-1
diff --git a/autoload/RstFold.vim b/autoload/RstFold.vim
index 558fe464..2d802842 100644
--- a/autoload/RstFold.vim
+++ b/autoload/RstFold.vim
@@ -2,9 +2,13 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rst') == -1
" Author: Antony Lee <anntzer.lee@gmail.com>
" Description: Helper functions for reStructuredText syntax folding
-" Last Modified: 2018-01-07
+" Last Modified: 2018-12-29
function s:CacheRstFold()
+ if !g:rst_fold_enabled
+ return
+ endif
+
let closure = {'header_types': {}, 'max_level': 0, 'levels': {}}
function closure.Process(match) dict
let curline = getcurpos()[1]
@@ -30,6 +34,10 @@ function s:CacheRstFold()
endfunction
function RstFold#GetRstFold()
+ if !g:rst_fold_enabled
+ return
+ endif
+
if !has_key(b:, 'RstFoldCache')
call s:CacheRstFold()
endif
@@ -41,6 +49,10 @@ function RstFold#GetRstFold()
endfunction
function RstFold#GetRstFoldText()
+ if !g:rst_fold_enabled
+ return
+ endif
+
if !has_key(b:, 'RstFoldCache')
call s:CacheRstFold()
endif
diff --git a/autoload/elixir/indent.vim b/autoload/elixir/indent.vim
index 20271ac5..4b5906e8 100644
--- a/autoload/elixir/indent.vim
+++ b/autoload/elixir/indent.vim
@@ -267,7 +267,7 @@ function! elixir#indent#handle_inside_block(context)
let config = {
\'f': {'aligned_clauses': s:keyword('end'), 'pattern_match_clauses': never_match},
\'c': {'aligned_clauses': s:keyword('end'), 'pattern_match_clauses': never_match},
- \'t': {'aligned_clauses': s:keyword('end\|catch\|rescue\|after'), 'pattern_match_clauses': s:keyword('catch\|rescue')},
+ \'t': {'aligned_clauses': s:keyword('end\|catch\|rescue\|after\|else'), 'pattern_match_clauses': s:keyword('catch\|rescue\|else')},
\'r': {'aligned_clauses': s:keyword('end\|after'), 'pattern_match_clauses': s:keyword('after')},
\'i': {'aligned_clauses': s:keyword('end\|else'), 'pattern_match_clauses': never_match},
\'[': {'aligned_clauses': ']', 'pattern_match_clauses': never_match},
diff --git a/autoload/go/config.vim b/autoload/go/config.vim
index 97cb3630..3020ee7e 100644
--- a/autoload/go/config.vim
+++ b/autoload/go/config.vim
@@ -390,8 +390,9 @@ function! go#config#HighlightFunctions() abort
return get(g:, 'go_highlight_functions', 0)
endfunction
-function! go#config#HighlightFunctionArguments() abort
- return get(g:, 'go_highlight_function_arguments', 0)
+function! go#config#HighlightFunctionParameters() abort
+ " fallback to highlight_function_arguments for backwards compatibility
+ return get(g:, 'go_highlight_function_parameters', get(g:, 'go_highlight_function_arguments', 0))
endfunction
function! go#config#HighlightFunctionCalls() abort
@@ -441,6 +442,11 @@ function! go#config#FoldEnable(...) abort
return get(g:, 'go_fold_enable', ['block', 'import', 'varconst', 'package_comment'])
endfunction
+function! go#config#EchoGoInfo() abort
+ return get(g:, "go_echo_go_info", 1)
+endfunction
+
+
" Set the default value. A value of "1" is a shortcut for this, for
" compatibility reasons.
if exists("g:go_gorename_prefill") && g:go_gorename_prefill == 1
diff --git a/autoload/rubycomplete.vim b/autoload/rubycomplete.vim
index 88dfaadd..a7f3fc19 100644
--- a/autoload/rubycomplete.vim
+++ b/autoload/rubycomplete.vim
@@ -1,11 +1,10 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1
" Vim completion script
-" Language: Ruby
-" Maintainer: Mark Guzman <segfault@hasno.info>
-" URL: https://github.com/vim-ruby/vim-ruby
-" Release Coordinator: Doug Kearns <dougkearns@gmail.com>
-" Maintainer Version: 0.8.1
+" Language: Ruby
+" Maintainer: Mark Guzman <segfault@hasno.info>
+" URL: https://github.com/vim-ruby/vim-ruby
+" Release Coordinator: Doug Kearns <dougkearns@gmail.com>
" ----------------------------------------------------------------------------
"
" Ruby IRB/Complete author: Keiju ISHITSUKA(keiju@ishitsuka.com)
@@ -55,6 +54,23 @@ if !exists("g:rubycomplete_include_objectspace")
endif
" }}} configuration failsafe initialization
+" {{{ regex patterns
+
+" Regex that defines the start-match for the 'end' keyword.
+let s:end_start_regex =
+ \ '\C\%(^\s*\|[=,*/%+\-|;{]\|<<\|>>\|:\s\)\s*\zs' .
+ \ '\<\%(module\|class\|if\|for\|while\|until\|case\|unless\|begin' .
+ \ '\|\%(\K\k*[!?]\?\s\+\)\=def\):\@!\>' .
+ \ '\|\%(^\|[^.:@$]\)\@<=\<do:\@!\>'
+
+" Regex that defines the middle-match for the 'end' keyword.
+let s:end_middle_regex = '\<\%(ensure\|else\|\%(\%(^\|;\)\s*\)\@<=\<rescue:\@!\>\|when\|elsif\):\@!\>'
+
+" Regex that defines the end-match for the 'end' keyword.
+let s:end_end_regex = '\%(^\|[^.:@$]\)\@<=\<end:\@!\>'
+
+" }}} regex patterns
+
" {{{ vim-side support functions
let s:rubycomplete_debug = 0
@@ -105,7 +121,7 @@ function! s:GetBufferRubyEntity( name, type, ... )
endif
let curpos = getpos(".")
- let [enum,ecol] = searchpairpos( crex, '', '\(end\|}\)', 'W' )
+ let [enum,ecol] = searchpairpos( s:end_start_regex, s:end_middle_regex, s:end_end_regex, 'W' )
call cursor(lastpos[1], lastpos[2])
if lnum > enum
@@ -130,19 +146,28 @@ function! s:IsPosInClassDef(pos)
return ret
endfunction
+function! s:IsInComment(pos)
+ let stack = synstack(a:pos[0], a:pos[1])
+ if !empty(stack)
+ return synIDattr(stack[0], 'name') =~ 'ruby\%(.*Comment\|Documentation\)'
+ else
+ return 0
+ endif
+endfunction
+
function! s:GetRubyVarType(v)
let stopline = 1
let vtp = ''
- let pos = getpos('.')
+ let curpos = getpos('.')
let sstr = '^\s*#\s*@var\s*'.escape(a:v, '*').'\>\s\+[^ \t]\+\s*$'
let [lnum,lcol] = searchpos(sstr,'nb',stopline)
if lnum != 0 && lcol != 0
- call setpos('.',pos)
+ call setpos('.',curpos)
let str = getline(lnum)
let vtp = substitute(str,sstr,'\1','')
return vtp
endif
- call setpos('.',pos)
+ call setpos('.',curpos)
let ctors = '\(now\|new\|open\|get_instance'
if exists('g:rubycomplete_rails') && g:rubycomplete_rails == 1 && s:rubycomplete_rails_loaded == 1
let ctors = ctors.'\|find\|create'
@@ -152,9 +177,13 @@ function! s:GetRubyVarType(v)
let fstr = '=\s*\([^ \t]\+.' . ctors .'\>\|[\[{"''/]\|%[xwQqr][(\[{@]\|[A-Za-z0-9@:\-()\.]\+...\?\|lambda\|&\)'
let sstr = ''.escape(a:v, '*').'\>\s*[+\-*/]*'.fstr
- let [lnum,lcol] = searchpos(sstr,'nb',stopline)
- if lnum != 0 && lcol != 0
- let str = matchstr(getline(lnum),fstr,lcol)
+ let pos = searchpos(sstr,'bW')
+ while pos != [0,0] && s:IsInComment(pos)
+ let pos = searchpos(sstr,'bW')
+ endwhile
+ if pos != [0,0]
+ let [lnum, col] = pos
+ let str = matchstr(getline(lnum),fstr,col)
let str = substitute(str,'^=\s*','','')
call setpos('.',pos)
@@ -176,7 +205,7 @@ function! s:GetRubyVarType(v)
end
return ''
endif
- call setpos('.',pos)
+ call setpos('.',curpos)
return ''
endfunction
@@ -673,11 +702,10 @@ class VimRubyCompletion
methods.delete_if { |c| c.match( /'/ ) }
end
- when /^::([A-Z][^:\.\(]*)$/ # Absolute Constant or class methods
+ when /^::([A-Z][^:\.\(]*)?$/ # Absolute Constant or class methods
dprint "const or cls"
receiver = $1
- methods = Object.constants
- methods.grep(/^#{receiver}/).collect{|e| "::" + e}
+ methods = Object.constants.collect{ |c| c.to_s }.grep(/^#{receiver}/)
when /^(((::)?[A-Z][^:.\(]*)+?)::?([^:.]*)$/ # Constant or class methods
receiver = $1
@@ -686,13 +714,13 @@ class VimRubyCompletion
load_buffer_class( receiver )
load_buffer_module( receiver )
begin
- classes = eval("#{receiver}.constants")
- #methods = eval("#{receiver}.methods")
+ constants = eval("#{receiver}.constants").collect{ |c| c.to_s }.grep(/^#{message}/)
+ methods = eval("#{receiver}.methods").collect{ |m| m.to_s }.grep(/^#{message}/)
rescue Exception
dprint "exception: %s" % $!
+ constants = []
methods = []
end
- methods.grep(/^#{message}/).collect{|e| receiver + "::" + e}
when /^(:[^:.]+)\.([^.]*)$/ # Symbol
dprint "symbol"
diff --git a/autoload/rust.vim b/autoload/rust.vim
index 81f8c635..d5a2e29f 100644
--- a/autoload/rust.vim
+++ b/autoload/rust.vim
@@ -5,23 +5,59 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
" Last Modified: May 27, 2014
" For bugs, patches and license go to https://github.com/rust-lang/rust.vim
-" Jump {{{1
-
-function! rust#Load()
+function! rust#Load()
" Utility call to get this script loaded, for debugging
endfunction
function! rust#GetConfigVar(name, default)
" Local buffer variable with same name takes predeence over global
- if has_key(b:, a:name)
+ if has_key(b:, a:name)
return get(b:, a:name)
endif
- if has_key(g:, a:name)
+ if has_key(g:, a:name)
return get(g:, a:name)
endif
return a:default
endfunction
+" Include expression {{{1
+
+function! rust#IncludeExpr(fname) abort
+ " Remove leading 'crate::' to deal with 2018 edition style 'use'
+ " statements
+ let l:fname = substitute(a:fname, '^crate::', '', '')
+
+ " Remove trailing colons arising from lines like
+ "
+ " use foo::{Bar, Baz};
+ let l:fname = substitute(l:fname, ':\+$', '', '')
+
+ " Replace '::' with '/'
+ let l:fname = substitute(l:fname, '::', '/', 'g')
+
+ " When we have
+ "
+ " use foo::bar::baz;
+ "
+ " we can't tell whether baz is a module or a function; and we can't tell
+ " which modules correspond to files.
+ "
+ " So we work our way up, trying
+ "
+ " foo/bar/baz.rs
+ " foo/bar.rs
+ " foo.rs
+ while l:fname !=# '.'
+ let l:path = findfile(l:fname)
+ if !empty(l:path)
+ return l:fname
+ endif
+ let l:fname = fnamemodify(l:fname, ':h')
+ endwhile
+ return l:fname
+endfunction
+
+" Jump {{{1
function! rust#Jump(mode, function) range
let cnt = v:count1
@@ -487,14 +523,6 @@ function! rust#Test(all, options) abort
return
endif
- let mod_name = expand('%:t:r')
- if mod_name ==# ''
- echohl ErrorMsg
- echo 'Cannot extract a module name from file name. Please add ! to command if you want to run all tests'
- echohl None
- return
- endif
-
let saved = getpos('.')
try
let func_name = s:SearchTestFunctionNameUnderCursor()
@@ -504,11 +532,10 @@ function! rust#Test(all, options) abort
echohl None
return
endif
- let spec = mod_name . '::' . func_name
if a:options ==# ''
- execute cmd . 'cargo test --manifest-path' manifest spec
+ execute cmd . 'cargo test --manifest-path' manifest func_name
else
- execute cmd . 'cargo test --manifest-path' manifest spec a:options
+ execute cmd . 'cargo test --manifest-path' manifest func_name a:options
endif
return
finally
diff --git a/compiler/ruby.vim b/compiler/ruby.vim
index 453b398b..c3cb12f9 100644
--- a/compiler/ruby.vim
+++ b/compiler/ruby.vim
@@ -6,7 +6,6 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" URL: https://github.com/vim-ruby/vim-ruby
" Release Coordinator: Doug Kearns <dougkearns@gmail.com>
-" ----------------------------------------------------------------------------
if exists("current_compiler")
finish
diff --git a/compiler/sbt.vim b/compiler/sbt.vim
index 41504d79..521f5288 100644
--- a/compiler/sbt.vim
+++ b/compiler/sbt.vim
@@ -22,8 +22,8 @@ set cpo-=C
CompilerSet makeprg=sbt\ -Dsbt.log.noformat=true\ compile
CompilerSet errorformat=
- \%E\ %#[error]\ %f:%l:\ %m,%C\ %#[error]\ %p^,%-C%.%#,%Z,
- \%W\ %#[warn]\ %f:%l:\ %m,%C\ %#[warn]\ %p^,%-C%.%#,%Z,
+ \%E\ %#[error]\ %f:%l:%c:\ %m,%C\ %#[error]\ %p^,%-C%.%#,%Z,
+ \%W\ %#[warn]\ %f:%l:%c:\ %m,%C\ %#[warn]\ %p^,%-C%.%#,%Z,
\%-G%.%#
let &cpo = s:cpo_save
diff --git a/extras/flow.vim b/extras/flow.vim
index f5166dfe..ecd368b1 100644
--- a/extras/flow.vim
+++ b/extras/flow.vim
@@ -5,13 +5,14 @@ syntax region jsFlowArgumentDef contained start=/:/
syntax region jsFlowArray contained matchgroup=jsFlowNoise start=/\[/ end=/\]/ contains=@jsFlowCluster,jsComment fold
syntax region jsFlowObject contained matchgroup=jsFlowNoise start=/{/ end=/}/ contains=@jsFlowCluster,jsComment fold
syntax region jsFlowExactObject contained matchgroup=jsFlowNoise start=/{|/ end=/|}/ contains=@jsFlowCluster,jsComment fold
-syntax region jsFlowParens contained matchgroup=jsFlowNoise start=/(/ end=/)/ contains=@jsFlowCluster keepend fold
+syntax region jsFlowParens contained matchgroup=jsFlowNoise start=/(/ end=/)/ contains=@jsFlowCluster nextgroup=jsFlowArrow skipwhite keepend extend fold
syntax match jsFlowNoise contained /[:;,<>]/
syntax keyword jsFlowType contained boolean number string null void any mixed JSON array Function object array bool class
-syntax keyword jsFlowTypeof contained typeof skipempty skipempty nextgroup=jsFlowTypeCustom,jsFlowType
-syntax match jsFlowTypeCustom contained /[0-9a-zA-Z_.]*/ skipwhite skipempty nextgroup=jsFlowGroup
-syntax region jsFlowGroup contained matchgroup=jsFlowNoise start=/</ end=/>/ contains=@jsFlowCluster
-syntax region jsFlowArrowArguments contained matchgroup=jsFlowNoise start=/(/ end=/)\%(\s*=>\)\@=/ oneline skipwhite skipempty nextgroup=jsFlowArrow contains=@jsFlowCluster
+syntax keyword jsFlowTypeof contained typeof skipempty skipwhite nextgroup=jsFlowTypeCustom,jsFlowType
+syntax match jsFlowTypeCustom contained /[0-9a-zA-Z_.]*/ skipwhite skipempty nextgroup=jsFlowGeneric
+syntax region jsFlowGeneric matchgroup=jsFlowNoise start=/\k\@<=</ end=/>/ contains=@jsFlowCluster containedin=@jsExpression,jsFlowDeclareBlock
+syntax region jsFlowGeneric contained matchgroup=jsFlowNoise start=/</ end=/>(\@=/ oneline contains=@jsFlowCluster containedin=@jsExpression,jsFlowDeclareBlock
+syntax region jsFlowObjectGeneric contained matchgroup=jsFlowNoise start=/\k\@<=</ end=/>/ contains=@jsFlowCluster nextgroup=jsFuncArgs
syntax match jsFlowArrow contained /=>/ skipwhite skipempty nextgroup=jsFlowType,jsFlowTypeCustom,jsFlowParens
syntax match jsFlowObjectKey contained /[0-9a-zA-Z_$?]*\(\s*:\)\@=/ contains=jsFunctionKey,jsFlowMaybe skipwhite skipempty nextgroup=jsObjectValue containedin=jsObject
syntax match jsFlowOrOperator contained /|/ skipwhite skipempty nextgroup=@jsFlowCluster
@@ -19,7 +20,7 @@ syntax keyword jsFlowImportType contained type typeof skipwhite skipempty ne
syntax match jsFlowWildcard contained /*/
syntax match jsFlowReturn contained /:\s*/ contains=jsFlowNoise skipwhite skipempty nextgroup=@jsFlowReturnCluster,jsFlowArrow,jsFlowReturnParens
-syntax region jsFlowReturnObject contained matchgroup=jsFlowNoise start=/{/ end=/}/ contains=@jsFlowCluster skipwhite skipempty nextgroup=jsFuncBlock,jsFlowReturnOrOp fold
+syntax region jsFlowReturnObject contained matchgroup=jsFlowNoise start=/{/ end=/}/ contains=@jsFlowCluster skipwhite skipempty nextgroup=jsFuncBlock,jsFlowReturnOrOp extend fold
syntax region jsFlowReturnArray contained matchgroup=jsFlowNoise start=/\[/ end=/\]/ contains=@jsFlowCluster skipwhite skipempty nextgroup=jsFuncBlock,jsFlowReturnOrOp fold
syntax region jsFlowReturnParens contained matchgroup=jsFlowNoise start=/(/ end=/)/ contains=@jsFlowCluster skipwhite skipempty nextgroup=jsFuncBlock,jsFlowReturnOrOp,jsFlowReturnArrow fold
syntax match jsFlowReturnArrow contained /=>/ skipwhite skipempty nextgroup=@jsFlowReturnCluster
@@ -28,13 +29,15 @@ syntax match jsFlowReturnMaybe contained /?/ skipwhite skipempty nextgroup=
syntax region jsFlowReturnGroup contained matchgroup=jsFlowNoise start=/</ end=/>/ contains=@jsFlowCluster skipwhite skipempty nextgroup=jsFuncBlock,jsFlowReturnOrOp
syntax match jsFlowReturnOrOp contained /\s*|\s*/ skipwhite skipempty nextgroup=@jsFlowReturnCluster
syntax match jsFlowWildcardReturn contained /*/ skipwhite skipempty nextgroup=jsFuncBlock
+syntax keyword jsFlowTypeofReturn contained typeof skipempty skipwhite nextgroup=@jsFlowReturnCluster
syntax region jsFlowFunctionGroup contained matchgroup=jsFlowNoise start=/</ end=/>/ contains=@jsFlowCluster skipwhite skipempty nextgroup=jsFuncArgs
syntax region jsFlowClassGroup contained matchgroup=jsFlowNoise start=/</ end=/>/ contains=@jsFlowCluster skipwhite skipempty nextgroup=jsClassBlock
syntax region jsFlowClassFunctionGroup contained matchgroup=jsFlowNoise start=/</ end=/>/ contains=@jsFlowCluster skipwhite skipempty nextgroup=jsFuncArgs
+syntax match jsFlowObjectFuncName contained /\<\K\k*<\@=/ skipwhite skipempty nextgroup=jsFlowObjectGeneric containedin=jsObject
syntax region jsFlowTypeStatement start=/\(opaque\s\+\)\?type\%(\s\+\k\)\@=/ end=/=\@=/ contains=jsFlowTypeOperator oneline skipwhite skipempty nextgroup=jsFlowTypeValue keepend
-syntax region jsFlowTypeValue contained matchgroup=jsFlowNoise start=/=/ end=/[\n;]/ contains=@jsFlowCluster,jsFlowGroup,jsFlowMaybe
+syntax region jsFlowTypeValue contained matchgroup=jsFlowNoise start=/=/ end=/\%(;\|\n\%(\s*|\)\@!\)/ contains=@jsFlowCluster,jsFlowGeneric,jsFlowMaybe
syntax match jsFlowTypeOperator contained /=/ containedin=jsFlowTypeValue
syntax match jsFlowTypeOperator contained /=/
syntax keyword jsFlowTypeKeyword contained type
@@ -43,20 +46,17 @@ syntax keyword jsFlowDeclare declare skipwhite skipempty nextgr
syntax match jsFlowClassProperty contained /\<[0-9a-zA-Z_$]*\>:\@=/ skipwhite skipempty nextgroup=jsFlowClassDef containedin=jsClassBlock
syntax region jsFlowClassDef contained start=/:/ end=/\%(\s*[,=;)\n]\)\@=/ contains=@jsFlowCluster skipwhite skipempty nextgroup=jsClassValue
-syntax region jsFlowModule contained start=/module/ end=/{\@=/ skipempty skipempty nextgroup=jsFlowDeclareBlock contains=jsString
-syntax region jsFlowInterface contained start=/interface/ end=/{\@=/ skipempty skipempty nextgroup=jsFlowInterfaceBlock contains=@jsFlowCluster
+syntax region jsFlowModule contained start=/module/ end=/\%({\|:\)\@=/ skipempty skipwhite nextgroup=jsFlowDeclareBlock contains=jsString
+syntax region jsFlowInterface contained start=/interface/ end=/{\@=/ skipempty skipwhite nextgroup=jsFlowInterfaceBlock contains=@jsFlowCluster
syntax region jsFlowDeclareBlock contained matchgroup=jsFlowNoise start=/{/ end=/}/ contains=jsFlowDeclare,jsFlowNoise fold
-" NOTE: It appears the nextgroup was causing a ton of breakages... testing it
-" witout a nextgroup, but keeping this arround for reference incase something breaks
-" syntax match jsFlowMaybe contained /?/ nextgroup=jsFlowType,jsFlowTypeCustom,jsFlowParens,jsFlowArrowArguments,jsFlowObject,jsFlowReturnObject extend keepend
syntax match jsFlowMaybe contained /?/
-syntax region jsFlowInterfaceBlock contained matchgroup=jsFlowNoise start=/{/ end=/}/ contains=jsObjectKey,jsObjectKeyString,jsObjectKeyComputed,jsObjectSeparator,jsObjectFuncName,jsObjectMethodType,jsGenerator,jsComment,jsObjectStringKey,jsSpreadExpression,jsFlowNoise keepend fold
+syntax region jsFlowInterfaceBlock contained matchgroup=jsFlowNoise start=/{/ end=/}/ contains=jsObjectKey,jsObjectKeyString,jsObjectKeyComputed,jsObjectSeparator,jsObjectFuncName,jsFlowObjectFuncName,jsObjectMethodType,jsGenerator,jsComment,jsObjectStringKey,jsSpreadExpression,jsFlowNoise,jsFlowParens,jsFlowGeneric keepend fold
syntax region jsFlowParenAnnotation contained start=/:/ end=/[,=)]\@=/ containedin=jsParen contains=@jsFlowCluster
-syntax cluster jsFlowReturnCluster contains=jsFlowNoise,jsFlowReturnObject,jsFlowReturnArray,jsFlowReturnKeyword,jsFlowReturnGroup,jsFlowReturnMaybe,jsFlowReturnOrOp,jsFlowWildcardReturn,jsFlowReturnArrow
-syntax cluster jsFlowCluster contains=jsFlowArray,jsFlowObject,jsFlowExactObject,jsFlowNoise,jsFlowTypeof,jsFlowType,jsFlowGroup,jsFlowArrowArguments,jsFlowMaybe,jsFlowParens,jsFlowOrOperator,jsFlowWildcard
+syntax cluster jsFlowReturnCluster contains=jsFlowNoise,jsFlowReturnObject,jsFlowReturnArray,jsFlowReturnKeyword,jsFlowReturnGroup,jsFlowReturnMaybe,jsFlowReturnOrOp,jsFlowWildcardReturn,jsFlowReturnArrow,jsFlowTypeofReturn
+syntax cluster jsFlowCluster contains=jsFlowArray,jsFlowObject,jsFlowExactObject,jsFlowNoise,jsFlowTypeof,jsFlowType,jsFlowGeneric,jsFlowMaybe,jsFlowParens,jsFlowOrOperator,jsFlowWildcard
if version >= 508 || !exists("did_javascript_syn_inits")
if version < 508
@@ -71,21 +71,22 @@ if version >= 508 || !exists("did_javascript_syn_inits")
HiLink jsFlowType Type
HiLink jsFlowTypeCustom PreProc
HiLink jsFlowTypeof PreProc
+ HiLink jsFlowTypeofReturn PreProc
HiLink jsFlowArray PreProc
HiLink jsFlowObject PreProc
HiLink jsFlowExactObject PreProc
HiLink jsFlowParens PreProc
- HiLink jsFlowGroup PreProc
+ HiLink jsFlowGeneric PreProc
+ HiLink jsFlowObjectGeneric jsFlowGeneric
HiLink jsFlowReturn PreProc
HiLink jsFlowParenAnnotation PreProc
HiLink jsFlowReturnObject jsFlowReturn
HiLink jsFlowReturnArray jsFlowArray
HiLink jsFlowReturnParens jsFlowParens
- HiLink jsFlowReturnGroup jsFlowGroup
+ HiLink jsFlowReturnGroup jsFlowGeneric
HiLink jsFlowFunctionGroup PreProc
HiLink jsFlowClassGroup PreProc
HiLink jsFlowClassFunctionGroup PreProc
- HiLink jsFlowArrowArguments PreProc
HiLink jsFlowArrow PreProc
HiLink jsFlowReturnArrow PreProc
HiLink jsFlowTypeStatement PreProc
@@ -105,6 +106,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")
HiLink jsFlowWildcardReturn PreProc
HiLink jsFlowImportType PreProc
HiLink jsFlowTypeValue PreProc
+ HiLink jsFlowObjectFuncName jsObjectFuncName
delcommand HiLink
endif
diff --git a/ftdetect/polyglot.vim b/ftdetect/polyglot.vim
index 888f78eb..1b6c984d 100644
--- a/ftdetect/polyglot.vim
+++ b/ftdetect/polyglot.vim
@@ -141,9 +141,18 @@ function! s:setupTemplate()
set ft=jinja2
endfunction
-au BufNewFile,BufRead * if s:isAnsible() | set ft=yaml.ansible | en
-au BufNewFile,BufRead *.j2 call s:setupTemplate()
-au BufNewFile,BufRead hosts set ft=ansible_hosts
+augroup ansible_vim_ftyaml_ansible
+ au!
+ au BufNewFile,BufRead * if s:isAnsible() | set ft=yaml.ansible | en
+augroup END
+augroup ansible_vim_ftjinja2
+ au!
+ au BufNewFile,BufRead *.j2 call s:setupTemplate()
+augroup END
+augroup ansible_vim_fthosts
+ au!
+ au BufNewFile,BufRead hosts set ft=ansible_hosts
+augroup END
augroup end
endif
@@ -363,45 +372,19 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'go') == -1
let s:cpo_save = &cpo
set cpo&vim
-" We take care to preserve the user's fileencodings and fileformats,
-" because those settings are global (not buffer local), yet we want
-" to override them for loading Go files, which are defined to be UTF-8.
-let s:current_fileformats = ''
-let s:current_fileencodings = ''
-
-" define fileencodings to open as utf-8 encoding even if it's ascii.
-function! s:gofiletype_pre(type)
- let s:current_fileformats = &g:fileformats
- let s:current_fileencodings = &g:fileencodings
- set fileencodings=utf-8 fileformats=unix
- let &l:filetype = a:type
-endfunction
-
-" restore fileencodings as others
-function! s:gofiletype_post()
- let &g:fileformats = s:current_fileformats
- let &g:fileencodings = s:current_fileencodings
-endfunction
-
" Note: should not use augroup in ftdetect (see :help ftdetect)
-au BufNewFile *.go setfiletype go | if &modifiable | setlocal fileencoding=utf-8 fileformat=unix | endif
-au BufRead *.go call s:gofiletype_pre("go")
-au BufReadPost *.go call s:gofiletype_post()
-
-au BufNewFile *.s setfiletype asm | if &modifiable | setlocal fileencoding=utf-8 fileformat=unix | endif
-au BufRead *.s call s:gofiletype_pre("asm")
-au BufReadPost *.s call s:gofiletype_post()
-
-au BufRead,BufNewFile *.tmpl set filetype=gohtmltmpl
+au BufRead,BufNewFile *.go setfiletype go
+au BufRead,BufNewFile *.s setfiletype asm
+au BufRead,BufNewFile *.tmpl setfiletype gohtmltmpl
" remove the autocommands for modsim3, and lprolog files so that their
" highlight groups, syntax, etc. will not be loaded. *.MOD is included, so
" that on case insensitive file systems the module2 autocmds will not be
" executed.
-au! BufNewFile,BufRead *.mod,*.MOD
+au! BufRead,BufNewFile *.mod,*.MOD
" Set the filetype if the first non-comment and non-blank line starts with
" 'module <path>'.
-au BufNewFile,BufRead go.mod call s:gomod()
+au BufRead,BufNewFile go.mod call s:gomod()
fun! s:gomod()
for l:i in range(1, line('$'))
@@ -411,7 +394,7 @@ fun! s:gomod()
endif
if l:l =~# '^module .\+'
- set filetype=gomod
+ setfiletype gomod
endif
break
@@ -663,9 +646,14 @@ endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'markdown') == -1
augroup filetypedetect
" markdown, from markdown.vim in plasticboy/vim-markdown:_SYNTAX
+if !has('patch-7.4.480')
+ " Before this patch, vim used modula2 for .md.
+ au! filetypedetect BufRead,BufNewFile *.md
+endif
+
" markdown filetype file
-au BufRead,BufNewFile *.{md,mdown,mkd,mkdn,markdown,mdwn} set filetype=markdown
-au BufRead,BufNewFile *.{md,mdown,mkd,mkdn,markdown,mdwn}.{des3,des,bf,bfa,aes,idea,cast,rc2,rc4,rc5,desx} set filetype=markdown
+au BufRead,BufNewFile *.{md,mdown,mkd,mkdn,markdown,mdwn} setfiletype markdown
+au BufRead,BufNewFile *.{md,mdown,mkd,mkdn,markdown,mdwn}.{des3,des,bf,bfa,aes,idea,cast,rc2,rc4,rc5,desx} setfiletype markdown
augroup end
endif
@@ -1040,7 +1028,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
" rust, from rust.vim in rust-lang/rust.vim
" vint: -ProhibitAutocmdWithNoGroup
-autocmd BufRead,BufNewFile *.rs set filetype=rust
+autocmd BufRead,BufNewFile *.rs setf rust
autocmd BufRead,BufNewFile Cargo.toml if &filetype == "" | set filetype=cfg | endif
" vim: set et sw=4 sts=4 ts=8:
@@ -1164,7 +1152,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'toml') == -1
augroup filetypedetect
" toml, from toml.vim in cespare/vim-toml
" Go dep and Rust use several TOML config files that are not named with .toml.
-autocmd BufNewFile,BufRead *.toml,Gopkg.lock,Cargo.lock,*/.cargo/config,*/.cargo/credentials,Pipfile set filetype=toml
+autocmd BufNewFile,BufRead *.toml,Gopkg.lock,Cargo.lock,*/.cargo/config,*/.cargo/credentials,Pipfile setf toml
augroup end
endif
diff --git a/ftplugin/elixir.vim b/ftplugin/elixir.vim
index debaa10a..f37efe68 100644
--- a/ftplugin/elixir.vim
+++ b/ftplugin/elixir.vim
@@ -30,7 +30,7 @@ let &l:path =
\ &g:path
\ ], ',')
setlocal includeexpr=elixir#util#get_filename(v:fname)
-setlocal suffixesadd=.ex,.exs,.eex,.erl,.yrl,.hrl
+setlocal suffixesadd=.ex,.exs,.eex,.erl,.xrl,.yrl,.hrl
let &l:define = 'def\(macro\|guard\|delegate\)\=p\='
@@ -49,9 +49,7 @@ onoremap <buffer> <silent> <expr> [[ ':silent keeppatterns ?'.b:block_begin.'<CR
onoremap <buffer> <silent> <expr> ][ ':silent keeppatterns /'.b:block_end .'<CR>'
onoremap <buffer> <silent> <expr> [] ':silent keeppatterns ?'.b:block_end .'<CR>'
-silent! setlocal formatoptions-=t formatoptions+=croqlj
-
-let b:undo_ftplugin = 'setlocal sw< sts< et< isk< com< cms< path< inex< sua< def<'.
+let b:undo_ftplugin = 'setlocal sw< sts< et< isk< com< cms< path< inex< sua< def< fo<'.
\ '| unlet! b:match_ignorecase b:match_words b:block_begin b:block_end'
endif
diff --git a/ftplugin/eruby.vim b/ftplugin/eruby.vim
index 12d3245f..07558f9c 100644
--- a/ftplugin/eruby.vim
+++ b/ftplugin/eruby.vim
@@ -7,7 +7,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1
" Release Coordinator: Doug Kearns <dougkearns@gmail.com>
" Only do this when not done yet for this buffer
-if get(b:, 'did_ftplugin') =~# '\<eruby\>'
+if exists("b:did_ftplugin")
finish
endif
@@ -25,8 +25,6 @@ endif
if &filetype =~ '^eruby\.'
let b:eruby_subtype = matchstr(&filetype,'^eruby\.\zs\w\+')
-elseif &filetype =~ '^.*\.eruby\>'
- let b:eruby_subtype = matchstr(&filetype,'^.\{-\}\ze\.eruby\>')
elseif !exists("b:eruby_subtype")
let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$")
let b:eruby_subtype = matchstr(s:lines,'eruby_subtype=\zs\w\+')
@@ -49,14 +47,11 @@ elseif !exists("b:eruby_subtype")
endif
endif
-if &filetype =~# '^eruby\>'
- if exists("b:eruby_subtype") && b:eruby_subtype != '' && b:eruby_subtype !=? 'eruby'
- exe "runtime! ftplugin/".b:eruby_subtype.".vim ftplugin/".b:eruby_subtype."_*.vim ftplugin/".b:eruby_subtype."/*.vim"
- else
- runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim
- endif
+if exists("b:eruby_subtype") && b:eruby_subtype != '' && b:eruby_subtype !=? 'eruby'
+ exe "runtime! ftplugin/".b:eruby_subtype.".vim ftplugin/".b:eruby_subtype."_*.vim ftplugin/".b:eruby_subtype."/*.vim"
+else
+ runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim
endif
-let s:did_ftplugin = get(b:, 'did_ftplugin', 1)
unlet! b:did_ftplugin
" Override our defaults if these were set by an included ftplugin.
@@ -89,7 +84,7 @@ let s:path = &l:path
let s:suffixesadd = &l:suffixesadd
runtime! ftplugin/ruby.vim ftplugin/ruby_*.vim ftplugin/ruby/*.vim
-let b:did_ftplugin = s:did_ftplugin . '.eruby'
+let b:did_ftplugin = 1
" Combine the new set of values with those previously included.
if exists("b:undo_ftplugin")
diff --git a/ftplugin/graphql.vim b/ftplugin/graphql.vim
index d1ac4329..ce5fd3d1 100644
--- a/ftplugin/graphql.vim
+++ b/ftplugin/graphql.vim
@@ -17,4 +17,6 @@ setlocal softtabstop=2
setlocal shiftwidth=2
setlocal expandtab
+let b:undo_ftplugin = 'setlocal com< cms< fo< isk< sts< sw< et<'
+
endif
diff --git a/ftplugin/kotlin.vim b/ftplugin/kotlin.vim
new file mode 100644
index 00000000..0fceaf35
--- /dev/null
+++ b/ftplugin/kotlin.vim
@@ -0,0 +1,9 @@
+if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'kotlin') == -1
+
+if exists("b:did_ftplugin") | finish | endif
+let b:did_ftplugin = 1
+
+setlocal comments=://
+setlocal commentstring=//\ %s
+
+endif
diff --git a/ftplugin/rst.vim b/ftplugin/rst.vim
index e6ef32cd..edd1f977 100644
--- a/ftplugin/rst.vim
+++ b/ftplugin/rst.vim
@@ -5,7 +5,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rst') == -1
" Maintainer: Marshall Ward <marshall.ward@gmail.com>
" Original Maintainer: Nikolai Weibull <now@bitwi.se>
" Website: https://github.com/marshallward/vim-restructuredtext
-" Latest Revision: 2018-01-07
+" Latest Revision: 2018-12-29
if exists("b:did_ftplugin")
finish
@@ -15,6 +15,11 @@ let b:did_ftplugin = 1
let s:cpo_save = &cpo
set cpo&vim
+"Disable folding
+if !exists('g:rst_fold_enabled')
+ let g:rst_fold_enabled = 0
+endif
+
let b:undo_ftplugin = "setl com< cms< et< fo<"
setlocal comments=fb:.. commentstring=..\ %s expandtab
@@ -27,7 +32,7 @@ setlocal formatoptions+=tcroql
"
" More sophisticated indentation rules should be revisted in the future.
-if !exists("g:rst_style") || g:rst_style != 0
+if exists("g:rst_style") && g:rst_style != 0
setlocal expandtab shiftwidth=3 softtabstop=3 tabstop=8
endif
diff --git a/ftplugin/ruby.vim b/ftplugin/ruby.vim
index 5b763e16..4c925fab 100644
--- a/ftplugin/ruby.vim
+++ b/ftplugin/ruby.vim
@@ -4,8 +4,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1
" Language: Ruby
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" URL: https://github.com/vim-ruby/vim-ruby
-" Release Coordinator: Doug Kearns <dougkearns@gmail.com>
-" ----------------------------------------------------------------------------
+" Release Coordinator: Doug Kearns <dougkearns@gmail.com>
if (exists("b:did_ftplugin"))
finish
@@ -26,20 +25,20 @@ if exists("loaded_matchit") && !exists("b:match_words")
let b:match_ignorecase = 0
let b:match_words =
- \ '\<\%(if\|unless\|case\|while\|until\|for\|do\|class\|module\|def\|begin\)\>=\@!' .
+ \ '\<\%(if\|unless\|case\|while\|until\|for\|do\|class\|module\|def\|=\@<!begin\)\>=\@!' .
\ ':' .
\ '\<\%(else\|elsif\|ensure\|when\|rescue\|break\|redo\|next\|retry\)\>' .
\ ':' .
- \ '\%(^\|[^.\:@$]\)\@<=\<end\:\@!\>' .
+ \ '\%(^\|[^.\:@$=]\)\@<=\<end\:\@!\>' .
+ \ ',^=begin\>:^=end\>,' .
\ ',{:},\[:\],(:)'
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\\|" .
+ \ "\\<ruby\\%(String\\|.\+Delimiter\\|Character\\|.\+Escape\\|" .
+ \ "Regexp\\|Interpolation\\|Comment\\|Documentation\\|" .
+ \ "ConditionalModifier\\|RepeatModifier\\|RescueModifier\\|OptionalDo\\|" .
+ \ "MethodName\\|BlockArgument\\|KeywordAsMethod\\|ClassVariable\\|" .
\ "InstanceVariable\\|GlobalVariable\\|Symbol\\)\\>'"
endif
@@ -154,7 +153,7 @@ endif
function! s:map(mode, flags, map) abort
let from = matchstr(a:map, '\S\+')
if empty(mapcheck(from, a:mode))
- exe a:mode.'map' '<buffer>' a:map
+ exe a:mode.'map' '<buffer>' a:flags a:map
let b:undo_ftplugin .= '|sil! '.a:mode.'unmap <buffer> '.from
endif
endfunction
@@ -313,13 +312,16 @@ function! s:synid() abort
endfunction
function! s:wrap_i(back,forward) abort
- execute 'norm k'.a:forward
+ execute 'norm! k'
+ execute 'norm '.a:forward
let line = line('.')
execute 'norm '.a:back
if line('.') == line - 1
return s:wrap_a(a:back,a:forward)
endif
- execute 'norm jV'.a:forward.'k'
+ execute 'norm! jV'
+ execute 'norm '.a:forward
+ execute 'norm! k'
endfunction
function! s:wrap_a(back,forward) abort
@@ -332,11 +334,15 @@ function! s:wrap_a(back,forward) abort
-
endwhile
if exists('after')
- execute 'norm V'.a:forward.'j'
+ execute 'norm! V'
+ execute 'norm '.a:forward
+ execute 'norm! j'
elseif line('.') > 1 && getline(line('.')-1) =~# '^\s*$'
- execute 'norm kV'.a:forward
+ execute 'norm! kV'
+ execute 'norm '.a:forward
else
- execute 'norm V'.a:forward
+ execute 'norm! V'
+ execute 'norm '.a:forward
endif
endfunction
diff --git a/ftplugin/rust.vim b/ftplugin/rust.vim
index cdc318f1..fa9e1562 100644
--- a/ftplugin/rust.vim
+++ b/ftplugin/rust.vim
@@ -5,7 +5,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
" Maintainer: Chris Morgan <me@chrismorgan.info>
" Maintainer: Kevin Ballard <kevin@sb.org>
" Last Change: June 08, 2016
-" For bugs, patches and license go to https://github.com/rust-lang/rust.vim
+" For bugs, patches and license go to https://github.com/rust-lang/rust.vim
if exists("b:did_ftplugin")
finish
@@ -54,8 +54,8 @@ if get(g:, 'rust_recommended_style', 1)
setlocal textwidth=99
endif
-" This includeexpr isn't perfect, but it's a good start
-setlocal includeexpr=substitute(v:fname,'::','/','g')
+setlocal include=\\v^\\s*(pub\\s+)?use\\s+\\zs(\\f\|:)+
+setlocal includeexpr=rust#IncludeExpr(v:fname)
setlocal suffixesadd=.rs
@@ -149,7 +149,7 @@ endif
" Cleanup {{{1
let b:undo_ftplugin = "
- \ setlocal formatoptions< comments< commentstring< includeexpr< suffixesadd<
+ \ setlocal formatoptions< comments< commentstring< include< includeexpr< suffixesadd<
\|if exists('b:rust_set_style')
\|setlocal tabstop< shiftwidth< softtabstop< expandtab< textwidth<
\|endif
@@ -188,7 +188,7 @@ let b:undo_ftplugin = "
" Code formatting on save
augroup rust.vim.PreWrite
autocmd!
- autocmd BufWritePre <buffer> silent! call rustfmt#PreWrite()
+ autocmd BufWritePre *.rs silent! call rustfmt#PreWrite()
augroup END
setlocal matchpairs+=<:>
diff --git a/ftplugin/terraform.vim b/ftplugin/terraform.vim
index bbebacbc..c5c30627 100644
--- a/ftplugin/terraform.vim
+++ b/ftplugin/terraform.vim
@@ -3,6 +3,8 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'terraform') ==
" terraform.vim - basic vim/terraform integration
" Maintainer: HashiVim <https://github.com/hashivim>
+set formatoptions-=t
+
if exists("g:loaded_terraform") || v:version < 700 || &cp || !executable('terraform')
finish
endif
@@ -44,7 +46,7 @@ endfunction
" https://github.com/fatih/vim-hclfmt/blob/master/autoload/fmt.vim
function! terraform#fmt()
let l:curw = winsaveview()
- let l:tmpfile = tempname()
+ let l:tmpfile = tempname() . ".tf"
call writefile(getline(1, "$"), l:tmpfile)
let output = system("terraform fmt -write " . l:tmpfile)
if v:shell_error == 0
diff --git a/ftplugin/toml.vim b/ftplugin/toml.vim
index baa19ba1..b440a714 100644
--- a/ftplugin/toml.vim
+++ b/ftplugin/toml.vim
@@ -3,7 +3,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'toml') == -1
" File: ftplugin/toml.vim
" Author: Kevin Ballard <kevin@sb.org>
" Description: FileType Plugin for Toml
-" Last Change: Dec 09, 2014
+" Last Change: Feb 12, 2019
if exists('b:did_ftplugin')
finish
@@ -12,24 +12,10 @@ let b:did_ftplugin = 1
let s:save_cpo = &cpo
set cpo&vim
+let b:undo_ftplugin = 'setlocal commentstring< comments<'
setlocal commentstring=#\ %s
-
-" Add NERDCommenter delimiters
-
-let s:delims = { 'left': '#' }
-if exists('g:NERDDelimiterMap')
- if !has_key(g:NERDDelimiterMap, 'toml')
- let g:NERDDelimiterMap.toml = s:delims
- endif
-elseif exists('g:NERDCustomDelimiters')
- if !has_key(g:NERDCustomDelimiters, 'toml')
- let g:NERDCustomDelimiters.toml = s:delims
- endif
-else
- let g:NERDCustomDelimiters = { 'toml': s:delims }
-endif
-unlet s:delims
+setlocal comments=:#
let &cpo = s:save_cpo
unlet s:save_cpo
diff --git a/indent/ansible.vim b/indent/ansible.vim
index d94d3a2c..29fc8e75 100644
--- a/indent/ansible.vim
+++ b/indent/ansible.vim
@@ -10,7 +10,7 @@ setlocal expandtab
setlocal softtabstop=2
setlocal shiftwidth=2
setlocal commentstring=#%s
-setlocal formatoptions=cl
+setlocal formatoptions+=cl
" c -> wrap long comments, including #
" l -> do not wrap long lines
diff --git a/indent/blade.vim b/indent/blade.vim
index e93d48c9..9fe95742 100644
--- a/indent/blade.vim
+++ b/indent/blade.vim
@@ -55,9 +55,9 @@ function! GetBladeIndent()
let indent = indent(lnum)
" 1. Check for special directives
- " @section is a single-line directive if it has a second argument.
+ " @section and @slot are single-line if they have a second argument.
" @php is a single-line directive if it is followed by parentheses.
- if (line =~# '@section\%(.*@end\)\@!' && line !~# '@section\s*([^,]*)')
+ if (line =~# '@\%(section\|slot\)\%(.*@end\)\@!' && line !~# '@\%(section\|slot\)\s*([^,]*)')
\ || line =~# '@php\s*('
return indent
endif
diff --git a/indent/crystal.vim b/indent/crystal.vim
index 9fd6c1f8..ae900b62 100644
--- a/indent/crystal.vim
+++ b/indent/crystal.vim
@@ -49,8 +49,8 @@ let s:skip_expr =
" Regex used for words that, at the start of a line, add a level of indent.
let s:crystal_indent_keywords =
- \ '^\s*\zs\<\%(module\|\%(abstract\)\=\s*\%(class\|struct\)\|enum\|if\|for\|macro' .
- \ '\|while\|until\|else\|elsif\|case\|when\|unless\|begin\|ensure\|rescue\|lib' .
+ \ '^\s*\zs\<\%(module\|\%(private\s\+\)\=\%(abstract\s\+\)\=\%(class\|struct\)\|enum\|if' .
+ \ '\|for\|macro\|while\|until\|else\|elsif\|case\|when\|unless\|begin\|ensure\|rescue\|lib' .
\ '\|\%(protected\|private\)\=\s*def\):\@!\>' .
\ '\|\%([=,*/%+-]\|<<\|>>\|:\s\)\s*\zs' .
\ '\<\%(if\|for\|while\|until\|case\|unless\|begin\):\@!\>' .
@@ -66,7 +66,7 @@ let s:crystal_deindent_keywords =
let s:end_start_regex =
\ '{%\s*\<\%(if\|for\|while\|until\|unless\|begin\|lib\)\>\|' .
\ '\C\%(^\s*\|[=,*/%+\-|;{]\|<<\|>>\|:\s\)\s*\zs' .
- \ '\<\%(module\|\%(abstract\)\=\s*\%(class\|struct\)\|enum\|macro\|if\|for\|while\|until\|case\|unless\|begin\|lib' .
+ \ '\<\%(module\|\%(private\s\+\)\=\%(abstract\s\+\)\=\%(class\|struct\)\|enum\|macro\|if\|for\|while\|until\|case\|unless\|begin\|lib' .
\ '\|\%(protected\|private\)\=\s*def\):\@!\>' .
\ '\|\%(^\|[^.:@$]\)\@<=\<do:\@!\>'
diff --git a/indent/eruby.vim b/indent/eruby.vim
index cdc5fedf..6fd76600 100644
--- a/indent/eruby.vim
+++ b/indent/eruby.vim
@@ -6,7 +6,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1
" URL: https://github.com/vim-ruby/vim-ruby
" Release Coordinator: Doug Kearns <dougkearns@gmail.com>
-if get(b:, 'did_indent') =~# '\<eruby\>'
+if exists("b:did_indent")
finish
endif
@@ -14,14 +14,12 @@ runtime! indent/ruby.vim
unlet! b:did_indent
setlocal indentexpr=
-if &filetype =~# '^eruby\>'
- if exists("b:eruby_subtype") && b:eruby_subtype != '' && b:eruby_subtype !=# 'eruby'
- exe "runtime! indent/".b:eruby_subtype.".vim"
- else
- runtime! indent/html.vim
- endif
+if exists("b:eruby_subtype") && b:eruby_subtype != '' && b:eruby_subtype !=# 'eruby'
+ exe "runtime! indent/".b:eruby_subtype.".vim"
+else
+ runtime! indent/html.vim
endif
-let b:did_indent = get(b:, 'did_indent', 1) . '.eruby'
+unlet! b:did_indent
" Force HTML indent to not keep state.
let b:html_indent_usestate = 0
@@ -35,6 +33,8 @@ if &l:indentexpr == ''
endif
let b:eruby_subtype_indentexpr = &l:indentexpr
+let b:did_indent = 1
+
setlocal indentexpr=GetErubyIndent()
setlocal indentkeys=o,O,*<Return>,<>>,{,},0),0],o,O,!^F,=end,=else,=elsif,=rescue,=ensure,=when
diff --git a/indent/graphql.vim b/indent/graphql.vim
index ed9cfaa2..9d175777 100644
--- a/indent/graphql.vim
+++ b/indent/graphql.vim
@@ -15,7 +15,7 @@ setlocal nolisp
setlocal nosmartindent
setlocal indentexpr=GetGraphQLIndent()
-setlocal indentkeys=0{,0},0),0[,0],0#,!^F,o,O,e
+setlocal indentkeys=0{,0},0),0[,0],0#,!^F,o,O
" If our indentation function already exists, we have nothing more to do.
if exists('*GetGraphQLIndent')
diff --git a/indent/ruby.vim b/indent/ruby.vim
index 78d10d7a..a3141ed4 100644
--- a/indent/ruby.vim
+++ b/indent/ruby.vim
@@ -2,7 +2,8 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1
" Vim indent file
" Language: Ruby
-" Maintainer: Nikolai Weibull <now at bitwi.se>
+" Maintainer: Andrew Radev <andrey.radev@gmail.com>
+" Previous Maintainer: Nikolai Weibull <now at bitwi.se>
" URL: https://github.com/vim-ruby/vim-ruby
" Release Coordinator: Doug Kearns <dougkearns@gmail.com>
@@ -51,15 +52,26 @@ set cpo&vim
" Syntax group names that are strings.
let s:syng_string =
- \ ['String', 'Interpolation', 'InterpolationDelimiter', 'NoInterpolation', 'StringEscape']
+ \ ['String', 'Interpolation', 'InterpolationDelimiter', 'StringEscape']
" Syntax group names that are strings or documentation.
let s:syng_stringdoc = s:syng_string + ['Documentation']
" Syntax group names that are or delimit strings/symbols/regexes or are comments.
-let s:syng_strcom = s:syng_stringdoc +
- \ ['Regexp', 'RegexpDelimiter', 'RegexpEscape',
- \ 'Symbol', 'StringDelimiter', 'ASCIICode', 'Comment']
+let s:syng_strcom = s:syng_stringdoc + [
+ \ 'Character',
+ \ 'Comment',
+ \ 'HeredocDelimiter',
+ \ 'PercentRegexpDelimiter',
+ \ 'PercentStringDelimiter',
+ \ 'PercentSymbolDelimiter',
+ \ 'Regexp',
+ \ 'RegexpDelimiter',
+ \ 'RegexpEscape',
+ \ 'StringDelimiter',
+ \ 'Symbol',
+ \ 'SymbolDelimiter',
+ \ ]
" Expression used to check whether we should skip a match with searchpair().
let s:skip_expr =
@@ -69,7 +81,7 @@ let s:skip_expr =
let s:ruby_indent_keywords =
\ '^\s*\zs\<\%(module\|class\|if\|for' .
\ '\|while\|until\|else\|elsif\|case\|when\|unless\|begin\|ensure\|rescue' .
- \ '\|\%(\K\k*[!?]\?\)\=\s*def\):\@!\>' .
+ \ '\|\%(\K\k*[!?]\?\s\+\)\=def\):\@!\>' .
\ '\|\%([=,*/%+-]\|<<\|>>\|:\s\)\s*\zs' .
\ '\<\%(if\|for\|while\|until\|case\|unless\|begin\):\@!\>'
@@ -83,7 +95,7 @@ let s:ruby_deindent_keywords =
let s:end_start_regex =
\ '\C\%(^\s*\|[=,*/%+\-|;{]\|<<\|>>\|:\s\)\s*\zs' .
\ '\<\%(module\|class\|if\|for\|while\|until\|case\|unless\|begin' .
- \ '\|\%(\K\k*[!?]\?\)\=\s*def\):\@!\>' .
+ \ '\|\%(\K\k*[!?]\?\s\+\)\=def\):\@!\>' .
\ '\|\%(^\|[^.:@$]\)\@<=\<do:\@!\>'
" Regex that defines the middle-match for the 'end' keyword.
@@ -146,7 +158,7 @@ let s:block_regex =
let s:block_continuation_regex = '^\s*[^])}\t ].*'.s:block_regex
" Regex that describes a leading operator (only a method call's dot for now)
-let s:leading_operator_regex = '^\s*[.]'
+let s:leading_operator_regex = '^\s*\%(&\=\.\)'
" 2. GetRubyIndent Function {{{1
" =========================
@@ -695,7 +707,10 @@ endfunction
" Check if the character at lnum:col is inside a string delimiter
function! s:IsInStringDelimiter(lnum, col) abort
- return s:IsInRubyGroup(['StringDelimiter'], a:lnum, a:col)
+ return s:IsInRubyGroup(
+ \ ['HeredocDelimiter', 'PercentStringDelimiter', 'StringDelimiter'],
+ \ a:lnum, a:col
+ \ )
endfunction
function! s:IsAssignment(str, pos) abort
diff --git a/syntax/crystal.vim b/syntax/crystal.vim
index 637e207e..d972d3c3 100644
--- a/syntax/crystal.vim
+++ b/syntax/crystal.vim
@@ -83,6 +83,12 @@ syn match crystalFloat "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+
syn match crystalLocalVariableOrMethod "\<[_[:lower:]][_[:alnum:]]*[?!=]\=" contains=NONE display transparent
syn match crystalBlockArgument "&[_[:lower:]][_[:alnum:]]" contains=NONE display transparent
+syn match crystalTypeName "\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=" contained
+syn match crystalClassName "\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=" contained
+syn match crystalModuleName "\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=" contained
+syn match crystalStructName "\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=" contained
+syn match crystalLibName "\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=" contained
+syn match crystalEnumName "\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=" contained
syn match crystalConstant "\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@="
syn match crystalClassVariable "@@\%(\h\|%\|[^\x00-\x7F]\)\%(\w\|%\|[^\x00-\x7F]\)*" display
syn match crystalInstanceVariable "@\%(\h\|%\|[^\x00-\x7F]\)\%(\w\|%\|[^\x00-\x7F]\)*" display
@@ -176,15 +182,15 @@ end
syn match crystalAliasDeclaration "[^[:space:];#.()]\+" contained contains=crystalSymbol,crystalGlobalVariable,crystalPredefinedVariable nextgroup=crystalAliasDeclaration2 skipwhite
syn match crystalAliasDeclaration2 "[^[:space:];#.()]\+" contained contains=crystalSymbol,crystalGlobalVariable,crystalPredefinedVariable
-syn match crystalMethodDeclaration "[^[:space:];#(]\+" contained contains=crystalConstant,crystalBoolean,crystalPseudoVariable,crystalInstanceVariable,crystalClassVariable,crystalGlobalVariable
-syn match crystalFunctionDeclaration "[^[:space:];#(=]\+" contained contains=crystalConstant
-syn match crystalTypeDeclaration "[^[:space:];#=]\+" contained contains=crystalConstant
-syn match crystalClassDeclaration "[^[:space:];#<]\+" contained contains=crystalConstant,crystalOperator
-syn match crystalModuleDeclaration "[^[:space:];#<]\+" contained contains=crystalConstant,crystalOperator
-syn match crystalStructDeclaration "[^[:space:];#<]\+" contained contains=crystalConstant,crystalOperator
-syn match crystalLibDeclaration "[^[:space:];#<]\+" contained contains=crystalConstant,crystalOperator
-syn match crystalMacroDeclaration "[^[:space:];#<\"]\+" contained contains=crystalConstant,crystalOperator
-syn match crystalEnumDeclaration "[^[:space:];#<\"]\+" contained contains=crystalConstant
+syn match crystalMethodDeclaration "[^[:space:];#(]\+" contained contains=crystalConstant,crystalFunction,crystalBoolean,crystalPseudoVariable,crystalInstanceVariable,crystalClassVariable,crystalGlobalVariable
+syn match crystalFunctionDeclaration "[^[:space:];#(=]\+" contained contains=crystalFunction
+syn match crystalTypeDeclaration "[^[:space:];#=]\+" contained contains=crystalTypeName
+syn match crystalClassDeclaration "[^[:space:];#<]\+" contained contains=crystalClassName,crystalOperator
+syn match crystalModuleDeclaration "[^[:space:];#]\+" contained contains=crystalModuleName,crystalOperator
+syn match crystalStructDeclaration "[^[:space:];#<]\+" contained contains=crystalStructName,crystalOperator
+syn match crystalLibDeclaration "[^[:space:];#]\+" contained contains=crystalLibName,crystalOperator
+syn match crystalMacroDeclaration "[^[:space:];#(]\+" contained contains=crystalFunction
+syn match crystalEnumDeclaration "[^[:space:];#<\"]\+" contained contains=crystalEnumName
syn match crystalFunction "\<[_[:alpha:]][_[:alnum:]]*[?!=]\=[[:alnum:]_.:?!=]\@!" contained containedin=crystalMethodDeclaration,crystalFunctionDeclaration
syn match crystalFunction "\%(\s\|^\)\@<=[_[:alpha:]][_[:alnum:]]*[?!=]\=\%(\s\|$\)\@=" contained containedin=crystalAliasDeclaration,crystalAliasDeclaration2
syn match crystalFunction "\%([[:space:].]\|^\)\@<=\%(\[\][=?]\=\|\*\*\|[+-]@\=\|[*/%|&^~]\|<<\|>>\|[<>]=\=\|<=>\|===\|[=!]=\|[=!]\~\|!\|`\)\%([[:space:];#(]\|$\)\@=" contained containedin=crystalAliasDeclaration,crystalAliasDeclaration2,crystalMethodDeclaration,crystalFunctionDeclaration
@@ -345,6 +351,12 @@ else
endif
hi def link crystalClassVariable crystalIdentifier
hi def link crystalConstant Type
+hi def link crystalTypeName crystalConstant
+hi def link crystalClassName crystalConstant
+hi def link crystalModuleName crystalConstant
+hi def link crystalStructName crystalConstant
+hi def link crystalLibName crystalConstant
+hi def link crystalEnumName crystalConstant
hi def link crystalGlobalVariable crystalIdentifier
hi def link crystalBlockParameter crystalIdentifier
hi def link crystalInstanceVariable crystalIdentifier
diff --git a/syntax/dart.vim b/syntax/dart.vim
index f9571531..40dd0304 100644
--- a/syntax/dart.vim
+++ b/syntax/dart.vim
@@ -28,14 +28,15 @@ syntax keyword dartConstant null
syntax keyword dartTypedef this super class typedef enum mixin
syntax keyword dartOperator new is as in
syntax match dartOperator "+=\=\|-=\=\|*=\=\|/=\=\|%=\=\|\~/=\=\|<<=\=\|>>=\=\|[<>]=\=\|===\=\|\!==\=\|&=\=\|\^=\=\||=\=\|||\|&&\|\[\]=\=\|=>\|!\|\~\|?\|:"
-syntax keyword dartType void var bool int double num dynamic covariant
+syntax keyword dartType void var bool int double num dynamic
syntax keyword dartStatement return
syntax keyword dartStorageClass static abstract final const factory
syntax keyword dartExceptions throw rethrow try on catch finally
syntax keyword dartAssert assert
syntax keyword dartClassDecl extends with implements
syntax keyword dartBranch break continue nextgroup=dartUserLabelRef skipwhite
-syntax keyword dartKeyword get set operator call external async await yield sync native
+syntax keyword dartKeyword get set operator call external async await
+ \ yield sync native covariant
syntax match dartUserLabelRef "\k\+" contained
syntax region dartLabelRegion transparent matchgroup=dartLabel start="\<case\>" matchgroup=NONE end=":"
diff --git a/syntax/elixir.vim b/syntax/elixir.vim
index 53e55902..1fa114b1 100644
--- a/syntax/elixir.vim
+++ b/syntax/elixir.vim
@@ -13,7 +13,7 @@ syn sync minlines=2000
syn cluster elixirNotTop contains=@elixirRegexSpecial,@elixirStringContained,@elixirDeclaration,elixirTodo,elixirArguments,elixirBlockDefinition,elixirUnusedVariable,elixirStructDelimiter
syn cluster elixirRegexSpecial contains=elixirRegexEscape,elixirRegexCharClass,elixirRegexQuantifier,elixirRegexEscapePunctuation
syn cluster elixirStringContained contains=elixirInterpolation,elixirRegexEscape,elixirRegexCharClass
-syn cluster elixirDeclaration contains=elixirFunctionDeclaration,elixirModuleDeclaration,elixirProtocolDeclaration,elixirImplDeclaration,elixirRecordDeclaration,elixirMacroDeclaration,elixirDelegateDeclaration,elixirOverridableDeclaration,elixirExceptionDeclaration,elixirCallbackDeclaration,elixirStructDeclaration
+syn cluster elixirDeclaration contains=elixirFunctionDeclaration,elixirPrivateFunctionDeclaration,elixirModuleDeclaration,elixirProtocolDeclaration,elixirImplDeclaration,elixirRecordDeclaration,elixirPrivateRecordDeclaration,elixirMacroDeclaration,elixirPrivateMacroDeclaration,elixirDelegateDeclaration,elixirOverridableDeclaration,elixirExceptionDeclaration,elixirCallbackDeclaration,elixirStructDeclaration
syn match elixirComment '#.*' contains=elixirTodo,@Spell
syn keyword elixirTodo FIXME NOTE TODO OPTIMIZE XXX HACK contained
@@ -84,7 +84,6 @@ syn match elixirAtomInterpolated ':\("\)\@=' contains=elixirString
syn match elixirString "\(\w\)\@<!?\%(\\\(x\d{1,2}\|\h{1,2}\h\@!\>\|0[0-7]{0,2}[0-7]\@!\>\|[^x0MC]\)\|(\\[MC]-)+\w\|[^\s\\]\)"
syn region elixirBlock matchgroup=elixirBlockDefinition start="\<do\>:\@!" end="\<end\>" contains=ALLBUT,@elixirNotTop fold
-syn region elixirElseBlock matchgroup=elixirBlockDefinition start="\<else\>:\@!" end="\<end\>" contains=ALLBUT,@elixirNotTop fold
syn region elixirAnonymousFunction matchgroup=elixirBlockDefinition start="\<fn\>" end="\<end\>" contains=ALLBUT,@elixirNotTop fold
syn region elixirArguments start="(" end=")" contained contains=elixirOperator,elixirAtom,elixirPseudoVariable,elixirAlias,elixirBoolean,elixirVariable,elixirUnusedVariable,elixirNumber,elixirDocString,elixirAtomInterpolated,elixirRegex,elixirString,elixirStringDelimiter,elixirRegexDelimiter,elixirInterpolationDelimiter,elixirSigil,elixirAnonymousFunction,elixirComment
@@ -120,102 +119,110 @@ else
syn region elixirDocTest start="^\s*\%(iex\|\.\.\.\)\%((\d*)\)\?>\s" end="^\s*$" contained
endif
-syn region elixirDocString matchgroup=elixirSigilDelimiter start="\%(@\w*doc\s\+\)\@<=\~[Ss]\z(/\|\"\|'\||\)" end="\z1" skip="\\\\\|\\\z1" contains=@elixirDocStringContained fold keepend
-syn region elixirDocString matchgroup=elixirSigilDelimiter start="\%(@\w*doc\s\+\)\@<=\~[Ss]{" end="}" skip="\\\\\|\\}" contains=@elixirDocStringContained fold keepend
-syn region elixirDocString matchgroup=elixirSigilDelimiter start="\%(@\w*doc\s\+\)\@<=\~[Ss]<" end=">" skip="\\\\\|\\>" contains=@elixirDocStringContained fold keepend
-syn region elixirDocString matchgroup=elixirSigilDelimiter start="\%(@\w*doc\s\+\)\@<=\~[Ss]\[" end="\]" skip="\\\\\|\\\]" contains=@elixirDocStringContained fold keepend
-syn region elixirDocString matchgroup=elixirSigilDelimiter start="\%(@\w*doc\s\+\)\@<=\~[Ss](" end=")" skip="\\\\\|\\)" contains=@elixirDocStringContained fold keepend
-syn region elixirDocString matchgroup=elixirStringDelimiter start=+\%(@\w*doc\s\+\)\@<=\z("\)+ end=+\z1+ skip=+\\\\\|\\\z1+ contains=@elixirDocStringContained keepend
-syn region elixirDocString matchgroup=elixirStringDelimiter start=+\%(@\w*doc\s\+\)\@<=\z("""\)+ end=+\z1+ contains=@elixirDocStringContained fold keepend
-syn region elixirDocString matchgroup=elixirSigilDelimiter start=+\%(@\w*doc\s\+\)\@<=\~[Ss]\z('''\)+ end=+\z1+ skip=+\\'+ contains=@elixirDocStringContained fold keepend
-syn region elixirDocString matchgroup=elixirSigilDelimiter start=+\%(@\w*doc\s\+\)\@<=\~[Ss]\z("""\)+ end=+\z1+ skip=+\\"+ contains=@elixirDocStringContained fold keepend
+syn region elixirDocString matchgroup=elixirDocSigilDelimiter start="\%(@\w*doc\s\+\)\@<=\~[Ss]\z(/\|\"\|'\||\)" end="\z1" skip="\\\\\|\\\z1" contains=@elixirDocStringContained fold keepend
+syn region elixirDocString matchgroup=elixirDocSigilDelimiter start="\%(@\w*doc\s\+\)\@<=\~[Ss]{" end="}" skip="\\\\\|\\}" contains=@elixirDocStringContained fold keepend
+syn region elixirDocString matchgroup=elixirDocSigilDelimiter start="\%(@\w*doc\s\+\)\@<=\~[Ss]<" end=">" skip="\\\\\|\\>" contains=@elixirDocStringContained fold keepend
+syn region elixirDocString matchgroup=elixirDocSigilDelimiter start="\%(@\w*doc\s\+\)\@<=\~[Ss]\[" end="\]" skip="\\\\\|\\\]" contains=@elixirDocStringContained fold keepend
+syn region elixirDocString matchgroup=elixirDocSigilDelimiter start="\%(@\w*doc\s\+\)\@<=\~[Ss](" end=")" skip="\\\\\|\\)" contains=@elixirDocStringContained fold keepend
+syn region elixirDocString matchgroup=elixirDocStringDelimiter start=+\%(@\w*doc\s\+\)\@<=\z("\)+ end=+\z1+ skip=+\\\\\|\\\z1+ contains=@elixirDocStringContained keepend
+syn region elixirDocString matchgroup=elixirDocStringDelimiter start=+\%(@\w*doc\s\+\)\@<=\z("""\)+ end=+\z1+ contains=@elixirDocStringContained fold keepend
+syn region elixirDocString matchgroup=elixirDocSigilDelimiter start=+\%(@\w*doc\s\+\)\@<=\~[Ss]\z('''\)+ end=+\z1+ skip=+\\'+ contains=@elixirDocStringContained fold keepend
+syn region elixirDocString matchgroup=elixirDocSigilDelimiter start=+\%(@\w*doc\s\+\)\@<=\~[Ss]\z("""\)+ end=+\z1+ skip=+\\"+ contains=@elixirDocStringContained fold keepend
" Defines
-syn match elixirDefine '\<def\>\(:\)\@!' nextgroup=elixirFunctionDeclaration skipwhite skipnl
-syn match elixirPrivateDefine '\<defp\>\(:\)\@!' nextgroup=elixirFunctionDeclaration skipwhite skipnl
-syn match elixirGuard '\<defguard\>\(:\)\@!' nextgroup=elixirFunctionDeclaration skipwhite skipnl
-syn match elixirPrivateGuard '\<defguardp\>\(:\)\@!' nextgroup=elixirFunctionDeclaration skipwhite skipnl
-syn match elixirModuleDefine '\<defmodule\>\(:\)\@!' nextgroup=elixirModuleDeclaration skipwhite skipnl
-syn match elixirProtocolDefine '\<defprotocol\>\(:\)\@!' nextgroup=elixirProtocolDeclaration skipwhite skipnl
-syn match elixirImplDefine '\<defimpl\>\(:\)\@!' nextgroup=elixirImplDeclaration skipwhite skipnl
-syn match elixirRecordDefine '\<defrecord\>\(:\)\@!' nextgroup=elixirRecordDeclaration skipwhite skipnl
-syn match elixirPrivateRecordDefine '\<defrecordp\>\(:\)\@!' nextgroup=elixirRecordDeclaration skipwhite skipnl
-syn match elixirMacroDefine '\<defmacro\>\(:\)\@!' nextgroup=elixirMacroDeclaration skipwhite skipnl
-syn match elixirPrivateMacroDefine '\<defmacrop\>\(:\)\@!' nextgroup=elixirMacroDeclaration skipwhite skipnl
-syn match elixirDelegateDefine '\<defdelegate\>\(:\)\@!' nextgroup=elixirDelegateDeclaration skipwhite skipnl
-syn match elixirOverridableDefine '\<defoverridable\>\(:\)\@!' nextgroup=elixirOverridableDeclaration skipwhite skipnl
-syn match elixirExceptionDefine '\<defexception\>\(:\)\@!' nextgroup=elixirExceptionDeclaration skipwhite skipnl
-syn match elixirCallbackDefine '\<defcallback\>\(:\)\@!' nextgroup=elixirCallbackDeclaration skipwhite skipnl
+syn match elixirDefine '\<def\>\(:\)\@!' nextgroup=elixirFunctionDeclaration skipwhite skipnl
+syn match elixirPrivateDefine '\<defp\>\(:\)\@!' nextgroup=elixirPrivateFunctionDeclaration skipwhite skipnl
+syn match elixirGuard '\<defguard\>\(:\)\@!' nextgroup=elixirFunctionDeclaration skipwhite skipnl
+syn match elixirPrivateGuard '\<defguardp\>\(:\)\@!' nextgroup=elixirPrivateFunctionDeclaration skipwhite skipnl
+syn match elixirModuleDefine '\<defmodule\>\(:\)\@!' nextgroup=elixirModuleDeclaration skipwhite skipnl
+syn match elixirProtocolDefine '\<defprotocol\>\(:\)\@!' nextgroup=elixirProtocolDeclaration skipwhite skipnl
+syn match elixirImplDefine '\<defimpl\>\(:\)\@!' nextgroup=elixirImplDeclaration skipwhite skipnl
+syn match elixirRecordDefine '\<defrecord\>\(:\)\@!' nextgroup=elixirRecordDeclaration skipwhite skipnl
+syn match elixirPrivateRecordDefine '\<defrecordp\>\(:\)\@!' nextgroup=elixirPrivateRecordDeclaration skipwhite skipnl
+syn match elixirMacroDefine '\<defmacro\>\(:\)\@!' nextgroup=elixirMacroDeclaration skipwhite skipnl
+syn match elixirPrivateMacroDefine '\<defmacrop\>\(:\)\@!' nextgroup=elixirPrivateMacroDeclaration skipwhite skipnl
+syn match elixirDelegateDefine '\<defdelegate\>\(:\)\@!' nextgroup=elixirDelegateDeclaration skipwhite skipnl
+syn match elixirOverridableDefine '\<defoverridable\>\(:\)\@!' nextgroup=elixirOverridableDeclaration skipwhite skipnl
+syn match elixirExceptionDefine '\<defexception\>\(:\)\@!' nextgroup=elixirExceptionDeclaration skipwhite skipnl
+syn match elixirCallbackDefine '\<defcallback\>\(:\)\@!' nextgroup=elixirCallbackDeclaration skipwhite skipnl
syn match elixirStructDefine '\<defstruct\>\(:\)\@!' skipwhite skipnl
" Declarations
-syn match elixirModuleDeclaration "[^[:space:];#<]\+" contained nextgroup=elixirBlock skipwhite skipnl
-syn match elixirFunctionDeclaration "[^[:space:];#<,()\[\]]\+" contained nextgroup=elixirArguments skipwhite skipnl
-syn match elixirProtocolDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias skipwhite skipnl
-syn match elixirImplDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias skipwhite skipnl
-syn match elixirRecordDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias,elixirAtom skipwhite skipnl
-syn match elixirMacroDeclaration "[^[:space:];#<,()\[\]]\+" contained nextgroup=elixirArguments skipwhite skipnl
-syn match elixirDelegateDeclaration "[^[:space:];#<,()\[\]]\+" contained contains=elixirFunctionDeclaration skipwhite skipnl
-syn region elixirDelegateDeclaration start='\[' end='\]' contained contains=elixirFunctionDeclaration skipwhite skipnl
-syn match elixirOverridableDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias,elixirAtom skipwhite skipnl
-syn match elixirExceptionDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias,elixirAtom skipwhite skipnl
-syn match elixirCallbackDeclaration "[^[:space:];#<,()\[\]]\+" contained contains=elixirFunctionDeclaration skipwhite skipnl
+syn match elixirModuleDeclaration "[^[:space:];#<,()\[\]]\+" contained nextgroup=elixirBlock skipwhite skipnl
+syn match elixirFunctionDeclaration "[^[:space:];#<,()\[\]]\+" contained nextgroup=elixirArguments skipwhite skipnl
+syn match elixirPrivateFunctionDeclaration "[^[:space:];#<,()\[\]]\+" contained nextgroup=elixirArguments skipwhite skipnl
+syn match elixirProtocolDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias skipwhite skipnl
+syn match elixirImplDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias skipwhite skipnl
+syn match elixirRecordDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias,elixirAtom skipwhite skipnl
+syn match elixirPrivateRecordDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias,elixirAtom skipwhite skipnl
+syn match elixirMacroDeclaration "[^[:space:];#<,()\[\]]\+" contained nextgroup=elixirArguments skipwhite skipnl
+syn match elixirPrivateMacroDeclaration "[^[:space:];#<,()\[\]]\+" contained nextgroup=elixirArguments skipwhite skipnl
+syn match elixirDelegateDeclaration "[^[:space:];#<,()\[\]]\+" contained contains=elixirFunctionDeclaration skipwhite skipnl
+syn region elixirDelegateDeclaration start='\[' end='\]' contained contains=elixirFunctionDeclaration skipwhite skipnl
+syn match elixirOverridableDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias,elixirAtom skipwhite skipnl
+syn match elixirExceptionDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias,elixirAtom skipwhite skipnl
+syn match elixirCallbackDeclaration "[^[:space:];#<,()\[\]]\+" contained contains=elixirFunctionDeclaration skipwhite skipnl
" ExUnit
syn match elixirExUnitMacro "\(^\s*\)\@<=\<\(test\|describe\|setup\|setup_all\|on_exit\|doctest\)\>"
syn match elixirExUnitAssert "\(^\s*\)\@<=\<\(assert\|assert_in_delta\|assert_raise\|assert_receive\|assert_received\|catch_error\)\>"
syn match elixirExUnitAssert "\(^\s*\)\@<=\<\(catch_exit\|catch_throw\|flunk\|refute\|refute_in_delta\|refute_receive\|refute_received\)\>"
-hi def link elixirBlockDefinition Define
-hi def link elixirDefine Define
-hi def link elixirPrivateDefine Define
-hi def link elixirGuard Define
-hi def link elixirPrivateGuard Define
-hi def link elixirModuleDefine Define
-hi def link elixirProtocolDefine Define
-hi def link elixirImplDefine Define
-hi def link elixirRecordDefine Define
-hi def link elixirPrivateRecordDefine Define
-hi def link elixirMacroDefine Define
-hi def link elixirPrivateMacroDefine Define
-hi def link elixirDelegateDefine Define
-hi def link elixirOverridableDefine Define
-hi def link elixirExceptionDefine Define
-hi def link elixirCallbackDefine Define
-hi def link elixirStructDefine Define
-hi def link elixirExUnitMacro Define
-hi def link elixirModuleDeclaration Type
-hi def link elixirFunctionDeclaration Function
-hi def link elixirMacroDeclaration Macro
-hi def link elixirInclude Include
-hi def link elixirComment Comment
-hi def link elixirTodo Todo
-hi def link elixirKeyword Define
-hi def link elixirExUnitAssert Keyword
-hi def link elixirOperator Operator
-hi def link elixirAtom Constant
-hi def link elixirPseudoVariable Constant
-hi def link elixirAlias Type
-hi def link elixirBoolean Boolean
-hi def link elixirVariable Identifier
-hi def link elixirSelf Identifier
-hi def link elixirUnusedVariable Comment
-hi def link elixirNumber Number
-hi def link elixirDocString Comment
-hi def link elixirDocTest elixirKeyword
-hi def link elixirAtomInterpolated elixirAtom
-hi def link elixirRegex elixirString
-hi def link elixirRegexEscape elixirSpecial
-hi def link elixirRegexEscapePunctuation elixirSpecial
-hi def link elixirRegexCharClass elixirSpecial
-hi def link elixirRegexQuantifier elixirSpecial
-hi def link elixirSpecial Special
-hi def link elixirString String
-hi def link elixirSigil String
-hi def link elixirStringDelimiter Delimiter
-hi def link elixirRegexDelimiter Delimiter
-hi def link elixirInterpolationDelimiter Delimiter
-hi def link elixirSigilDelimiter Delimiter
+hi def link elixirBlockDefinition Define
+hi def link elixirDefine Define
+hi def link elixirPrivateDefine Define
+hi def link elixirGuard Define
+hi def link elixirPrivateGuard Define
+hi def link elixirModuleDefine Define
+hi def link elixirProtocolDefine Define
+hi def link elixirImplDefine Define
+hi def link elixirRecordDefine Define
+hi def link elixirPrivateRecordDefine Define
+hi def link elixirMacroDefine Define
+hi def link elixirPrivateMacroDefine Define
+hi def link elixirDelegateDefine Define
+hi def link elixirOverridableDefine Define
+hi def link elixirExceptionDefine Define
+hi def link elixirCallbackDefine Define
+hi def link elixirStructDefine Define
+hi def link elixirExUnitMacro Define
+hi def link elixirModuleDeclaration Type
+hi def link elixirPrivateFunctionDeclaration elixirFunctionDeclaration
+hi def link elixirFunctionDeclaration Function
+hi def link elixirPrivateMacroDeclaration elixirMacroDeclaration
+hi def link elixirMacroDeclaration Macro
+hi def link elixirInclude Include
+hi def link elixirComment Comment
+hi def link elixirTodo Todo
+hi def link elixirKeyword Define
+hi def link elixirExUnitAssert Keyword
+hi def link elixirOperator Operator
+hi def link elixirAtom Constant
+hi def link elixirPseudoVariable Constant
+hi def link elixirAlias Type
+hi def link elixirBoolean Boolean
+hi def link elixirVariable Identifier
+hi def link elixirSelf Identifier
+hi def link elixirUnusedVariable Comment
+hi def link elixirNumber Number
+hi def link elixirDocString Comment
+hi def link elixirDocTest elixirKeyword
+hi def link elixirAtomInterpolated elixirAtom
+hi def link elixirRegex elixirString
+hi def link elixirRegexEscape elixirSpecial
+hi def link elixirRegexEscapePunctuation elixirSpecial
+hi def link elixirRegexCharClass elixirSpecial
+hi def link elixirRegexQuantifier elixirSpecial
+hi def link elixirSpecial Special
+hi def link elixirString String
+hi def link elixirSigil String
+hi def link elixirDocStringDelimiter elixirStringDelimiter
+hi def link elixirDocSigilDelimiter elixirSigilDelimiter
+hi def link elixirStringDelimiter Delimiter
+hi def link elixirRegexDelimiter Delimiter
+hi def link elixirInterpolationDelimiter Delimiter
+hi def link elixirSigilDelimiter Delimiter
+hi def link elixirPrivateRecordDeclaration elixirRecordDeclaration
let b:current_syntax = "elixir"
diff --git a/syntax/gitrebase.vim b/syntax/gitrebase.vim
index dad1605b..da1c4a21 100644
--- a/syntax/gitrebase.vim
+++ b/syntax/gitrebase.vim
@@ -20,8 +20,9 @@ syn match gitrebaseEdit "\v^e%(dit)=>" nextgroup=gitrebaseCommit skipwhite
syn match gitrebaseSquash "\v^s%(quash)=>" nextgroup=gitrebaseCommit skipwhite
syn match gitrebaseFixup "\v^f%(ixup)=>" nextgroup=gitrebaseCommit skipwhite
syn match gitrebaseExec "\v^%(x|exec)>" nextgroup=gitrebaseCommand skipwhite
-syn match gitrebaseDrop "\v^d%(rop)=>" nextgroup=gitrebaseCommit skipwhite
syn match gitrebaseBreak "\v^b%(reak)=>" nextgroup=gitrebaseCommit skipwhite
+syn match gitrebaseDrop "\v^d%(rop)=>" nextgroup=gitrebaseCommit skipwhite
+syn match gitrebaseNoop "\v^noop>"
syn match gitrebaseSummary ".*" contains=gitrebaseHash contained
syn match gitrebaseCommand ".*" contained
syn match gitrebaseComment "^\s*#.*" contains=gitrebaseHash
@@ -35,8 +36,9 @@ hi def link gitrebaseEdit PreProc
hi def link gitrebaseSquash Type
hi def link gitrebaseFixup Special
hi def link gitrebaseExec Function
-hi def link gitrebaseDrop Comment
hi def link gitrebaseBreak Macro
+hi def link gitrebaseDrop Comment
+hi def link gitrebaseNoop Comment
hi def link gitrebaseSummary String
hi def link gitrebaseComment Comment
hi def link gitrebaseSquashError Error
diff --git a/syntax/go.vim b/syntax/go.vim
index 51f1a60e..a06f62d2 100644
--- a/syntax/go.vim
+++ b/syntax/go.vim
@@ -74,7 +74,7 @@ hi def link goComment Comment
hi def link goTodo Todo
if go#config#HighlightGenerateTags()
- syn match goGenerateVariables contained /\(\$GOARCH\|\$GOOS\|\$GOFILE\|\$GOLINE\|\$GOPACKAGE\|\$DOLLAR\)\>/
+ syn match goGenerateVariables contained /\%(\$GOARCH\|\$GOOS\|\$GOFILE\|\$GOLINE\|\$GOPACKAGE\|\$DOLLAR\)\>/
syn region goGenerate start="^\s*//go:generate" end="$" contains=goGenerateVariables
hi def link goGenerate PreProc
hi def link goGenerateVariables Special
@@ -115,7 +115,7 @@ if go#config#HighlightFormatStrings()
" 5. Match [n] or nothing before a verb
" 6. Match a formatting verb
syn match goFormatSpecifier /\
- \([^%]\(%%\)*\)\
+ \%([^%]\%(%%\)*\)\
\@<=%[-#0 +]*\
\%(\%(\%(\[\d\+\]\)\=\*\)\|\d\+\)\=\
\%(\.\%(\%(\%(\[\d\+\]\)\=\*\)\|\d\+\)\=\)\=\
@@ -150,18 +150,18 @@ endif
" var, const
if go#config#FoldEnable('varconst')
syn region goVar start='var (' end='^\s*)$' transparent fold
- \ contains=ALLBUT,goParen,goBlock,goFunction,goTypeName,goReceiverType,goReceiverVar,goArgumentName,goArgumentType,goSimpleArguments,goPointerOperator
+ \ contains=ALLBUT,goParen,goBlock,goFunction,goTypeName,goReceiverType,goReceiverVar,goParamName,goParamType,goSimpleParams,goPointerOperator
syn region goConst start='const (' end='^\s*)$' transparent fold
- \ contains=ALLBUT,goParen,goBlock,goFunction,goTypeName,goReceiverType,goReceiverVar,goArgumentName,goArgumentType,goSimpleArguments,goPointerOperator
+ \ contains=ALLBUT,goParen,goBlock,goFunction,goTypeName,goReceiverType,goReceiverVar,goParamName,goParamType,goSimpleParams,goPointerOperator
else
syn region goVar start='var (' end='^\s*)$' transparent
- \ contains=ALLBUT,goParen,goBlock,goFunction,goTypeName,goReceiverType,goReceiverVar,goArgumentName,goArgumentType,goSimpleArguments,goPointerOperator
+ \ contains=ALLBUT,goParen,goBlock,goFunction,goTypeName,goReceiverType,goReceiverVar,goParamName,goParamType,goSimpleParams,goPointerOperator
syn region goConst start='const (' end='^\s*)$' transparent
- \ contains=ALLBUT,goParen,goBlock,goFunction,goTypeName,goReceiverType,goReceiverVar,goArgumentName,goArgumentType,goSimpleArguments,goPointerOperator
+ \ contains=ALLBUT,goParen,goBlock,goFunction,goTypeName,goReceiverType,goReceiverVar,goParamName,goParamType,goSimpleParams,goPointerOperator
endif
" Single-line var, const, and import.
-syn match goSingleDecl /\(import\|var\|const\) [^(]\@=/ contains=goImport,goVar,goConst
+syn match goSingleDecl /\%(import\|var\|const\) [^(]\@=/ contains=goImport,goVar,goConst
" Integers
syn match goDecimalInt "\<-\=\d\+\%([Ee][-+]\=\d\+\)\=\>"
@@ -192,7 +192,7 @@ hi def link goImaginaryFloat Float
" Spaces after "[]"
if go#config#HighlightArrayWhitespaceError()
- syn match goSpaceError display "\(\[\]\)\@<=\s\+"
+ syn match goSpaceError display "\%(\[\]\)\@<=\s\+"
endif
" Spacing errors around the 'chan' keyword
@@ -201,24 +201,24 @@ if go#config#HighlightChanWhitespaceError()
"
" \(\<chan\>\)\@<!<- (only pick arrow when it doesn't come after a chan)
" this prevents picking up 'chan<- chan<-' but not '<- chan'
- syn match goSpaceError display "\(\(\<chan\>\)\@<!<-\)\@<=\s\+\(\<chan\>\)\@="
+ syn match goSpaceError display "\%(\%(\<chan\>\)\@<!<-\)\@<=\s\+\%(\<chan\>\)\@="
" send-only annotation on chan type
"
" \(<-\)\@<!\<chan\> (only pick chan when it doesn't come after an arrow)
" this prevents picking up '<-chan <-chan' but not 'chan <-'
- syn match goSpaceError display "\(\(<-\)\@<!\<chan\>\)\@<=\s\+\(<-\)\@="
+ syn match goSpaceError display "\%(\%(<-\)\@<!\<chan\>\)\@<=\s\+\%(<-\)\@="
" value-ignoring receives in a few contexts
- syn match goSpaceError display "\(\(^\|[={(,;]\)\s*<-\)\@<=\s\+"
+ syn match goSpaceError display "\%(\%(^\|[={(,;]\)\s*<-\)\@<=\s\+"
endif
" Extra types commonly seen
if go#config#HighlightExtraTypes()
- syn match goExtraType /\<bytes\.\(Buffer\)\>/
- syn match goExtraType /\<context\.\(Context\)\>/
- syn match goExtraType /\<io\.\(Reader\|ReadSeeker\|ReadWriter\|ReadCloser\|ReadWriteCloser\|Writer\|WriteCloser\|Seeker\)\>/
- syn match goExtraType /\<reflect\.\(Kind\|Type\|Value\)\>/
+ syn match goExtraType /\<bytes\.\%(Buffer\)\>/
+ syn match goExtraType /\<context\.\%(Context\)\>/
+ syn match goExtraType /\<io\.\%(Reader\|ReadSeeker\|ReadWriter\|ReadCloser\|ReadWriteCloser\|Writer\|WriteCloser\|Seeker\)\>/
+ syn match goExtraType /\<reflect\.\%(Kind\|Type\|Value\)\>/
syn match goExtraType /\<unsafe\.Pointer\>/
endif
@@ -265,21 +265,22 @@ endif
hi def link goOperator Operator
" Functions;
-if go#config#HighlightFunctions() || go#config#HighlightFunctionArguments()
- syn match goDeclaration /\<func\>/ nextgroup=goReceiver,goFunction,goSimpleArguments skipwhite skipnl
- syn match goReceiverVar /\w\+\ze\s\+\(\w\|\*\)/ nextgroup=goPointerOperator,goReceiverType skipwhite skipnl contained
+if go#config#HighlightFunctions() || go#config#HighlightFunctionParameters()
+ syn match goDeclaration /\<func\>/ nextgroup=goReceiver,goFunction,goSimpleParams skipwhite skipnl
+ syn match goReceiverVar /\w\+\ze\s\+\%(\w\|\*\)/ nextgroup=goPointerOperator,goReceiverType skipwhite skipnl contained
syn match goPointerOperator /\*/ nextgroup=goReceiverType contained skipwhite skipnl
- syn match goFunction /\w\+/ nextgroup=goSimpleArguments contained skipwhite skipnl
+ syn match goFunction /\w\+/ nextgroup=goSimpleParams contained skipwhite skipnl
syn match goReceiverType /\w\+/ contained
-if go#config#HighlightFunctionArguments()
- syn match goSimpleArguments /(\(\w\|\_s\|[*\.\[\],\{\}<>-]\)*)/ contained contains=goArgumentName nextgroup=goSimpleArguments skipwhite skipnl
- syn match goArgumentName /\w\+\(\s*,\s*\w\+\)*\ze\s\+\(\w\|\.\|\*\|\[\)/ contained nextgroup=goArgumentType skipwhite skipnl
- syn match goArgumentType /\([^,)]\|\_s\)\+,\?/ contained nextgroup=goArgumentName skipwhite skipnl
- \ contains=goVarArgs,goType,goSignedInts,goUnsignedInts,goFloats,goComplexes,goDeclType,goBlock
- hi def link goReceiverVar goArgumentName
- hi def link goArgumentName Identifier
-endif
- syn match goReceiver /(\s*\w\+\(\s\+\*\?\s*\w\+\)\?\s*)\ze\s*\w/ contained nextgroup=goFunction contains=goReceiverVar skipwhite skipnl
+ if go#config#HighlightFunctionParameters()
+ syn match goSimpleParams /(\%(\w\|\_s\|[*\.\[\],\{\}<>-]\)*)/ contained contains=goParamName,goType nextgroup=goFunctionReturn skipwhite skipnl
+ syn match goFunctionReturn /(\%(\w\|\_s\|[*\.\[\],\{\}<>-]\)*)/ contained contains=goParamName,goType skipwhite skipnl
+ syn match goParamName /\w\+\%(\s*,\s*\w\+\)*\ze\s\+\%(\w\|\.\|\*\|\[\)/ contained nextgroup=goParamType skipwhite skipnl
+ syn match goParamType /\%([^,)]\|\_s\)\+,\?/ contained nextgroup=goParamName skipwhite skipnl
+ \ contains=goVarArgs,goType,goSignedInts,goUnsignedInts,goFloats,goComplexes,goDeclType,goBlock
+ hi def link goReceiverVar goParamName
+ hi def link goParamName Identifier
+ endif
+ syn match goReceiver /(\s*\w\+\%(\s\+\*\?\s*\w\+\)\?\s*)\ze\s*\w/ contained nextgroup=goFunction contains=goReceiverVar skipwhite skipnl
else
syn keyword goDeclaration func
endif
@@ -293,7 +294,20 @@ hi def link goFunctionCall Type
" Fields;
if go#config#HighlightFields()
- syn match goField /\.\w\+\([.\ \n\r\:\)\[,]\)\@=/hs=s+1
+ " 1. Match a sequence of word characters coming after a '.'
+ " 2. Require the following but dont match it: ( \@= see :h E59)
+ " - The symbols: / - + * % OR
+ " - The symbols: [] {} <> ) OR
+ " - The symbols: \n \r space OR
+ " - The symbols: , : .
+ " 3. Have the start of highlight (hs) be the start of matched
+ " pattern (s) offsetted one to the right (+1) (see :h E401)
+ syn match goField /\.\w\+\
+ \%(\%([\/\-\+*%]\)\|\
+ \%([\[\]{}<\>\)]\)\|\
+ \%([\!=\^|&]\)\|\
+ \%([\n\r\ ]\)\|\
+ \%([,\:.]\)\)\@=/hs=s+1
endif
hi def link goField Identifier
@@ -302,7 +316,7 @@ if go#config#HighlightTypes()
syn match goTypeConstructor /\<\w\+{\@=/
syn match goTypeDecl /\<type\>/ nextgroup=goTypeName skipwhite skipnl
syn match goTypeName /\w\+/ contained nextgroup=goDeclType skipwhite skipnl
- syn match goDeclType /\<\(interface\|struct\)\>/ skipwhite skipnl
+ syn match goDeclType /\<\%(interface\|struct\)\>/ skipwhite skipnl
hi def link goReceiverType Type
else
syn keyword goDeclType struct interface
diff --git a/syntax/i3config.vim b/syntax/i3config.vim
index 1d6367f2..4763ba43 100644
--- a/syntax/i3config.vim
+++ b/syntax/i3config.vim
@@ -55,8 +55,12 @@ syn keyword InitializeKeyword set contained
syn match Initialize /^\s*set\s\+.*$/ contains=Variable,InitializeKeyword,Color,String
" Gaps
-syn keyword GapStyleKeyword inner outer current all set plus minus contained
-syn match GapStyle /^\s*\(gaps\)\s\+\(inner\|outer\)\(\s\+\(current\|all\)\)\?\(\s\+\(set\|plus\|minus\)\)\?\(\s\+\d\+\)$/ contains=GapStyleKeyword,number
+syn keyword GapStyleKeyword inner outer horizontal vertical top right bottom left current all set plus minus toggle contained
+syn match GapStyle /^\s*\(gaps\)\s\+\(inner\|outer\|horizontal\|vertical\|left\|top\|right\|bottom\)\(\s\+\(current\|all\)\)\?\(\s\+\(set\|plus\|minus\|toggle\)\)\?\(\s\+\(\d\+\|\$.*\)\)$/ contains=GapStyleKeyword,number,Variable
+syn keyword SmartGapKeyword on inverse_outer contained
+syn match SmartGap /^\s*smart_gaps\s\+\(on\|inverse_outer\)\s\?$/ contains=SmartGapKeyword
+syn keyword SmartBorderKeyword on no_gaps contained
+syn match SmartBorder /^\s*smart_borders\s\+\(on\|no_gaps\)\s\?$/ contains=SmartBorderKeyword
" Keyboard bindings
syn keyword Action toggle fullscreen restart key import kill shrink grow contained
@@ -87,8 +91,8 @@ syn keyword BorderStyleKeyword none normal pixel contained
syn match BorderStyle /^\s*\(new_window\|new_float\|default_border\|default_floating_border\)\s\+\(none\|\(normal\|pixel\)\(\s\+\d\+\)\?\)\s\?$/ contains=BorderStyleKeyword,number
" Hide borders and edges
-syn keyword EdgeKeyword none vertical horizontal both contained
-syn match Edge /^\s*hide_edge_borders\s\+\(none\|vertical\|horizontal\|both\)\s\?$/ contains=EdgeKeyword
+syn keyword EdgeKeyword none vertical horizontal both smart smart_no_gaps contained
+syn match Edge /^\s*hide_edge_borders\s\+\(none\|vertical\|horizontal\|both\|smart\|smart_no_gaps\)\s\?$/ contains=EdgeKeyword
" Arbitrary commands for specific windows (for_window)
syn keyword CommandKeyword for_window contained
@@ -187,6 +191,8 @@ hi! def link OrientationKeyword Type
hi! def link MouseWarpingType Type
hi! def link FocusFollowsMouseType Type
hi! def link GapStyleKeyword Type
+hi! def link SmartGapKeyword Type
+hi! def link SmartBorderKeyword Type
hi! def link LayoutKeyword Type
hi! def link BorderStyleKeyword Type
hi! def link EdgeKeyword Type
@@ -215,6 +221,8 @@ hi! def link FontKeyword Identifier
hi! def link BindKeyword Identifier
hi! def link Orientation Identifier
hi! def link GapStyle Identifier
+hi! def link SmartGap Identifier
+hi! def link SmartBorder Identifier
hi! def link Layout Identifier
hi! def link BorderStyle Identifier
hi! def link Edge Identifier
@@ -239,7 +247,7 @@ hi! def link FocusOnActivationKeyword Identifier
hi! def link DrawingMarksKeyword Identifier
hi! def link BlockKeyword Identifier
hi! def link Variable Statement
-hi! def link ArbitraryCommand Ignore
+hi! def link ArbitraryCommand Type
let b:current_syntax = "i3config"
diff --git a/syntax/javascript.vim b/syntax/javascript.vim
index 7f127520..b0394caa 100644
--- a/syntax/javascript.vim
+++ b/syntax/javascript.vim
@@ -138,8 +138,8 @@ syntax keyword jsHtmlEvents onblur onclick oncontextmenu ondblclick onfocus
syntax region jsBracket matchgroup=jsBrackets start=/\[/ end=/\]/ contains=@jsExpression,jsSpreadExpression extend fold
syntax region jsParen matchgroup=jsParens start=/(/ end=/)/ contains=@jsExpression extend fold nextgroup=jsFlowDefinition
syntax region jsParenDecorator contained matchgroup=jsParensDecorator start=/(/ end=/)/ contains=@jsAll extend fold
-syntax region jsParenIfElse contained matchgroup=jsParensIfElse start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsCommentIfElse,jsIfElseBlock extend fold
-syntax region jsParenRepeat contained matchgroup=jsParensRepeat start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsCommentRepeat,jsRepeatBlock extend fold
+syntax region jsParenIfElse contained matchgroup=jsParensIfElse start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsCommentIfElse,jsIfElseBlock,jsReturn extend fold
+syntax region jsParenRepeat contained matchgroup=jsParensRepeat start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsCommentRepeat,jsRepeatBlock,jsReturn extend fold
syntax region jsParenSwitch contained matchgroup=jsParensSwitch start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsSwitchBlock extend fold
syntax region jsParenCatch contained matchgroup=jsParensCatch start=/(/ end=/)/ skipwhite skipempty nextgroup=jsTryCatchBlock extend fold
syntax region jsFuncArgs contained matchgroup=jsFuncParens start=/(/ end=/)/ contains=jsFuncArgCommas,jsComment,jsFuncArgExpression,jsDestructuringBlock,jsDestructuringArray,jsRestExpression,jsFlowArgumentDef skipwhite skipempty nextgroup=jsCommentFunction,jsFuncBlock,jsFlowReturn extend fold
@@ -157,7 +157,7 @@ syntax region jsBlock matchgroup=jsBraces s
syntax region jsModuleGroup contained matchgroup=jsModuleBraces start=/{/ end=/}/ contains=jsModuleKeyword,jsModuleComma,jsModuleAs,jsComment,jsFlowTypeKeyword skipwhite skipempty nextgroup=jsFrom fold
syntax region jsSpreadExpression contained matchgroup=jsSpreadOperator start=/\.\.\./ end=/[,}\]]\@=/ contains=@jsExpression
syntax region jsRestExpression contained matchgroup=jsRestOperator start=/\.\.\./ end=/[,)]\@=/
-syntax region jsTernaryIf matchgroup=jsTernaryIfOperator start=/?/ end=/\%(:\|}\@=\)/ contains=@jsExpression extend skipwhite skipempty nextgroup=@jsExpression
+syntax region jsTernaryIf matchgroup=jsTernaryIfOperator start=/?:\@!/ end=/\%(:\|}\@=\)/ contains=@jsExpression extend skipwhite skipempty nextgroup=@jsExpression
syntax match jsOperator /?\.\ze\_D/
syntax match jsGenerator contained /\*/ skipwhite skipempty nextgroup=jsFuncName,jsFuncArgs,jsFlowFunctionGroup
diff --git a/syntax/julia.vim b/syntax/julia.vim
index e599647e..5f40db60 100644
--- a/syntax/julia.vim
+++ b/syntax/julia.vim
@@ -156,37 +156,41 @@ syntax region juliaParBlockInRange matchgroup=juliaParDelim contained start="("
syntax region juliaSqBraBlock matchgroup=juliaParDelim start="\[" end="\]" contains=@juliaExpressions,juliaParBlockInRange,juliaRangeEnd,juliaComprehensionFor,juliaSymbolS,juliaQuotedParBlockS,juliaQuotedQMarkParS
syntax region juliaCurBraBlock matchgroup=juliaParDelim start="{" end="}" contains=@juliaExpressions
-syntax match juliaKeyword display "\<\%(return\|local\|global\|import\%(all\)\?\|export\|using\|const\|where\)\>"
+" This is really ugly. It would be better to mask most keywords when a dot is
+" found, introducing some kind of dot-environment
+let s:nodot = '\%(\.\)\@'.s:d(1).'1<!'
+
+exec 'syntax match juliaKeyword display "'.s:nodot.'\<\%(return\|local\|global\|import\%(all\)\?\|export\|using\|const\|where\)\>"'
syntax match juliaInfixKeyword display "\%(=\s*\)\@<!\<\%(in\|isa\)\>\S\@!\%(\s*=\)\@!"
-syntax match juliaRepKeyword display "\<\%(break\|continue\)\>"
-syntax region juliaConditionalBlock matchgroup=juliaConditional start="\<if\>" end="\<end\>" contains=@juliaExpressions,juliaConditionalEIBlock,juliaConditionalEBlock fold
-syntax region juliaConditionalEIBlock matchgroup=juliaConditional transparent contained start="\<elseif\>" end="\<\%(end\|else\|elseif\)\>"me=s-1 contains=@juliaExpressions,juliaConditionalEIBlock,juliaConditionalEBlock
-syntax region juliaConditionalEBlock matchgroup=juliaConditional transparent contained start="\<else\>" end="\<end\>"me=s-1 contains=@juliaExpressions
-syntax region juliaWhileBlock matchgroup=juliaRepeat start="\<while\>" end="\<end\>" contains=@juliaExpressions fold
-syntax region juliaForBlock matchgroup=juliaRepeat start="\<for\>" end="\<end\>" contains=@juliaExpressions,juliaOuter fold
-syntax region juliaBeginBlock matchgroup=juliaBlKeyword start="\<begin\>" end="\<end\>" contains=@juliaExpressions fold
-syntax region juliaFunctionBlock matchgroup=juliaBlKeyword start="\<function\>" end="\<end\>" contains=@juliaExpressions fold
-syntax region juliaMacroBlock matchgroup=juliaBlKeyword start="\<macro\>" end="\<end\>" contains=@juliaExpressions fold
-syntax region juliaQuoteBlock matchgroup=juliaBlKeyword start="\<quote\>" end="\<end\>" contains=@juliaExpressions fold
+exec 'syntax match juliaRepKeyword display "'.s:nodot.'\<\%(break\|continue\)\>"'
+exec 'syntax region juliaConditionalBlock matchgroup=juliaConditional start="'.s:nodot.'\<if\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions,juliaConditionalEIBlock,juliaConditionalEBlock fold'
+exec 'syntax region juliaConditionalEIBlock matchgroup=juliaConditional transparent contained start="'.s:nodot.'\<elseif\>" end="'.s:nodot.'\<\%(end\|else\|elseif\)\>"me=s-1 contains=@juliaExpressions,juliaConditionalEIBlock,juliaConditionalEBlock'
+exec 'syntax region juliaConditionalEBlock matchgroup=juliaConditional transparent contained start="'.s:nodot.'\<else\>" end="'.s:nodot.'\<end\>"me=s-1 contains=@juliaExpressions'
+exec 'syntax region juliaWhileBlock matchgroup=juliaRepeat start="'.s:nodot.'\<while\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions fold'
+exec 'syntax region juliaForBlock matchgroup=juliaRepeat start="'.s:nodot.'\<for\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions,juliaOuter fold'
+exec 'syntax region juliaBeginBlock matchgroup=juliaBlKeyword start="'.s:nodot.'\<begin\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions fold'
+exec 'syntax region juliaFunctionBlock matchgroup=juliaBlKeyword start="'.s:nodot.'\<function\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions fold'
+exec 'syntax region juliaMacroBlock matchgroup=juliaBlKeyword start="'.s:nodot.'\<macro\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions fold'
+exec 'syntax region juliaQuoteBlock matchgroup=juliaBlKeyword start="'.s:nodot.'\<quote\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions fold'
if b:julia_syntax_version <= 10
- syntax region juliaTypeBlock matchgroup=juliaBlKeyword06 start="\<type\>" end="\<end\>" contains=@juliaExpressions fold
- syntax region juliaImmutableBlock matchgroup=juliaBlKeyword06 start="\<immutable\>" end="\<end\>" contains=@juliaExpressions fold
+ exec 'syntax region juliaTypeBlock matchgroup=juliaBlKeyword06 start="'.s:nodot.'\<type\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions fold'
+ exec 'syntax region juliaImmutableBlock matchgroup=juliaBlKeyword06 start="'.s:nodot.'\<immutable\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions fold'
endif
-syntax region juliaStructBlock matchgroup=juliaBlKeyword start="\<struct\>" end="\<end\>" contains=@juliaExpressions fold
-syntax region juliaMutableStructBlock matchgroup=juliaBlKeyword start="\<mutable struct\>" end="\<end\>" contains=@juliaExpressions fold
-syntax region juliaLetBlock matchgroup=juliaBlKeyword start="\<let\>" end="\<end\>" contains=@juliaExpressions fold
-syntax region juliaDoBlock matchgroup=juliaBlKeyword start="\<do\>" end="\<end\>" contains=@juliaExpressions fold
+exec 'syntax region juliaStructBlock matchgroup=juliaBlKeyword start="'.s:nodot.'\<struct\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions fold'
+exec 'syntax region juliaMutableStructBlock matchgroup=juliaBlKeyword start="'.s:nodot.'\<mutable struct\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions fold'
+exec 'syntax region juliaLetBlock matchgroup=juliaBlKeyword start="'.s:nodot.'\<let\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions fold'
+exec 'syntax region juliaDoBlock matchgroup=juliaBlKeyword start="'.s:nodot.'\<do\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions fold'
exec 'syntax region juliaModuleBlock matchgroup=juliaBlKeyword start="\%(\%(\.\s*\)\@'.s:d(6).'<!\|\%(@\s*\.\s*\)\@'.s:d(6).'<=\)\<\%(bare\)\?module\>" end="\<end\>" contains=@juliaExpressions fold'
-syntax region juliaExceptionBlock matchgroup=juliaException start="\<try\>" end="\<end\>" contains=@juliaExpressions,juliaCatchBlock,juliaFinallyBlock fold
-syntax region juliaCatchBlock matchgroup=juliaException transparent contained start="\<catch\>" end="\<end\>"me=s-1 contains=@juliaExpressions,juliaFinallyBlock
-syntax region juliaFinallyBlock matchgroup=juliaException transparent contained start="\<finally\>" end="\<end\>"me=s-1 contains=@juliaExpressions
-syntax match juliaTypedef "\<\%(abstract\|typealias\|bitstype\)\>"
+exec 'syntax region juliaExceptionBlock matchgroup=juliaException start="'.s:nodot.'\<try\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions,juliaCatchBlock,juliaFinallyBlock fold'
+exec 'syntax region juliaCatchBlock matchgroup=juliaException transparent contained start="'.s:nodot.'\<catch\>" end="'.s:nodot.'\<end\>"me=s-1 contains=@juliaExpressions,juliaFinallyBlock'
+exec 'syntax region juliaFinallyBlock matchgroup=juliaException transparent contained start="'.s:nodot.'\<finally\>" end="'.s:nodot.'\<end\>"me=s-1 contains=@juliaExpressions'
+exec 'syntax match juliaTypedef "'.s:nodot.'\<\%(abstract\|typealias\|bitstype\)\>"'
" AbstractBlock needs to come after to take precedence
-syntax region juliaAbstractBlock matchgroup=juliaBlKeyword start="\<abstract type\>" end="\<end\>" fold contains=@juliaExpressions
-syntax region juliaPrimitiveBlock matchgroup=juliaBlKeyword start="\<primitive type\>" end="\<end\>" fold contains=@juliaExpressions
+exec 'syntax region juliaAbstractBlock matchgroup=juliaBlKeyword start="'.s:nodot.'\<abstract type\>" end="'.s:nodot.'\<end\>" fold contains=@juliaExpressions'
+exec 'syntax region juliaPrimitiveBlock matchgroup=juliaBlKeyword start="'.s:nodot.'\<primitive type\>" end="'.s:nodot.'\<end\>" fold contains=@juliaExpressions'
exec 'syntax region juliaComprehensionFor matchgroup=juliaComprehensionFor transparent contained start="\%([^[:space:],;:({[]\_s*\)\@'.s:d(80).'<=\<for\>" end="\ze[]);]" contains=@juliaExpressions,juliaComprehensionIf,juliaComprehensionFor'
-syntax match juliaComprehensionIf contained "\<if\>"
+exec 'syntax match juliaComprehensionIf contained "'.s:nodot.'\<if\>"'
exec 'syntax match juliaOuter contained "\<outer\ze\s\+' . s:idregex . '\>"'
@@ -219,7 +223,7 @@ syntax match juliaBaseTypeRange display "\<\%(Dims\|RangeIndex\|\%(Ordinal\|St
syntax match juliaBaseTypeRange06 display "\<Range\>"
syntax match juliaBaseTypeRange1011 display "\<\(Abstract\|Lin\)Range\>"
syntax match juliaBaseTypeRegex display "\<Regex\%(Match\)\?\>"
-syntax match juliaBaseTypeFact display "\<Factorization\>"
+syntax match juliaBaseTypeFact display "\<\%(Factorization\|BunchKaufman\|\%(Cholesky\|QR\)\%(Pivoted\)\?\|\%(Generalized\)\?\%(Eigen\|SVD\|Schur\)\|Hessenberg\|LDLt\|LQ\|LU\)\>"
syntax match juliaBaseTypeSort display "\<\%(Insertion\|\(Partial\)\?Quick\|Merge\)Sort\>"
syntax match juliaBaseTypeRound display "\<Round\%(ingMode\|FromZero\|Down\|Nearest\%(Ties\%(Away\|Up\)\)\?\|ToZero\|Up\)\>"
syntax match juliaBaseTypeSpecial display "\<\%(LocalProcess\|ClusterManager\)\>"
diff --git a/syntax/kotlin.vim b/syntax/kotlin.vim
index 70803f5c..a4019e55 100644
--- a/syntax/kotlin.vim
+++ b/syntax/kotlin.vim
@@ -3,7 +3,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'kotlin') == -1
" Vim syntax file
" Language: Kotlin
" Maintainer: Alexander Udalov
-" Latest Revision: 23 November 2017
+" Latest Revision: 14 January 2019
if exists("b:current_syntax")
finish
@@ -36,6 +36,12 @@ syn match ktShebang "\v^#!.*$"
syn match ktLineComment "\v//.*$" contains=ktTodo,@Spell
syn region ktComment matchgroup=ktCommentMatchGroup start="/\*" end="\*/" contains=ktComment,ktTodo,@Spell
+syn region ktDocComment start="/\*\*" end="\*/" contains=ktDocTag,ktTodo,@Spell
+syn match ktDocTag "\v\@(author|constructor|receiver|return|since|suppress)>" contained
+syn match ktDocTag "\v\@(exception|param|property|throws|see|sample)>\s*\S+" contains=ktDocTagParam contained
+syn match ktDocTagParam "\v(\s|\[)\S+" contained
+syn match ktComment "/\*\*/"
+
syn match ktSpecialCharError "\v\\." contained
syn match ktSpecialChar "\v\\([tbnr'"$\\]|u\x{4})" contained
syn region ktString start='"' skip='\\"' end='"' contains=ktSimpleInterpolation,ktComplexInterpolation,ktSpecialChar,ktSpecialCharError
@@ -49,11 +55,11 @@ syn match ktAnnotation "\v(\w)@<!\@[[:alnum:]_.]*(:[[:alnum:]_.]*)?"
syn match ktLabel "\v\w+\@"
syn match ktSimpleInterpolation "\v\$\h\w*" contained
-syn region ktComplexInterpolation matchgroup=ktComplexInterpolationBrace start="\v\$\{" end="\v\}" contains=ALLBUT,ktSimpleInterpolation
+syn region ktComplexInterpolation matchgroup=ktComplexInterpolationBrace start="\v\$\{" end="\v\}" contains=ALLBUT,ktSimpleInterpolation,ktTodo,ktSpecialCharError,ktSpecialChar,ktDocTag,ktDocTagParam
-syn match ktNumber "\v<\d+[_[:digit:]]*[LFf]?"
-syn match ktNumber "\v<0[Xx]\x+[_[:xdigit:]]*L?"
-syn match ktNumber "\v<0[Bb][01]+[_01]*L?"
+syn match ktNumber "\v<\d+[_[:digit:]]*(uL?|UL?|[LFf])?"
+syn match ktNumber "\v<0[Xx]\x+[_[:xdigit:]]*(uL?|UL?|L)?"
+syn match ktNumber "\v<0[Bb][01]+[_01]*(uL?|UL?|L)?"
syn match ktFloat "\v<\d*(\d[eE][-+]?\d+|\.\d+([eE][-+]?\d+)?)[Ff]?"
syn match ktEscapedName "\v`.*`"
@@ -86,6 +92,9 @@ hi link ktShebang Comment
hi link ktLineComment Comment
hi link ktComment Comment
hi link ktCommentMatchGroup Comment
+hi link ktDocComment Comment
+hi link ktDocTag Special
+hi link ktDocTagParam Identifier
hi link ktSpecialChar SpecialChar
hi link ktSpecialCharError Error
diff --git a/syntax/markdown.vim b/syntax/markdown.vim
index 95969bf2..e59ffcae 100644
--- a/syntax/markdown.vim
+++ b/syntax/markdown.vim
@@ -38,10 +38,14 @@ syn sync linebreaks=1
let s:conceal = ''
let s:concealends = ''
+let s:concealcode = ''
if has('conceal') && get(g:, 'vim_markdown_conceal', 1)
let s:conceal = ' conceal'
let s:concealends = ' concealends'
endif
+if has('conceal') && get(g:, 'vim_markdown_conceal_code_blocks', 1)
+ let s:concealcode = ' concealends'
+endif
" additions to HTML groups
if get(g:, 'vim_markdown_emphasis_multiline', 1)
@@ -96,13 +100,13 @@ syn match htmlH2 /^.\+\n-\+$/ contains=mkdLink,mkdInlineURL,@Spell
"define Markdown groups
syn match mkdLineBreak / \+$/
syn region mkdBlockquote start=/^\s*>/ end=/$/ contains=mkdLink,mkdInlineURL,mkdLineBreak,@Spell
-execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start=/\(\([^\\]\|^\)\\\)\@<!`/ end=/\(\([^\\]\|^\)\\\)\@<!`/' . s:concealends
-execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start=/\(\([^\\]\|^\)\\\)\@<!``/ skip=/[^`]`[^`]/ end=/\(\([^\\]\|^\)\\\)\@<!``/' . s:concealends
-execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start=/^\s*\z(`\{3,}\)[^`]*$/ end=/^\s*\z1`*\s*$/' . s:concealends
-execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start=/\(\([^\\]\|^\)\\\)\@<!\~\~/ end=/\(\([^\\]\|^\)\\\)\@<!\~\~/' . s:concealends
-execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start=/^\s*\z(\~\{3,}\)\s*[0-9A-Za-z_+-]*\s*$/ end=/^\s*\z1\~*\s*$/' . s:concealends
-execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start="<pre[^>]*\\\@<!>" end="</pre>"' . s:concealends
-execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start="<code[^>]*\\\@<!>" end="</code>"' . s:concealends
+execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start=/\(\([^\\]\|^\)\\\)\@<!`/ end=/`/' . s:concealcode
+execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start=/\(\([^\\]\|^\)\\\)\@<!``/ skip=/[^`]`[^`]/ end=/\(\([^\\]\|^\)\\\)\@<!``/' . s:concealcode
+execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start=/^\s*\z(`\{3,}\)[^`]*$/ end=/^\s*\z1`*\s*$/' . s:concealcode
+execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start=/\(\([^\\]\|^\)\\\)\@<!\~\~/ end=/\(\([^\\]\|^\)\\\)\@<!\~\~/' . s:concealcode
+execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start=/^\s*\z(\~\{3,}\)\s*[0-9A-Za-z_+-]*\s*$/ end=/^\s*\z1\~*\s*$/' . s:concealcode
+execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start="<pre[^>]*\\\@<!>" end="</pre>"' . s:concealcode
+execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start="<code[^>]*\\\@<!>" end="</code>"' . s:concealcode
syn region mkdFootnote start="\[^" end="\]"
syn match mkdCode /^\s*\n\(\(\s\{8,}[^ ]\|\t\t\+[^\t]\).*\n\)\+/
syn match mkdCode /\%^\(\(\s\{4,}[^ ]\|\t\+[^\t]\).*\n\)\+/
@@ -147,7 +151,13 @@ if get(g:, 'vim_markdown_math', 0)
syn region mkdMath start="\\\@<!\$\$" end="\$\$" skip="\\\$" contains=@tex keepend
endif
-syn cluster mkdNonListItem contains=@htmlTop,htmlItalic,htmlBold,htmlBoldItalic,mkdFootnotes,mkdInlineURL,mkdLink,mkdLinkDef,mkdLineBreak,mkdBlockquote,mkdCode,mkdRule,htmlH1,htmlH2,htmlH3,htmlH4,htmlH5,htmlH6,mkdMath
+" Strike through
+if get(g:, 'vim_markdown_strikethrough', 0)
+ syn region mkdStrike matchgroup=mkdStrike start="\%(\~\~\)" end="\%(\~\~\)"
+ HtmlHiLink mkdStrike htmlStrike
+endif
+
+syn cluster mkdNonListItem contains=@htmlTop,htmlItalic,htmlBold,htmlBoldItalic,mkdFootnotes,mkdInlineURL,mkdLink,mkdLinkDef,mkdLineBreak,mkdBlockquote,mkdCode,mkdRule,htmlH1,htmlH2,htmlH3,htmlH4,htmlH5,htmlH6,mkdMath,htmlStrike
"highlighting for Markdown groups
HtmlHiLink mkdString String
diff --git a/syntax/mustache.vim b/syntax/mustache.vim
index 50babe83..6f18be0b 100644
--- a/syntax/mustache.vim
+++ b/syntax/mustache.vim
@@ -44,7 +44,7 @@ endif
syntax match mustacheError '}}}\?'
syntax match mustacheInsideError '{{[{$#<>=!\/]\?'
syntax region mustacheInside start=/{{[^!][$#^/]\?/ end=/}}}\?/ keepend containedin=TOP,@htmlMustacheContainer
-syntax match mustacheOperators '=\|\.\|/' contained containedin=mustacheInside,mustacheParam,@htmlMustacheContainer
+syntax match mustacheOperators '=\|\.\|/' contained containedin=mustacheInside,mustacheParam
syntax region mustacheHtmlValue start=/={{[^!][$#^/]\?/rs=s+1,hs=s+1 end=/}}/ oneline keepend contained containedin=htmlTag contains=mustacheInside
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
diff --git a/syntax/pug.vim b/syntax/pug.vim
index 31dcaec1..ba687390 100644
--- a/syntax/pug.vim
+++ b/syntax/pug.vim
@@ -32,16 +32,17 @@ syn region pugJavascript matchgroup=pugJavascriptOutputChar start="[!&]\==\|\~"
syn region pugJavascript matchgroup=pugJavascriptChar start="-" skip=",\s*$" end="$" contained contains=@htmlJavascript keepend
syn cluster pugTop contains=pugBegin,pugComment,pugHtmlComment,pugJavascript
syn match pugBegin "^\s*\%([<>]\|&[^=~ ]\)\@!" nextgroup=pugTag,pugClassChar,pugIdChar,pugPlainChar,pugJavascript,pugScriptConditional,pugScriptStatement,pugPipedText
-syn match pugTag "+\?[[:alnum:]_-]\+\%(:\w\+\)\=" contained contains=htmlTagName,htmlSpecialTagName nextgroup=@pugComponent
+syn match pugTag "+\?[[:alnum:]_-]\+\%(:\w\+\)\=" contained contains=htmlTagName,htmlSpecialTagName,pugJavascript nextgroup=@pugComponent
syn cluster pugComponent contains=pugAttributes,pugIdChar,pugBlockExpansionChar,pugClassChar,pugPlainChar,pugJavascript,pugTagBlockChar,pugTagInlineText
-syntax keyword pugCommentTodo contained TODO FIXME XXX TBD
+syn keyword pugCommentTodo contained TODO FIXME XXX TBD
syn match pugComment '\(\s\+\|^\)\/\/.*$' contains=pugCommentTodo,@Spell
syn region pugCommentBlock start="\z(\s\+\|^\)\/\/.*$" end="^\%(\z1\s\|\s*$\)\@!" contains=pugCommentTodo,@Spell keepend
syn region pugHtmlConditionalComment start="<!--\%(.*\)>" end="<!\%(.*\)-->" contains=pugCommentTodo,@Spell
syn region pugAngular2 start="(" end=")" contains=htmlEvent
syn region pugJavascriptString start=+"+ skip=+\\\("\|$\)+ end=+"\|$+ contained
syn region pugJavascriptString start=+'+ skip=+\\\('\|$\)+ end=+'\|$+ contained
-syn region pugAttributes matchgroup=pugAttributesDelimiter start="(" end=")" contained contains=pugJavascriptString,pugHtmlArg,pugAngular2,htmlArg,htmlEvent,htmlCssDefinition nextgroup=@pugComponent
+syn region pugJavascriptString start=+`+ skip=+\\\(`\|$\)+ end=+`\|$+ contains=javascriptInterpolation contained
+syn region pugAttributes matchgroup=pugAttributesDelimiter start="(" end="\(.\zs)\)\|)" contained contains=pugJavascriptString,pugHtmlArg,pugAngular2,htmlArg,htmlEvent,htmlCssDefinition nextgroup=@pugComponent
syn match pugClassChar "\." containedin=htmlTagName nextgroup=pugClass
syn match pugBlockExpansionChar ":\s\+" contained nextgroup=pugTag,pugClassChar,pugIdChar
syn match pugIdChar "#[[{]\@!" contained nextgroup=pugId
@@ -71,9 +72,10 @@ syn region pugPlainFilter matchgroup=pugFilter start="^\z(\s*\):\%(sass\|less\|
syn match pugScriptConditional "^\s*\<\%(if\|else\|else if\|elif\|unless\|while\|until\|case\|when\|default\)\>[?!]\@!"
syn match pugScriptStatement "^\s*\<\%(each\|for\|block\|prepend\|append\|mixin\|extends\|include\)\>[?!]\@!"
syn region pugScriptLoopRegion start="^\s*\(for \)" end="$" contains=pugScriptLoopKeywords
-syn keyword pugScriptLoopKeywords for in contained
+syn keyword pugScriptLoopKeywords for in
-syn region pugJavascript start="^\z(\s*\)script\%(:\w\+\)\=" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlJavascript,pugJavascriptTag,pugCoffeescriptFilter keepend
+syn region pugJavascript start="^\z(\s*\)script\%(:\w\+\)\=" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlJavascript,pugJavascriptTag,pugCoffeescriptFilter keepend
+syn region javascriptInterpolation start=/${/ end=/}/ contained
syn region pugCoffeescriptFilter matchgroup=pugFilter start="^\z(\s*\):coffee-\?script\s*$" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlCoffeescript contained
syn region pugJavascriptTag contained start="^\z(\s*\)script\%(:\w\+\)\=" end="$" contains=pugBegin,pugTag
@@ -104,6 +106,7 @@ hi def link pugComment Comment
hi def link pugCommentBlock Comment
hi def link pugHtmlConditionalComment pugComment
hi def link pugJavascriptString String
+hi def link javascriptInterpolation Delimiter
let b:current_syntax = "pug"
diff --git a/syntax/python.vim b/syntax/python.vim
index e3ac9ca1..251b0f7d 100644
--- a/syntax/python.vim
+++ b/syntax/python.vim
@@ -46,6 +46,7 @@ if s:Enabled('g:python_highlight_all')
if s:Enabled('g:python_highlight_builtins')
call s:EnableByDefault('g:python_highlight_builtin_objs')
call s:EnableByDefault('g:python_highlight_builtin_funcs')
+ call s:EnableByDefault('g:python_highlight_builtin_types')
endif
call s:EnableByDefault('g:python_highlight_exceptions')
call s:EnableByDefault('g:python_highlight_string_formatting')
@@ -94,7 +95,7 @@ else
syn match pythonStatement '\<async\s\+def\>' nextgroup=pythonFunction skipwhite
syn match pythonStatement '\<async\s\+with\>'
syn match pythonStatement '\<async\s\+for\>'
- syn cluster pythonExpression contains=pythonStatement,pythonRepeat,pythonConditional,pythonOperator,pythonNumber,pythonHexNumber,pythonOctNumber,pythonBinNumber,pythonFloat,pythonString,pythonBytes,pythonBoolean,pythonBuiltinObj,pythonBuiltinFunc
+ syn cluster pythonExpression contains=pythonStatement,pythonRepeat,pythonConditional,pythonOperator,pythonNumber,pythonHexNumber,pythonOctNumber,pythonBinNumber,pythonFloat,pythonString,pythonBytes,pythonBoolean,pythonNone,pythonSingleton,pythonBuiltinObj,pythonBuiltinFunc,pythonBuiltinType
endif
@@ -328,18 +329,17 @@ else
syn match pythonFloat '\.\d\%([_0-9]*\d\)\=\%([eE][+-]\=\d\%([_0-9]*\d\)\=\)\=[jJ]\=\>' display
syn match pythonFloat '\<\d\%([_0-9]*\d\)\=[eE][+-]\=\d\%([_0-9]*\d\)\=[jJ]\=\>' display
- syn match pythonFloat '\<\d\%([_0-9]*\d\)\=\.\d\%([_0-9]*\d\)\=\%([eE][+-]\=\d\%([_0-9]*\d\)\=\)\=[jJ]\=' display
+ syn match pythonFloat '\<\d\%([_0-9]*\d\)\=\.\d\=\%([_0-9]*\d\)\=\%([eE][+-]\=\d\%([_0-9]*\d\)\=\)\=[jJ]\=' display
endif
"
-" Builtin objects and types
+" Builtin objects
"
if s:Enabled('g:python_highlight_builtin_objs')
syn keyword pythonNone None
syn keyword pythonBoolean True False
- syn keyword pythonBuiltinObj Ellipsis NotImplemented
- syn match pythonBuiltinObj '\v\.@<!<%(object|bool|int|float|tuple|str|list|dict|set|frozenset|bytearray|bytes)>'
+ syn keyword pythonSingleton Ellipsis NotImplemented
syn keyword pythonBuiltinObj __debug__ __doc__ __file__ __name__ __package__
syn keyword pythonBuiltinObj __loader__ __spec__ __path__ __cached__
endif
@@ -357,7 +357,7 @@ if s:Enabled('g:python_highlight_builtin_funcs')
let s:funcs_re .= '|print'
endif
else
- let s:funcs_re .= '|ascii|exec|print'
+ let s:funcs_re .= '|ascii|breakpoint|exec|print'
endif
let s:funcs_re = 'syn match pythonBuiltinFunc ''\v\.@<!\zs<%(' . s:funcs_re . ')>'
@@ -371,11 +371,20 @@ if s:Enabled('g:python_highlight_builtin_funcs')
endif
"
+" Builtin types
+"
+
+if s:Enabled('g:python_highlight_builtin_types')
+ syn match pythonBuiltinType '\v\.@<!<%(object|bool|int|float|tuple|str|list|dict|set|frozenset|bytearray|bytes)>'
+endif
+
+
+"
" Builtin exceptions and warnings
"
if s:Enabled('g:python_highlight_exceptions')
- let s:exs_re = 'BaseException|Exception|ArithmeticError|LookupError|EnvironmentError|AssertionError|AttributeError|BufferError|EOFError|FloatingPointError|GeneratorExit|IOError|ImportError|IndexError|KeyError|KeyboardInterrupt|MemoryError|NameError|NotImplementedError|OSError|OverflowError|ReferenceError|RuntimeError|StopIteration|SyntaxError|IndentationError|TabError|SystemError|SystemExit|TypeError|UnboundLocalError|UnicodeError|UnicodeEncodeError|UnicodeDecodeError|UnicodeTranslateError|ValueError|VMSError|WindowsError|ZeroDivisionError|Warning|UserWarning|BytesWarning|DeprecationWarning|PendingDepricationWarning|SyntaxWarning|RuntimeWarning|FutureWarning|ImportWarning|UnicodeWarning'
+ let s:exs_re = 'BaseException|Exception|ArithmeticError|LookupError|EnvironmentError|AssertionError|AttributeError|BufferError|EOFError|FloatingPointError|GeneratorExit|IOError|ImportError|IndexError|KeyError|KeyboardInterrupt|MemoryError|NameError|NotImplementedError|OSError|OverflowError|ReferenceError|RuntimeError|StopIteration|SyntaxError|IndentationError|TabError|SystemError|SystemExit|TypeError|UnboundLocalError|UnicodeError|UnicodeEncodeError|UnicodeDecodeError|UnicodeTranslateError|ValueError|VMSError|WindowsError|ZeroDivisionError|Warning|UserWarning|BytesWarning|DeprecationWarning|PendingDeprecationWarning|SyntaxWarning|RuntimeWarning|FutureWarning|ImportWarning|UnicodeWarning'
if s:Python2Syntax()
let s:exs_re .= '|StandardError'
@@ -416,7 +425,6 @@ if v:version >= 508 || !exists('did_python_syn_inits')
HiLink pythonDecorator Define
HiLink pythonDottedName Function
- HiLink pythonDot Normal
HiLink pythonComment Comment
if !s:Enabled('g:python_highlight_file_headers_as_comments')
@@ -472,9 +480,11 @@ if v:version >= 508 || !exists('did_python_syn_inits')
HiLink pythonBoolean Boolean
HiLink pythonNone Constant
+ HiLink pythonSingleton Constant
- HiLink pythonBuiltinObj Structure
+ HiLink pythonBuiltinObj Identifier
HiLink pythonBuiltinFunc Function
+ HiLink pythonBuiltinType Structure
HiLink pythonExClass Structure
HiLink pythonClassVar Identifier
diff --git a/syntax/racket.vim b/syntax/racket.vim
index 717e1df6..4ab9b63c 100644
--- a/syntax/racket.vim
+++ b/syntax/racket.vim
@@ -57,6 +57,14 @@ syn keyword racketSyntax define* define*-values define*-syntax define*-syntaxes
syn keyword racketSyntax package? package-exported-identifiers package-original-identifiers
syn keyword racketSyntax block #%stratified-body
+" 8 Contracts
+" 8.2 Function contracts
+syn keyword racketSyntax -> ->* ->i ->d case-> dynamic->* unconstrained-domain->
+
+" 8.6.1 Nested Contract Boundaries
+syn keyword racketSyntax with-contract define/contract define-struct/contract
+syn keyword racketSyntax invariant-assertion current-contract-region
+
" 9 Pattern Matching
syn keyword racketSyntax match match* match/values define/match
syn keyword racketSyntax match-lambda match-lambda* match-lambda**
@@ -75,6 +83,9 @@ syn keyword racketSyntax reset-at shift-at prompt0 reset0 control0 shift0
syn keyword racketSyntax prompt0-at reset0-at control0-at shift0-at
syn keyword racketSyntax set cupto
+" 11.3.2 Parameters
+syn keyword racketSyntax parameterize parameterize*
+
" 12.5 Writing
syn keyword racketSyntax write display displayln print
syn keyword racketSyntax fprintf printf eprintf format
@@ -93,7 +104,8 @@ syn keyword racketSyntax make-custodian-box custodian-box-value
" lambda sign
syn match racketSyntax /\<[\u03bb]\>/
-" Functions
+
+" Functions ==================================================================
syn keyword racketFunc boolean? not equal? eqv? eq? equal?/recur immutable?
syn keyword racketFunc true false symbol=? boolean=? false?
@@ -108,8 +120,8 @@ syn keyword racketFunc inexact->exact exact->inexact
" 3.2.2.1 Arithmetic
syn keyword racketFunc + - * / quotient remainder quotient/remainder modulo
-syn keyword racketFunc add1 sub1 abs max min gcd lcm round floor ceiling
-syn keyword racketFunc truncate numerator denominator rationalize
+syn keyword racketFunc add1 sub1 abs max min gcd lcm round exact-round floor
+syn keyword racketFunc ceiling truncate numerator denominator rationalize
" 3.2.2.2 Number Comparison
syn keyword racketFunc = < <= > >=
@@ -374,6 +386,19 @@ syn keyword racketFunc class-field-accessor class-field-mutator
"5.4.3 Generics
syn keyword racketFunc generic send-generic make-generic
+" 8.1 Data-strucure contracts
+syn keyword racketFunc flat-contract-with-explanation flat-named-contract
+" TODO where do any/c and none/c `value`s go?
+syn keyword racketFunc or/c first-or/c and/c not/c =/c </c >/c <=/c >=/c
+syn keyword racketFunc between/c real-in integer-in char-in natural-number/c
+syn keyword racketFunc string-len/c printable/c one-of/c symbols vectorof
+syn keyword racketFunc vector-immutableof vector/c box/c box-immutable/c listof
+syn keyword racketFunc non-empty-listof list*of cons/c cons/dc list/c *list/c
+syn keyword racketFunc syntax/c struct/c struct/dc parameter/c
+syn keyword racketFunc procedure-arity-includes/c hash/c hash/dc channel/c
+syn keyword racketFunc prompt-tag/c continuation-mark-key/c evt/c promise/c
+syn keyword racketFunc flat-contract flat-contract-predicate suggest/c
+
" 9.1 Multiple Values
syn keyword racketFunc values call-with-values
@@ -420,6 +445,11 @@ syn keyword racketFunc continuation? continuation-prompt-tag dynamic-wind
" 10.4.1 Additional Control Operators
syn keyword racketFunc call/prompt abort/cc call/comp abort fcontrol spawn splitter new-prompt
+" 11.3.2 Parameters
+syn keyword racketFunc make-parameter make-derived-parameter parameter?
+syn keyword racketFunc parameter-procedure=? current-parameterization
+syn keyword racketFunc call-with-parameterization parameterization?
+
" 14.1.1 Manipulating Paths
syn keyword racketFunc path? path-string? path-for-some-system? string->path path->string path->bytes
syn keyword racketFunc string->path-element bytes->path-element path-element->string path-element->bytes
@@ -434,6 +464,9 @@ syn keyword racketFunc path-replace-suffix path-add-suffix
syn keyword racketFunc explode-path file-name-from-path filename-extension find-relative-path normalize-path
syn keyword racketFunc path-element? path-only simple-form-path some-simple-path->string string->some-system-path
+" 15.6 Time
+syn keyword racketFunc current-seconds current-inexact-milliseconds
+syn keyword racketFunc seconds->date current-milliseconds
syn match racketDelimiter !\<\.\>!
diff --git a/syntax/rst.vim b/syntax/rst.vim
index 9df2283a..7d88963a 100644
--- a/syntax/rst.vim
+++ b/syntax/rst.vim
@@ -5,7 +5,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rst') == -1
" Maintainer: Marshall Ward <marshall.ward@gmail.com>
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Website: https://github.com/marshallward/vim-restructuredtext
-" Latest Revision: 2018-07-23
+" Latest Revision: 2018-12-29
if exists("b:current_syntax")
finish
@@ -23,7 +23,7 @@ syn cluster rstCruft contains=rstEmphasis,rstStrongEmphasis,
\ rstInlineInternalTargets,rstFootnoteReference,rstHyperlinkReference
syn region rstLiteralBlock matchgroup=rstDelimiter
- \ start='::\_s*\n\ze\z(\s\+\)' skip='^$' end='^\z1\@!'
+ \ start='\(^\z(\s*\).*\)\@<=::\n\s*\n' skip='^\s*$' end='^\(\z1\s\+\)\@!'
\ contains=@NoSpell
syn region rstQuotedLiteralBlock matchgroup=rstDelimiter
diff --git a/syntax/ruby.vim b/syntax/ruby.vim
index 9f269980..28c341b0 100644
--- a/syntax/ruby.vim
+++ b/syntax/ruby.vim
@@ -20,6 +20,11 @@ endif
let s:cpo_sav = &cpo
set cpo&vim
+" eRuby Config {{{1
+if exists('main_syntax') && main_syntax == 'eruby'
+ let b:ruby_no_expensive = 1
+endif
+
" Folding Config {{{1
if has("folding") && exists("ruby_fold")
setlocal foldmethod=syntax
@@ -34,6 +39,10 @@ let s:foldable_groups = split(
\ )
function! s:foldable(...) abort
+ if index(s:foldable_groups, 'NONE') > -1
+ return 0
+ endif
+
if index(s:foldable_groups, 'ALL') > -1
return 1
endif
@@ -45,9 +54,21 @@ function! s:foldable(...) abort
endfor
return 0
-endfunction " }}}
+endfunction
+
+function! s:run_syntax_fold(args) abort
+ let [_0, _1, groups, cmd; _] = matchlist(a:args, '\(["'']\)\(.\{-}\)\1\s\+\(.*\)')
+ if call('s:foldable', split(groups))
+ let cmd .= ' fold'
+ endif
+ exe cmd
+endfunction
-syn cluster rubyNotTop contains=@rubyExtendedStringSpecial,@rubyRegexpSpecial,@rubyDeclaration,rubyConditional,rubyExceptional,rubyMethodExceptional,rubyTodo,rubyModuleName,rubyClassName,rubySymbolDelimiter
+com! -nargs=* SynFold call s:run_syntax_fold(<q-args>)
+
+" }}}
+
+syn cluster rubyNotTop contains=@rubyCommentNotTop,@rubyStringNotTop,@rubyRegexpSpecial,@rubyDeclaration,@rubyExceptionHandler,rubyConditional,rubyModuleName,rubyClassName,rubySymbolDelimiter
" Whitespace Errors {{{1
if exists("ruby_space_errors")
@@ -61,373 +82,315 @@ endif
" Operators {{{1
if exists("ruby_operators")
- syn match rubyOperator "[~!^|*/%+-]\|&\.\@!\|\%(class\s*\)\@<!<<\|<=>\|<=\|\%(<\|\<class\s\+\u\w*\s*\)\@<!<[^<]\@=\|===\|==\|=\~\|>>\|>=\|=\@1<!>\|\*\*\|\.\.\.\|\.\.\|::"
- syn match rubyOperator "->\|-=\|/=\|\*\*=\|\*=\|&&=\|&=\|&&\|||=\||=\|||\|%=\|+=\|!\~\|!="
- syn region rubyBracketOperator matchgroup=rubyOperator start="\%(\w[?!]\=\|[]})]\)\@2<=\[\s*" end="\s*]" contains=ALLBUT,@rubyNotTop
+ syn match rubyDotOperator "\.\|&\." containedin=rubyKeywordAsMethod
+ syn match rubyTernaryOperator "[[:alnum:]]\@1<!?\|:"
+ syn match rubyArithmeticOperator "\*\*\|[*/%+]\|->\@!"
+ syn match rubyComparisonOperator "<=>\|<=\|\%(<\|\<class\s\+\u\w*\s*\)\@<!<<\@!\|>=\|[-=]\@1<!>"
+ syn match rubyBitwiseOperator "[~^|]\|&\.\@!\|\%(class\s*\)\@<!<<\|>>"
+ syn match rubyBooleanOperator "[[:alnum:]]\@1<!!\|&&\|||"
+ syn match rubyRangeOperator "\.\.\.\="
+ syn match rubyAssignmentOperator "=>\@!\|-=\|/=\|\*\*=\|\*=\|&&=\|&=\|||=\||=\|%=\|+=\|>>=\|<<=\|\^="
+ syn match rubyEqualityOperator "===\|==\|!=\|!\~\|=\~"
+ syn match rubyScopeOperator "::"
+ syn region rubyBracketOperator matchgroup=rubyOperator start="\%(\w[?!]\=\|[]})]\)\@2<=\[\s*" end="\s*]" contains=ALLBUT,@rubyNotTop
+
+ syn cluster rubyOperator contains=ruby.*Operator
endif
-" Expression Substitution and Backslash Notation {{{1
-syn match rubyStringEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}" contained display
+" String Interpolation and Backslash Notation {{{1
+syn region rubyInterpolation matchgroup=rubyInterpolationDelimiter start="#{" end="}" contained contains=ALLBUT,@rubyNotTop
+syn match rubyInterpolation "#\$\%(-\w\|[!$&"'*+,./0:;<>?@\`~_]\|\w\+\)" display contained contains=rubyInterpolationDelimiter,@rubyGlobalVariable
+syn match rubyInterpolation "#@@\=\w\+" display contained contains=rubyInterpolationDelimiter,rubyInstanceVariable,rubyClassVariable
+syn match rubyInterpolationDelimiter "#\ze[$@]" display contained
+
+syn match rubyStringEscape "\\\_." contained display
+syn match rubyStringEscape "\\\o\{1,3}\|\\x\x\{1,2}" contained display
+syn match rubyStringEscape "\\u\%(\x\{4}\|{\x\{1,6}\%(\s\+\x\{1,6}\)*}\)" contained display
syn match rubyStringEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display
-syn match rubyQuoteEscape "\\[\\']" contained display
-syn region rubyInterpolation matchgroup=rubyInterpolationDelimiter start="#{" end="}" contained contains=ALLBUT,@rubyNotTop
-syn match rubyInterpolation "#\%(\$\|@@\=\)\w\+" display contained contains=rubyInterpolationDelimiter,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable,rubyPredefinedVariable
-syn match rubyInterpolationDelimiter "#\ze\%(\$\|@@\=\)\w\+" display contained
-syn match rubyInterpolation "#\$\%(-\w\|\W\)" display contained contains=rubyInterpolationDelimiter,rubyPredefinedVariable,rubyInvalidVariable
-syn match rubyInterpolationDelimiter "#\ze\$\%(-\w\|\W\)" display contained
-syn region rubyNoInterpolation start="\\#{" end="}" contained
-syn match rubyNoInterpolation "\\#{" display contained
-syn match rubyNoInterpolation "\\#\%(\$\|@@\=\)\w\+" display contained
-syn match rubyNoInterpolation "\\#\$\W" display contained
+syn match rubyBackslashEscape "\\\\" contained display
+syn match rubyQuoteEscape "\\'" contained display
+syn match rubySpaceEscape "\\ " contained display
-syn match rubyDelimiterEscape "\\[(<{\[)>}\]]" transparent display contained contains=NONE
+syn match rubyParenthesesEscape "\\[()]" contained display
+syn match rubyCurlyBracesEscape "\\[{}]" contained display
+syn match rubyAngleBracketsEscape "\\[<>]" contained display
+syn match rubySquareBracketsEscape "\\[[\]]" contained display
syn region rubyNestedParentheses start="(" skip="\\\\\|\\)" matchgroup=rubyString end=")" transparent contained
syn region rubyNestedCurlyBraces start="{" skip="\\\\\|\\}" matchgroup=rubyString end="}" transparent contained
syn region rubyNestedAngleBrackets start="<" skip="\\\\\|\\>" matchgroup=rubyString end=">" transparent contained
syn region rubyNestedSquareBrackets start="\[" skip="\\\\\|\\\]" matchgroup=rubyString end="\]" transparent contained
+syn cluster rubySingleCharEscape contains=rubyBackslashEscape,rubyQuoteEscape,rubySpaceEscape,rubyParenthesesEscape,rubyCurlyBracesEscape,rubyAngleBracketsEscape,rubySquareBracketsEscape
+syn cluster rubyNestedBrackets contains=rubyNested.\+
+syn cluster rubyStringSpecial contains=rubyInterpolation,rubyStringEscape
+syn cluster rubyStringNotTop contains=@rubyStringSpecial,@rubyNestedBrackets,@rubySingleCharEscape
+
" Regular Expression Metacharacters {{{1
-" These are mostly Oniguruma ready
-syn region rubyRegexpComment matchgroup=rubyRegexpSpecial start="(?#" skip="\\)" end=")" contained
-syn region rubyRegexpParens matchgroup=rubyRegexpSpecial start="(\(?:\|?<\=[=!]\|?>\|?<[a-z_]\w*>\|?[imx]*-[imx]*:\=\|\%(?#\)\@!\)" skip="\\)" end=")" contained transparent contains=@rubyRegexpSpecial
-syn region rubyRegexpBrackets matchgroup=rubyRegexpCharClass start="\[\^\=" skip="\\\]" end="\]" contained transparent contains=rubyStringEscape,rubyRegexpEscape,rubyRegexpCharClass oneline
-syn match rubyRegexpCharClass "\\[DdHhSsWw]" contained display
-syn match rubyRegexpCharClass "\[:\^\=\%(alnum\|alpha\|ascii\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\):\]" contained
-syn match rubyRegexpEscape "\\[].*?+^$|\\/(){}[]" contained
-syn match rubyRegexpQuantifier "[*?+][?+]\=" contained display
-syn match rubyRegexpQuantifier "{\d\+\%(,\d*\)\=}?\=" contained display
-syn match rubyRegexpAnchor "[$^]\|\\[ABbGZz]" contained display
-syn match rubyRegexpDot "\." contained display
-syn match rubyRegexpSpecial "|" contained display
-syn match rubyRegexpSpecial "\\[1-9]\d\=\d\@!" contained display
-syn match rubyRegexpSpecial "\\k<\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\=>" contained display
-syn match rubyRegexpSpecial "\\k'\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\='" contained display
-syn match rubyRegexpSpecial "\\g<\%([a-z_]\w*\|-\=\d\+\)>" contained display
-syn match rubyRegexpSpecial "\\g'\%([a-z_]\w*\|-\=\d\+\)'" contained display
-
-syn cluster rubyStringSpecial contains=rubyInterpolation,rubyNoInterpolation,rubyStringEscape
-syn cluster rubyExtendedStringSpecial contains=@rubyStringSpecial,rubyNestedParentheses,rubyNestedCurlyBraces,rubyNestedAngleBrackets,rubyNestedSquareBrackets
-syn cluster rubyRegexpSpecial contains=rubyInterpolation,rubyNoInterpolation,rubyStringEscape,rubyRegexpSpecial,rubyRegexpEscape,rubyRegexpBrackets,rubyRegexpCharClass,rubyRegexpDot,rubyRegexpQuantifier,rubyRegexpAnchor,rubyRegexpParens,rubyRegexpComment
-
-" Numbers and ASCII Codes {{{1
-syn match rubyASCIICode "\%(\w\|[]})\"'/]\)\@1<!\%(?\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\=\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)\)"
-syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[xX]\x\+\%(_\x\+\)*r\=i\=\>" display
-syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0[dD]\)\=\%(0\|[1-9]\d*\%(_\d\+\)*\)r\=i\=\>" display
-syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[oO]\=\o\+\%(_\o\+\)*r\=i\=\>" display
-syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[bB][01]\+\%(_[01]\+\)*r\=i\=\>" display
-syn match rubyFloat "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\.\d\+\%(_\d\+\)*r\=i\=\>" display
-syn match rubyFloat "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\%(\.\d\+\%(_\d\+\)*\)\=\%([eE][-+]\=\d\+\%(_\d\+\)*\)r\=i\=\>" display
+syn region rubyRegexpComment matchgroup=rubyRegexpSpecial start="(?#" skip="\\\\\|\\)" end=")" contained
+syn region rubyRegexpParens matchgroup=rubyRegexpSpecial start="(\(?:\|?<\=[=!]\|?>\|?<[a-z_]\w*>\|?[imx]*-[imx]*:\=\|\%(?#\)\@!\)" skip="\\\\\|\\)" end=")" contained transparent contains=@rubyRegexpSpecial
+syn region rubyRegexpBrackets matchgroup=rubyRegexpCharClass start="\[\^\=" skip="\\\\\|\\\]" end="\]" contained transparent contains=rubyRegexpBrackets,rubyStringEscape,rubyRegexpEscape,rubyRegexpCharClass,rubyRegexpIntersection oneline
+syn match rubyRegexpCharClass "\\[DdHhRSsWw]" contained display
+syn match rubyRegexpCharClass "\[:\^\=\%(alnum\|alpha\|ascii\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|word\|xdigit\):\]" contained
+syn match rubyRegexpCharClass "\\[pP]{^\=.\{-}}" contained display
+syn match rubyRegexpEscape "\\[].*?+^$|\\/(){}[]" contained " see commit e477f10
+syn match rubyRegexpQuantifier "[*?+][?+]\=" contained display
+syn match rubyRegexpQuantifier "{\d\+\%(,\d*\)\=}?\=" contained display
+syn match rubyRegexpAnchor "[$^]\|\\[ABbGZz]" contained display
+syn match rubyRegexpDot "\.\|\\X" contained display
+syn match rubyRegexpIntersection "&&" contained display
+syn match rubyRegexpSpecial "\\K" contained display
+syn match rubyRegexpSpecial "|" contained display
+syn match rubyRegexpSpecial "\\[1-9]\d\=\d\@!" contained display
+syn match rubyRegexpSpecial "\\k<\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\=>" contained display
+syn match rubyRegexpSpecial "\\k'\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\='" contained display
+syn match rubyRegexpSpecial "\\g<\%([a-z_]\w*\|-\=\d\+\)>" contained display
+syn match rubyRegexpSpecial "\\g'\%([a-z_]\w*\|-\=\d\+\)'" contained display
+
+syn cluster rubyRegexpSpecial contains=@rubyStringSpecial,rubyRegexpSpecial,rubyRegexpEscape,rubyRegexpBrackets,rubyRegexpCharClass,rubyRegexpDot,rubyRegexpQuantifier,rubyRegexpAnchor,rubyRegexpParens,rubyRegexpComment,rubyRegexpIntersection
+
+" Numbers {{{1
+syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[xX]\x\+\%(_\x\+\)*r\=i\=\>" display
+syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0[dD]\)\=\%(0\|[1-9]\d*\%(_\d\+\)*\)r\=i\=\>" display
+syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[oO]\=\o\+\%(_\o\+\)*r\=i\=\>" display
+syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[bB][01]\+\%(_[01]\+\)*r\=i\=\>" display
+syn match rubyFloat "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\.\d\+\%(_\d\+\)*r\=i\=\>" display
+syn match rubyFloat "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\%(\.\d\+\%(_\d\+\)*\)\=\%([eE][-+]\=\d\+\%(_\d\+\)*\)i\=\>" display
" Identifiers {{{1
-syn match rubyLocalVariableOrMethod "\<[_[:lower:]][_[:alnum:]]*[?!=]\=" contains=NONE display transparent
+syn match rubyLocalVariableOrMethod "\<[_[:lower:]][_[:alnum:]]*[?!]\=" contains=NONE display transparent
syn match rubyBlockArgument "&[_[:lower:]][_[:alnum:]]" contains=NONE display transparent
-syn match rubyClassName "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\u\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)\@!" contained
-syn match rubyModuleName "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\u\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)\@!" contained
-syn match rubyConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\u\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)\@!"
-syn match rubyClassVariable "@@\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" display
-syn match rubyInstanceVariable "@\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" display
-syn match rubyGlobalVariable "$\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\|-.\)"
-syn match rubySymbolDelimiter ":" contained
-syn match rubySymbol "[]})\"':]\@1<!:\%(\^\|\~@\|\~\|<<\|<=>\|<=\|<\|===\|[=!]=\|[=!]\~\|!@\|!\|>>\|>=\|>\||\|-@\|-\|/\|\[]=\|\[]\|\*\*\|\*\|&\|%\|+@\|+\|`\)" contains=rubySymbolDelimiter
-syn match rubySymbol "[]})\"':]\@1<!:\$\%(-.\|[`~<=>_,;:!?/.'"@$*\&+0]\)" contains=rubySymbolDelimiter
-syn match rubySymbol "[]})\"':]\@1<!:\%(\$\|@@\=\)\=\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" contains=rubySymbolDelimiter
-syn match rubySymbol "[]})\"':]\@1<!:\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\%([?!=]>\@!\)\=" contains=rubySymbolDelimiter
-
-if s:foldable(':')
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="[]})\"':]\@1<!:'" end="'" skip="\\\\\|\\'" contains=rubyQuoteEscape fold
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="[]})\"':]\@1<!:\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial fold
-else
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="[]})\"':]\@1<!:'" end="'" skip="\\\\\|\\'" contains=rubyQuoteEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="[]})\"':]\@1<!:\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial
-endif
+syn match rubyClassName "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\u\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)\@!" contained
+syn match rubyModuleName "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\u\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)\@!" contained
+syn match rubyConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\u\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)\@!"
+syn match rubyClassVariable "@@\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" display
+syn match rubyInstanceVariable "@\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" display
+syn match rubyGlobalVariable "$\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\|-.\)"
+syn match rubySymbolDelimiter ":" contained
+syn match rubySymbol "[]})\"':]\@1<!:\%(\^\|\~@\|\~\|<<\|<=>\|<=\|<\|===\|[=!]=\|[=!]\~\|!@\|!\|>>\|>=\|>\||\|-@\|-\|/\|\[]=\|\[]\|\*\*\|\*\|&\|%\|+@\|+\|`\)" contains=rubySymbolDelimiter
+syn match rubySymbol "[]})\"':]\@1<!:\$\%(-.\|[`~<=>_,;:!?/.'"@$*\&+0]\)" contains=rubySymbolDelimiter
+syn match rubySymbol "[]})\"':]\@1<!:\%(\$\|@@\=\)\=\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" contains=rubySymbolDelimiter
+syn match rubySymbol "[]})\"':]\@1<!:\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\%([?!=]>\@!\)\=" contains=rubySymbolDelimiter
+
+SynFold ':' syn region rubySymbol matchgroup=rubySymbolDelimiter start="[]})\"':]\@1<!:'" end="'" skip="\\\\\|\\'" contains=rubyQuoteEscape,rubyBackslashEscape
+SynFold ':' syn region rubySymbol matchgroup=rubySymbolDelimiter start="[]})\"':]\@1<!:\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial
-syn match rubyCapitalizedMethod "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\u\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)*\s*(\@="
+syn match rubyCapitalizedMethod "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\u\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)\@="
syn match rubyBlockParameter "\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" contained
syn region rubyBlockParameterList start="\%(\%(\<do\>\|{\)\_s*\)\@32<=|" end="|" oneline display contains=rubyBlockParameter
-syn match rubyInvalidVariable "$[^ A-Za-z_-]"
-syn match rubyPredefinedVariable #$[!$&"'*+,./0:;<=>?@\`~]#
-syn match rubyPredefinedVariable "$\d\+" display
-syn match rubyPredefinedVariable "$_\>" display
-syn match rubyPredefinedVariable "$-[0FIKadilpvw]\>" display
-syn match rubyPredefinedVariable "$\%(deferr\|defout\|stderr\|stdin\|stdout\)\>" display
-syn match rubyPredefinedVariable "$\%(DEBUG\|FILENAME\|KCODE\|LOADED_FEATURES\|LOAD_PATH\|PROGRAM_NAME\|SAFE\|VERBOSE\)\>" display
+if exists('ruby_global_variable_error')
+ syn match rubyGlobalVariableError "$[^A-Za-z_]" display
+ syn match rubyGlobalVariableError "$-[^0FIKWadilpvw]" display
+endif
+
+syn match rubyPredefinedVariable #$[!$&"'*+,./0:;<>?@\`~]#
+syn match rubyPredefinedVariable "$\d\+" display
+syn match rubyPredefinedVariable "$_\>" display
+syn match rubyPredefinedVariable "$-[0FIWadilpvw]\>" display
+syn match rubyPredefinedVariable "$\%(stderr\|stdin\|stdout\)\>" display
+syn match rubyPredefinedVariable "$\%(DEBUG\|FILENAME\|LOADED_FEATURES\|LOAD_PATH\|PROGRAM_NAME\|SAFE\|VERBOSE\)\>" display
syn match rubyPredefinedConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\%(ARGF\|ARGV\|ENV\|DATA\|FALSE\|NIL\|STDERR\|STDIN\|STDOUT\|TOPLEVEL_BINDING\|TRUE\)\>\%(\s*(\)\@!"
syn match rubyPredefinedConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\%(RUBY_\%(VERSION\|RELEASE_DATE\|PLATFORM\|PATCHLEVEL\|REVISION\|DESCRIPTION\|COPYRIGHT\|ENGINE\)\)\>\%(\s*(\)\@!"
-" Normal Regular Expression {{{1
-if s:foldable('/')
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\|else\)\|[;\~=!|&(,{[<>?:*+-]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/\%([ \t=]\|$\)\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold
-else
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\|else\)\|[;\~=!|&(,{[<>?:*+-]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/\%([ \t=]\|$\)\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial
-endif
+" Deprecated/removed in 1.9
+syn match rubyPredefinedVariable "$="
+syn match rubyPredefinedVariable "$-K\>" display
+syn match rubyPredefinedVariable "$\%(deferr\|defout\)\>" display
+syn match rubyPredefinedVariable "$KCODE\>" display
-" Generalized Regular Expression {{{1
-if s:foldable('%')
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial fold
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r{" end="}[iomxneus]*" skip="\\\\\|\\}" contains=@rubyRegexpSpecial fold
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r<" end=">[iomxneus]*" skip="\\\\\|\\>" contains=@rubyRegexpSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape fold
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\[" end="\][iomxneus]*" skip="\\\\\|\\\]" contains=@rubyRegexpSpecial fold
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r(" end=")[iomxneus]*" skip="\\\\\|\\)" contains=@rubyRegexpSpecial fold
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z(\s\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial fold
-else
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r{" end="}[iomxneus]*" skip="\\\\\|\\}" contains=@rubyRegexpSpecial
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r<" end=">[iomxneus]*" skip="\\\\\|\\>" contains=@rubyRegexpSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\[" end="\][iomxneus]*" skip="\\\\\|\\\]" contains=@rubyRegexpSpecial
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r(" end=")[iomxneus]*" skip="\\\\\|\\)" contains=@rubyRegexpSpecial
- syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z(\s\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial
-endif
+syn cluster rubyGlobalVariable contains=rubyGlobalVariable,rubyPredefinedVariable,rubyGlobalVariableError
+
+" Normal Regular Expressions {{{1
+SynFold '/' syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\|else\)\|[;\~=!|&(,{[<>?:*+-]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial nextgroup=@rubyModifier skipwhite
+SynFold '/' syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/\%([ \t=]\|$\)\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial nextgroup=@rubyModifier skipwhite
+
+" Generalized Regular Expressions {{{1
+SynFold '%' syn region rubyRegexp matchgroup=rubyPercentRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial nextgroup=@rubyModifier skipwhite
+SynFold '%' syn region rubyRegexp matchgroup=rubyPercentRegexpDelimiter start="%r{" end="}[iomxneus]*" skip="\\\\\|\\}" contains=@rubyRegexpSpecial
+SynFold '%' syn region rubyRegexp matchgroup=rubyPercentRegexpDelimiter start="%r<" end=">[iomxneus]*" skip="\\\\\|\\>" contains=@rubyRegexpSpecial,rubyNestedAngleBrackets
+SynFold '%' syn region rubyRegexp matchgroup=rubyPercentRegexpDelimiter start="%r\[" end="\][iomxneus]*" skip="\\\\\|\\\]" contains=@rubyRegexpSpecial
+SynFold '%' syn region rubyRegexp matchgroup=rubyPercentRegexpDelimiter start="%r(" end=")[iomxneus]*" skip="\\\\\|\\)" contains=@rubyRegexpSpecial
+SynFold '%' syn region rubyRegexp matchgroup=rubyPercentRegexpDelimiter start="%r\z(\s\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial
+
+" Characters {{{1
+syn match rubyCharacter "\%(\w\|[]})\"'/]\)\@1<!\%(?\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\=\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)\)"
+syn match rubyCharacter "\%(\w\|[]})\"'/]\)\@1<!?\\u\%(\x\{4}\|{\x\{1,6}}\)"
-" Normal String {{{1
+" Normal Strings {{{1
let s:spell_cluster = exists('ruby_spellcheck_strings') ? ',@Spell' : ''
-exe 'syn region rubyString matchgroup=rubyStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" ' .
- \ (s:foldable('%') ? 'fold' : '') . ' contains=@rubyStringSpecial' . s:spell_cluster
-exe 'syn region rubyString matchgroup=rubyStringDelimiter start="''" end="''" skip="\\\\\|\\''" ' .
- \ (s:foldable('%') ? 'fold' : '') . ' contains=rubyQuoteEscape' . s:spell_cluster
+let s:fold_arg = s:foldable('string') ? ' fold' : ''
+exe 'syn region rubyString matchgroup=rubyStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial' . s:spell_cluster . s:fold_arg
+exe 'syn region rubyString matchgroup=rubyStringDelimiter start="''" end="''" skip="\\\\\|\\''" contains=rubyQuoteEscape,rubyBackslashEscape' . s:spell_cluster . s:fold_arg
+unlet s:spell_cluster s:fold_arg
" Shell Command Output {{{1
-if s:foldable('%')
- syn region rubyString matchgroup=rubyStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=@rubyStringSpecial fold
-else
- syn region rubyString matchgroup=rubyStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=@rubyStringSpecial
-endif
+SynFold 'string' syn region rubyString matchgroup=rubyStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=@rubyStringSpecial
-" Generalized Single Quoted String, Symbol and Array of Strings {{{1
-if s:foldable('%')
- syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
- syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimiterEscape
- syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimiterEscape
- syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimiterEscape
- syn region rubyString matchgroup=rubyStringDelimiter start="%[qw](" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimiterEscape
- syn region rubyString matchgroup=rubyStringDelimiter start="%q\z(\s\)" end="\z1" skip="\\\\\|\\\z1" 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,rubyDelimiterEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimiterEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimiterEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s(" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimiterEscape
- syn region rubyString matchgroup=rubyStringDelimiter start="%s\z(\s\)" end="\z1" skip="\\\\\|\\\z1" fold
-else
- syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1"
- syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]{" end="}" skip="\\\\\|\\}" contains=rubyNestedCurlyBraces,rubyDelimiterEscape
- syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]<" end=">" skip="\\\\\|\\>" contains=rubyNestedAngleBrackets,rubyDelimiterEscape
- syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\[" end="\]" skip="\\\\\|\\\]" contains=rubyNestedSquareBrackets,rubyDelimiterEscape
- syn region rubyString matchgroup=rubyStringDelimiter start="%[qw](" end=")" skip="\\\\\|\\)" contains=rubyNestedParentheses,rubyDelimiterEscape
- syn region rubyString matchgroup=rubyStringDelimiter start="%q\z(\s\)" end="\z1" skip="\\\\\|\\\z1"
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1"
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s{" end="}" skip="\\\\\|\\}" contains=rubyNestedCurlyBraces,rubyDelimiterEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s<" end=">" skip="\\\\\|\\>" contains=rubyNestedAngleBrackets,rubyDelimiterEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\[" end="\]" skip="\\\\\|\\\]" contains=rubyNestedSquareBrackets,rubyDelimiterEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s(" end=")" skip="\\\\\|\\)" contains=rubyNestedParentheses,rubyDelimiterEscape
- syn region rubyString matchgroup=rubyStringDelimiter start="%s\z(\s\)" end="\z1" skip="\\\\\|\\\z1"
-endif
+" Generalized Single Quoted Strings, Symbols, Array of Strings and Array of Symbols {{{1
-" Generalized Double Quoted String and Array of Strings and Shell Command Output {{{1
-" Note: %= is not matched here as the beginning of a double quoted string
-if s:foldable('%')
- syn region rubyString matchgroup=rubyStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold
- syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold
- syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape fold
- syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape fold
- syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape fold
- syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape fold
- syn region rubyString matchgroup=rubyStringDelimiter start="%[Qx]\z(\s\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold
-else
- syn region rubyString matchgroup=rubyStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial
- syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial
- syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape
- syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape
- syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape
- syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape
- syn region rubyString matchgroup=rubyStringDelimiter start="%[Qx]\z(\s\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial
-endif
+" Non-bracket punctuation delimiters {{{2
+let s:names = { '~': 'Tilde', '`': 'BackQuote', '!': 'Bang', '@': 'At', '#': 'Hash', '$': 'Dollar', '%': 'Percent', '^': 'Caret',
+ \ '&': 'Ampersand', '*': 'Asterix', '_': 'Underscore', '-': 'Dash', '+': 'Plus', '=': 'Equals', '|': 'Bar',
+ \ '\': 'Backslash', ':': 'Colon', ';': 'Semicolon', '"': 'DoubleQuote', "'": 'Quote', ',': 'Comma', '.': 'Period',
+ \ '?': 'QuestionMark', '/': 'ForwardSlash' }
-" Array of Symbols {{{1
-if s:foldable('%')
- " Array of Symbols
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimiterEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimiterEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimiterEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i(" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimiterEscape
-
- " Array of interpolated Symbols
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I{" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape fold
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape fold
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape fold
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape fold
-else
- " Array of Symbols
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1"
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i{" end="}" skip="\\\\\|\\}" contains=rubyNestedCurlyBraces,rubyDelimiterEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i<" end=">" skip="\\\\\|\\>" contains=rubyNestedAngleBrackets,rubyDelimiterEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\[" end="\]" skip="\\\\\|\\\]" contains=rubyNestedSquareBrackets,rubyDelimiterEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i(" end=")" skip="\\\\\|\\)" contains=rubyNestedParentheses,rubyDelimiterEscape
-
- " Array of interpolated Symbols
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I{" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape
- syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape
-endif
+for s:delimiter in keys(s:names)
+ let s:group = 'ruby' . s:names[s:delimiter] . 'Escape'
-" Here Document {{{1
-syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<[-~]\=\zs\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
-syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<[-~]\=\zs"\%([^"]*\)"+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
-syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<[-~]\=\zs'\%([^']*\)'+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
-syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<[-~]\=\zs`\%([^`]*\)`+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
-
-if s:foldable('<<')
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc fold keepend
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend
-
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart fold keepend
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
-else
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial keepend
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial keepend
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc keepend
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial keepend
-
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart keepend
- syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
-endif
+ if s:delimiter =~ '[\"]'
+ let s:delimiter = '\' . s:delimiter
+ endif
-" eRuby Config {{{1
-if exists('main_syntax') && main_syntax == 'eruby'
- let b:ruby_no_expensive = 1
-endif
+ exe 'syn match ' . s:group . ' "\V\\' . s:delimiter . '" contained display'
+ exe 'syn cluster rubySingleCharEscape add=' . s:group
+ exe 'SynFold ''%'' syn region rubyString matchgroup=rubyPercentStringDelimiter start="\V%q' . s:delimiter . '" end="\V' . s:delimiter . '" skip="\V\\\\\|\\' . s:delimiter . '" contains=rubyBackslashEscape,' . s:group . ' nextgroup=@rubyModifier skipwhite'
+ exe 'SynFold ''%'' syn region rubyString matchgroup=rubyPercentStringDelimiter start="\V%w' . s:delimiter . '" end="\V' . s:delimiter . '" skip="\V\\\\\|\\' . s:delimiter . '" contains=rubyBackslashEscape,rubySpaceEscape,' . s:group . ' nextgroup=@rubyModifier skipwhite'
+ exe 'SynFold ''%'' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="\V%s' . s:delimiter . '" end="\V' . s:delimiter . '" skip="\V\\\\\|\\' . s:delimiter . '" contains=rubyBackslashEscape,' . s:group . ' nextgroup=@rubyModifier skipwhite'
+ exe 'SynFold ''%'' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="\V%i' . s:delimiter . '" end="\V' . s:delimiter . '" skip="\V\\\\\|\\' . s:delimiter . '" contains=rubyBackslashEscape,rubySpaceEscape,' . s:group . ' nextgroup=@rubyModifier skipwhite'
+ exe 'hi def link ' . s:group . ' rubyStringEscape'
+endfor
+
+unlet s:delimiter s:group s:names
+" }}}2
+
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%q{" end="}" skip="\\\\\|\\}" contains=rubyBackslashEscape,rubyCurlyBracesEscape,rubyNestedCurlyBraces
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%q<" end=">" skip="\\\\\|\\>" contains=rubyBackslashEscape,rubyAngleBracketsEscape,rubyNestedAngleBrackets
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%q\[" end="\]" skip="\\\\\|\\\]" contains=rubyBackslashEscape,rubySquareBracketsEscape,rubyNestedSquareBrackets
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%q(" end=")" skip="\\\\\|\\)" contains=rubyBackslashEscape,rubyParenthesesEscape,rubyNestedParentheses
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%q\z(\s\)" end="\z1" skip="\\\\\|\\\z1" contains=rubyBackslashEscape,rubySpaceEscape
+
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%w{" end="}" skip="\\\\\|\\}" contains=rubyBackslashEscape,rubySpaceEscape,rubyCurlyBracesEscape,rubyNestedCurlyBraces
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%w<" end=">" skip="\\\\\|\\>" contains=rubyBackslashEscape,rubySpaceEscape,rubyAngleBracketsEscape,rubyNestedAngleBrackets
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%w\[" end="\]" skip="\\\\\|\\\]" contains=rubyBackslashEscape,rubySpaceEscape,rubySquareBracketsEscape,rubyNestedSquareBrackets
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%w(" end=")" skip="\\\\\|\\)" contains=rubyBackslashEscape,rubySpaceEscape,rubyParenthesesEscape,rubyNestedParentheses
+
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%s{" end="}" skip="\\\\\|\\}" contains=rubyBackslashEscape,rubyCurlyBracesEscape,rubyNestedCurlyBraces
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%s<" end=">" skip="\\\\\|\\>" contains=rubyBackslashEscape,rubyAngleBracketsEscape,rubyNestedAngleBrackets
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%s\[" end="\]" skip="\\\\\|\\\]" contains=rubyBackslashEscape,rubySquareBracketsEscape,rubyNestedSquareBrackets
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%s(" end=")" skip="\\\\\|\\)" contains=rubyBackslashEscape,rubyParenthesesEscape,rubyNestedParentheses
+SynFold '%' syn region rubyString matchgroup=rubyPercentSymbolDelimiter start="%s\z(\s\)" end="\z1" skip="\\\\\|\\\z1" contains=rubyBackslashEscape,rubySpaceEscape
+
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%i{" end="}" skip="\\\\\|\\}" contains=rubyBackslashEscape,rubySpaceEscape,rubyCurlyBracesEscape,rubyNestedCurlyBraces
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%i<" end=">" skip="\\\\\|\\>" contains=rubyBackslashEscape,rubySpaceEscape,rubyAngleBracketsEscape,rubyNestedAngleBrackets
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%i\[" end="\]" skip="\\\\\|\\\]" contains=rubyBackslashEscape,rubySpaceEscape,rubySquareBracketsEscape,rubyNestedSquareBrackets
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%i(" end=")" skip="\\\\\|\\)" contains=rubyBackslashEscape,rubySpaceEscape,rubyParenthesesEscape,rubyNestedParentheses
+
+" Generalized Double Quoted Strings, Symbols, Array of Strings, Array of Symbols and Shell Command Output {{{1
+" Note: %= is not matched here as the beginning of a double quoted string
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial nextgroup=@rubyModifier skipwhite
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses
+SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%[Qx]\z(\s\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial
+
+" Array of interpolated Symbols
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%I\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial nextgroup=@rubyModifier skipwhite
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%I{" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%I<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%I\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets
+SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%I(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses
+
+" Here Documents {{{1
+syn region rubyHeredocStart matchgroup=rubyHeredocDelimiter start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"']\)\s\|\w\)\@<!<<[-~]\=\zs\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
+syn region rubyHeredocStart matchgroup=rubyHeredocDelimiter start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"']\)\s\|\w\)\@<!<<[-~]\=\zs"\%([^"]*\)"+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
+syn region rubyHeredocStart matchgroup=rubyHeredocDelimiter start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"']\)\s\|\w\)\@<!<<[-~]\=\zs'\%([^']*\)'+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
+syn region rubyHeredocStart matchgroup=rubyHeredocDelimiter start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"']\)\s\|\w\)\@<!<<[-~]\=\zs`\%([^`]*\)`+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
+
+SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"']\)\s\|\w\)\@<!<<\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyHeredocDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
+SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"']\)\s\|\w\)\@<!<<"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyHeredocDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
+SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"']\)\s\|\w\)\@<!<<'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyHeredocDelimiter end=+^\z1$+ contains=rubyHeredocStart keepend
+SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"']\)\s\|\w\)\@<!<<`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyHeredocDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
+
+SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})]\)\s\|\w\)\@<!<<[-~]\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyHeredocDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
+SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})]\)\s\|\w\)\@<!<<[-~]"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyHeredocDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
+SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})]\)\s\|\w\)\@<!<<[-~]'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyHeredocDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart keepend
+SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})]\)\s\|\w\)\@<!<<[-~]`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyHeredocDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
" Module, Class, Method and Alias Declarations {{{1
-syn match rubyAliasDeclaration "[^[:space:];#.()]\+" contained contains=rubySymbol,rubyGlobalVariable,rubyPredefinedVariable nextgroup=rubyAliasDeclaration2 skipwhite
-syn match rubyAliasDeclaration2 "[^[:space:];#.()]\+" contained contains=rubySymbol,rubyGlobalVariable,rubyPredefinedVariable
-syn match rubyMethodDeclaration "[^[:space:];#(]\+" contained contains=rubyConstant,rubyBoolean,rubyPseudoVariable,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable
-syn match rubyClassDeclaration "[^[:space:];#<]\+" contained contains=rubyClassName,rubyOperator
-syn match rubyModuleDeclaration "[^[:space:];#<]\+" contained contains=rubyModuleName,rubyOperator
-syn match rubyFunction "\<[_[:alpha:]][_[:alnum:]]*[?!=]\=[[:alnum:]_.:?!=]\@!" contained containedin=rubyMethodDeclaration
-syn match rubyFunction "\%(\s\|^\)\@1<=[_[:alpha:]][_[:alnum:]]*[?!=]\=\%(\s\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2
-syn match rubyFunction "\%([[:space:].]\|^\)\@2<=\%(\[\]=\=\|\*\*\|[-+!~]@\=\|[*/%|&^~]\|<<\|>>\|[<>]=\=\|<=>\|===\|[=!]=\|[=!]\~\|!\|`\)\%([[:space:];#(]\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration
+syn match rubyAliasDeclaration "[^[:space:];#.()]\+" contained contains=rubySymbol,@rubyGlobalVariable nextgroup=rubyAliasDeclaration2 skipwhite
+syn match rubyAliasDeclaration2 "[^[:space:];#.()]\+" contained contains=rubySymbol,@rubyGlobalVariable
+syn match rubyMethodDeclaration "[^[:space:];#(]\+" contained contains=rubyConstant,rubyBoolean,rubyPseudoVariable,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable
+syn match rubyClassDeclaration "[^[:space:];#<]\+" contained contains=rubyClassName,rubyOperator
+syn match rubyModuleDeclaration "[^[:space:];#<]\+" contained contains=rubyModuleName,rubyOperator
+
+syn match rubyMethodName "\<[_[:alpha:]][_[:alnum:]]*[?!=]\=[[:alnum:]_.:?!=]\@!" contained containedin=rubyMethodDeclaration
+syn match rubyMethodName "\%(\s\|^\)\@1<=[_[:alpha:]][_[:alnum:]]*[?!=]\=\%(\s\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2
+syn match rubyMethodName "\%([[:space:].]\|^\)\@1<=\%(\[\]=\=\|\*\*\|[-+!~]@\=\|[*/%|&^~]\|<<\|>>\|[<>]=\=\|<=>\|===\|[=!]=\|[=!]\~\|!\|`\)\%([[:space:];#(]\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration
-syn cluster rubyDeclaration contains=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration,rubyModuleDeclaration,rubyClassDeclaration,rubyFunction,rubyBlockParameter
+syn cluster rubyDeclaration contains=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration,rubyModuleDeclaration,rubyClassDeclaration,rubyMethodName,rubyBlockParameter
" Keywords {{{1
" Note: the following keywords have already been defined:
" begin case class def do end for if module unless until while
-syn match rubyControl "\<\%(and\|break\|in\|next\|not\|or\|redo\|rescue\|retry\|return\)\>[?!]\@!"
-syn match rubyOperator "\<defined?" display
-syn match rubyKeyword "\<\%(super\|yield\)\>[?!]\@!"
-syn match rubyBoolean "\<\%(true\|false\)\>[?!]\@!"
-syn match rubyPseudoVariable "\<\%(nil\|self\|__ENCODING__\|__dir__\|__FILE__\|__LINE__\|__callee__\|__method__\)\>[?!]\@!" " TODO: reorganise
-syn match rubyBeginEnd "\<\%(BEGIN\|END\)\>[?!]\@!"
+syn match rubyControl "\<\%(and\|break\|in\|next\|not\|or\|redo\|retry\|return\)\>[?!]\@!"
+syn match rubyOperator "\<defined?" display
+syn match rubyKeyword "\<\%(super\|yield\)\>[?!]\@!"
+syn match rubyBoolean "\<\%(true\|false\)\>[?!]\@!"
+syn match rubyPseudoVariable "\<\%(nil\|self\|__ENCODING__\|__dir__\|__FILE__\|__LINE__\|__callee__\|__method__\)\>[?!]\@!" " TODO: reorganise
+syn match rubyBeginEnd "\<\%(BEGIN\|END\)\>[?!]\@!"
" Expensive Mode {{{1
" Match 'end' with the appropriate opening keyword for syntax based folding
" and special highlighting of module/class/method definitions
if !exists("b:ruby_no_expensive") && !exists("ruby_no_expensive")
- syn match rubyDefine "\<alias\>" nextgroup=rubyAliasDeclaration skipwhite skipnl
- syn match rubyDefine "\<def\>" nextgroup=rubyMethodDeclaration skipwhite skipnl
- syn match rubyDefine "\<undef\>" nextgroup=rubyFunction skipwhite skipnl
- syn match rubyClass "\<class\>" nextgroup=rubyClassDeclaration skipwhite skipnl
- syn match rubyModule "\<module\>" nextgroup=rubyModuleDeclaration skipwhite skipnl
-
- if s:foldable('def')
- syn region rubyMethodBlock start="\<def\>" matchgroup=rubyDefine end="\%(\<def\_s\+\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop fold
- else
- syn region rubyMethodBlock start="\<def\>" matchgroup=rubyDefine end="\%(\<def\_s\+\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop
- endif
+ syn match rubyDefine "\<alias\>" nextgroup=rubyAliasDeclaration skipwhite skipnl
+ syn match rubyDefine "\<def\>" nextgroup=rubyMethodDeclaration skipwhite skipnl
+ syn match rubyDefine "\<undef\>" nextgroup=rubyMethodName skipwhite skipnl
+ syn match rubyClass "\<class\>" nextgroup=rubyClassDeclaration skipwhite skipnl
+ syn match rubyModule "\<module\>" nextgroup=rubyModuleDeclaration skipwhite skipnl
- if s:foldable('class')
- syn region rubyBlock start="\<class\>" matchgroup=rubyClass end="\<end\>" contains=ALLBUT,@rubyNotTop fold
- else
- syn region rubyBlock start="\<class\>" matchgroup=rubyClass end="\<end\>" contains=ALLBUT,@rubyNotTop
- endif
-
- if s:foldable('module')
- syn region rubyBlock start="\<module\>" matchgroup=rubyModule end="\<end\>" contains=ALLBUT,@rubyNotTop fold
- else
- syn region rubyBlock start="\<module\>" matchgroup=rubyModule end="\<end\>" contains=ALLBUT,@rubyNotTop
- endif
+ SynFold 'def' syn region rubyMethodBlock start="\<def\>" matchgroup=rubyDefine end="\%(\<def\_s\+\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop
+ SynFold 'class' syn region rubyClassBlock start="\<class\>" matchgroup=rubyClass end="\<end\>" contains=ALLBUT,@rubyNotTop
+ SynFold 'module' syn region rubyModuleBlock start="\<module\>" matchgroup=rubyModule end="\<end\>" contains=ALLBUT,@rubyNotTop
" modifiers
- syn match rubyLineContinuation "\\$" nextgroup=rubyConditionalModifier,rubyRepeatModifier skipwhite skipnl
+ syn match rubyLineContinuation "\\$" nextgroup=@rubyModifier skipwhite skipnl
syn match rubyConditionalModifier "\<\%(if\|unless\)\>"
syn match rubyRepeatModifier "\<\%(while\|until\)\>"
+ syn match rubyRescueModifier "\<rescue\>"
- if s:foldable('do')
- syn region rubyDoBlock matchgroup=rubyControl start="\<do\>" end="\<end\>" contains=ALLBUT,@rubyNotTop fold
- else
- syn region rubyDoBlock matchgroup=rubyControl start="\<do\>" end="\<end\>" contains=ALLBUT,@rubyNotTop
- endif
+ syn cluster rubyModifier contains=rubyConditionalModifier,rubyRepeatModifier,rubyRescueModifier
- " curly bracket block or hash literal
- if s:foldable('{')
- syn region rubyCurlyBlock matchgroup=rubyCurlyBlockDelimiter start="{" end="}" contains=ALLBUT,@rubyNotTop fold
- else
- syn region rubyCurlyBlock matchgroup=rubyCurlyBlockDelimiter start="{" end="}" contains=ALLBUT,@rubyNotTop
- endif
+ SynFold 'do' syn region rubyDoBlock matchgroup=rubyControl start="\<do\>" end="\<end\>" contains=ALLBUT,@rubyNotTop
- if s:foldable('[')
- syn region rubyArrayLiteral matchgroup=rubyArrayDelimiter start="\%(\w\|[\]})]\)\@<!\[" end="]" contains=ALLBUT,@rubyNotTop fold
- endif
+ " curly bracket block or hash literal
+ SynFold '{' syn region rubyCurlyBlock matchgroup=rubyCurlyBlockDelimiter start="{" end="}" contains=ALLBUT,@rubyNotTop
+ SynFold '[' syn region rubyArrayLiteral matchgroup=rubyArrayDelimiter start="\%(\w\|[\]})]\)\@<!\[" end="]" contains=ALLBUT,@rubyNotTop
" statements without 'do'
- if s:foldable('begin')
- syn region rubyBlockExpression matchgroup=rubyControl start="\<begin\>" end="\<end\>" contains=ALLBUT,@rubyNotTop fold
- else
- syn region rubyBlockExpression matchgroup=rubyControl start="\<begin\>" end="\<end\>" contains=ALLBUT,@rubyNotTop
- endif
+ SynFold 'begin' syn region rubyBlockExpression matchgroup=rubyControl start="\<begin\>" end="\<end\>" contains=ALLBUT,@rubyNotTop
+ SynFold 'case' syn region rubyCaseExpression matchgroup=rubyConditional start="\<case\>" end="\<end\>" contains=ALLBUT,@rubyNotTop
- if s:foldable('case')
- syn region rubyCaseExpression matchgroup=rubyConditional start="\<case\>" end="\<end\>" contains=ALLBUT,@rubyNotTop fold
- else
- syn region rubyCaseExpression matchgroup=rubyConditional start="\<case\>" end="\<end\>" contains=ALLBUT,@rubyNotTop
- endif
-
- if s:foldable('if')
- syn region rubyConditionalExpression matchgroup=rubyConditional start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*%&^|+=-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![?!]\)\s*\)\@<=\%(if\|unless\)\>" end="\%(\%(\%(\.\@1<!\.\)\|::\)\s*\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop fold
- else
- syn region rubyConditionalExpression matchgroup=rubyConditional start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*%&^|+=-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![?!]\)\s*\)\@<=\%(if\|unless\)\>" end="\%(\%(\%(\.\@1<!\.\)\|::\)\s*\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop
- endif
+ SynFold 'if' syn region rubyConditionalExpression matchgroup=rubyConditional start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+=-]\|\<then\s\|\%(\<\h\w*\)\@<![?!]\)\s*\)\@<=\%(if\|unless\)\>" end="\%(\%(\%(\.\@1<!\.\)\|::\)\s*\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop
syn match rubyConditional "\<\%(then\|else\|when\)\>[?!]\@!" contained containedin=rubyCaseExpression
syn match rubyConditional "\<\%(then\|else\|elsif\)\>[?!]\@!" contained containedin=rubyConditionalExpression
- syn match rubyExceptional "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=rubyBlockExpression
- syn match rubyMethodExceptional "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=rubyMethodBlock
+ syn match rubyExceptionHandler "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=rubyBlockExpression,rubyDoBlock
+ syn match rubyExceptionHandler1 "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=rubyModuleBlock,rubyClassBlock,rubyMethodBlock
+ syn cluster rubyExceptionHandler contains=rubyExceptionHandler,rubyExceptionHandler1
" statements with optional 'do'
- syn region rubyOptionalDoLine matchgroup=rubyRepeat start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyOptionalDo end="\%(\<do\>\)" end="\ze\%(;\|$\)" oneline contains=ALLBUT,@rubyNotTop
+ syn region rubyOptionalDoLine matchgroup=rubyRepeat start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+=-]\|\%(\<\h\w*\)\@<![!?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyOptionalDo end="\<do\>" end="\ze\%(;\|$\)" oneline contains=ALLBUT,@rubyNotTop
- if s:foldable('for')
- syn region rubyRepeatExpression start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyRepeat end="\<end\>" contains=ALLBUT,@rubyNotTop nextgroup=rubyOptionalDoLine fold
- else
- syn region rubyRepeatExpression start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyRepeat end="\<end\>" contains=ALLBUT,@rubyNotTop nextgroup=rubyOptionalDoLine
- endif
+ SynFold 'for' syn region rubyRepeatExpression start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+=-]\|\%(\<\h\w*\)\@<![!?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyRepeat end="\<end\>" contains=ALLBUT,@rubyNotTop nextgroup=rubyOptionalDoLine
if !exists("ruby_minlines")
let ruby_minlines = 500
endif
- exec "syn sync minlines=" . ruby_minlines
+ exe "syn sync minlines=" . ruby_minlines
else
syn match rubyControl "\<def\>[?!]\@!" nextgroup=rubyMethodDeclaration skipwhite skipnl
syn match rubyControl "\<class\>[?!]\@!" nextgroup=rubyClassDeclaration skipwhite skipnl
syn match rubyControl "\<module\>[?!]\@!" nextgroup=rubyModuleDeclaration skipwhite skipnl
- syn match rubyControl "\<\%(case\|begin\|do\|for\|if\|unless\|while\|until\|else\|elsif\|ensure\|then\|when\|end\)\>[?!]\@!"
+ syn match rubyControl "\<\%(case\|begin\|do\|for\|if\|unless\|while\|until\|else\|elsif\|rescue\|ensure\|then\|when\|end\)\>[?!]\@!"
syn match rubyKeyword "\<\%(alias\|undef\)\>[?!]\@!"
endif
@@ -449,53 +412,62 @@ if !exists("ruby_no_special_methods")
endif
" Comments and Documentation {{{1
-syn match rubySharpBang "\%^#!.*" display
-syn keyword rubyTodo FIXME NOTE TODO OPTIMIZE HACK REVIEW XXX todo contained
-syn match rubyComment "#.*" contains=rubySharpBang,rubySpaceError,rubyTodo,@Spell
+syn match rubySharpBang "\%^#!.*" display
+syn keyword rubyTodo FIXME NOTE TODO OPTIMIZE HACK REVIEW XXX todo contained
+syn match rubyEncoding "[[:alnum:]-]\+" contained display
+syn match rubyMagicComment "\c\%<3l#\s*\zs\%(coding\|encoding\):" contained nextgroup=rubyEncoding skipwhite
+syn match rubyMagicComment "\c\%<10l#\s*\zs\%(frozen_string_literal\|warn_indent\|warn_past_scope\):" contained nextgroup=rubyBoolean skipwhite
+syn match rubyComment "#.*" contains=@rubyCommentSpecial,rubySpaceError,@Spell
+
+syn cluster rubyCommentSpecial contains=rubySharpBang,rubyTodo,rubyMagicComment
+syn cluster rubyCommentNotTop contains=@rubyCommentSpecial,rubyEncoding
+
if !exists("ruby_no_comment_fold") && s:foldable('#')
syn region rubyMultilineComment start="^\s*#.*\n\%(^\s*#\)\@=" end="^\s*#.*\n\%(^\s*#\)\@!" contains=rubyComment transparent fold keepend
- syn region rubyDocumentation start="^=begin\ze\%(\s.*\)\=$" end="^=end\%(\s.*\)\=$" contains=rubySpaceError,rubyTodo,@Spell fold
+ syn region rubyDocumentation start="^=begin\ze\%(\s.*\)\=$" end="^=end\%(\s.*\)\=$" contains=rubySpaceError,rubyTodo,@Spell fold
else
- syn region rubyDocumentation start="^=begin\s*$" end="^=end\s*$" contains=rubySpaceError,rubyTodo,@Spell
+ syn region rubyDocumentation start="^=begin\s*$" end="^=end\s*$" contains=rubySpaceError,rubyTodo,@Spell
endif
+" {{{1 Useless line continuations
+syn match rubyUselessLineContinuation "\%([.:,;{([<>~\*%&^|+=-]\|\w\@1<![?!]\)\s*\zs\\$" nextgroup=rubyUselessLineContinuation skipwhite skipempty
+syn match rubyUselessLineContinuation "\\$" nextgroup=rubyUselessLineContinuation skipwhite skipempty contained
+
" Keyword Nobbling {{{1
" Note: this is a hack to prevent 'keywords' being highlighted as such when called as methods with an explicit receiver
syn match rubyKeywordAsMethod "\%(\%(\.\@1<!\.\)\|::\)\_s*\%([_[:lower:]][_[:alnum:]]*\|\<\%(BEGIN\|END\)\>\)" transparent contains=NONE
syn match rubyKeywordAsMethod "\(defined?\|exit!\)\@!\<[_[:lower:]][_[:alnum:]]*[?!]" transparent contains=NONE
" More Symbols {{{1
-syn match rubySymbol "\%([{(,]\_s*\)\zs\l\w*[!?]\=::\@!"he=e-1
-syn match rubySymbol "[]})\"':]\@1<!\<\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],]\@="he=e-1
-syn match rubySymbol "\%([{(,]\_s*\)\zs[[:space:],{]\l\w*[!?]\=::\@!"hs=s+1,he=e-1
-syn match rubySymbol "[[:space:],{(]\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],]\@="hs=s+1,he=e-1
+syn match rubySymbol "\%([{(,]\_s*\)\@<=\l\w*[!?]\=::\@!"he=e-1
+syn match rubySymbol "[]})\"':]\@1<!\<\%(\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]\)*[!?]\=:[[:space:],]\@="hs=s+1,he=e-1
" __END__ Directive {{{1
-if s:foldable('__END__')
- syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$" fold
-else
- syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$"
-endif
+SynFold '__END__' syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$"
" Default Highlighting {{{1
hi def link rubyClass rubyDefine
hi def link rubyModule rubyDefine
-hi def link rubyMethodExceptional rubyDefine
+hi def link rubyExceptionHandler1 rubyDefine
hi def link rubyDefine Define
hi def link rubyAccess rubyMacro
hi def link rubyAttribute rubyMacro
hi def link rubyMacro Macro
+hi def link rubyMethodName rubyFunction
hi def link rubyFunction Function
hi def link rubyConditional Conditional
hi def link rubyConditionalModifier rubyConditional
-hi def link rubyExceptional rubyConditional
+hi def link rubyExceptionHandler rubyConditional
+hi def link rubyRescueModifier rubyExceptionHandler
hi def link rubyRepeat Repeat
hi def link rubyRepeatModifier rubyRepeat
hi def link rubyOptionalDo rubyRepeat
hi def link rubyControl Statement
hi def link rubyInclude Include
hi def link rubyInteger Number
-hi def link rubyASCIICode Character
+hi def link rubyCharacter Character
hi def link rubyFloat Float
hi def link rubyBoolean Boolean
hi def link rubyException Exception
@@ -515,39 +487,66 @@ hi def link rubyPredefinedConstant rubyPredefinedIdentifier
hi def link rubyPredefinedVariable rubyPredefinedIdentifier
hi def link rubySymbol Constant
hi def link rubyKeyword Keyword
+
hi def link rubyOperator Operator
+hi def link rubyDotOperator Operator
+hi def link rubyTernaryOperator Operator
+hi def link rubyArithmeticOperator Operator
+hi def link rubyComparisonOperator Operator
+hi def link rubyBitwiseOperator Operator
+hi def link rubyBooleanOperator Operator
+hi def link rubyRangeOperator Operator
+hi def link rubyAssignmentOperator Operator
+hi def link rubyEqualityOperator Operator
+hi def link rubyScopeOperator Operator
+
hi def link rubyBeginEnd Statement
hi def link rubyEval Statement
hi def link rubyPseudoVariable Constant
hi def link rubyCapitalizedMethod rubyLocalVariableOrMethod
hi def link rubyComment Comment
+hi def link rubyEncoding Constant
+hi def link rubyMagicComment SpecialComment
hi def link rubyData Comment
hi def link rubyDataDirective Delimiter
hi def link rubyDocumentation Comment
hi def link rubyTodo Todo
+hi def link rubyBackslashEscape rubyStringEscape
hi def link rubyQuoteEscape rubyStringEscape
+hi def link rubySpaceEscape rubyStringEscape
+hi def link rubyParenthesesEscape rubyStringEscape
+hi def link rubyCurlyBracesEscape rubyStringEscape
+hi def link rubyAngleBracketsEscape rubyStringEscape
+hi def link rubySquareBracketsEscape rubyStringEscape
hi def link rubyStringEscape Special
+
hi def link rubyInterpolationDelimiter Delimiter
-hi def link rubyNoInterpolation rubyString
hi def link rubySharpBang PreProc
+hi def link rubyStringDelimiter Delimiter
+hi def link rubyHeredocDelimiter rubyStringDelimiter
+hi def link rubyPercentRegexpDelimiter rubyRegexpDelimiter
+hi def link rubyPercentStringDelimiter rubyStringDelimiter
+hi def link rubyPercentSymbolDelimiter rubySymbolDelimiter
hi def link rubyRegexpDelimiter rubyStringDelimiter
hi def link rubySymbolDelimiter rubySymbol
-hi def link rubyStringDelimiter Delimiter
-hi def link rubyHeredoc rubyString
hi def link rubyString String
hi def link rubyRegexpEscape rubyRegexpSpecial
hi def link rubyRegexpQuantifier rubyRegexpSpecial
hi def link rubyRegexpAnchor rubyRegexpSpecial
hi def link rubyRegexpDot rubyRegexpCharClass
hi def link rubyRegexpCharClass rubyRegexpSpecial
+hi def link rubyRegexpIntersection rubyRegexpSpecial
hi def link rubyRegexpSpecial Special
hi def link rubyRegexpComment Comment
hi def link rubyRegexp rubyString
-hi def link rubyInvalidVariable Error
hi def link rubyError Error
+if exists("ruby_line_continuation_error")
+ hi def link rubyUselessLineContinuation rubyError
+endif
+hi def link rubyGlobalVariableError rubyError
hi def link rubySpaceError rubyError
" Postscript {{{1
@@ -556,6 +555,8 @@ let b:current_syntax = "ruby"
let &cpo = s:cpo_sav
unlet! s:cpo_sav
+delc SynFold
+
" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker:
endif
diff --git a/syntax/rust.vim b/syntax/rust.vim
index 3dc5fefa..6803eb01 100644
--- a/syntax/rust.vim
+++ b/syntax/rust.vim
@@ -244,8 +244,8 @@ if !exists("b:current_syntax_embed")
" possible to trick it if you try hard, and indented code blocks aren’t
" supported because Markdown is a menace to parse and only mad dogs and
" Englishmen would try to handle that case correctly in this syntax file).
- syn region rustCommentLinesDocRustCode matchgroup=rustCommentDocCodeFence start='^\z(\s*//[!/]\s*```\)[^A-Za-z0-9_-]*\%(\%(should_panic\|no_run\|ignore\|allow_fail\|rust\|test_harness\|compile_fail\|E\d\{4}\)\%([^A-Za-z0-9_-]\+\|$\)\)*$' end='^\z1$' keepend contains=@RustCodeInComment,rustCommentLineDocLeader
- syn region rustCommentBlockDocRustCode matchgroup=rustCommentDocCodeFence start='^\z(\%(\s*\*\)\?\s*```\)[^A-Za-z0-9_-]*\%(\%(should_panic\|no_run\|ignore\|allow_fail\|rust\|test_harness\|compile_fail\|E\d\{4}\)\%([^A-Za-z0-9_-]\+\|$\)\)*$' end='^\z1$' keepend contains=@RustCodeInComment,rustCommentBlockDocStar
+ syn region rustCommentLinesDocRustCode matchgroup=rustCommentDocCodeFence start='^\z(\s*//[!/]\s*```\)[^A-Za-z0-9_-]*\%(\%(should_panic\|no_run\|ignore\|allow_fail\|rust\|test_harness\|compile_fail\|E\d\{4}\|edition201[58]\)\%([^A-Za-z0-9_-]\+\|$\)\)*$' end='^\z1$' keepend contains=@RustCodeInComment,rustCommentLineDocLeader
+ syn region rustCommentBlockDocRustCode matchgroup=rustCommentDocCodeFence start='^\z(\%(\s*\*\)\?\s*```\)[^A-Za-z0-9_-]*\%(\%(should_panic\|no_run\|ignore\|allow_fail\|rust\|test_harness\|compile_fail\|E\d\{4}\|edition201[58]\)\%([^A-Za-z0-9_-]\+\|$\)\)*$' end='^\z1$' keepend contains=@RustCodeInComment,rustCommentBlockDocStar
" Strictly, this may or may not be correct; this code, for example, would
" mishighlight:
"
diff --git a/syntax/terraform.vim b/syntax/terraform.vim
index a0557515..d9e59025 100644
--- a/syntax/terraform.vim
+++ b/syntax/terraform.vim
@@ -35,6 +35,7 @@ syn keyword terraDataTypeBI
\ alicloud_dns_groups
\ alicloud_dns_records
\ alicloud_eips
+ \ alicloud_elasticsearch_instances
\ alicloud_fc_functions
\ alicloud_fc_services
\ alicloud_fc_triggers
@@ -90,6 +91,7 @@ syn keyword terraDataTypeBI
\ aws_api_gateway_resource
\ aws_api_gateway_rest_api
\ aws_api_gateway_vpc_link
+ \ aws_appsync_datasource
\ aws_arn
\ aws_autoscaling_group
\ aws_autoscaling_groups
@@ -107,6 +109,7 @@ syn keyword terraDataTypeBI
\ aws_cloudwatch_log_group
\ aws_codecommit_repository
\ aws_cognito_user_pools
+ \ aws_cur_report_definition
\ aws_db_cluster_snapshot
\ aws_db_event_categories
\ aws_db_instance
@@ -128,6 +131,8 @@ syn keyword terraDataTypeBI
\ aws_efs_mount_target
\ aws_eip
\ aws_eks_cluster
+ \ aws_eks_cluster_auth
+ \ aws_elastic_beanstalk_application
\ aws_elastic_beanstalk_hosted_zone
\ aws_elastic_beanstalk_solution_stack
\ aws_elasticache_cluster
@@ -201,13 +206,20 @@ syn keyword terraDataTypeBI
\ aws_vpcs
\ aws_vpn_gateway
\ aws_workspaces_bundle
+ \ azuread_user
\ azurerm_api_management
+ \ azurerm_api_management_group
+ \ azurerm_api_management_product
+ \ azurerm_api_management_user
\ azurerm_app_service
\ azurerm_app_service_plan
+ \ azurerm_application_insights
\ azurerm_application_security_group
+ \ azurerm_availability_set
\ azurerm_azuread_application
\ azurerm_azuread_service_principal
\ azurerm_batch_account
+ \ azurerm_batch_pool
\ azurerm_builtin_role_definition
\ azurerm_cdn_profile
\ azurerm_client_config
@@ -223,6 +235,8 @@ syn keyword terraDataTypeBI
\ azurerm_key_vault_key
\ azurerm_key_vault_secret
\ azurerm_kubernetes_cluster
+ \ azurerm_lb
+ \ azurerm_lb_backend_address_pool
\ azurerm_log_analytics_workspace
\ azurerm_logic_app_workflow
\ azurerm_managed_disk
@@ -232,16 +246,20 @@ syn keyword terraDataTypeBI
\ azurerm_monitor_log_profile
\ azurerm_network_interface
\ azurerm_network_security_group
+ \ azurerm_network_watcher
\ azurerm_notification_hub
\ azurerm_notification_hub_namespace
\ azurerm_platform_image
+ \ azurerm_policy_definition
\ azurerm_public_ip
\ azurerm_public_ips
+ \ azurerm_recovery_services_protection_policy_vm
\ azurerm_recovery_services_vault
\ azurerm_resource_group
\ azurerm_role_definition
\ azurerm_route_table
\ azurerm_scheduler_job_collection
+ \ azurerm_servicebus_namespace
\ azurerm_shared_image
\ azurerm_shared_image_gallery
\ azurerm_shared_image_version
@@ -271,9 +289,11 @@ syn keyword terraDataTypeBI
\ circonus_account
\ circonus_collector
\ cloudflare_ip_ranges
+ \ cloudflare_zones
\ cloudstack_template
\ consul_agent_config
\ consul_agent_self
+ \ consul_autopilot_health
\ consul_catalog_nodes
\ consul_catalog_service
\ consul_catalog_services
@@ -298,6 +318,7 @@ syn keyword terraDataTypeBI
\ dns_a_record_set
\ dns_aaaa_record_set
\ dns_cname_record_set
+ \ dns_mx_record_set
\ dns_ns_record_set
\ dns_ptr_record_set
\ dns_txt_record_set
@@ -305,6 +326,8 @@ syn keyword terraDataTypeBI
\ external
\ fastly_ip_ranges
\ filter
+ \ flexibleengine_cce_cluster_v3
+ \ flexibleengine_cce_node_v3
\ flexibleengine_compute_bms_flavors_v2
\ flexibleengine_compute_bms_keypairs_v2
\ flexibleengine_compute_bms_nic_v2
@@ -339,9 +362,11 @@ syn keyword terraDataTypeBI
\ github_user
\ gitlab_project
\ gitlab_user
+ \ gitlab_users
\ google_active_folder
\ google_billing_account
\ google_client_config
+ \ google_client_openid_userinfo
\ google_cloudfunctions_function
\ google_compute_address
\ google_compute_backend_service
@@ -367,6 +392,8 @@ syn keyword terraDataTypeBI
\ google_folder
\ google_iam_policy
\ google_iam_role
+ \ google_kms_crypto_key
+ \ google_kms_key_ring
\ google_kms_secret
\ google_netblock_ip_ranges
\ google_organization
@@ -378,12 +405,14 @@ syn keyword terraDataTypeBI
\ google_storage_object_signed_url
\ google_storage_project_service_account
\ google_storage_transfer_project_service_account
+ \ grafana_data_source
\ hcloud_datacenter
\ hcloud_datacenters
\ hcloud_floating_ip
\ hcloud_image
\ hcloud_location
\ hcloud_locations
+ \ hcloud_server
\ hcloud_ssh_key
\ hcloud_volume
\ heroku_addon
@@ -397,10 +426,14 @@ syn keyword terraDataTypeBI
\ huaweicloud_csbs_backup_policy_v1
\ huaweicloud_csbs_backup_v1
\ huaweicloud_cts_tracker_v1
+ \ huaweicloud_dcs_az_v1
+ \ huaweicloud_dcs_maintainwindow_v1
+ \ huaweicloud_dcs_product_v1
\ huaweicloud_dms_az_v1
\ huaweicloud_dms_maintainwindow_v1
\ huaweicloud_dms_product_v1
\ huaweicloud_iam_role_v3
+ \ huaweicloud_identity_role_v3
\ huaweicloud_images_image_v2
\ huaweicloud_kms_data_key_v1
\ huaweicloud_kms_key_v1
@@ -425,6 +458,7 @@ syn keyword terraDataTypeBI
\ kubernetes_service
\ kubernetes_storage_class
\ linode_account
+ \ linode_domain
\ linode_image
\ linode_instance_type
\ linode_profile
@@ -436,6 +470,7 @@ syn keyword terraDataTypeBI
\ logicmonitor_collectors
\ logicmonitor_device_group
\ newrelic_alert_channel
+ \ newrelic_alert_policy
\ newrelic_application
\ newrelic_key_transaction
\ newrelic_synthetics_monitor
@@ -444,6 +479,7 @@ syn keyword terraDataTypeBI
\ nomad_namespaces
\ nomad_regions
\ ns1_datasource
+ \ ns1_zone
\ nsxt_certificate
\ nsxt_edge_cluster
\ nsxt_logical_tier0_router
@@ -462,6 +498,195 @@ syn keyword terraDataTypeBI
\ nutanix_virtual_machine
\ nutanix_volume_group
\ nutanix_volume_groups
+ \ oci_audit_configuration
+ \ oci_audit_events
+ \ oci_containerengine_cluster_kube_config
+ \ oci_containerengine_cluster_option
+ \ oci_containerengine_clusters
+ \ oci_containerengine_node_pool
+ \ oci_containerengine_node_pool_option
+ \ oci_containerengine_node_pools
+ \ oci_containerengine_work_request_errors
+ \ oci_containerengine_work_request_log_entries
+ \ oci_containerengine_work_requests
+ \ oci_core_app_catalog_listing
+ \ oci_core_app_catalog_listing_resource_version
+ \ oci_core_app_catalog_listing_resource_versions
+ \ oci_core_app_catalog_listings
+ \ oci_core_app_catalog_subscriptions
+ \ oci_core_boot_volume
+ \ oci_core_boot_volume_attachments
+ \ oci_core_boot_volume_backup
+ \ oci_core_boot_volume_backups
+ \ oci_core_boot_volumes
+ \ oci_core_console_histories
+ \ oci_core_console_history_data
+ \ oci_core_cpes
+ \ oci_core_cross_connect
+ \ oci_core_cross_connect_group
+ \ oci_core_cross_connect_groups
+ \ oci_core_cross_connect_locations
+ \ oci_core_cross_connect_port_speed_shapes
+ \ oci_core_cross_connect_status
+ \ oci_core_cross_connects
+ \ oci_core_dhcp_options
+ \ oci_core_drg_attachments
+ \ oci_core_drgs
+ \ oci_core_fast_connect_provider_service
+ \ oci_core_fast_connect_provider_services
+ \ oci_core_images
+ \ oci_core_instance
+ \ oci_core_instance_configuration
+ \ oci_core_instance_configurations
+ \ oci_core_instance_console_connections
+ \ oci_core_instance_credentials
+ \ oci_core_instance_devices
+ \ oci_core_instance_pool
+ \ oci_core_instance_pool_instances
+ \ oci_core_instance_pools
+ \ oci_core_instances
+ \ oci_core_internet_gateways
+ \ oci_core_ipsec_config
+ \ oci_core_ipsec_connections
+ \ oci_core_ipsec_status
+ \ oci_core_letter_of_authority
+ \ oci_core_listing_resource_version
+ \ oci_core_listing_resource_versions
+ \ oci_core_local_peering_gateways
+ \ oci_core_nat_gateway
+ \ oci_core_nat_gateways
+ \ oci_core_peer_region_for_remote_peerings
+ \ oci_core_private_ips
+ \ oci_core_public_ip
+ \ oci_core_public_ips
+ \ oci_core_remote_peering_connections
+ \ oci_core_route_tables
+ \ oci_core_security_lists
+ \ oci_core_service_gateways
+ \ oci_core_services
+ \ oci_core_shape
+ \ oci_core_shapes
+ \ oci_core_subnet
+ \ oci_core_subnets
+ \ oci_core_vcns
+ \ oci_core_virtual_circuit
+ \ oci_core_virtual_circuit_bandwidth_shapes
+ \ oci_core_virtual_circuit_public_prefixes
+ \ oci_core_virtual_circuits
+ \ oci_core_vnic
+ \ oci_core_vnic_attachments
+ \ oci_core_volume
+ \ oci_core_volume_attachments
+ \ oci_core_volume_backup_policies
+ \ oci_core_volume_backup_policy_assignments
+ \ oci_core_volume_backups
+ \ oci_core_volume_group_backups
+ \ oci_core_volume_groups
+ \ oci_core_volumes
+ \ oci_database_autonomous_data_warehouse
+ \ oci_database_autonomous_data_warehouse_backup
+ \ oci_database_autonomous_data_warehouse_backups
+ \ oci_database_autonomous_data_warehouse_wallet
+ \ oci_database_autonomous_data_warehouses
+ \ oci_database_autonomous_database
+ \ oci_database_autonomous_database_backup
+ \ oci_database_autonomous_database_backups
+ \ oci_database_autonomous_database_wallet
+ \ oci_database_autonomous_databases
+ \ oci_database_backups
+ \ oci_database_database
+ \ oci_database_databases
+ \ oci_database_db_home
+ \ oci_database_db_home_patch_history_entries
+ \ oci_database_db_home_patches
+ \ oci_database_db_homes
+ \ oci_database_db_node
+ \ oci_database_db_nodes
+ \ oci_database_db_system_patch_history_entries
+ \ oci_database_db_system_patches
+ \ oci_database_db_system_shapes
+ \ oci_database_db_systems
+ \ oci_database_db_versions
+ \ oci_dns_records
+ \ oci_dns_steering_policies
+ \ oci_dns_steering_policy
+ \ oci_dns_steering_policy_attachment
+ \ oci_dns_steering_policy_attachments
+ \ oci_dns_zones
+ \ oci_email_sender
+ \ oci_email_senders
+ \ oci_email_suppression
+ \ oci_email_suppressions
+ \ oci_file_storage_export_sets
+ \ oci_file_storage_exports
+ \ oci_file_storage_file_systems
+ \ oci_file_storage_mount_targets
+ \ oci_file_storage_snapshots
+ \ oci_health_checks_http_monitor
+ \ oci_health_checks_http_monitors
+ \ oci_health_checks_http_probe_results
+ \ oci_health_checks_ping_monitor
+ \ oci_health_checks_ping_monitors
+ \ oci_health_checks_ping_probe_results
+ \ oci_health_checks_vantage_points
+ \ oci_identity_api_keys
+ \ oci_identity_auth_tokens
+ \ oci_identity_availability_domains
+ \ oci_identity_compartment
+ \ oci_identity_compartments
+ \ oci_identity_customer_secret_keys
+ \ oci_identity_dynamic_groups
+ \ oci_identity_fault_domains
+ \ oci_identity_groups
+ \ oci_identity_identity_provider_groups
+ \ oci_identity_identity_providers
+ \ oci_identity_idp_group_mappings
+ \ oci_identity_policies
+ \ oci_identity_region_subscriptions
+ \ oci_identity_regions
+ \ oci_identity_smtp_credentials
+ \ oci_identity_swift_passwords
+ \ oci_identity_tag_namespaces
+ \ oci_identity_tags
+ \ oci_identity_tenancy
+ \ oci_identity_user_group_memberships
+ \ oci_identity_users
+ \ oci_kms_decrypted_data
+ \ oci_kms_encrypted_data
+ \ oci_kms_key
+ \ oci_kms_key_version
+ \ oci_kms_key_versions
+ \ oci_kms_keys
+ \ oci_kms_vault
+ \ oci_kms_vaults
+ \ oci_load_balancer_backend_health
+ \ oci_load_balancer_backend_set_health
+ \ oci_load_balancer_backend_sets
+ \ oci_load_balancer_backends
+ \ oci_load_balancer_backendsets
+ \ oci_load_balancer_certificates
+ \ oci_load_balancer_health
+ \ oci_load_balancer_hostnames
+ \ oci_load_balancer_load_balancers
+ \ oci_load_balancer_path_route_sets
+ \ oci_load_balancer_policies
+ \ oci_load_balancer_protocols
+ \ oci_load_balancer_rule_set
+ \ oci_load_balancer_rule_sets
+ \ oci_load_balancer_shapes
+ \ oci_load_balancers
+ \ oci_objectstorage_bucket
+ \ oci_objectstorage_bucket_summaries
+ \ oci_objectstorage_namespace
+ \ oci_objectstorage_namespace_metadata
+ \ oci_objectstorage_object
+ \ oci_objectstorage_object_head
+ \ oci_objectstorage_object_lifecycle_policy
+ \ oci_objectstorage_objects
+ \ oci_objectstorage_preauthrequest
+ \ oci_objectstorage_preauthrequests
+ \ oci_streaming_stream
+ \ oci_streaming_streams
\ oneandone_instance_size
\ opc_compute_image_list_entry
\ opc_compute_ip_address_reservation
@@ -471,8 +696,10 @@ syn keyword terraDataTypeBI
\ opc_compute_ssh_key
\ opc_compute_storage_volume_snapshot
\ opc_compute_vnic
+ \ openstack_blockstorage_availability_zones_v3
\ openstack_blockstorage_snapshot_v2
\ openstack_blockstorage_snapshot_v3
+ \ openstack_compute_availability_zones_v2
\ openstack_compute_flavor_v2
\ openstack_compute_keypair_v2
\ openstack_containerinfra_cluster_v1
@@ -488,10 +715,16 @@ syn keyword terraDataTypeBI
\ openstack_images_image_v2
\ openstack_networking_floatingip_v2
\ openstack_networking_network_v2
+ \ openstack_networking_port_ids_v2
+ \ openstack_networking_port_v2
\ openstack_networking_router_v2
\ openstack_networking_secgroup_v2
\ openstack_networking_subnet_v2
\ openstack_networking_subnetpool_v2
+ \ openstack_sharedfilesystem_availability_zones_v2
+ \ openstack_sharedfilesystem_share_v2
+ \ openstack_sharedfilesystem_sharenetwork_v2
+ \ openstack_sharedfilesystem_snapshot_v2
\ opentelekomcloud_antiddos_v1
\ opentelekomcloud_cce_cluster_v3
\ opentelekomcloud_cce_node_v3
@@ -507,6 +740,10 @@ syn keyword terraDataTypeBI
\ opentelekomcloud_dcs_product_v1
\ opentelekomcloud_deh_host_v1
\ opentelekomcloud_deh_server_v1
+ \ opentelekomcloud_identity_group_v3
+ \ opentelekomcloud_identity_project_v3
+ \ opentelekomcloud_identity_role_v3
+ \ opentelekomcloud_identity_user_v3
\ opentelekomcloud_images_image_v2
\ opentelekomcloud_kms_data_key_v1
\ opentelekomcloud_kms_key_v1
@@ -587,6 +824,10 @@ syn keyword terraDataTypeBI
\ skytap_template
\ telefonicaopencloud_csbs_backup_policy_v1
\ telefonicaopencloud_csbs_backup_v1
+ \ telefonicaopencloud_cts_tracker_v1
+ \ telefonicaopencloud_dcs_az_v1
+ \ telefonicaopencloud_dcs_maintainwindow_v1
+ \ telefonicaopencloud_dcs_product_v1
\ telefonicaopencloud_dns_zone_v2
\ telefonicaopencloud_networking_network_v2
\ telefonicaopencloud_networking_secgroup_v2
@@ -597,6 +838,8 @@ syn keyword terraDataTypeBI
\ telefonicaopencloud_rts_stack_v1
\ telefonicaopencloud_s3_bucket_object
\ telefonicaopencloud_sfs_file_system_v2
+ \ telefonicaopencloud_vbs_backup_policy_v2
+ \ telefonicaopencloud_vbs_backup_v2
\ telefonicaopencloud_vpc_subnet_ids_v1
\ telefonicaopencloud_vpc_subnet_v1
\ telefonicaopencloud_vpc_v1
@@ -614,6 +857,11 @@ syn keyword terraDataTypeBI
\ tencentcloud_subnet
\ tencentcloud_vpc
\ terraform_remote_state
+ \ tfe_ssh_key
+ \ tfe_team
+ \ tfe_team_access
+ \ tfe_workspace
+ \ tfe_workspace_ids
\ tls_public_key
\ triton_account
\ triton_datacenter
@@ -626,12 +874,19 @@ syn keyword terraDataTypeBI
\ ucloud_images
\ ucloud_projects
\ ucloud_zones
+ \ vault_approle_auth_backend_role_id
+ \ vault_aws_access_credentials
+ \ vault_generic_secret
+ \ vault_kubernetes_auth_backend_config
+ \ vault_kubernetes_auth_backend_role
+ \ vault_policy_document
\ vsphere_compute_cluster
\ vsphere_custom_attribute
\ vsphere_datacenter
\ vsphere_datastore
\ vsphere_datastore_cluster
\ vsphere_distributed_virtual_switch
+ \ vsphere_folder
\ vsphere_host
\ vsphere_network
\ vsphere_resource_pool
@@ -640,6 +895,18 @@ syn keyword terraDataTypeBI
\ vsphere_vapp_container
\ vsphere_virtual_machine
\ vsphere_vmfs_disks
+ \ yandex_compute_disk
+ \ yandex_compute_image
+ \ yandex_compute_instance
+ \ yandex_compute_snapshot
+ \ yandex_iam_policy
+ \ yandex_iam_role
+ \ yandex_iam_service_account
+ \ yandex_iam_user
+ \ yandex_resourcemanager_cloud
+ \ yandex_resourcemanager_folder
+ \ yandex_vpc_network
+ \ yandex_vpc_subnet
""" end data sources
""" resource
@@ -675,6 +942,8 @@ syn keyword terraResourceTypeBI
\ alicloud_db_connection
\ alicloud_db_database
\ alicloud_db_instance
+ \ alicloud_db_read_write_splitting_connection
+ \ alicloud_db_readonly_instance
\ alicloud_disk
\ alicloud_disk_attachment
\ alicloud_dns
@@ -683,6 +952,7 @@ syn keyword terraResourceTypeBI
\ alicloud_drds_instance
\ alicloud_eip
\ alicloud_eip_association
+ \ alicloud_elasticsearch_instance
\ alicloud_ess_alarm
\ alicloud_ess_attachment
\ alicloud_ess_lifecycle_hook
@@ -706,6 +976,8 @@ syn keyword terraResourceTypeBI
\ alicloud_log_project
\ alicloud_log_store
\ alicloud_log_store_index
+ \ alicloud_logtail_attachment
+ \ alicloud_logtail_config
\ alicloud_mns_queue
\ alicloud_mns_topic
\ alicloud_mns_topic_subscription
@@ -814,6 +1086,7 @@ syn keyword terraResourceTypeBI
\ aws_autoscaling_notification
\ aws_autoscaling_policy
\ aws_autoscaling_schedule
+ \ aws_backup_vault
\ aws_batch_compute_environment
\ aws_batch_job_definition
\ aws_batch_job_queue
@@ -861,6 +1134,7 @@ syn keyword terraResourceTypeBI
\ aws_config_configuration_recorder
\ aws_config_configuration_recorder_status
\ aws_config_delivery_channel
+ \ aws_cur_report_definition
\ aws_customer_gateway
\ aws_datasync_agent
\ aws_datasync_location_efs
@@ -893,6 +1167,11 @@ syn keyword terraResourceTypeBI
\ aws_dms_replication_instance
\ aws_dms_replication_subnet_group
\ aws_dms_replication_task
+ \ aws_docdb_cluster
+ \ aws_docdb_cluster_instance
+ \ aws_docdb_cluster_parameter_group
+ \ aws_docdb_cluster_snapshot
+ \ aws_docdb_subnet_group
\ aws_dx_bgp_peer
\ aws_dx_connection
\ aws_dx_connection_association
@@ -912,6 +1191,8 @@ syn keyword terraResourceTypeBI
\ aws_ebs_snapshot_copy
\ aws_ebs_volume
\ aws_ec2_capacity_reservation
+ \ aws_ec2_client_vpn_endpoint
+ \ aws_ec2_client_vpn_network_association
\ aws_ec2_fleet
\ aws_ec2_transit_gateway
\ aws_ec2_transit_gateway_route
@@ -956,6 +1237,7 @@ syn keyword terraResourceTypeBI
\ aws_gamelift_game_session_queue
\ aws_glacier_vault
\ aws_glacier_vault_lock
+ \ aws_globalaccelerator_accelerator
\ aws_glue_catalog_database
\ aws_glue_catalog_table
\ aws_glue_classifier
@@ -999,6 +1281,7 @@ syn keyword terraResourceTypeBI
\ aws_iot_certificate
\ aws_iot_policy
\ aws_iot_policy_attachment
+ \ aws_iot_role_alias
\ aws_iot_thing
\ aws_iot_thing_principal_attachment
\ aws_iot_thing_type
@@ -1013,6 +1296,7 @@ syn keyword terraResourceTypeBI
\ aws_lambda_alias
\ aws_lambda_event_source_mapping
\ aws_lambda_function
+ \ aws_lambda_layer_version
\ aws_lambda_permission
\ aws_launch_configuration
\ aws_launch_template
@@ -1037,6 +1321,7 @@ syn keyword terraResourceTypeBI
\ aws_macie_member_account_association
\ aws_macie_s3_bucket_association
\ aws_main_route_table_association
+ \ aws_media_package_channel
\ aws_media_store_container
\ aws_media_store_container_policy
\ aws_mq_broker
@@ -1087,6 +1372,9 @@ syn keyword terraResourceTypeBI
\ aws_pinpoint_sms_channel
\ aws_placement_group
\ aws_proxy_protocol_policy
+ \ aws_ram_principal_association
+ \ aws_ram_resource_association
+ \ aws_ram_resource_share
\ aws_rds_cluster
\ aws_rds_cluster_endpoint
\ aws_rds_cluster_instance
@@ -1098,6 +1386,7 @@ syn keyword terraResourceTypeBI
\ aws_redshift_security_group
\ aws_redshift_snapshot_copy_grant
\ aws_redshift_subnet_group
+ \ aws_resourcegroups_group
\ aws_route
\ aws_route53_delegation_set
\ aws_route53_health_check
@@ -1115,6 +1404,8 @@ syn keyword terraResourceTypeBI
\ aws_s3_bucket_object
\ aws_s3_bucket_policy
\ aws_s3_bucket_public_access_block
+ \ aws_sagemaker_model
+ \ aws_sagemaker_notebook_instance
\ aws_secretsmanager_secret
\ aws_secretsmanager_secret_version
\ aws_security_group
@@ -1219,6 +1510,7 @@ syn keyword terraResourceTypeBI
\ aws_wafregional_web_acl
\ aws_wafregional_web_acl_association
\ aws_wafregional_xss_match_set
+ \ aws_worklink_fleet
\ azure_affinity_group
\ azure_data_disk
\ azure_dns_server
@@ -1235,7 +1527,16 @@ syn keyword terraResourceTypeBI
\ azure_storage_queue
\ azure_storage_service
\ azure_virtual_network
+ \ azuread_application
+ \ azuread_group
+ \ azuread_service_principal
+ \ azuread_service_principal_password
+ \ azuread_user
\ azurerm_api_management
+ \ azurerm_api_management_group
+ \ azurerm_api_management_group_user
+ \ azurerm_api_management_product
+ \ azurerm_api_management_user
\ azurerm_app_service
\ azurerm_app_service_active_slot
\ azurerm_app_service_custom_hostname_binding
@@ -1243,6 +1544,7 @@ syn keyword terraResourceTypeBI
\ azurerm_app_service_slot
\ azurerm_application_gateway
\ azurerm_application_insights
+ \ azurerm_application_insights_api_key
\ azurerm_application_security_group
\ azurerm_automation_account
\ azurerm_automation_credential
@@ -1257,9 +1559,11 @@ syn keyword terraResourceTypeBI
\ azurerm_azuread_service_principal
\ azurerm_azuread_service_principal_password
\ azurerm_batch_account
+ \ azurerm_batch_pool
\ azurerm_cdn_endpoint
\ azurerm_cdn_profile
\ azurerm_cognitive_account
+ \ azurerm_connection_monitor
\ azurerm_container_group
\ azurerm_container_registry
\ azurerm_container_service
@@ -1270,6 +1574,7 @@ syn keyword terraResourceTypeBI
\ azurerm_data_lake_store_file
\ azurerm_data_lake_store_firewall_rule
\ azurerm_databricks_workspace
+ \ azurerm_ddos_protection_plan
\ azurerm_dev_test_lab
\ azurerm_dev_test_linux_virtual_machine
\ azurerm_dev_test_policy
@@ -1286,6 +1591,8 @@ syn keyword terraResourceTypeBI
\ azurerm_dns_srv_record
\ azurerm_dns_txt_record
\ azurerm_dns_zone
+ \ azurerm_eventgrid_domain
+ \ azurerm_eventgrid_event_subscription
\ azurerm_eventgrid_topic
\ azurerm_eventhub
\ azurerm_eventhub_authorization_rule
@@ -1296,6 +1603,7 @@ syn keyword terraResourceTypeBI
\ azurerm_express_route_circuit_authorization
\ azurerm_express_route_circuit_peering
\ azurerm_firewall
+ \ azurerm_firewall_application_rule_collection
\ azurerm_firewall_network_rule_collection
\ azurerm_function_app
\ azurerm_image
@@ -1311,9 +1619,11 @@ syn keyword terraResourceTypeBI
\ azurerm_lb_backend_address_pool
\ azurerm_lb_nat_pool
\ azurerm_lb_nat_rule
+ \ azurerm_lb_outbound_rule
\ azurerm_lb_probe
\ azurerm_lb_rule
\ azurerm_local_network_gateway
+ \ azurerm_log_analytics_linked_service
\ azurerm_log_analytics_solution
\ azurerm_log_analytics_workspace
\ azurerm_log_analytics_workspace_linked_service
@@ -1328,12 +1638,15 @@ syn keyword terraResourceTypeBI
\ azurerm_management_lock
\ azurerm_mariadb_database
\ azurerm_mariadb_server
+ \ azurerm_media_services_account
\ azurerm_metric_alertrule
\ azurerm_monitor_action_group
\ azurerm_monitor_activity_log_alert
+ \ azurerm_monitor_autoscale_setting
\ azurerm_monitor_diagnostic_setting
\ azurerm_monitor_log_profile
\ azurerm_monitor_metric_alert
+ \ azurerm_monitor_metric_alertrule
\ azurerm_mssql_elasticpool
\ azurerm_mysql_configuration
\ azurerm_mysql_database
@@ -1342,6 +1655,7 @@ syn keyword terraResourceTypeBI
\ azurerm_mysql_virtual_network_rule
\ azurerm_network_interface
\ azurerm_network_interface_application_gateway_backend_address_pool_association
+ \ azurerm_network_interface_application_security_group_association
\ azurerm_network_interface_backend_address_pool_association
\ azurerm_network_interface_nat_rule_association
\ azurerm_network_security_group
@@ -1505,6 +1819,13 @@ syn keyword terraResourceTypeBI
\ circonus_metric_cluster
\ circonus_rule_set
\ circonus_worksheet
+ \ ciscoasa_access_in_rules
+ \ ciscoasa_access_out_rules
+ \ ciscoasa_acl
+ \ ciscoasa_network_object
+ \ ciscoasa_network_object_group
+ \ ciscoasa_network_service_group
+ \ ciscoasa_static_route
\ clc_group
\ clc_load_balancer
\ clc_load_balancer_pool
@@ -1523,6 +1844,7 @@ syn keyword terraResourceTypeBI
\ cloudflare_page_rule
\ cloudflare_rate_limit
\ cloudflare_record
+ \ cloudflare_spectrum_application
\ cloudflare_waf_rule
\ cloudflare_worker_route
\ cloudflare_worker_script
@@ -1572,6 +1894,7 @@ syn keyword terraResourceTypeBI
\ datadog_downtime
\ datadog_integration_aws
\ datadog_integration_gcp
+ \ datadog_integration_pagerduty
\ datadog_metric_metadata
\ datadog_monitor
\ datadog_screenboard
@@ -1588,6 +1911,7 @@ syn keyword terraResourceTypeBI
\ digitalocean_kubernetes_node_pool
\ digitalocean_loadbalancer
\ digitalocean_record
+ \ digitalocean_spaces_bucket
\ digitalocean_ssh_key
\ digitalocean_tag
\ digitalocean_volume
@@ -1597,8 +1921,10 @@ syn keyword terraResourceTypeBI
\ dns_a_record_set
\ dns_aaaa_record_set
\ dns_cname_record
+ \ dns_mx_record_set
\ dns_ns_record_set
\ dns_ptr_record
+ \ dns_txt_record_set
\ dnsimple_record
\ docker_config
\ docker_container
@@ -1614,6 +1940,8 @@ syn keyword terraResourceTypeBI
\ flexibleengine_as_group_v1
\ flexibleengine_as_policy_v1
\ flexibleengine_blockstorage_volume_v2
+ \ flexibleengine_cce_cluster_v3
+ \ flexibleengine_cce_node_v3
\ flexibleengine_ces_alarmrule
\ flexibleengine_compute_bms_server_v2
\ flexibleengine_compute_floatingip_associate_v2
@@ -1640,6 +1968,8 @@ syn keyword terraResourceTypeBI
\ flexibleengine_fw_rule_v2
\ flexibleengine_images_image_v2
\ flexibleengine_lb_certificate_v2
+ \ flexibleengine_lb_l7policy_v2
+ \ flexibleengine_lb_l7rule_v2
\ flexibleengine_lb_listener_v2
\ flexibleengine_lb_loadbalancer_v2
\ flexibleengine_lb_member_v2
@@ -1664,6 +1994,7 @@ syn keyword terraResourceTypeBI
\ flexibleengine_networking_vip_v2
\ flexibleengine_rds_instance_v1
\ flexibleengine_rts_software_config_v1
+ \ flexibleengine_rts_stack_resource_v1
\ flexibleengine_rts_stack_v1
\ flexibleengine_s3_bucket
\ flexibleengine_s3_bucket_object
@@ -1701,7 +2032,9 @@ syn keyword terraResourceTypeBI
\ gitlab_group_membership
\ gitlab_group_variable
\ gitlab_label
+ \ gitlab_pipeline_trigger
\ gitlab_project
+ \ gitlab_project_cluster
\ gitlab_project_hook
\ gitlab_project_membership
\ gitlab_project_variable
@@ -1710,12 +2043,17 @@ syn keyword terraResourceTypeBI
\ google_access_context_manager_access_policy
\ google_access_context_manager_service_perimeter
\ google_app_engine_application
+ \ google_app_engine_firewall_rule
\ google_bigquery_dataset
\ google_bigquery_table
\ google_bigtable_instance
\ google_bigtable_table
+ \ google_billing_account_iam_binding
+ \ google_billing_account_iam_member
+ \ google_billing_account_iam_policy
\ google_binary_authorization_attestor
\ google_binary_authorization_policy
+ \ google_cloud_scheduler_job
\ google_cloudbuild_trigger
\ google_cloudfunctions_function
\ google_cloudiot_registry
@@ -1740,6 +2078,7 @@ syn keyword terraResourceTypeBI
\ google_compute_instance_group_manager
\ google_compute_instance_template
\ google_compute_interconnect_attachment
+ \ google_compute_managed_ssl_certificate
\ google_compute_network
\ google_compute_network_peering
\ google_compute_project_metadata
@@ -1760,6 +2099,9 @@ syn keyword terraResourceTypeBI
\ google_compute_ssl_certificate
\ google_compute_ssl_policy
\ google_compute_subnetwork
+ \ google_compute_subnetwork_iam_binding
+ \ google_compute_subnetwork_iam_member
+ \ google_compute_subnetwork_iam_policy
\ google_compute_target_http_proxy
\ google_compute_target_https_proxy
\ google_compute_target_pool
@@ -1779,44 +2121,80 @@ syn keyword terraResourceTypeBI
\ google_endpoints_service
\ google_filestore_instance
\ google_folder
+ \ google_folder_iam_binding
+ \ google_folder_iam_member
+ \ google_folder_iam_policy
\ google_folder_organization_policy
\ google_kms_crypto_key
+ \ google_kms_crypto_key_iam_binding
+ \ google_kms_crypto_key_iam_member
\ google_kms_key_ring
+ \ google_kms_key_ring_iam_binding
+ \ google_kms_key_ring_iam_member
+ \ google_kms_key_ring_iam_policy
+ \ google_logging_billing_account_exclusion
\ google_logging_billing_account_sink
+ \ google_logging_folder_exclusion
\ google_logging_folder_sink
+ \ google_logging_organization_exclusion
\ google_logging_organization_sink
+ \ google_logging_project_exclusion
\ google_logging_project_sink
\ google_monitoring_alert_policy
\ google_monitoring_group
\ google_monitoring_notification_channel
\ google_monitoring_uptime_check_config
+ \ google_organization_iam_binding
\ google_organization_iam_custom_role
+ \ google_organization_iam_member
+ \ google_organization_iam_policy
\ google_organization_policy
\ google_project
+ \ google_project_iam_audit_config
+ \ google_project_iam_binding
\ google_project_iam_custom_role
+ \ google_project_iam_member
\ google_project_iam_policy
\ google_project_organization_policy
\ google_project_service
\ google_project_services
\ google_project_usage_export_bucket
\ google_pubsub_subscription
+ \ google_pubsub_subscription_iam_binding
+ \ google_pubsub_subscription_iam_member
+ \ google_pubsub_subscription_iam_policy
\ google_pubsub_topic
+ \ google_pubsub_topic_iam_binding
+ \ google_pubsub_topic_iam_member
+ \ google_pubsub_topic_iam_policy
\ google_redis_instance
\ google_resource_manager_lien
\ google_runtimeconfig_config
\ google_runtimeconfig_variable
\ google_service_account
+ \ google_service_account_iam_binding
+ \ google_service_account_iam_member
+ \ google_service_account_iam_policy
\ google_service_account_key
\ google_service_networking_connection
\ google_sourcerepo_repository
\ google_spanner_database
+ \ google_spanner_database_iam_binding
+ \ google_spanner_database_iam_member
+ \ google_spanner_database_iam_policy
\ google_spanner_instance
+ \ google_spanner_instance_iam_binding
+ \ google_spanner_instance_iam_member
+ \ google_spanner_instance_iam_policy
\ google_sql_database
\ google_sql_database_instance
\ google_sql_ssl_cert
\ google_sql_user
\ google_storage_bucket
\ google_storage_bucket_acl
+ \ google_storage_bucket_iam_binding
+ \ google_storage_bucket_iam_member
+ \ google_storage_bucket_iam_policy
\ google_storage_bucket_object
\ google_storage_default_object_access_control
\ google_storage_default_object_acl
@@ -1824,6 +2202,11 @@ syn keyword terraResourceTypeBI
\ google_storage_object_access_control
\ google_storage_object_acl
\ google_storage_transfer_job
+ \ grafana_alert_notification
+ \ grafana_dashboard
+ \ grafana_data_source
+ \ grafana_folder
+ \ grafana_organization
\ hcloud_floating_ip
\ hcloud_floating_ip_assignment
\ hcloud_rdns
@@ -1875,11 +2258,13 @@ syn keyword terraResourceTypeBI
\ huaweicloud_csbs_backup_policy_v1
\ huaweicloud_csbs_backup_v1
\ huaweicloud_cts_tracker_v1
+ \ huaweicloud_dcs_instance_v1
\ huaweicloud_dms_group_v1
\ huaweicloud_dms_instance_v1
\ huaweicloud_dms_queue_v1
\ huaweicloud_dns_recordset_v2
\ huaweicloud_dns_zone_v2
+ \ huaweicloud_dws_cluster
\ huaweicloud_elb_backendecs
\ huaweicloud_elb_healthcheck
\ huaweicloud_elb_listener
@@ -1888,15 +2273,27 @@ syn keyword terraResourceTypeBI
\ huaweicloud_fw_policy_v2
\ huaweicloud_fw_rule_v2
\ huaweicloud_iam_agency_v3
+ \ huaweicloud_identity_group_membership_v3
+ \ huaweicloud_identity_group_v3
+ \ huaweicloud_identity_project_v3
+ \ huaweicloud_identity_role_assignment_v3
+ \ huaweicloud_identity_user_v3
\ huaweicloud_images_image_v2
\ huaweicloud_kms_key_v1
+ \ huaweicloud_lb_l7policy_v2
+ \ huaweicloud_lb_l7rule_v2
\ huaweicloud_lb_listener_v2
\ huaweicloud_lb_loadbalancer_v2
\ huaweicloud_lb_member_v2
\ huaweicloud_lb_monitor_v2
\ huaweicloud_lb_pool_v2
+ \ huaweicloud_maas_task_v1
+ \ huaweicloud_mls_instance
+ \ huaweicloud_mrs_cluster_v1
+ \ huaweicloud_mrs_job_v1
\ huaweicloud_nat_gateway_v2
\ huaweicloud_nat_snat_rule_v2
+ \ huaweicloud_networking_floatingip_associate_v2
\ huaweicloud_networking_floatingip_v2
\ huaweicloud_networking_network_v2
\ huaweicloud_networking_port_v2
@@ -1908,6 +2305,7 @@ syn keyword terraResourceTypeBI
\ huaweicloud_networking_subnet_v2
\ huaweicloud_rds_instance_v1
\ huaweicloud_rts_software_config_v1
+ \ huaweicloud_rts_stack_resource_v1
\ huaweicloud_rts_stack_v1
\ huaweicloud_s3_bucket
\ huaweicloud_s3_bucket_object
@@ -1943,17 +2341,22 @@ syn keyword terraResourceTypeBI
\ influxdb_continuous_query
\ influxdb_database
\ influxdb_user
+ \ kubernetes_cluster_role
\ kubernetes_cluster_role_binding
\ kubernetes_config_map
+ \ kubernetes_daemonset
\ kubernetes_deployment
\ kubernetes_horizontal_pod_autoscaler
\ kubernetes_limit_range
\ kubernetes_namespace
+ \ kubernetes_network_policy
\ kubernetes_persistent_volume
\ kubernetes_persistent_volume_claim
\ kubernetes_pod
\ kubernetes_replication_controller
\ kubernetes_resource_quota
+ \ kubernetes_role
+ \ kubernetes_role_binding
\ kubernetes_secret
\ kubernetes_service
\ kubernetes_service_account
@@ -2006,6 +2409,15 @@ syn keyword terraResourceTypeBI
\ nomad_namespace
\ nomad_quota_specification
\ nomad_sentinel_policy
+ \ ns1_apikey
+ \ ns1_datafeed
+ \ ns1_datasource
+ \ ns1_monitoringjob
+ \ ns1_notifylist
+ \ ns1_record
+ \ ns1_team
+ \ ns1_user
+ \ ns1_zone
\ nsxt_algorithm_type_ns_service
\ nsxt_dhcp_relay_profile
\ nsxt_dhcp_relay_service
@@ -2061,6 +2473,7 @@ syn keyword terraResourceTypeBI
\ nsxt_spoofguard_switching_profile
\ nsxt_static_route
\ nsxt_switch_security_switching_profile
+ \ nsxt_vlan_logical_switch
\ nsxt_vm_tags
\ null_resource
\ nutanix_category_key
@@ -2070,6 +2483,114 @@ syn keyword terraResourceTypeBI
\ nutanix_subnet
\ nutanix_virtual_machine
\ nutanix_volume_group
+ \ oci_audit_configuration
+ \ oci_containerengine_cluster
+ \ oci_containerengine_node_pool
+ \ oci_core_app_catalog_listing_resource_version
+ \ oci_core_app_catalog_listing_resource_version_agreement
+ \ oci_core_app_catalog_listing_resource_versions
+ \ oci_core_app_catalog_subscription
+ \ oci_core_boot_volume
+ \ oci_core_boot_volume_backup
+ \ oci_core_console_history
+ \ oci_core_cpe
+ \ oci_core_cross_connect
+ \ oci_core_cross_connect_group
+ \ oci_core_default_dhcp_options
+ \ oci_core_default_route_table
+ \ oci_core_default_security_list
+ \ oci_core_dhcp_options
+ \ oci_core_drg
+ \ oci_core_drg_attachment
+ \ oci_core_image
+ \ oci_core_instance
+ \ oci_core_instance_configuration
+ \ oci_core_instance_console_connection
+ \ oci_core_instance_pool
+ \ oci_core_internet_gateway
+ \ oci_core_ipsec
+ \ oci_core_listing_resource_version
+ \ oci_core_listing_resource_version_agreement
+ \ oci_core_listing_resource_versions
+ \ oci_core_local_peering_gateway
+ \ oci_core_nat_gateway
+ \ oci_core_private_ip
+ \ oci_core_public_ip
+ \ oci_core_remote_peering_connection
+ \ oci_core_route_table
+ \ oci_core_route_table_attachment
+ \ oci_core_security_list
+ \ oci_core_service_gateway
+ \ oci_core_subnet
+ \ oci_core_vcn
+ \ oci_core_virtual_circuit
+ \ oci_core_vnic_attachment
+ \ oci_core_volume
+ \ oci_core_volume_attachment
+ \ oci_core_volume_backup
+ \ oci_core_volume_backup_policy_assignment
+ \ oci_core_volume_group
+ \ oci_core_volume_group_backup
+ \ oci_database_autonomous_data_warehouse
+ \ oci_database_autonomous_data_warehouse_backup
+ \ oci_database_autonomous_database
+ \ oci_database_autonomous_database_backup
+ \ oci_database_backup
+ \ oci_database_db_home
+ \ oci_database_db_system
+ \ oci_dns_record
+ \ oci_dns_steering_policy
+ \ oci_dns_steering_policy_attachment
+ \ oci_dns_zone
+ \ oci_email_sender
+ \ oci_email_suppression
+ \ oci_file_storage_export
+ \ oci_file_storage_export_set
+ \ oci_file_storage_file_system
+ \ oci_file_storage_mount_target
+ \ oci_file_storage_snapshot
+ \ oci_health_checks_http_monitor
+ \ oci_health_checks_http_probe
+ \ oci_health_checks_ping_monitor
+ \ oci_health_checks_ping_probe
+ \ oci_identity_api_key
+ \ oci_identity_auth_token
+ \ oci_identity_compartment
+ \ oci_identity_customer_secret_key
+ \ oci_identity_dynamic_group
+ \ oci_identity_group
+ \ oci_identity_identity_provider
+ \ oci_identity_idp_group_mapping
+ \ oci_identity_policy
+ \ oci_identity_smtp_credential
+ \ oci_identity_swift_password
+ \ oci_identity_tag
+ \ oci_identity_tag_namespace
+ \ oci_identity_ui_password
+ \ oci_identity_user
+ \ oci_identity_user_capabilities_management
+ \ oci_identity_user_group_membership
+ \ oci_kms_encrypted_data
+ \ oci_kms_generated_key
+ \ oci_kms_key
+ \ oci_kms_key_version
+ \ oci_kms_vault
+ \ oci_load_balancer
+ \ oci_load_balancer_backend
+ \ oci_load_balancer_backend_set
+ \ oci_load_balancer_backendset
+ \ oci_load_balancer_certificate
+ \ oci_load_balancer_hostname
+ \ oci_load_balancer_listener
+ \ oci_load_balancer_load_balancer
+ \ oci_load_balancer_path_route_set
+ \ oci_load_balancer_rule_set
+ \ oci_objectstorage_bucket
+ \ oci_objectstorage_namespace_metadata
+ \ oci_objectstorage_object
+ \ oci_objectstorage_object_lifecycle_policy
+ \ oci_objectstorage_preauthrequest
+ \ oci_streaming_stream
\ oneandone_baremetal
\ oneandone_block_storage
\ oneandone_firewall_policy
@@ -2143,6 +2664,7 @@ syn keyword terraResourceTypeBI
\ openstack_fw_firewall_v1
\ openstack_fw_policy_v1
\ openstack_fw_rule_v1
+ \ openstack_identity_application_credential_v3
\ openstack_identity_project_v3
\ openstack_identity_role_assignment_v3
\ openstack_identity_role_v3
@@ -2159,9 +2681,11 @@ syn keyword terraResourceTypeBI
\ openstack_lb_pool_v1
\ openstack_lb_pool_v2
\ openstack_lb_vip_v1
+ \ openstack_networking_addressscope_v2
\ openstack_networking_floatingip_associate_v2
\ openstack_networking_floatingip_v2
\ openstack_networking_network_v2
+ \ openstack_networking_port_secgroup_associate_v2
\ openstack_networking_port_v2
\ openstack_networking_router_interface_v2
\ openstack_networking_router_route_v2
@@ -2176,6 +2700,8 @@ syn keyword terraResourceTypeBI
\ openstack_objectstorage_object_v1
\ openstack_objectstorage_tempurl_v1
\ openstack_sharedfilesystem_securityservice_v2
+ \ openstack_sharedfilesystem_share_access_v2
+ \ openstack_sharedfilesystem_share_v2
\ openstack_sharedfilesystem_sharenetwork_v2
\ openstack_vpnaas_endpoint_group_v2
\ openstack_vpnaas_ike_policy_v2
@@ -2215,6 +2741,13 @@ syn keyword terraResourceTypeBI
\ opentelekomcloud_fw_firewall_group_v2
\ opentelekomcloud_fw_policy_v2
\ opentelekomcloud_fw_rule_v2
+ \ opentelekomcloud_identity_agency_v3
+ \ opentelekomcloud_identity_group_membership_v3
+ \ opentelekomcloud_identity_group_v3
+ \ opentelekomcloud_identity_project_v3
+ \ opentelekomcloud_identity_role_assignment_v3
+ \ opentelekomcloud_identity_role_v3
+ \ opentelekomcloud_identity_user_v3
\ opentelekomcloud_images_image_v2
\ opentelekomcloud_kms_key_v1
\ opentelekomcloud_lb_listener_v2
@@ -2242,6 +2775,7 @@ syn keyword terraResourceTypeBI
\ opentelekomcloud_rds_instance_v1
\ opentelekomcloud_rts_software_config_v1
\ opentelekomcloud_rts_software_deployment_v1
+ \ opentelekomcloud_rts_stack_resource_v1
\ opentelekomcloud_rts_stack_v1
\ opentelekomcloud_s3_bucket
\ opentelekomcloud_s3_bucket_object
@@ -2284,13 +2818,16 @@ syn keyword terraResourceTypeBI
\ ovh_publiccloud_user
\ ovh_vrack_cloudproject
\ ovh_vrack_publiccloud_attachment
+ \ packet_bgp_session
\ packet_device
\ packet_ip_attachment
\ packet_organization
\ packet_project
+ \ packet_project_ssh_key
\ packet_reserved_ip_block
\ packet_spot_market_request
\ packet_ssh_key
+ \ packet_vlan
\ packet_volume
\ packet_volume_attachment
\ pagerduty_addon
@@ -2307,6 +2844,21 @@ syn keyword terraResourceTypeBI
\ panos_address_group
\ panos_address_object
\ panos_administrative_tag
+ \ panos_bfd_profile
+ \ panos_bgp
+ \ panos_bgp_aggregate
+ \ panos_bgp_aggregate_advertise_filter
+ \ panos_bgp_aggregate_suppress_filter
+ \ panos_bgp_auth_profile
+ \ panos_bgp_conditional_adv
+ \ panos_bgp_conditional_adv_advertise_filter
+ \ panos_bgp_conditional_adv_non_exist_filter
+ \ panos_bgp_dampening_profile
+ \ panos_bgp_export_rule_group
+ \ panos_bgp_import_rule_group
+ \ panos_bgp_peer
+ \ panos_bgp_peer_group
+ \ panos_bgp_redist_rule
\ panos_dag_tags
\ panos_edl
\ panos_ethernet_interface
@@ -2322,9 +2874,25 @@ syn keyword terraResourceTypeBI
\ panos_management_profile
\ panos_nat_policy
\ panos_nat_rule
+ \ panos_nat_rule_group
\ panos_panorama_address_group
\ panos_panorama_address_object
\ panos_panorama_administrative_tag
+ \ panos_panorama_bfd_profile
+ \ panos_panorama_bgp
+ \ panos_panorama_bgp_aggregate
+ \ panos_panorama_bgp_aggregate_advertise_filter
+ \ panos_panorama_bgp_aggregate_suppress_filter
+ \ panos_panorama_bgp_auth_profile
+ \ panos_panorama_bgp_conditional_adv
+ \ panos_panorama_bgp_conditional_adv_advertise_filter
+ \ panos_panorama_bgp_conditional_adv_non_exist_filter
+ \ panos_panorama_bgp_dampening_profile
+ \ panos_panorama_bgp_export_rule_group
+ \ panos_panorama_bgp_import_rule_group
+ \ panos_panorama_bgp_peer
+ \ panos_panorama_bgp_peer_group
+ \ panos_panorama_bgp_redist_rule
\ panos_panorama_device_group
\ panos_panorama_device_group_entry
\ panos_panorama_edl
@@ -2338,6 +2906,8 @@ syn keyword terraResourceTypeBI
\ panos_panorama_management_profile
\ panos_panorama_nat_policy
\ panos_panorama_nat_rule
+ \ panos_panorama_nat_rule_group
+ \ panos_panorama_redistribution_profile_ipv4
\ panos_panorama_security_policies
\ panos_panorama_security_policy
\ panos_panorama_security_policy_group
@@ -2356,6 +2926,7 @@ syn keyword terraResourceTypeBI
\ panos_panorama_vlan_interface
\ panos_panorama_zone
\ panos_panorama_zone_entry
+ \ panos_redistribution_profile_ipv4
\ panos_security_policies
\ panos_security_policy
\ panos_security_policy_group
@@ -2383,6 +2954,7 @@ syn keyword terraResourceTypeBI
\ profitbricks_lan
\ profitbricks_loadbalancer
\ profitbricks_nic
+ \ profitbricks_resource
\ profitbricks_server
\ profitbricks_share
\ profitbricks_snapshot
@@ -2444,13 +3016,16 @@ syn keyword terraResourceTypeBI
\ scaleway_user_data
\ scaleway_volume
\ scaleway_volume_attachment
- \ selvpc_resell_floatingip_v2
- \ selvpc_resell_license_v2
- \ selvpc_resell_project_v2
- \ selvpc_resell_role_v2
- \ selvpc_resell_subnet_v2
- \ selvpc_resell_token_v2
- \ selvpc_resell_user_v2
+ \ selectel_vpc_crossregion_subnet_v2
+ \ selectel_vpc_floatingip_v2
+ \ selectel_vpc_keypair_v2
+ \ selectel_vpc_license_v2
+ \ selectel_vpc_project_v2
+ \ selectel_vpc_role_v2
+ \ selectel_vpc_subnet_v2
+ \ selectel_vpc_token_v2
+ \ selectel_vpc_user_v2
+ \ selectel_vpc_vrrp_subnet_v2
\ skytap_environment
\ skytap_network
\ skytap_project
@@ -2458,11 +3033,13 @@ syn keyword terraResourceTypeBI
\ softlayer_ssh_key
\ softlayer_virtual_guest
\ statuscake_test
+ \ telefonicaopencloud_antiddos_v1
\ telefonicaopencloud_as_configuration_v1
\ telefonicaopencloud_as_group_v1
\ telefonicaopencloud_as_policy_v1
\ telefonicaopencloud_blockstorage_volume_v2
\ telefonicaopencloud_ces_alarmrule
+ \ telefonicaopencloud_compute_bms_server_v2
\ telefonicaopencloud_compute_floatingip_associate_v2
\ telefonicaopencloud_compute_floatingip_v2
\ telefonicaopencloud_compute_instance_v2
@@ -2472,6 +3049,10 @@ syn keyword terraResourceTypeBI
\ telefonicaopencloud_compute_volume_attach_v2
\ telefonicaopencloud_csbs_backup_policy_v1
\ telefonicaopencloud_csbs_backup_v1
+ \ telefonicaopencloud_cts_tracker_v1
+ \ telefonicaopencloud_dcs_instance_v1
+ \ telefonicaopencloud_dms_group_v1
+ \ telefonicaopencloud_dms_queue_v1
\ telefonicaopencloud_dns_recordset_v2
\ telefonicaopencloud_dns_zone_v2
\ telefonicaopencloud_elb_backendecs
@@ -2481,6 +3062,9 @@ syn keyword terraResourceTypeBI
\ telefonicaopencloud_fw_firewall_group_v2
\ telefonicaopencloud_fw_policy_v2
\ telefonicaopencloud_fw_rule_v2
+ \ telefonicaopencloud_maas_task_v1
+ \ telefonicaopencloud_mrs_cluster_v1
+ \ telefonicaopencloud_mrs_job_v1
\ telefonicaopencloud_networking_floatingip_v2
\ telefonicaopencloud_networking_network_v2
\ telefonicaopencloud_networking_port_v2
@@ -2492,6 +3076,7 @@ syn keyword terraResourceTypeBI
\ telefonicaopencloud_networking_subnet_v2
\ telefonicaopencloud_rds_instance_v1
\ telefonicaopencloud_rts_software_config_v1
+ \ telefonicaopencloud_rts_stack_resource_v1
\ telefonicaopencloud_rts_stack_v1
\ telefonicaopencloud_s3_bucket
\ telefonicaopencloud_s3_bucket_object
@@ -2499,7 +3084,11 @@ syn keyword terraResourceTypeBI
\ telefonicaopencloud_sfs_file_system_v2
\ telefonicaopencloud_smn_subscription_v2
\ telefonicaopencloud_smn_topic_v2
+ \ telefonicaopencloud_vbs_backup_policy_v2
+ \ telefonicaopencloud_vbs_backup_v2
\ telefonicaopencloud_vpc_eip_v1
+ \ telefonicaopencloud_vpc_peering_connection_accepter_v2
+ \ telefonicaopencloud_vpc_peering_connection_v2
\ telefonicaopencloud_vpc_subnet_v1
\ telefonicaopencloud_vpc_v1
\ template_dir
@@ -2522,6 +3111,7 @@ syn keyword terraResourceTypeBI
\ tencentcloud_security_group_rule
\ tencentcloud_subnet
\ tencentcloud_vpc
+ \ tfe_oauth_client
\ tfe_organization
\ tfe_organization_token
\ tfe_policy_set
@@ -2557,6 +3147,7 @@ syn keyword terraResourceTypeBI
\ ucloud_lb_rule
\ ucloud_security_group
\ ucloud_subnet
+ \ ucloud_udpn_connection
\ ucloud_vpc
\ ucloud_vpc_peering_connection
\ ultradns_dirpool
@@ -2565,10 +3156,77 @@ syn keyword terraResourceTypeBI
\ ultradns_rdpool
\ ultradns_record
\ ultradns_tcpool
+ \ vault_approle_auth_backend_login
+ \ vault_approle_auth_backend_role
+ \ vault_approle_auth_backend_role_secret_id
+ \ vault_audit
+ \ vault_auth_backend
+ \ vault_aws_auth_backend_cert
+ \ vault_aws_auth_backend_client
+ \ vault_aws_auth_backend_identity_whitelist
+ \ vault_aws_auth_backend_login
+ \ vault_aws_auth_backend_role
+ \ vault_aws_auth_backend_role_tag
+ \ vault_aws_auth_backend_roletag_blacklist
+ \ vault_aws_auth_backend_sts_role
+ \ vault_aws_secret_backend
+ \ vault_aws_secret_backend_role
+ \ vault_azure_auth_backend_config
+ \ vault_azure_auth_backend_role
+ \ vault_cert_auth_backend_role
+ \ vault_consul_secret_backend
+ \ vault_database_secret_backend_connection
+ \ vault_database_secret_backend_role
+ \ vault_egp_policy
+ \ vault_gcp_auth_backend
+ \ vault_gcp_auth_backend_role
+ \ vault_gcp_secret_backend
+ \ vault_generic_secret
+ \ vault_github_auth_backend
+ \ vault_github_team
+ \ vault_github_user
+ \ vault_identity_entity
+ \ vault_identity_entity_alias
+ \ vault_identity_group
+ \ vault_identity_group_alias
+ \ vault_jwt_auth_backend
+ \ vault_jwt_auth_backend_role
+ \ vault_kubernetes_auth_backend_config
+ \ vault_kubernetes_auth_backend_role
+ \ vault_ldap_auth_backend
+ \ vault_ldap_auth_backend_group
+ \ vault_ldap_auth_backend_user
+ \ vault_mount
+ \ vault_okta_auth_backend
+ \ vault_okta_auth_backend_group
+ \ vault_okta_auth_backend_user
+ \ vault_pki_secret_backend
+ \ vault_pki_secret_backend_cert
+ \ vault_pki_secret_backend_config_ca
+ \ vault_pki_secret_backend_intermediate_cert_request
+ \ vault_pki_secret_backend_intermediate_set_signed
+ \ vault_pki_secret_backend_role
+ \ vault_pki_secret_backend_root_cert
+ \ vault_pki_secret_backend_root_sign_intermediate
+ \ vault_pki_secret_backend_sign
+ \ vault_policy
+ \ vault_rabbitmq_secret_backend
+ \ vault_rabbitmq_secret_backend_role
+ \ vault_rgp_policy
+ \ vault_ssh_secret_backend_ca
+ \ vault_ssh_secret_backend_role
+ \ vault_token_auth_backend_role
+ \ vcd_catalog
+ \ vcd_catalog_item
+ \ vcd_catalog_media
\ vcd_dnat
\ vcd_edgegateway_vpn
\ vcd_firewall_rules
- \ vcd_network
+ \ vcd_inserted_media
+ \ vcd_network_direct
+ \ vcd_network_isolated
+ \ vcd_network_routed
+ \ vcd_org
\ vcd_snat
\ vcd_vapp
\ vcd_vapp_vm
@@ -2604,6 +3262,24 @@ syn keyword terraResourceTypeBI
\ vsphere_virtual_machine
\ vsphere_virtual_machine_snapshot
\ vsphere_vmfs_datastore
+ \ yandex_compute_disk
+ \ yandex_compute_image
+ \ yandex_compute_instance
+ \ yandex_compute_snapshot
+ \ yandex_iam_service_account
+ \ yandex_iam_service_account_iam_binding
+ \ yandex_iam_service_account_iam_member
+ \ yandex_iam_service_account_iam_policy
+ \ yandex_iam_service_account_static_access_key
+ \ yandex_resourcemanager_cloud
+ \ yandex_resourcemanager_cloud_iam_binding
+ \ yandex_resourcemanager_cloud_iam_member
+ \ yandex_resourcemanager_folder
+ \ yandex_resourcemanager_folder_iam_binding
+ \ yandex_resourcemanager_folder_iam_member
+ \ yandex_resourcemanager_folder_iam_policy
+ \ yandex_vpc_network
+ \ yandex_vpc_subnet
""" end resources
syn keyword terraTodo contained TODO FIXME XXX BUG
diff --git a/syntax/vifm.vim b/syntax/vifm.vim
index 128fa1ed..00099e1c 100644
--- a/syntax/vifm.vim
+++ b/syntax/vifm.vim
@@ -2,7 +2,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vifm') == -1
" vifm syntax file
" Maintainer: xaizek <xaizek@posteo.net>
-" Last Change: December 19, 2018
+" Last Change: January 31, 2019
" Inspired By: Vim syntax file by Dr. Charles E. Campbell, Jr.
if exists('b:current_syntax')
@@ -132,11 +132,11 @@ syntax keyword vifmOption contained aproposprg autochpos caseoptions cdpath cd
\ lsoptions lsview mediaprg milleroptions millerview mintimeoutlen number nu
\ numberwidth nuw previewprg quickview relativenumber rnu rulerformat ruf
\ runexec scrollbind scb scrolloff so sort sortgroups sortorder sortnumbers
- \ shell sh shortmess shm showtabline stal sizefmt slowfs smartcase scs
- \ statusline stl suggestoptions syncregs syscalls tabscope tabstop timefmt
- \ timeoutlen title tm trash trashdir ts tuioptions to undolevels ul vicmd
- \ viewcolumns vifminfo vimhelp vixcmd wildmenu wmnu wildstyle wordchars wrap
- \ wrapscan ws
+ \ shell sh shellflagcmd shcf shortmess shm showtabline stal sizefmt slowfs
+ \ smartcase scs statusline stl suggestoptions syncregs syscalls tabscope
+ \ tabstop timefmt timeoutlen title tm trash trashdir ts tuioptions to
+ \ undolevels ul vicmd viewcolumns vifminfo vimhelp vixcmd wildmenu wmnu
+ \ wildstyle wordchars wrap wrapscan ws
" Disabled boolean options
syntax keyword vifmOption contained noautochpos nocf nochaselinks nodotfiles