Commits

Shlomi Fish committed afb3e0e

Remove old Vim files.

  • Participants
  • Parent commits 5e55a59

Comments (0)

Files changed (4)

File shlomif-settings/vim-conf/dot-vim/indent/perl.vim

-" Vim indent file
-" Language:      Perl 5
-" Author:        Andy Lester <andy@petdance.com>
-" Homepage:      http://github.com/petdance/vim-perl
-" Bugs/requests: http://github.com/petdance/vim-perl/issues
-" Last Change:   August 11, 2010
-
-" Suggestions and improvements by :
-"   Aaron J. Sherman (use syntax for hints)
-"   Artem Chuprina (play nice with folding)
-
-" TODO things that are not or not properly indented (yet) :
-" - Continued statements
-"     print "foo",
-"       "bar";
-"     print "foo"
-"       if bar();
-" - Multiline regular expressions (m//x)
-" (The following probably needs modifying the perl syntax file)
-" - qw() lists
-" - Heredocs with terminators that don't match \I\i*
-
-" Only load this indent file when no other was loaded.
-if exists("b:did_indent")
-    finish
-endif
-let b:did_indent = 1
-
-" Is syntax highlighting active ?
-let b:indent_use_syntax = has("syntax")
-
-setlocal indentexpr=GetPerlIndent()
-setlocal indentkeys+=0=,0),0],0=or,0=and
-if !b:indent_use_syntax
-    setlocal indentkeys+=0=EO
-endif
-
-" Only define the function once.
-if exists("*GetPerlIndent")
-    finish
-endif
-
-let s:cpo_save = &cpo
-set cpo-=C
-
-function GetPerlIndent()
-
-    " Get the line to be indented
-    let cline = getline(v:lnum)
-
-    " Indent POD markers to column 0
-    if cline =~ '^\s*=\L\@!'
-        return 0
-    endif
-
-    " Don't reindent comments on first column
-    if cline =~ '^#.'
-        return 0
-    endif
-
-    " Get current syntax item at the line's first char
-    let csynid = ''
-    if b:indent_use_syntax
-        let csynid = synIDattr(synID(v:lnum,1,0),"name")
-    endif
-
-    " Don't reindent POD and heredocs
-    if csynid == "perlPOD" || csynid == "perlHereDoc" || csynid =~ "^pod"
-        return indent(v:lnum)
-    endif
-
-    " Indent end-of-heredocs markers to column 0
-    if b:indent_use_syntax
-        " Assumes that an end-of-heredoc marker matches \I\i* to avoid
-        " confusion with other types of strings
-        if csynid == "perlStringStartEnd" && cline =~ '^\I\i*$'
-            return 0
-        endif
-    else
-        " Without syntax hints, assume that end-of-heredocs markers begin with EO
-        if cline =~ '^\s*EO'
-            return 0
-        endif
-    endif
-
-    " Now get the indent of the previous perl line.
-
-    " Find a non-blank line above the current line.
-    let lnum = prevnonblank(v:lnum - 1)
-    " Hit the start of the file, use zero indent.
-    if lnum == 0
-        return 0
-    endif
-    let line = getline(lnum)
-    let ind = indent(lnum)
-    " Skip heredocs, POD, and comments on 1st column
-    if b:indent_use_syntax
-        let skippin = 2
-        while skippin
-            let synid = synIDattr(synID(lnum,1,0),"name")
-            if (synid == "perlStringStartEnd" && line =~ '^\I\i*$')
-                        \ || (skippin != 2 && synid == "perlPOD")
-                        \ || (skippin != 2 && synid == "perlHereDoc")
-                        \ || synid == "perlComment"
-                        \ || synid =~ "^pod"
-                let lnum = prevnonblank(lnum - 1)
-                if lnum == 0
-                    return 0
-                endif
-                let line = getline(lnum)
-                let ind = indent(lnum)
-                let skippin = 1
-            else
-                let skippin = 0
-            endif
-        endwhile
-    else
-        if line =~ "^EO"
-            let lnum = search("<<[\"']\\=EO", "bW")
-            let line = getline(lnum)
-            let ind = indent(lnum)
-        endif
-    endif
-
-    " Indent blocks enclosed by {}, (), or []
-    if b:indent_use_syntax
-        " Find a real opening brace
-        " NOTE: Unlike Perl character classes, we do NOT need to escape the
-        " closing brackets with a backslash.  Doing so just puts a backslash
-        " in the character class and causes sorrow.  Instead, put the closing
-        " bracket as the first character in the class.
-        let braceclass = '[][(){}]'
-        let bracepos = match(line, braceclass, matchend(line, '^\s*[])}]'))
-        while bracepos != -1
-            let synid = synIDattr(synID(lnum, bracepos + 1, 0), "name")
-            " If the brace is highlighted in one of those groups, indent it.
-            " 'perlHereDoc' is here only to handle the case '&foo(<<EOF)'.
-            if synid == ""
-                        \ || synid == "perlMatchStartEnd"
-                        \ || synid == "perlHereDoc"
-                        \ || synid =~ "^perlFiledescStatement"
-                        \ || synid =~ '^perl\(Sub\|Block\)Fold'
-                let brace = strpart(line, bracepos, 1)
-                if brace == '(' || brace == '{' || brace == '['
-                    let ind = ind + &sw
-                else
-                    let ind = ind - &sw
-                endif
-            endif
-            let bracepos = match(line, braceclass, bracepos + 1)
-        endwhile
-        let bracepos = matchend(cline, '^\s*[])}]')
-        if bracepos != -1
-            let synid = synIDattr(synID(v:lnum, bracepos, 0), "name")
-            if synid == ""
-                        \ || synid == "perlMatchStartEnd"
-                        \ || synid =~ '^perl\(Sub\|Block\)Fold'
-                let ind = ind - &sw
-            endif
-        endif
-    else
-        if line =~ '[{[(]\s*\(#[^])}]*\)\=$'
-            let ind = ind + &sw
-        endif
-        if cline =~ '^\s*[])}]'
-            let ind = ind - &sw
-        endif
-    endif
-
-    " Indent lines that begin with 'or' or 'and'
-    if cline =~ '^\s*\(or\|and\)\>'
-        if line !~ '^\s*\(or\|and\)\>'
-            let ind = ind + &sw
-        endif
-    elseif line =~ '^\s*\(or\|and\)\>'
-        let ind = ind - &sw
-    endif
-
-    return ind
-
-endfunction
-
-let &cpo = s:cpo_save
-unlet s:cpo_save
-
-" vim:ts=8:sts=4:sw=4:expandtab:ft=vim

File shlomif-settings/vim-conf/dot-vim/indent/pir.vim

