diff options
author | Adam Stankiewicz <sheerun@sher.pl> | 2015-12-17 10:44:58 +0100 |
---|---|---|
committer | Adam Stankiewicz <sheerun@sher.pl> | 2015-12-17 10:49:17 +0100 |
commit | 3c56c1c7cd051cc7ac7cea0ad66748d8afe1a3cb (patch) | |
tree | b8fd3b80fbaea21bf4d689709ae01c555786bb6a | |
parent | d4e83d706f9417c031e24ae554c8740411a253cb (diff) | |
download | vim-polyglot-3c56c1c7cd051cc7ac7cea0ad66748d8afe1a3cb.tar.gz vim-polyglot-3c56c1c7cd051cc7ac7cea0ad66748d8afe1a3cb.zip |
Update
Diffstat (limited to '')
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | after/syntax/cpp.vim | 29 | ||||
-rw-r--r-- | autoload/dart.vim | 70 | ||||
-rw-r--r-- | compiler/exunit.vim | 10 | ||||
-rw-r--r-- | compiler/rspec.vim | 1 | ||||
-rw-r--r-- | ftplugin/git.vim | 1 | ||||
-rw-r--r-- | ftplugin/gitcommit.vim | 2 | ||||
-rw-r--r-- | indent/gitconfig.vim | 2 | ||||
-rw-r--r-- | syntax/dart.vim | 2 | ||||
-rw-r--r-- | syntax/elixir.vim | 10 | ||||
-rw-r--r-- | syntax/gitcommit.vim | 2 | ||||
-rw-r--r-- | syntax/gitrebase.vim | 3 | ||||
-rw-r--r-- | syntax/kotlin.vim | 4 | ||||
-rw-r--r-- | syntax/perl.vim | 30 |
14 files changed, 136 insertions, 32 deletions
@@ -34,7 +34,7 @@ Optionally download one of the [releases](https://github.com/sheerun/vim-polyglo - [coffee-script](https://github.com/kchmck/vim-coffee-script) (syntax, indent, compiler, autoload, ftplugin, ftdetect) - [css](https://github.com/JulesWang/css.vim) (syntax) - [cucumber](https://github.com/tpope/vim-cucumber) (syntax, indent, compiler, ftplugin, ftdetect) -- [dart](https://github.com/dart-lang/dart-vim-plugin) (syntax, indent, ftplugin, ftdetect) +- [dart](https://github.com/dart-lang/dart-vim-plugin) (syntax, indent, autoload, ftplugin, ftdetect) - [dockerfile](https://github.com/honza/dockerfile.vim) (syntax, ftdetect) - [elm](https://github.com/lambdatoast/elm.vim) (syntax, indent, autoload, ftplugin, ftdetect) - [elixir](https://github.com/elixir-lang/vim-elixir) (syntax, indent, compiler, ftplugin, ftdetect) diff --git a/after/syntax/cpp.vim b/after/syntax/cpp.vim index 6eb3cfad..f6c866a6 100644 --- a/after/syntax/cpp.vim +++ b/after/syntax/cpp.vim @@ -65,7 +65,7 @@ syn cluster cppSTLgroup contains=cppSTLfunction,cppSTLfunctional,cppSTLconst " ----------------------------------------------------------------------------- " Standard library types and functions. " -" Mainly based on the excellent STL Syntax vim script by +" Mainly based on the excellent STL Syntax vim script by " Mizuchi <ytj000@gmail.com> " http://www.vim.org/scripts/script.php?script_id=4293 " which in turn is based on the scripts @@ -1324,6 +1324,31 @@ if !exists("cpp_no_cpp14") "dynarray syntax keyword cppSTLtype dynarray + "helper type traits types + syntax keyword cppSTLtype remove_cv_t + syntax keyword cppSTLtype remove_const_t + syntax keyword cppSTLtype remove_volatile_t + syntax keyword cppSTLtype add_cv_t + syntax keyword cppSTLtype add_const_t + syntax keyword cppSTLtype add_volatile_t + syntax keyword cppSTLtype remove_reference_t + syntax keyword cppSTLtype add_lvalue_reference_t + syntax keyword cppSTLtype add_rvalue_reference_t + syntax keyword cppSTLtype remove_pointer_t + syntax keyword cppSTLtype add_pointer_t + syntax keyword cppSTLtype remove_extent_t + syntax keyword cppSTLtype remove_all_extents_t + syntax keyword cppSTLtype make_signed_t + syntax keyword cppSTLtype make_unsigned_t + syntax keyword cppSTLtype aligned_storage_t + syntax keyword cppSTLtype aligned_union_t + syntax keyword cppSTLtype decay_t + syntax keyword cppSTLtype enable_if_t + syntax keyword cppSTLtype conditional_t + syntax keyword cppSTLtype common_type_t + syntax keyword cppSTLtype underlying_type_t + syntax keyword cppSTLtype result_of_t + "thread syntax keyword cppSTLtype shared_mutex syntax keyword cppSTLtype shared_lock @@ -1362,7 +1387,7 @@ if version >= 508 || !exists("did_cpp_syntax_inits") HiLink cppSTLenum Typedef HiLink cppSTLios Function HiLink cppSTLcast Statement " be consistent with official syntax - HiLink cppRawString String + HiLink cppRawString String HiLink cppRawDelimiter Delimiter delcommand HiLink endif diff --git a/autoload/dart.vim b/autoload/dart.vim new file mode 100644 index 00000000..65380926 --- /dev/null +++ b/autoload/dart.vim @@ -0,0 +1,70 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'dart') == -1 + + +function! s:error(text) abort + echohl Error + echomsg printf('[dart-vim-plugin] %s', a:text) + echohl None +endfunction + +function! s:cexpr(errorformat, joined_lines) abort + let temp_errorfomat = &errorformat + try + let &errorformat = a:errorformat + cexpr a:joined_lines + copen + finally + let &errorformat = temp_errorfomat + endtry +endfunction + +function! dart#fmt(q_args) abort + if executable('dartfmt') + let path = expand('%:p:gs:\:/:') + if filereadable(path) + let joined_lines = system(printf('dartfmt %s %s', a:q_args, shellescape(path))) + if 0 == v:shell_error + silent % delete _ + silent put=joined_lines + silent 1 delete _ + else + call s:cexpr('line %l\, column %c of %f: %m', joined_lines) + endif + else + call s:error(printf('cannot read a file: "%s"', path)) + endif + else + call s:error('cannot execute binary file: dartfmt') + endif +endfunction + +function! dart#analyzer(q_args) abort + if executable('dartanalyzer') + let path = expand('%:p:gs:\:/:') + if filereadable(path) + let joined_lines = system(printf('dartanalyzer %s %s', a:q_args, shellescape(path))) + call s:cexpr('%m (%f\, line %l\, col %c)', joined_lines) + else + call s:error(printf('cannot read a file: "%s"', path)) + endif + else + call s:error('cannot execute binary file: dartanalyzer') + endif +endfunction + +function! dart#tojs(q_args) abort + if executable('dart2js') + let path = expand('%:p:gs:\:/:') + if filereadable(path) + let joined_lines = system(printf('dart2js %s %s', a:q_args, shellescape(path))) + call s:cexpr('%m (%f\, line %l\, col %c)', joined_lines) + else + call s:error(printf('cannot read a file: "%s"', path)) + endif + else + call s:error('cannot execute binary file: dartanalyzer') + endif +endfunction + + +endif diff --git a/compiler/exunit.vim b/compiler/exunit.vim index dfb0ea3c..9fc921a5 100644 --- a/compiler/exunit.vim +++ b/compiler/exunit.vim @@ -16,9 +16,15 @@ endif let s:cpo_save = &cpo set cpo-=C - CompilerSet makeprg=mix\ test -CompilerSet errorformat=%A\ \ %.)\ %m(%.%#),%C\ \ \ \ \ **%m,%C\ \ \ \ \ \ \ %m,%Z\ \ \ \ \ at\ %f:%l,%-G%.%# +CompilerSet errorformat= + \%E\ \ %n)\ %m, + \%+G\ \ \ \ \ **\ %m, + \%+G\ \ \ \ \ stacktrace:, + \%C\ \ \ \ \ %f:%l, + \%+G\ \ \ \ \ \ \ (%\\w%\\+)\ %f:%l:\ %m, + \%+G\ \ \ \ \ \ \ %f:%l:\ %.%#, + \**\ (%\\w%\\+)\ %f:%l:\ %m let &cpo = s:cpo_save unlet s:cpo_save diff --git a/compiler/rspec.vim b/compiler/rspec.vim index 342b2a76..8c5a5fe3 100644 --- a/compiler/rspec.vim +++ b/compiler/rspec.vim @@ -27,6 +27,7 @@ CompilerSet errorformat= \%-Z\ \ \ \ \ %\\+\#\ %f:%l:%.%#, \%E\ \ %\\d%\\+)%.%#, \%C\ \ \ \ \ %m, + \%C%\\s%#, \%-G%.%# let &cpo = s:cpo_save diff --git a/ftplugin/git.vim b/ftplugin/git.vim index 853dfa10..444d7562 100644 --- a/ftplugin/git.vim +++ b/ftplugin/git.vim @@ -3,6 +3,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1 " Vim filetype plugin " Language: generic git output " Maintainer: Tim Pope <vimNOSPAM@tpope.org> +" Last Change: 2013 May 30 " Only do this when not done yet for this buffer if (exists("b:did_ftplugin")) diff --git a/ftplugin/gitcommit.vim b/ftplugin/gitcommit.vim index b031ef77..82602a12 100644 --- a/ftplugin/gitcommit.vim +++ b/ftplugin/gitcommit.vim @@ -3,7 +3,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1 " Vim filetype plugin " Language: git commit file " Maintainer: Tim Pope <vimNOSPAM@tpope.org> -" Last Change: 2012 April 7 +" Last Change: 2013 May 30 " Only do this when not done yet for this buffer if (exists("b:did_ftplugin")) diff --git a/indent/gitconfig.vim b/indent/gitconfig.vim index b6453d21..6fc4ba33 100644 --- a/indent/gitconfig.vim +++ b/indent/gitconfig.vim @@ -3,7 +3,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1 " Vim indent file " Language: git config file " Maintainer: Tim Pope <vimNOSPAM@tpope.org> -" Last Change: 2012 April 7 +" Last Change: 2013 May 30 if exists("b:did_indent") finish diff --git a/syntax/dart.vim b/syntax/dart.vim index ebfb7abd..e66829ac 100644 --- a/syntax/dart.vim +++ b/syntax/dart.vim @@ -46,7 +46,7 @@ syntax keyword dartTodo contained TODO FIXME XXX syntax region dartComment start="/\*" end="\*/" contains=dartTodo,dartDocLink,@Spell syntax match dartLineComment "//.*" contains=dartTodo,@Spell syntax match dartLineDocComment "///.*" contains=dartTodo,dartDocLink,@Spell -syntax region dartDocLink contained start=+\[+ end=+\]+ +syntax region dartDocLink oneline contained start=+\[+ end=+\]+ " Strings syntax region dartString start=+\z(["']\)+ end=+\z1+ contains=@Spell,dartInterpolation,dartSpecialChar diff --git a/syntax/elixir.vim b/syntax/elixir.vim index f2c5829b..b75340b3 100644 --- a/syntax/elixir.vim +++ b/syntax/elixir.vim @@ -14,12 +14,12 @@ syn sync minlines=2000 syn cluster elixirNotTop contains=@elixirRegexSpecial,@elixirStringContained,@elixirDeclaration,elixirTodo,elixirArguments -syn match elixirComment '#.*' contains=elixirTodo +syn match elixirComment '#.*' contains=elixirTodo,@Spell syn keyword elixirTodo FIXME NOTE TODO OPTIMIZE XXX HACK contained -syn keyword elixirKeyword case when cond for if unless try receive spawn send +syn keyword elixirKeyword case when cond for if unless try receive send syn keyword elixirKeyword exit raise throw after rescue catch else do end -syn keyword elixirKeyword quote unquote super +syn keyword elixirKeyword quote unquote super spawn spawn_link spawn_monitor " Functions used on guards syn keyword elixirKeyword contained is_atom is_binary is_bitstring is_boolean @@ -87,8 +87,8 @@ syn region elixirInterpolation matchgroup=elixirInterpolationDelimiter start="#{ syn region elixirDocStringStart matchgroup=elixirDocString start=+"""+ end=+$+ oneline contains=ALLBUT,@elixirNotTop syn region elixirDocStringStart matchgroup=elixirDocString start=+'''+ end=+$+ oneline contains=ALLBUT,@elixirNotTop -syn region elixirDocString start=+\z("""\)+ end=+^\s*\zs\z1+ contains=elixirDocStringStart,elixirTodo,elixirInterpolation fold keepend -syn region elixirDocString start=+\z('''\)+ end=+^\s*\zs\z1+ contains=elixirDocStringStart,elixirTodo,elixirInterpolation fold keepend +syn region elixirDocString start=+\z("""\)+ end=+^\s*\zs\z1+ contains=elixirDocStringStart,elixirTodo,elixirInterpolation,@Spell fold keepend +syn region elixirDocString start=+\z('''\)+ end=+^\s*\zs\z1+ contains=elixirDocStringStart,elixirTodo,elixirInterpolation,@Spell fold keepend 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\\]\)" diff --git a/syntax/gitcommit.vim b/syntax/gitcommit.vim index 88dc19ea..74477b27 100644 --- a/syntax/gitcommit.vim +++ b/syntax/gitcommit.vim @@ -4,7 +4,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1 " Language: git commit file " Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Filenames: *.git/COMMIT_EDITMSG -" Last Change: 2012 April 7 +" Last Change: 2013 May 30 if exists("b:current_syntax") finish diff --git a/syntax/gitrebase.vim b/syntax/gitrebase.vim index 025c9a3b..54bd3984 100644 --- a/syntax/gitrebase.vim +++ b/syntax/gitrebase.vim @@ -4,7 +4,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1 " Language: git rebase --interactive " Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Filenames: git-rebase-todo -" Last Change: 2015 November 21 +" Last Change: 2013 May 30 if exists("b:current_syntax") finish @@ -34,6 +34,7 @@ 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 gitrebaseSummary String hi def link gitrebaseComment Comment hi def link gitrebaseSquashError Error diff --git a/syntax/kotlin.vim b/syntax/kotlin.vim index e3d3f079..e8828417 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: 1 October 2015 +" Latest Revision: 7 December 2015 if exists("b:current_syntax") finish @@ -15,7 +15,7 @@ syn keyword ktStatement break continue return syn keyword ktConditional if else when syn keyword ktRepeat do for while syn keyword ktOperator as in is by -syn keyword ktKeyword get set out super this This where +syn keyword ktKeyword get set out super this where syn keyword ktException try catch finally throw syn keyword ktInclude import package diff --git a/syntax/perl.vim b/syntax/perl.vim index 6e6e6efe..d831fb02 100644 --- a/syntax/perl.vim +++ b/syntax/perl.vim @@ -244,18 +244,18 @@ syn region perlAnglesDQ start=+<+ end=+>+ extend contained contains=perlAnglesD " Simple version of searches and matches -syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\>\s*\z([^[:space:]'([{<#]\)+ end=+\z1[msixpodualgc]*+ contains=@perlInterpMatch keepend extend -syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m#+ end=+#[msixpodualgc]*+ contains=@perlInterpMatch keepend extend -syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*'+ end=+'[msixpodualgc]*+ contains=@perlInterpSQ keepend extend -syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*/+ end=+/[msixpodualgc]*+ contains=@perlInterpSlash keepend extend -syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*(+ end=+)[msixpodualgc]*+ contains=@perlInterpMatch,perlParensDQ keepend extend -syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*{+ end=+}[msixpodualgc]*+ contains=@perlInterpMatch,perlBracesDQ extend -syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*<+ end=+>[msixpodualgc]*+ contains=@perlInterpMatch,perlAnglesDQ keepend extend -syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*\[+ end=+\][msixpodualgc]*+ contains=@perlInterpMatch,perlBracketsDQ keepend extend +syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\>\s*\z([^[:space:]'([{<#]\)+ end=+\z1[msixpodualgcn]*+ contains=@perlInterpMatch keepend extend +syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m#+ end=+#[msixpodualgcn]*+ contains=@perlInterpMatch keepend extend +syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*'+ end=+'[msixpodualgcn]*+ contains=@perlInterpSQ keepend extend +syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*/+ end=+/[msixpodualgcn]*+ contains=@perlInterpSlash keepend extend +syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*(+ end=+)[msixpodualgcn]*+ contains=@perlInterpMatch,perlParensDQ keepend extend +syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*{+ end=+}[msixpodualgcn]*+ contains=@perlInterpMatch,perlBracesDQ extend +syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*<+ end=+>[msixpodualgcn]*+ contains=@perlInterpMatch,perlAnglesDQ keepend extend +syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*\[+ end=+\][msixpodualgcn]*+ contains=@perlInterpMatch,perlBracketsDQ keepend extend " Below some hacks to recognise the // variant. This is virtually impossible to catch in all " cases as the / is used in so many other ways, but these should be the most obvious ones. -syn region perlMatch matchgroup=perlMatchStartEnd start="\%([$@%&*]\@<!\%(\<split\|\<while\|\<if\|\<unless\|\.\.\|[-+*!~(\[{=]\)\s*\)\@<=/\%(/=\)\@!" start=+^/\%(/=\)\@!+ start=+\s\@<=/\%(/=\)\@![^[:space:][:digit:]$@%=]\@=\%(/\_s*\%([([{$@%&*[:digit:]"'`]\|\_s\w\|[[:upper:]_abd-fhjklnqrt-wyz]\)\)\@!+ skip=+\\/+ end=+/[msixpodualgc]*+ contains=@perlInterpSlash extend +syn region perlMatch matchgroup=perlMatchStartEnd start="\%([$@%&*]\@<!\%(\<split\|\<while\|\<if\|\<unless\|\.\.\|[-+*!~(\[{=]\)\s*\)\@<=/\%(/=\)\@!" start=+^/\%(/=\)\@!+ start=+\s\@<=/\%(/=\)\@![^[:space:][:digit:]$@%=]\@=\%(/\_s*\%([([{$@%&*[:digit:]"'`]\|\_s\w\|[[:upper:]_abd-fhjklnqrt-wyz]\)\)\@!+ skip=+\\/+ end=+/[msixpodualgcn]*+ contains=@perlInterpSlash extend " Substitutions @@ -268,12 +268,12 @@ syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*<+ end=+>+ contains=@perlInterpMatch,perlAnglesDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend extend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*\[+ end=+\]+ contains=@perlInterpMatch,perlBracketsDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend extend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*{+ end=+}+ contains=@perlInterpMatch,perlBracesDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend extend -syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+\z([^[:space:]'([{<]\)+ end=+\z1[msixpodualgcer]*+ keepend contained contains=@perlInterpDQ extend -syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+(+ end=+)[msixpodualgcer]*+ contained contains=@perlInterpDQ,perlParensDQ keepend extend -syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+\[+ end=+\][msixpodualgcer]*+ contained contains=@perlInterpDQ,perlBracketsDQ keepend extend -syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+{+ end=+}[msixpodualgcer]*+ contained contains=@perlInterpDQ,perlBracesDQ keepend extend extend -syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+<+ end=+>[msixpodualgcer]*+ contained contains=@perlInterpDQ,perlAnglesDQ keepend extend -syn region perlSubstitutionSQ matchgroup=perlMatchStartEnd start=+'+ end=+'[msixpodualgcer]*+ contained contains=@perlInterpSQ keepend extend +syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+\z([^[:space:]'([{<]\)+ end=+\z1[msixpodualgcern]*+ keepend contained contains=@perlInterpDQ extend +syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+(+ end=+)[msixpodualgcern]*+ contained contains=@perlInterpDQ,perlParensDQ keepend extend +syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+\[+ end=+\][msixpodualgcern]*+ contained contains=@perlInterpDQ,perlBracketsDQ keepend extend +syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+{+ end=+}[msixpodualgcern]*+ contained contains=@perlInterpDQ,perlBracesDQ keepend extend extend +syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+<+ end=+>[msixpodualgcern]*+ contained contains=@perlInterpDQ,perlAnglesDQ keepend extend +syn region perlSubstitutionSQ matchgroup=perlMatchStartEnd start=+'+ end=+'[msixpodualgcern]*+ contained contains=@perlInterpSQ keepend extend " Translations " perlMatch is the first part, perlTranslation* is the second, translator part. |