-" Description:	imcc indenter
-" Author:	Andrew Rodland <arodland@entermail.net>
-" Last Change: 2004 Aug 3
-
-" As usual, we want to be alone
-if exists("b:did_indent")
-	finish
-endif
-let b:did_indent=1
-
-setlocal indentexpr=PIRIndent()
-setlocal indentkeys=o,O,*<Return>,<bs>,:,=.end,0#
-
-fun! InPOD(lnum)
-	return synIDattr(synID(a:lnum, 1, 1), "name") =~? '^myPod$\|^pod[A-Z]'
-endfun
-
-fun! PIRIndent()
-	let thisline = getline(v:lnum)
-
-	let POD_START = '^=[a-z]'
-
-	if thisline =~? POD_START
-		return 0
-	endif
-
-	
-	if InPOD(v:lnum)
-		return -1
-	endif
-
-	let LABEL_OR_COMMENT = '^\s*\k\+:\s*$\|^#'
-	if thisline =~? LABEL_OR_COMMENT
-		return 0
-	endif
-
-	let lnum=v:lnum
-	while lnum > 0
-		let lnum = prevnonblank(lnum-1)
-		let prevline = getline(lnum)
-		
-		if prevline !~? LABEL_OR_COMMENT
-			if !InPOD(lnum)
-				break
-			endif
-		endif
-	endwhile
-
-	if lnum < 1
-		return 0
-	endif
-
-	let ind = indent(lnum)
-	
-	let SUB = '^\s*\.pcc_sub\s\+\|^\s*\.sub\s\+'
-	let RETURNBLOCK = '\s*\.pcc_begin_return\s*$'
-	let END = '^\s*\.end\s*$\|^\s*\.pcc_end_return\s*$'
-
-	if prevline =~? SUB
-		let ind = ind + &sw
-	endif
-
-	if prevline =~? RETURNBLOCK
-		let ind = ind + &sw
-	endif
-
-	if thisline =~? END
-		let ind = ind - &sw
-	endif
-
-	return ind
-
-endfun
-
-

File shlomif-settings/vim-conf/dot-vim/syntax/perl.vim

-" Vim syntax file
-" Language:      Perl 5
-" Maintainer:    Andy Lester <andy@petdance.com>
-" Homepage:      http://github.com/petdance/vim-perl/tree/master
-" Bugs/requests: http://github.com/petdance/vim-perl/issues
-" Last Change:   2010-08-10
-" Contributors:  Andy Lester <andy@petdance.com>
-"                Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
-"                Lukas Mai <l.mai.web.de>
-"                Nick Hibma <nick@van-laarhoven.org>
-"                Sonia Heimann <niania@netsurf.org>
-"                and many others.
-"
-" Please download most recent version first before mailing
-" any comments.
-"
-" The following parameters are available for tuning the
-" perl syntax highlighting, with defaults given:
-"
-" unlet perl_include_pod
-" unlet perl_no_scope_in_variables
-" unlet perl_no_extended_vars
-" unlet perl_string_as_statement
-" unlet perl_no_sync_on_sub
-" unlet perl_no_sync_on_global_var
-" let perl_sync_dist = 100
-" unlet perl_fold
-" unlet perl_fold_blocks
-" let perl_nofold_packages = 1
-" let perl_nofold_subs = 1
-
-if exists("b:current_syntax")
-  finish
-endif
-
-
-" POD starts with ^=<word> and ends with ^=cut
-
-if exists("perl_include_pod")
-  " Include a while extra syntax file
-  syn include @Pod syntax/pod.vim
-  unlet b:current_syntax
-  if exists("perl_fold")
-    syn region perlPOD start="^=[a-z]" end="^=cut" contains=@Pod,@Spell,perlTodo keepend fold
-    syn region perlPOD start="^=cut" end="^=cut" contains=perlTodo keepend fold
-  else
-    syn region perlPOD start="^=[a-z]" end="^=cut" contains=@Pod,@Spell,perlTodo keepend
-    syn region perlPOD start="^=cut" end="^=cut" contains=perlTodo keepend
-  endif
-else
-  " Use only the bare minimum of rules
-  if exists("perl_fold")
-    syn region perlPOD start="^=[a-z]" end="^=cut" fold
-  else
-    syn region perlPOD start="^=[a-z]" end="^=cut"
-  endif
-endif
-
-
-syn cluster perlTop		contains=TOP
-syn region  perlGenericBlock	matchgroup=perlGenericBlock start="{" end="}" contained transparent
-
-
-" All keywords
-"
-syn match perlConditional		"\<\%(if\|elsif\|unless\|given\|when\|default\)\>"
-syn match perlConditional		"\<else\>" nextgroup=perlElseIfError skipwhite skipnl skipempty
-syn match perlRepeat			"\<\%(while\|for\%(each\)\=\|do\|until\|continue\)\>"
-syn match perlOperator			"\<\%(defined\|undef\|eq\|ne\|[gl][et]\|cmp\|not\|and\|or\|xor\|not\|bless\|ref\|do\)\>"
-syn match perlControl			"\<\%(BEGIN\|CHECK\|INIT\|END\|UNITCHECK\)\>"
-
-syn match perlStatementStorage		"\<\%(my\|our\|local\|state\)\>"
-syn match perlStatementControl		"\<\%(return\|last\|next\|redo\|goto\|break\)\>"
-syn match perlStatementScalar		"\<\%(chom\=p\|chr\|crypt\|r\=index\|lc\%(first\)\=\|length\|ord\|pack\|sprintf\|substr\|uc\%(first\)\=\)\>"
-syn match perlStatementRegexp		"\<\%(pos\|quotemeta\|split\|study\)\>"
-syn match perlStatementNumeric		"\<\%(abs\|atan2\|cos\|exp\|hex\|int\|log\|oct\|rand\|sin\|sqrt\|srand\)\>"
-syn match perlStatementList		"\<\%(splice\|unshift\|shift\|push\|pop\|join\|reverse\|grep\|map\|sort\|unpack\)\>"
-syn match perlStatementHash		"\<\%(delete\|each\|exists\|keys\|values\)\>"
-syn match perlStatementIOfunc		"\<\%(syscall\|dbmopen\|dbmclose\)\>"
-syn match perlStatementFiledesc		"\<\%(binmode\|close\%(dir\)\=\|eof\|fileno\|getc\|lstat\|printf\=\|read\%(dir\|line\|pipe\)\|rewinddir\|say\|select\|stat\|tell\%(dir\)\=\|write\)\>" nextgroup=perlFiledescStatementNocomma skipwhite
-syn match perlStatementFiledesc		"\<\%(fcntl\|flock\|ioctl\|open\%(dir\)\=\|read\|seek\%(dir\)\=\|sys\%(open\|read\|seek\|write\)\|truncate\)\>" nextgroup=perlFiledescStatementComma skipwhite
-syn match perlStatementVector		"\<vec\>"
-syn match perlStatementFiles		"\<\%(ch\%(dir\|mod\|own\|root\)\|glob\|link\|mkdir\|readlink\|rename\|rmdir\|symlink\|umask\|unlink\|utime\)\>"
-syn match perlStatementFiles		"-[rwxoRWXOezsfdlpSbctugkTBMAC]\>"
-syn match perlStatementFlow		"\<\%(caller\|die\|dump\|eval\|exit\|wantarray\)\>"
-syn match perlStatementInclude		"\<require\>"
-syn match perlStatementInclude		"\<\%(use\|no\)\s\+\%(\%(attributes\|attrs\|autouse\|parent\|base\|big\%(int\|num\|rat\)\|blib\|bytes\|charnames\|constant\|diagnostics\|encoding\%(::warnings\)\=\|feature\|fields\|filetest\|if\|integer\|less\|lib\|locale\|mro\|open\|ops\|overload\|re\|sigtrap\|sort\|strict\|subs\|threads\%(::shared\)\=\|utf8\|vars\|version\|vmsish\|warnings\%(::register\)\=\)\>\)\="
-syn match perlStatementProc		"\<\%(alarm\|exec\|fork\|get\%(pgrp\|ppid\|priority\)\|kill\|pipe\|set\%(pgrp\|priority\)\|sleep\|system\|times\|wait\%(pid\)\=\)\>"
-syn match perlStatementSocket		"\<\%(acept\|bind\|connect\|get\%(peername\|sock\%(name\|opt\)\)\|listen\|recv\|send\|setsockopt\|shutdown\|socket\%(pair\)\=\)\>"
-syn match perlStatementIPC		"\<\%(msg\%(ctl\|get\|rcv\|snd\)\|sem\%(ctl\|get\|op\)\|shm\%(ctl\|get\|read\|write\)\)\>"
-syn match perlStatementNetwork		"\<\%(\%(end\|[gs]et\)\%(host\|net\|proto\|serv\)ent\|get\%(\%(host\|net\)by\%(addr\|name\)\|protoby\%(name\|number\)\|servby\%(name\|port\)\)\)\>"
-syn match perlStatementPword		"\<\%(get\%(pw\%(uid\|nam\)\|gr\%(gid\|nam\)\|login\)\)\|\%(end\|[gs]et\)\%(pw\|gr\)ent\>"
-syn match perlStatementTime		"\<\%(gmtime\|localtime\|time\)\>"
-
-syn match perlStatementMisc		"\<\%(warn\|formline\|reset\|scalar\|prototype\|lock\|tied\=\|untie\)\>"
-
-syn keyword perlTodo			TODO TBD FIXME XXX NOTE contained
-
-syn region perlStatementIndirObjWrap   matchgroup=perlStatementIndirObj start="\<\%(map\|grep\|sort\|printf\=\|say\|system\|exec\)\>\s*{" end="}" contains=@perlTop,perlGenericBlock
-
-syn match perlLabel      "^\s*\h\w*\s*::\@!\%(\<v\d\+\s*:\)\@<!"
-
-" Perl Identifiers.
-"
-" Should be cleaned up to better handle identifiers in particular situations
-" (in hash keys for example)
-"
-" Plain identifiers: $foo, @foo, $#foo, %foo, &foo and dereferences $$foo, @$foo, etc.
-" We do not process complex things such as @{${"foo"}}. Too complicated, and
-" too slow. And what is after the -> is *not* considered as part of the
-" variable - there again, too complicated and too slow.
-
-" Special variables first ($^A, ...) and ($|, $', ...)
-syn match  perlVarPlain		 "$^[ACDEFHILMNOPRSTVWX]\="
-syn match  perlVarPlain		 "$[\\\"\[\]'&`+*.,;=%~!?@#$<>(-]"
-syn match  perlVarPlain		 "%+"
-syn match  perlVarPlain		 "$\%(0\|[1-9]\d*\)"
-" Same as above, but avoids confusion in $::foo (equivalent to $main::foo)
-syn match  perlVarPlain		 "$::\@!"
-" These variables are not recognized within matches.
-syn match  perlVarNotInMatches	 "$[|)]"
-" This variable is not recognized within matches delimited by m//.
-syn match  perlVarSlash		 "$/"
-
-" And plain identifiers
-syn match  perlPackageRef	 "[$@#%*&]\%(\%(::\|'\)\=\I\i*\%(\%(::\|'\)\I\i*\)*\)\=\%(::\|'\)\I"ms=s+1,me=e-1 contained
-
-" To not highlight packages in variables as a scope reference - i.e. in
-" $pack::var, pack:: is a scope, just set "perl_no_scope_in_variables"
-" If you don't want complex things like @{${"foo"}} to be processed,
-" just set the variable "perl_no_extended_vars"...
-
-if !exists("perl_no_scope_in_variables")
-  syn match  perlVarPlain       "\%([@$]\|\$#\)\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
-  syn match  perlVarPlain2                   "%\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef
-  syn match  perlFunctionName                "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
-else
-  syn match  perlVarPlain       "\%([@$]\|\$#\)\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
-  syn match  perlVarPlain2                   "%\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)"
-  syn match  perlFunctionName                "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
-endif
-
-if !exists("perl_no_extended_vars")
-  syn cluster perlExpr		contains=perlStatementIndirObjWrap,perlStatementScalar,perlStatementRegexp,perlStatementNumeric,perlStatementList,perlStatementHash,perlStatementFiles,perlStatementTime,perlStatementMisc,perlVarPlain,perlVarPlain2,perlVarNotInMatches,perlVarSlash,perlVarBlock,perlVarBlock2,perlShellCommand,perlFloat,perlNumber,perlStringUnexpanded,perlString,perlQQ,perlArrow,perlGenericBlock
-  syn region perlArrow		matchgroup=perlArrow start="->\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained
-  syn region perlArrow		matchgroup=perlArrow start="->\s*\[" end="\]" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained
-  syn region perlArrow		matchgroup=perlArrow start="->\s*{" end="}" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained
-  syn match  perlArrow		"->\s*{\s*\I\i*\s*}" contains=perlVarSimpleMemberName nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained
-  syn region perlArrow		matchgroup=perlArrow start="->\s*\$*\I\i*\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained
-  syn region perlVarBlock	matchgroup=perlVarPlain start="\%($#\|[$@]\)\$*{" skip="\\}" end="}" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
-  syn region perlVarBlock2	matchgroup=perlVarPlain start="[%&*]\$*{" skip="\\}" end="}" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
-  syn match  perlVarPlain2	"[%&*]\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
-  syn match  perlVarPlain	"\%(\$#\|[@$]\)\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
-  syn region perlVarMember	matchgroup=perlVarPlain start="\%(->\)\={" skip="\\}" end="}" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
-  syn match  perlVarSimpleMember	"\%(->\)\={\s*\I\i*\s*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contains=perlVarSimpleMemberName contained
-  syn match  perlVarSimpleMemberName	"\I\i*" contained
-  syn region perlVarMember	matchgroup=perlVarPlain start="\%(->\)\=\[" skip="\\]" end="]" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
-  syn match perlPackageConst	"__PACKAGE__" nextgroup=perlMethod
-  syn match  perlMethod		"->\$*\I\i*" contained nextgroup=perlVarSimpleMember,perlVarMember,perlMethod
-endif
-
-" File Descriptors
-syn match  perlFiledescRead	"<\h\w*>"
-
-syn match  perlFiledescStatementComma	"(\=\s*\u\w*\s*,"me=e-1 transparent contained contains=perlFiledescStatement
-syn match  perlFiledescStatementNocomma "(\=\s*\u\w*\s*[^, \t]"me=e-1 transparent contained contains=perlFiledescStatement
-
-syn match  perlFiledescStatement	"\u\w*" contained
-
-" Special characters in strings and matches
-syn match  perlSpecialString	"\\\%(\o\{1,3}\|x\%({\x\+}\|\x\{1,2}\)\|c.\|[^cx]\)" contained extend
-syn match  perlSpecialStringU2	"\\." extend contained transparent contains=NONE
-syn match  perlSpecialStringU	"\\\\" contained
-syn match  perlSpecialMatch	"\\[1-9]" contained extend
-syn match  perlSpecialMatch	"\\g\%(\d\+\|{\%(-\=\d\+\|\h\w*\)}\)" contained
-syn match  perlSpecialMatch	"\\k\%(<\h\w*>\|'\h\w*'\)" contained
-syn match  perlSpecialMatch	"{\d\+\%(,\%(\d\+\)\=\)\=}" contained
-syn match  perlSpecialMatch	"\[[]-]\=[^\[\]]*[]-]\=\]" contained
-syn match  perlSpecialMatch	"[+*()?.]" contained
-syn match  perlSpecialMatch	"(?[#:=!]" contained
-syn match  perlSpecialMatch	"(?[impsx]*\%(-[imsx]\+\)\=)" contained
-syn match  perlSpecialMatch	"(?\%([-+]\=\d\+\|R\))" contained
-syn match  perlSpecialMatch	"(?\%(&\|P[>=]\)\h\w*)" contained
-syn match  perlSpecialMatch	"(\*\%(\%(PRUNE\|SKIP\|THEN\)\%(:[^)]*\)\=\|\%(MARK\|\):[^)]*\|COMMIT\|F\%(AIL\)\=\|ACCEPT\))" contained
-
-" Possible errors
-"
-" Highlight lines with only whitespace (only in blank delimited here documents) as errors
-syn match  perlNotEmptyLine	"^\s\+$" contained
-" Highlight "} else if (...) {", it should be "} else { if (...) { " or "} elsif (...) {"
-syn match perlElseIfError	"\s\+if" contained
-syn keyword perlElseIfError	elseif
-
-" Variable interpolation
-"
-" These items are interpolated inside "" strings and similar constructs.
-syn cluster perlInterpDQ	contains=perlSpecialString,perlVarPlain,perlVarNotInMatches,perlVarSlash,perlVarBlock
-" These items are interpolated inside '' strings and similar constructs.
-syn cluster perlInterpSQ	contains=perlSpecialStringU,perlSpecialStringU2
-" These items are interpolated inside m// matches and s/// substitutions.
-syn cluster perlInterpSlash	contains=perlSpecialString,perlSpecialMatch,perlVarPlain,perlVarBlock
-" These items are interpolated inside m## matches and s### substitutions.
-syn cluster perlInterpMatch	contains=@perlInterpSlash,perlVarSlash
-
-" Shell commands
-syn region  perlShellCommand	matchgroup=perlMatchStartEnd start="`" end="`" contains=@perlInterpDQ keepend
-
-" Constants
-"
-" Numbers
-syn match  perlNumber	"\<\%(0\%(x\x[[:xdigit:]_]*\|b[01][01_]*\|\o[0-7_]*\|\)\|[1-9][[:digit:]_]*\)\>"
-syn match  perlFloat	"\<\d[[:digit:]_]*[eE][\-+]\=\d\+"
-syn match  perlFloat	"\<\d[[:digit:]_]*\.[[:digit:]_]*\%([eE][\-+]\=\d\+\)\="
-syn match  perlFloat	"\.[[:digit:]_]\+\%([eE][\-+]\=\d\+\)\="
-
-syn match  perlString	"\<\%(v\d\+\%(\.\d\+\)*\|\d\+\%(\.\d\+\)\{2,}\)\>" contains=perlVStringV
-syn match  perlVStringV	"\<v" contained
-
-
-syn region perlParensSQ		start=+(+ end=+)+ extend contained transparent contains=perlParensSQ,@perlInterpSQ keepend
-syn region perlBracketsSQ	start=+\[+ end=+\]+ extend contained transparent contains=perlBracketsSQ,@perlInterpSQ keepend
-syn region perlBracesSQ		start=+{+ end=+}+ extend contained transparent contains=perlBracesSQ,@perlInterpSQ keepend
-syn region perlAnglesSQ		start=+<+ end=+>+ extend contained transparent contains=perlAnglesSQ,@perlInterpSQ keepend
-
-syn region perlParensDQ		start=+(+ end=+)+ extend contained transparent contains=perlParensDQ,@perlInterpDQ keepend
-syn region perlBracketsDQ	start=+\[+ end=+\]+ extend contained transparent contains=perlBracketsDQ,@perlInterpDQ keepend
-syn region perlBracesDQ		start=+{+ end=+}+ extend contained transparent contains=perlBracesDQ,@perlInterpDQ keepend
-syn region perlAnglesDQ		start=+<+ end=+>+ extend contained transparent contains=perlAnglesDQ,@perlInterpDQ keepend
-
-
-" Simple version of searches and matches
-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\>\s*\z([^[:space:]'([{<#]\)+ end=+\z1[cgimopsx]*+ contains=@perlInterpMatch keepend
-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m#+ end=+#[cgimopsx]*+ contains=@perlInterpMatch keepend
-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*'+ end=+'[cgimopsx]*+ contains=@perlInterpSQ keepend
-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*/+ end=+/[cgimopsx]*+ contains=@perlInterpSlash keepend
-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*(+ end=+)[cgimopsx]*+ contains=@perlInterpMatch,perlParensDQ keepend
-
-" A special case for m{}, m<> and m[] which allows for comments and extra whitespace in the pattern
-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*{+ end=+}[cgimopsx]*+ contains=@perlInterpMatch,perlComment,perlBracesDQ keepend
-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*<+ end=+>[cgimopsx]*+ contains=@perlInterpMatch,perlAnglesDQ keepend
-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*\[+ end=+\][cgimopsx]*+ contains=@perlInterpMatch,perlComment,perlBracketsDQ keepend
-
-" 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=+/[cgimopsx]*+ contains=@perlInterpSlash
-
-
-" Substitutions
-" perlMatch is the first part, perlSubstitution* is the substitution part
-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\>\s*\z([^[:space:]'([{<#]\)+ end=+\z1+me=e-1 contains=@perlInterpMatch nextgroup=perlSubstitutionGQQ keepend
-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*'+  end=+'+me=e-1 contains=@perlInterpSQ nextgroup=perlSubstitutionSQ keepend
-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*/+  end=+/+me=e-1 contains=@perlInterpSlash nextgroup=perlSubstitutionGQQ keepend
-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s#+  end=+#+me=e-1 contains=@perlInterpMatch nextgroup=perlSubstitutionGQQ keepend
-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*(+ end=+)+ contains=@perlInterpMatch,perlParensDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend
-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*<+ end=+>+ contains=@perlInterpMatch,perlAnglesDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend
-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*\[+ end=+\]+ contains=@perlInterpMatch,perlBracketsDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend
-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*{+ end=+}+ contains=@perlInterpMatch,perlBracesDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend
-syn region perlSubstitutionGQQ		matchgroup=perlMatchStartEnd start=+\z([^[:space:]'([{<]\)+ end=+\z1[ecgimopsx]*+ keepend contained contains=@perlInterpDQ
-syn region perlSubstitutionGQQ		matchgroup=perlMatchStartEnd start=+(+ end=+)[ecgimopsx]*+ contained contains=@perlInterpDQ,perlParensDQ keepend
-syn region perlSubstitutionGQQ		matchgroup=perlMatchStartEnd start=+\[+ end=+\][ecgimopsx]*+ contained contains=@perlInterpDQ,perlBracketsDQ keepend
-syn region perlSubstitutionGQQ		matchgroup=perlMatchStartEnd start=+{+ end=+}[ecgimopsx]*+ contained contains=@perlInterpDQ,perlBracesDQ keepend
-syn region perlSubstitutionGQQ		matchgroup=perlMatchStartEnd start=+<+ end=+>[ecgimopsx]*+ contained contains=@perlInterpDQ,perlAnglesDQ keepend
-syn region perlSubstitutionSQ		matchgroup=perlMatchStartEnd start=+'+  end=+'[ecgimopsx]*+ contained contains=@perlInterpSQ keepend 
-
-" Translations
-" perlMatch is the first part, perlTranslation* is the second, translator part.
-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)\>\s*\z([^[:space:]([{<#]\)+ end=+\z1+me=e-1 contains=@perlInterpSQ nextgroup=perlTranslationGQ
-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)#+ end=+#+me=e-1 contains=@perlInterpSQ nextgroup=perlTranslationGQ
-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)\s*\[+ end=+\]+ contains=@perlInterpSQ,perlBracketsSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl
-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)\s*(+ end=+)+ contains=@perlInterpSQ,perlParensSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl
-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)\s*<+ end=+>+ contains=@perlInterpSQ,perlAnglesSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl
-syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)\s*{+ end=+}+ contains=@perlInterpSQ,perlBracesSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl
-syn region perlTranslationGQ		matchgroup=perlMatchStartEnd start=+\z([^[:space:]([{<]\)+ end=+\z1[cds]*+ contained
-syn region perlTranslationGQ		matchgroup=perlMatchStartEnd start=+(+ end=+)[cds]*+ contains=perlParensSQ contained
-syn region perlTranslationGQ		matchgroup=perlMatchStartEnd start=+\[+ end=+\][cds]*+ contains=perlBracketsSQ contained
-syn region perlTranslationGQ		matchgroup=perlMatchStartEnd start=+{+ end=+}[cds]*+ contains=perlBracesSQ contained
-syn region perlTranslationGQ		matchgroup=perlMatchStartEnd start=+<+ end=+>[cds]*+ contains=perlAnglesSQ contained
-
-
-" Strings and q, qq, qw and qr expressions
-
-syn region perlStringUnexpanded	matchgroup=perlStringStartEnd start="'" end="'" contains=@perlInterpSQ keepend
-syn region perlString		matchgroup=perlStringStartEnd start=+"+  end=+"+ contains=@perlInterpDQ keepend
-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\>\s*\z([^[:space:]#([{<]\)+ end=+\z1+ contains=@perlInterpSQ keepend
-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q#+ end=+#+ contains=@perlInterpSQ keepend
-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\s*(+ end=+)+ contains=@perlInterpSQ,perlParensSQ keepend
-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\s*\[+ end=+\]+ contains=@perlInterpSQ,perlBracketsSQ keepend
-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\s*{+ end=+}+ contains=@perlInterpSQ,perlBracesSQ keepend
-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\s*<+ end=+>+ contains=@perlInterpSQ,perlAnglesSQ keepend
-
-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]\>\s*\z([^[:space:]#([{<]\)+ end=+\z1+ contains=@perlInterpDQ keepend
-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]#+ end=+#+ contains=@perlInterpDQ keepend
-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]\s*(+ end=+)+ contains=@perlInterpDQ,perlParensDQ keepend
-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]\s*\[+ end=+\]+ contains=@perlInterpDQ,perlBracketsDQ keepend
-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]\s*{+ end=+}+ contains=@perlInterpDQ,perlBracesDQ keepend
-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]\s*<+ end=+>+ contains=@perlInterpDQ,perlAnglesDQ keepend
-
-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*\z([^[:space:]#([{<]\)+  end=+\z1+ contains=@perlInterpSQ keepend
-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw#+  end=+#+ contains=@perlInterpSQ keepend
-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*(+  end=+)+ contains=@perlInterpSQ,perlParensSQ keepend
-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*\[+  end=+\]+ contains=@perlInterpSQ,perlBracketsSQ keepend
-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*{+  end=+}+ contains=@perlInterpSQ,perlBracesSQ keepend
-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*<+  end=+>+ contains=@perlInterpSQ,perlAnglesSQ keepend
-
-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\>\s*\z([^[:space:]#([{<'/]\)+  end=+\z1[imosx]*+ contains=@perlInterpMatch keepend
-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*/+  end=+/[imosx]*+ contains=@perlInterpSlash keepend
-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr#+  end=+#[imosx]*+ contains=@perlInterpMatch keepend
-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*'+  end=+'[imosx]*+ contains=@perlInterpSQ keepend
-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*(+  end=+)[imosx]*+ contains=@perlInterpMatch,perlParensDQ keepend
-
-" A special case for qr{}, qr<> and qr[] which allows for comments and extra whitespace in the pattern
-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*{+  end=+}[imosx]*+ contains=@perlInterpMatch,perlBracesDQ,perlComment keepend
-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*<+  end=+>[imosx]*+ contains=@perlInterpMatch,perlAnglesDQ,perlComment keepend
-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*\[+  end=+\][imosx]*+ contains=@perlInterpMatch,perlBracketsDQ,perlComment keepend
-
-" Constructs such as print <<EOF [...] EOF, 'here' documents
-"
-" XXX Any statements after the identifier are in perlString colour (i.e.
-" 'if $a' in 'print <<EOF if $a'). This is almost impossible to get right it
-" seems due to the 'auto-extending nature' of regions.
-if exists("perl_fold")
-  syn region perlHereDoc	matchgroup=perlStringStartEnd start=+<<\z(\I\i*\).*+    end=+^\z1$+ contains=@perlInterpDQ fold
-  syn region perlHereDoc	matchgroup=perlStringStartEnd start=+<<\s*"\z([^\\"]*\%(\\.[^\\"]*\)*\)"+ end=+^\z1$+ contains=@perlInterpDQ fold
-  syn region perlHereDoc	matchgroup=perlStringStartEnd start=+<<\s*'\z([^\\']*\%(\\.[^\\']*\)*\)'+ end=+^\z1$+ contains=@perlInterpSQ fold
-  syn region perlHereDoc	matchgroup=perlStringStartEnd start=+<<\s*""+           end=+^$+    contains=@perlInterpDQ,perlNotEmptyLine fold
-  syn region perlHereDoc	matchgroup=perlStringStartEnd start=+<<\s*''+           end=+^$+    contains=@perlInterpSQ,perlNotEmptyLine fold
-  syn region perlAutoload	matchgroup=perlStringStartEnd start=+<<\s*\(['"]\=\)\z(END_\%(SUB\|OF_FUNC\|OF_AUTOLOAD\)\)\1+ end=+^\z1$+ contains=ALL fold
-else
-  syn region perlHereDoc	matchgroup=perlStringStartEnd start=+<<\z(\I\i*\)+    end=+^\z1$+ contains=@perlInterpDQ
-  syn region perlHereDoc	matchgroup=perlStringStartEnd start=+<<\s*"\z([^\\"]*\%(\\.[^\\"]*\)*\)"+ end=+^\z1$+ contains=@perlInterpDQ
-  syn region perlHereDoc	matchgroup=perlStringStartEnd start=+<<\s*'\z([^\\']*\%(\\.[^\\']*\)*\)'+ end=+^\z1$+ contains=@perlInterpSQ
-  syn region perlHereDoc	matchgroup=perlStringStartEnd start=+<<\s*""+           end=+^$+    contains=@perlInterpDQ,perlNotEmptyLine
-  syn region perlHereDoc	matchgroup=perlStringStartEnd start=+<<\s*''+           end=+^$+    contains=@perlInterpSQ,perlNotEmptyLine
-  syn region perlAutoload	matchgroup=perlStringStartEnd start=+<<\s*\(['"]\=\)\z(END_\%(SUB\|OF_FUNC\|OF_AUTOLOAD\)\)\1+ end=+^\z1$+ contains=ALL
-endif
-
-
-" Class declarations
-"
-syn match   perlPackageDecl		"\<package\s\+\%(\h\|::\)\%(\w\|::\)*" contains=perlStatementPackage
-syn keyword perlStatementPackage	package contained
-
-" Functions
-"       sub [name] [(prototype)] {
-"
-syn match perlSubError "[^[:space:];{#]" contained
-if v:version == 701 && !has('patch221')  " XXX I hope that's the right one
-    syn match perlSubAttributes ":" contained
-else
-    syn match perlSubAttributesCont "\h\w*\_s*\%(:\_s*\)\=" nextgroup=@perlSubAttrMaybe contained
-    syn region perlSubAttributesCont matchgroup=perlSubAttributesCont start="\h\w*(" end=")\_s*\%(:\_s*\)\=" nextgroup=@perlSubAttrMaybe contained contains=@perlInterpSQ,perlParensSQ
-    syn cluster perlSubAttrMaybe contains=perlSubAttributesCont,perlSubError
-    syn match perlSubAttributes "" contained nextgroup=perlSubError
-    syn match perlSubAttributes ":\_s*" contained nextgroup=@perlSubAttrMaybe
-endif
-syn match perlSubPrototypeError "(\%(\_s*\%(\%(\\\%([$@%&*]\|\[[$@%&*]\+\]\)\|[$&*]\|[@%]\%(\_s*)\)\@=\|;\%(\_s*[)$@%&*\\]\)\@=\|_\%(\_s*[);]\)\@=\)\_s*\)*\)\@>\zs\_[^)]\+" contained
-syn match perlSubPrototype +(\_[^)]*)\_s*\|+ nextgroup=perlSubAttributes contained contains=perlSubPrototypeError
-syn match perlSubName +\%(\h\|::\|'\w\)\%(\w\|::\|'\w\)*\_s*\|+ contained nextgroup=perlSubPrototype
-
-syn match perlFunction +\<sub\>\_s*+ nextgroup=perlSubName
-
-if !exists("perl_no_scope_in_variables")
-   syn match  perlFunctionPRef	"\h\w*::" contained
-   syn match  perlFunctionName	"\h\w*[^:]" contained
-else
-   syn match  perlFunctionName	"\h[[:alnum:]_:]*" contained
-endif
-
-" The => operator forces a bareword to the left of it to be interpreted as
-" a string
-syn match  perlString "\I\@<!-\?\I\i*\%(\s*=>\)\@="
-
-" All other # are comments, except ^#!
-syn match  perlComment		"#.*" contains=perlTodo,@Spell
-syn match  perlSharpBang	"^#!.*"
-
-" Formats
-syn region perlFormat		matchgroup=perlStatementIOFunc start="^\s*\<format\s\+\k\+\s*=\s*$"rs=s+6 end="^\s*\.\s*$" contains=perlFormatName,perlFormatField,perlVarPlain,perlVarPlain2
-syn match  perlFormatName	"format\s\+\k\+\s*="lc=7,me=e-1 contained
-syn match  perlFormatField	"[@^][|<>~]\+\%(\.\.\.\)\=" contained
-syn match  perlFormatField	"[@^]#[#.]*" contained
-syn match  perlFormatField	"@\*" contained
-syn match  perlFormatField	"@[^A-Za-z_|<>~#*]"me=e-1 contained
-syn match  perlFormatField	"@$" contained
-
-" __END__ and __DATA__ clauses
-if exists("perl_fold")
-  syntax region perlDATA		start="^__\%(DATA\|END\)__$" skip="." end="." contains=perlPOD,@perlDATA fold
-else
-  syntax region perlDATA		start="^__\%(DATA\|END\)__$" skip="." end="." contains=perlPOD,@perlDATA
-endif
-
-"
-" Folding
-
-if exists("perl_fold")
-  " Note: this bit must come before the actual highlighting of the "package"
-  " keyword, otherwise this will screw up Pod lines that match /^package/
-  if !exists("perl_nofold_packages")
-    syn region perlPackageFold start="^package \S\+;\s*\%(#.*\)\=$" end="^1;\=\s*\%(#.*\)\=$" end="\n\+package"me=s-1 transparent fold keepend
-  endif
-  if !exists("perl_nofold_subs")
-    syn region perlSubFold     start="^\z(\s*\)\<sub\>.*[^};]$" end="^\z1}\s*\%(#.*\)\=$" transparent fold keepend
-    syn region perlSubFold start="^\z(\s*\)\<\%(BEGIN\|END\|CHECK\|INIT\|UNITCHECK\)\>.*[^};]$" end="^\z1}\s*$" transparent fold keepend
-  endif
-
-  if exists("perl_fold_blocks")
-    syn region perlBlockFold start="^\z(\s*\)\%(if\|elsif\|unless\|for\|while\|until\|given\)\s*(.*)\%(\s*{\)\=\s*\%(#.*\)\=$" start="^\z(\s*\)foreach\s*\%(\%(my\|our\)\=\s*\S\+\s*\)\=(.*)\%(\s*{\)\=\s*\%(#.*\)\=$" end="^\z1}\s*;\=\%(#.*\)\=$" transparent fold keepend
-    syn region perlBlockFold start="^\z(\s*\)\%(do\|else\)\%(\s*{\)\=\s*\%(#.*\)\=$" end="^\z1}\s*while" end="^\z1}\s*;\=\%(#.*\)\=$" transparent fold keepend
-  endif
-
-  setlocal foldmethod=syntax
-  syn sync fromstart
-else
-  " fromstart above seems to set minlines even if perl_fold is not set.
-  syn sync minlines=0
-endif
-
-command -nargs=+ HiLink hi def link <args>
-
-" The default highlighting.
-HiLink perlSharpBang		PreProc
-HiLink perlControl		PreProc
-HiLink perlInclude		Include
-HiLink perlSpecial		Special
-HiLink perlString		String
-HiLink perlCharacter		Character
-HiLink perlNumber		Number
-HiLink perlFloat		Float
-HiLink perlType			Type
-HiLink perlIdentifier		Identifier
-HiLink perlLabel		Label
-HiLink perlStatement		Statement
-HiLink perlConditional		Conditional
-HiLink perlRepeat		Repeat
-HiLink perlOperator		Operator
-HiLink perlFunction		Keyword
-HiLink perlSubName		Function
-HiLink perlSubPrototype		Type
-HiLink perlSubAttributes	PreProc
-HiLink perlSubAttributesCont	perlSubAttributes
-HiLink perlComment		Comment
-HiLink perlTodo			Todo
-if exists("perl_string_as_statement")
-  HiLink perlStringStartEnd	perlStatement
-else
-  HiLink perlStringStartEnd	perlString
-endif
-HiLink perlVStringV		perlStringStartEnd
-HiLink perlList			perlStatement
-HiLink perlMisc			perlStatement
-HiLink perlVarPlain		perlIdentifier
-HiLink perlVarPlain2		perlIdentifier
-HiLink perlArrow		perlIdentifier
-HiLink perlFiledescRead		perlIdentifier
-HiLink perlFiledescStatement	perlIdentifier
-HiLink perlVarSimpleMember	perlIdentifier
-HiLink perlVarSimpleMemberName 	perlString
-HiLink perlVarNotInMatches	perlIdentifier
-HiLink perlVarSlash		perlIdentifier
-HiLink perlQQ			perlString
-HiLink perlHereDoc		perlString
-HiLink perlStringUnexpanded	perlString
-HiLink perlSubstitutionSQ	perlString
-HiLink perlSubstitutionGQQ	perlString
-HiLink perlTranslationGQ	perlString
-HiLink perlMatch		perlString
-HiLink perlMatchStartEnd	perlStatement
-HiLink perlFormatName		perlIdentifier
-HiLink perlFormatField		perlString
-HiLink perlPackageDecl		perlType
-HiLink perlStorageClass		perlType
-HiLink perlPackageRef		perlType
-HiLink perlStatementPackage	perlStatement
-HiLink perlStatementStorage	perlStatement
-HiLink perlStatementControl	perlStatement
-HiLink perlStatementScalar	perlStatement
-HiLink perlStatementRegexp	perlStatement
-HiLink perlStatementNumeric	perlStatement
-HiLink perlStatementList	perlStatement
-HiLink perlStatementHash	perlStatement
-HiLink perlStatementIOfunc	perlStatement
-HiLink perlStatementFiledesc	perlStatement
-HiLink perlStatementVector	perlStatement
-HiLink perlStatementFiles	perlStatement
-HiLink perlStatementFlow	perlStatement
-HiLink perlStatementInclude	perlStatement
-HiLink perlStatementProc	perlStatement
-HiLink perlStatementSocket	perlStatement
-HiLink perlStatementIPC		perlStatement
-HiLink perlStatementNetwork	perlStatement
-HiLink perlStatementPword	perlStatement
-HiLink perlStatementTime	perlStatement
-HiLink perlStatementMisc	perlStatement
-HiLink perlStatementIndirObj	perlStatement
-HiLink perlFunctionName		perlIdentifier
-HiLink perlMethod		perlIdentifier
-HiLink perlFunctionPRef		perlType
-HiLink perlPOD			perlComment
-HiLink perlShellCommand		perlString
-HiLink perlSpecialAscii		perlSpecial
-HiLink perlSpecialDollar	perlSpecial
-HiLink perlSpecialString	perlSpecial
-HiLink perlSpecialStringU	perlSpecial
-HiLink perlSpecialMatch		perlSpecial
-HiLink perlDATA			perlComment
-
-" Possible errors
-HiLink perlNotEmptyLine		Error
-HiLink perlElseIfError		Error
-HiLink perlSubPrototypeError	Error
-HiLink perlSubError		Error
-
-delcommand HiLink
-
-" Syncing to speed up processing
-"
-if !exists("perl_no_sync_on_sub")
-  syn sync match perlSync	grouphere NONE "^\s*\<package\s"
-  syn sync match perlSync	grouphere NONE "^\s*\<sub\>"
-  syn sync match perlSync	grouphere NONE "^}"
-endif
-
-if !exists("perl_no_sync_on_global_var")
-  syn sync match perlSync	grouphere NONE "^$\I[[:alnum:]_:]+\s*=\s*{"
-  syn sync match perlSync	grouphere NONE "^[@%]\I[[:alnum:]_:]+\s*=\s*("
-endif
-
-if exists("perl_sync_dist")
-  execute "syn sync maxlines=" . perl_sync_dist
-else
-  syn sync maxlines=100
-endif
-
-syn sync match perlSyncPOD	grouphere perlPOD "^=pod"
-syn sync match perlSyncPOD	grouphere perlPOD "^=head"
-syn sync match perlSyncPOD	grouphere perlPOD "^=item"
-syn sync match perlSyncPOD	grouphere NONE "^=cut"
-
-let b:current_syntax = "perl"
-
-" XXX Change to sts=4:sw=4
-" vim:ts=8:sts=2:sw=2:expandtab:ft=vim

File shlomif-settings/vim-conf/dot-vim/syntax/pir.vim

-" Vim syntax file
-" Language:	Parrot IMCC
-" Maintainer:	Luke Palmer <fibonaci@babylonia.flatirons.org>
-" Modified: Joshua Isom
-" Last Change:	Jan 6 2006
-
-" For installation please read:
-" :he filetypes
-" :he syntax
-"
-" For version 5.x: Clear all syntax items
-" For version 6.x: Quit when a syntax file was already loaded
-"
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
-  finish
-endif
-
-syntax clear
-
-syn include @Pod syntax/pod.vim
-syn region pirPod start="^=[a-z]" end="^=cut" keepend contains=@Pod
-
-syn keyword pirType int float num string pmc
-syn match   pirPMC  /\.\(Compiler\|Continuation\|Coroutine\|CSub\|NCI\|Eval\|Sub\|Scratchpad\)/
-syn match   pirPMC  /\.\(BigInt\|Boolean\|Complex\|Float\|Integer\|PMC\|String\|Hash\)/
-syn match   pirPMC  /\.\(Fixed\|Resizable\)\(Boolean\|Float\|Integer\|PMC\|String\)Array/
-syn match   pirPMC  /\.\(IntList\|Iterator\|Key\|ManagedStruct\|UnManagedStruct\|Pointer\)/
-syn match   pirPMC  /\.\(FloatVal\|Multi\|S\|String\)\?Array/
-syn match   pirPMC  /\.Perl\(Array\|Env\|Hash\|Int\|Num\|Scalar\|String\|Undef\)/
-syn match   pirPMC  /\.Parrot\(Class\|Interpreter\|IO\|Library\|Object\|Thread\)/
-syn keyword pirPMC self
-
-syn keyword pirOp   goto if unless global addr
-
-syn match pirDirective  /\.\(sub\|endm\|pcc_sub\|macro\|end\|emit\|eom\)/
-syn match pirDirective  /\.\(local\|sym\|const\|lex\|global\|globalconst\)/
-syn match pirDirective  /\.\(endnamespace\|namespace\)/
-syn match pirDirective  /\.\(param\|arg\|return\|yield\)/
-syn match pirDirective  /\.\(pragma\|HLL_map\|HLL\|include\|loadlib\)/
-syn match pirDirective  /\.\(pcc_begin\|pcc_call\|pcc_end\|invocant\|meth_call\|nci_call\)/
-syn match pirDirective  /\.\(pcc_begin_return\|pcc_end_return\)/
-syn match pirDirective  /\.\(pcc_begin_yield\|pcc_end_yield\)/
-
-syn match pirDirective  /:\(main\|method\|load\|anon\|multi\|immediate\|outer\|lex\)/
-syn match pirDirective  /:\(flat\|slurpy\|optional\|opt_flag\|named\)/
-
-" Macro invocation
-syn match pirDirective  /\.\I\i*(/he=e-1
-
-
-" pirWord before pirRegister
-" FIXME :: in identifiers and labels
-syn match pirWord           /[A-Za-z_][A-Za-z0-9_]*/
-syn match pirComment        /#.*/
-syn match pirLabel          /[A-Za-z0-9_]\+:/he=e-1
-syn match pirRegister       /[INPS]\([12][0-9]\|3[01]\|[0-9]\)/
-syn match pirDollarRegister /\$[INPS][0-9]\+/
-
-syn match pirNumber         /[+-]\?[0-9]\+\(\.[0-9]*\([Ee][+-]\?[0-9]\+\)\?\)\?/
-syn match pirNumber         /0[xX][0-9a-fA-F]\+/
-syn match pirNumber         /0[oO][0-7]\+/
-syn match pirNumber         /0[bB][01]\+/
-
-syn region pirString start=/"/ skip=/\\"/ end=/"/ contains=pirStringSpecial
-syn region pirString start=/<<"\z(\I\i*\)"/ end=/^\z1$/ contains=pirStringSpecial
-syn region pirString start=/<<'\z(\I\i*\)'/ end=/^\z1$/
-syn region pirString start=/'/ end=/'/
-syn match  pirStringSpecial "\\\([abtnvfre\\"]\|\o\{1,3\}\|x{\x\{1,8\}}\|x\x\{1,2\}\|u\x\{4\}\|U\x\{8\}\|c[A-Z]\)" contained
-
-" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_pasm_syntax_inits")
-  if version < 508
-    let did_pasm_syntax_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
-
-  HiLink pirPod             Comment
-  HiLink pirWord            Normal
-  HiLink pirComment         Comment
-  HiLink pirLabel           Label
-  HiLink pirRegister        Identifier
-  HiLink pirDollarRegister  Identifier
-  HiLink pirType            Type
-  HiLink pirPMC             Type
-  HiLink pirString          String
-  HiLink pirStringSpecial   Special
-  HiLink pirNumber          Number
-  HiLink pirDirective       Macro
-  HiLink pirOp              Conditional
-
-  delcommand HiLink
-endif
-
-let b:current_syntax = "pir"
-
-" Ops -- dynamically generated from ops2vim.pl
-syn keyword pirOp band bands bnot n_bnot bnots n_bnots bor bors shl shr
-syn keyword pirOp lsr rot bxor bxors eq eq_str eq_num eq_addr ne ne_str
-syn keyword pirOp ne_num ne_addr lt lt_str lt_num le le_str le_num gt
-syn keyword pirOp gt_str gt_num ge ge_str ge_num if_null unless_null cmp
-syn keyword pirOp cmp_str cmp_num issame isntsame istrue isfalse isnull
-syn keyword pirOp isgt isge isle islt iseq isne and not n_not or xor end
-syn keyword pirOp noop cpu_ret check_events check_events__ wrapper__
-syn keyword pirOp prederef__ reserved load_bytecode branch branch_cs bsr
-syn keyword pirOp ret jsr jump enternative if unless invokecc invoke
-syn keyword pirOp yield tailcall returncc newclosure set_args get_results
-syn keyword pirOp get_params set_returns result_info set_addr get_addr
-syn keyword pirOp push_eh clear_eh throw rethrow die exit pushmark
-syn keyword pirOp popmark pushaction debug bounds profile trace gc_debug
-syn keyword pirOp interpinfo warningson warningsoff errorson errorsoff
-syn keyword pirOp runinterp getinterp sweep collect sweepoff sweepon
-syn keyword pirOp collectoff collecton needs_destroy loadlib dlfunc dlvar
-syn keyword pirOp compile compreg new_callback debug_init debug_load
-syn keyword pirOp debug_break debug_print backtrace getline getfile
-syn keyword pirOp print_newline gcd splice slice iter morph exec
-syn keyword pirOp classname trap pow getclass new instantiate pmcinfo
-syn keyword pirOp add_io_event need_finalize newpdd15class close fdopen
-syn keyword pirOp getfd getstdin getstdout getstderr setstdout setstderr
-syn keyword pirOp pioctl open print printerr read readline peek stat seek
-syn keyword pirOp tell socket sockaddr connect recv send poll bind listen
-syn keyword pirOp accept infix n_infix abs n_abs add cmod dec div fdiv
-syn keyword pirOp ceil floor inc mod mul neg n_neg sub sqrt acos asec
-syn keyword pirOp asin atan cos cosh exp ln log10 log2 sec sech sin sinh
-syn keyword pirOp tan tanh lcm fact callmethodcc callmethod
-syn keyword pirOp tailcallmethod addmethod can does isa newclass subclass
-syn keyword pirOp get_class singleton class addparent removeparent
-syn keyword pirOp addrole addattribute removeattribute getattribute
-syn keyword pirOp setattribute classoffset adddoes removedoes inspect
-syn keyword pirOp covers exsec hav vers pic_infix__ pic_inline_sub__
-syn keyword pirOp pic_get_params__ pic_set_returns__ pic_callr__ typeof
-syn keyword pirOp find_type valid_type get_repr find_method defined
-syn keyword pirOp exists delete elements push pop unshift shift setprop
-syn keyword pirOp getprop delprop prophash freeze thaw mmdvtregister
-syn keyword pirOp mmdvtfind register unregister hash get_mro clone
-syn keyword pirOp exchange set assign setref deref setp_ind setn_ind
-syn keyword pirOp sets_ind seti_ind null cleari clearn clears clearp
-syn keyword pirOp saveall restoreall entrytype depth lookback save savec
-syn keyword pirOp restore rotate_up stm_start stm_validate stm_commit
-syn keyword pirOp stm_wait stm_abort stm_depth ord chr chopn concat
-syn keyword pirOp repeat length bytelength pin unpin substr substr_r
-syn keyword pirOp index sprintf find_encoding stringinfo upcase downcase
-syn keyword pirOp titlecase join split charset charsetname find_charset
-syn keyword pirOp trans_charset encoding encodingname trans_encoding
-syn keyword pirOp is_cclass find_cclass find_not_cclass escape compose
-syn keyword pirOp spawnw err time gmtime localtime decodetime
-syn keyword pirOp decodelocaltime sysinfo sleep sizeof store_lex find_lex
-syn keyword pirOp get_namespace get_hll_namespace get_root_namespace
-syn keyword pirOp get_global get_hll_global get_root_global set_global
-syn keyword pirOp set_hll_global set_root_global store_global find_global
-syn keyword pirOp find_name