Mercurial > vim
annotate runtime/syntax/perl.vim @ 4476:3cc2dca142a0 v7.3.986
updated for version 7.3.986
Problem: Test 95 doesn't pass when 'encoding' isn't utf-8. (Yasuhiro
Matsumoto)
Solution: Force 'encoding' to be utf-8.
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Tue, 21 May 2013 13:05:15 +0200 |
parents | 0bb74f626ba7 |
children | 2eb30f341e8d |
rev | line source |
---|---|
7 | 1 " Vim syntax file |
2152 | 2 " Language: Perl 5 |
3 " Maintainer: Andy Lester <andy@petdance.com> | |
4 " URL: http://github.com/petdance/vim-perl/tree/master | |
2548
0bb74f626ba7
Update to Perl runtime files. (Andy Lester)
Bram Moolenaar <bram@vim.org>
parents:
2531
diff
changeset
|
5 " Last Change: 2010-08-10 |
2152 | 6 " Contributors: Andy Lester <andy@petdance.com> |
7 " Hinrik Örn Sigurðsson <hinrik.sig@gmail.com> | |
8 " Lukas Mai <l.mai.web.de> | |
9 " Nick Hibma <nick@van-laarhoven.org> | |
10 " Sonia Heimann <niania@netsurf.org> | |
11 " and many others. | |
7 | 12 " |
13 " Please download most recent version first before mailing | |
14 " any comments. | |
15 " | |
16 " The following parameters are available for tuning the | |
17 " perl syntax highlighting, with defaults given: | |
18 " | |
19 " unlet perl_include_pod | |
2152 | 20 " unlet perl_no_scope_in_variables |
21 " unlet perl_no_extended_vars | |
7 | 22 " unlet perl_string_as_statement |
23 " unlet perl_no_sync_on_sub | |
24 " unlet perl_no_sync_on_global_var | |
25 " let perl_sync_dist = 100 | |
26 " unlet perl_fold | |
27 " unlet perl_fold_blocks | |
1118 | 28 " let perl_nofold_packages = 1 |
29 " let perl_nofold_subs = 1 | |
7 | 30 |
2548
0bb74f626ba7
Update to Perl runtime files. (Andy Lester)
Bram Moolenaar <bram@vim.org>
parents:
2531
diff
changeset
|
31 if exists("b:current_syntax") |
7 | 32 finish |
33 endif | |
34 | |
35 | |
36 " POD starts with ^=<word> and ends with ^=cut | |
37 | |
38 if exists("perl_include_pod") | |
39 " Include a while extra syntax file | |
40 syn include @Pod syntax/pod.vim | |
41 unlet b:current_syntax | |
42 if exists("perl_fold") | |
557 | 43 syn region perlPOD start="^=[a-z]" end="^=cut" contains=@Pod,@Spell,perlTodo keepend fold |
7 | 44 syn region perlPOD start="^=cut" end="^=cut" contains=perlTodo keepend fold |
45 else | |
557 | 46 syn region perlPOD start="^=[a-z]" end="^=cut" contains=@Pod,@Spell,perlTodo keepend |
7 | 47 syn region perlPOD start="^=cut" end="^=cut" contains=perlTodo keepend |
48 endif | |
49 else | |
50 " Use only the bare minimum of rules | |
51 if exists("perl_fold") | |
1118 | 52 syn region perlPOD start="^=[a-z]" end="^=cut" fold |
7 | 53 else |
1118 | 54 syn region perlPOD start="^=[a-z]" end="^=cut" |
7 | 55 endif |
56 endif | |
57 | |
58 | |
2152 | 59 syn cluster perlTop contains=TOP |
60 syn region perlGenericBlock matchgroup=perlGenericBlock start="{" end="}" contained transparent | |
61 | |
62 | |
7 | 63 " All keywords |
64 " | |
2152 | 65 syn match perlConditional "\<\%(if\|elsif\|unless\|given\|when\|default\)\>" |
66 syn match perlConditional "\<else\>" nextgroup=perlElseIfError skipwhite skipnl skipempty | |
67 syn match perlRepeat "\<\%(while\|for\%(each\)\=\|do\|until\|continue\)\>" | |
68 syn match perlOperator "\<\%(defined\|undef\|eq\|ne\|[gl][et]\|cmp\|not\|and\|or\|xor\|not\|bless\|ref\|do\)\>" | |
69 syn match perlControl "\<\%(BEGIN\|CHECK\|INIT\|END\|UNITCHECK\)\>" | |
7 | 70 |
2152 | 71 syn match perlStatementStorage "\<\%(my\|our\|local\|state\)\>" |
72 syn match perlStatementControl "\<\%(return\|last\|next\|redo\|goto\|break\)\>" | |
73 syn match perlStatementScalar "\<\%(chom\=p\|chr\|crypt\|r\=index\|lc\%(first\)\=\|length\|ord\|pack\|sprintf\|substr\|uc\%(first\)\=\)\>" | |
74 syn match perlStatementRegexp "\<\%(pos\|quotemeta\|split\|study\)\>" | |
75 syn match perlStatementNumeric "\<\%(abs\|atan2\|cos\|exp\|hex\|int\|log\|oct\|rand\|sin\|sqrt\|srand\)\>" | |
76 syn match perlStatementList "\<\%(splice\|unshift\|shift\|push\|pop\|join\|reverse\|grep\|map\|sort\|unpack\)\>" | |
77 syn match perlStatementHash "\<\%(delete\|each\|exists\|keys\|values\)\>" | |
78 syn match perlStatementIOfunc "\<\%(syscall\|dbmopen\|dbmclose\)\>" | |
79 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 | |
80 syn match perlStatementFiledesc "\<\%(fcntl\|flock\|ioctl\|open\%(dir\)\=\|read\|seek\%(dir\)\=\|sys\%(open\|read\|seek\|write\)\|truncate\)\>" nextgroup=perlFiledescStatementComma skipwhite | |
81 syn match perlStatementVector "\<vec\>" | |
82 syn match perlStatementFiles "\<\%(ch\%(dir\|mod\|own\|root\)\|glob\|link\|mkdir\|readlink\|rename\|rmdir\|symlink\|umask\|unlink\|utime\)\>" | |
83 syn match perlStatementFiles "-[rwxoRWXOezsfdlpSbctugkTBMAC]\>" | |
84 syn match perlStatementFlow "\<\%(caller\|die\|dump\|eval\|exit\|wantarray\)\>" | |
85 syn match perlStatementInclude "\<require\>" | |
86 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\)\=\)\>\)\=" | |
87 syn match perlStatementProc "\<\%(alarm\|exec\|fork\|get\%(pgrp\|ppid\|priority\)\|kill\|pipe\|set\%(pgrp\|priority\)\|sleep\|system\|times\|wait\%(pid\)\=\)\>" | |
88 syn match perlStatementSocket "\<\%(acept\|bind\|connect\|get\%(peername\|sock\%(name\|opt\)\)\|listen\|recv\|send\|setsockopt\|shutdown\|socket\%(pair\)\=\)\>" | |
89 syn match perlStatementIPC "\<\%(msg\%(ctl\|get\|rcv\|snd\)\|sem\%(ctl\|get\|op\)\|shm\%(ctl\|get\|read\|write\)\)\>" | |
90 syn match perlStatementNetwork "\<\%(\%(end\|[gs]et\)\%(host\|net\|proto\|serv\)ent\|get\%(\%(host\|net\)by\%(addr\|name\)\|protoby\%(name\|number\)\|servby\%(name\|port\)\)\)\>" | |
91 syn match perlStatementPword "\<\%(get\%(pw\%(uid\|nam\)\|gr\%(gid\|nam\)\|login\)\)\|\%(end\|[gs]et\)\%(pw\|gr\)ent\>" | |
92 syn match perlStatementTime "\<\%(gmtime\|localtime\|time\)\>" | |
7 | 93 |
2152 | 94 syn match perlStatementMisc "\<\%(warn\|formline\|reset\|scalar\|prototype\|lock\|tied\=\|untie\)\>" |
95 | |
96 syn keyword perlTodo TODO TBD FIXME XXX NOTE contained | |
1118 | 97 |
2152 | 98 syn region perlStatementIndirObjWrap matchgroup=perlStatementIndirObj start="\<\%(map\|grep\|sort\|print\|system\|exec\)\>\s*{" end="}" contains=@perlTop,perlGenericBlock |
99 | |
100 syn match perlLabel "^\s*\h\w*\s*::\@!\%(\<v\d\+\s*:\)\@<!" | |
7 | 101 |
102 " Perl Identifiers. | |
103 " | |
104 " Should be cleaned up to better handle identifiers in particular situations | |
105 " (in hash keys for example) | |
106 " | |
107 " Plain identifiers: $foo, @foo, $#foo, %foo, &foo and dereferences $$foo, @$foo, etc. | |
108 " We do not process complex things such as @{${"foo"}}. Too complicated, and | |
109 " too slow. And what is after the -> is *not* considered as part of the | |
110 " variable - there again, too complicated and too slow. | |
111 | |
112 " Special variables first ($^A, ...) and ($|, $', ...) | |
2152 | 113 syn match perlVarPlain "$^[ACDEFHILMNOPRSTVWX]\=" |
1118 | 114 syn match perlVarPlain "$[\\\"\[\]'&`+*.,;=%~!?@#$<>(-]" |
2531 | 115 syn match perlVarPlain "%+" |
2152 | 116 syn match perlVarPlain "$\%(0\|[1-9]\d*\)" |
7 | 117 " Same as above, but avoids confusion in $::foo (equivalent to $main::foo) |
2152 | 118 syn match perlVarPlain "$::\@!" |
7 | 119 " These variables are not recognized within matches. |
120 syn match perlVarNotInMatches "$[|)]" | |
1118 | 121 " This variable is not recognized within matches delimited by m//. |
7 | 122 syn match perlVarSlash "$/" |
123 | |
124 " And plain identifiers | |
2152 | 125 syn match perlPackageRef "[$@#%*&]\%(\%(::\|'\)\=\I\i*\%(\%(::\|'\)\I\i*\)*\)\=\%(::\|'\)\I"ms=s+1,me=e-1 contained |
7 | 126 |
2152 | 127 " To not highlight packages in variables as a scope reference - i.e. in |
128 " $pack::var, pack:: is a scope, just set "perl_no_scope_in_variables" | |
129 " If you don't want complex things like @{${"foo"}} to be processed, | |
130 " just set the variable "perl_no_extended_vars"... | |
1118 | 131 |
2152 | 132 if !exists("perl_no_scope_in_variables") |
133 syn match perlVarPlain "\%([@$]\|\$#\)\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod | |
134 syn match perlVarPlain2 "%\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef | |
135 syn match perlFunctionName "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod | |
7 | 136 else |
2152 | 137 syn match perlVarPlain "\%([@$]\|\$#\)\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod |
138 syn match perlVarPlain2 "%\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" | |
139 syn match perlFunctionName "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod | |
7 | 140 endif |
141 | |
2152 | 142 if !exists("perl_no_extended_vars") |
143 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 | |
144 syn region perlArrow matchgroup=perlArrow start="->\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained | |
145 syn region perlArrow matchgroup=perlArrow start="->\s*\[" end="\]" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained | |
146 syn region perlArrow matchgroup=perlArrow start="->\s*{" end="}" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained | |
147 syn match perlArrow "->\s*{\s*\I\i*\s*}" contains=perlVarSimpleMemberName nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained | |
148 syn region perlArrow matchgroup=perlArrow start="->\s*\$*\I\i*\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained | |
149 syn region perlVarBlock matchgroup=perlVarPlain start="\%($#\|[$@]\)\$*{" skip="\\}" end="}" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod | |
150 syn region perlVarBlock2 matchgroup=perlVarPlain start="[%&*]\$*{" skip="\\}" end="}" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod | |
151 syn match perlVarPlain2 "[%&*]\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod | |
152 syn match perlVarPlain "\%(\$#\|[@$]\)\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod | |
153 syn region perlVarMember matchgroup=perlVarPlain start="\%(->\)\={" skip="\\}" end="}" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod | |
154 syn match perlVarSimpleMember "\%(->\)\={\s*\I\i*\s*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contains=perlVarSimpleMemberName contained | |
7 | 155 syn match perlVarSimpleMemberName "\I\i*" contained |
2152 | 156 syn region perlVarMember matchgroup=perlVarPlain start="\%(->\)\=\[" skip="\\]" end="]" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod |
157 syn match perlPackageConst "__PACKAGE__" nextgroup=perlMethod | |
158 syn match perlMethod "->\$*\I\i*" contained nextgroup=perlVarSimpleMember,perlVarMember,perlMethod | |
7 | 159 endif |
160 | |
161 " File Descriptors | |
2152 | 162 syn match perlFiledescRead "<\h\w*>" |
7 | 163 |
164 syn match perlFiledescStatementComma "(\=\s*\u\w*\s*,"me=e-1 transparent contained contains=perlFiledescStatement | |
1118 | 165 syn match perlFiledescStatementNocomma "(\=\s*\u\w*\s*[^, \t]"me=e-1 transparent contained contains=perlFiledescStatement |
7 | 166 |
167 syn match perlFiledescStatement "\u\w*" contained | |
168 | |
169 " Special characters in strings and matches | |
2152 | 170 syn match perlSpecialString "\\\%(\o\{1,3}\|x\%({\x\+}\|\x\{1,2}\)\|c.\|[^cx]\)" contained extend |
171 syn match perlSpecialStringU2 "\\." extend contained transparent contains=NONE | |
172 syn match perlSpecialStringU "\\\\" contained | |
173 syn match perlSpecialMatch "\\[1-9]" contained extend | |
174 syn match perlSpecialMatch "\\g\%(\d\+\|{\%(-\=\d\+\|\h\w*\)}\)" contained | |
175 syn match perlSpecialMatch "\\k\%(<\h\w*>\|'\h\w*'\)" contained | |
176 syn match perlSpecialMatch "{\d\+\%(,\%(\d\+\)\=\)\=}" contained | |
177 syn match perlSpecialMatch "\[[]-]\=[^\[\]]*[]-]\=\]" contained | |
7 | 178 syn match perlSpecialMatch "[+*()?.]" contained |
179 syn match perlSpecialMatch "(?[#:=!]" contained | |
2152 | 180 syn match perlSpecialMatch "(?[impsx]*\%(-[imsx]\+\)\=)" contained |
181 syn match perlSpecialMatch "(?\%([-+]\=\d\+\|R\))" contained | |
182 syn match perlSpecialMatch "(?\%(&\|P[>=]\)\h\w*)" contained | |
183 syn match perlSpecialMatch "(\*\%(\%(PRUNE\|SKIP\|THEN\)\%(:[^)]*\)\=\|\%(MARK\|\):[^)]*\|COMMIT\|F\%(AIL\)\=\|ACCEPT\))" contained | |
7 | 184 |
185 " Possible errors | |
186 " | |
187 " Highlight lines with only whitespace (only in blank delimited here documents) as errors | |
188 syn match perlNotEmptyLine "^\s\+$" contained | |
189 " Highlight '} else if (...) {', it should be '} else { if (...) { ' or | |
190 " '} elsif (...) {'. | |
2531 | 191 syn match perlElseIfError "\s\+if" contained |
192 syn keyword perlElseIfError elseif | |
7 | 193 |
194 " Variable interpolation | |
195 " | |
196 " These items are interpolated inside "" strings and similar constructs. | |
1118 | 197 syn cluster perlInterpDQ contains=perlSpecialString,perlVarPlain,perlVarNotInMatches,perlVarSlash,perlVarBlock |
7 | 198 " These items are interpolated inside '' strings and similar constructs. |
2152 | 199 syn cluster perlInterpSQ contains=perlSpecialStringU,perlSpecialStringU2 |
7 | 200 " These items are interpolated inside m// matches and s/// substitutions. |
2152 | 201 syn cluster perlInterpSlash contains=perlSpecialString,perlSpecialMatch,perlVarPlain,perlVarBlock |
7 | 202 " These items are interpolated inside m## matches and s### substitutions. |
1118 | 203 syn cluster perlInterpMatch contains=@perlInterpSlash,perlVarSlash |
7 | 204 |
205 " Shell commands | |
2152 | 206 syn region perlShellCommand matchgroup=perlMatchStartEnd start="`" end="`" contains=@perlInterpDQ keepend |
7 | 207 |
208 " Constants | |
209 " | |
210 " Numbers | |
2152 | 211 syn match perlNumber "\<\%(0\%(x\x[[:xdigit:]_]*\|b[01][01_]*\|\o[0-7_]*\|\)\|[1-9][[:digit:]_]*\)\>" |
212 syn match perlFloat "\<\d[[:digit:]_]*[eE][\-+]\=\d\+" | |
213 syn match perlFloat "\<\d[[:digit:]_]*\.[[:digit:]_]*\%([eE][\-+]\=\d\+\)\=" | |
214 syn match perlFloat "\.[[:digit:]_]\+\%([eE][\-+]\=\d\+\)\=" | |
215 | |
216 syn match perlString "\<\%(v\d\+\%(\.\d\+\)*\|\d\+\%(\.\d\+\)\{2,}\)\>" contains=perlVStringV | |
217 syn match perlVStringV "\<v" contained | |
218 | |
219 | |
220 syn region perlParensSQ start=+(+ end=+)+ extend contained transparent contains=perlParensSQ,@perlInterpSQ keepend | |
221 syn region perlBracketsSQ start=+\[+ end=+\]+ extend contained transparent contains=perlBracketsSQ,@perlInterpSQ keepend | |
222 syn region perlBracesSQ start=+{+ end=+}+ extend contained transparent contains=perlBracesSQ,@perlInterpSQ keepend | |
223 syn region perlAnglesSQ start=+<+ end=+>+ extend contained transparent contains=perlAnglesSQ,@perlInterpSQ keepend | |
224 | |
225 syn region perlParensDQ start=+(+ end=+)+ extend contained transparent contains=perlParensDQ,@perlInterpDQ keepend | |
226 syn region perlBracketsDQ start=+\[+ end=+\]+ extend contained transparent contains=perlBracketsDQ,@perlInterpDQ keepend | |
227 syn region perlBracesDQ start=+{+ end=+}+ extend contained transparent contains=perlBracesDQ,@perlInterpDQ keepend | |
228 syn region perlAnglesDQ start=+<+ end=+>+ extend contained transparent contains=perlAnglesDQ,@perlInterpDQ keepend | |
7 | 229 |
230 | |
231 " Simple version of searches and matches | |
2152 | 232 syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\>\s*\z([^[:space:]'([{<#]\)+ end=+\z1[cgimopsx]*+ contains=@perlInterpMatch keepend |
233 syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m#+ end=+#[cgimopsx]*+ contains=@perlInterpMatch keepend | |
234 syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*'+ end=+'[cgimopsx]*+ contains=@perlInterpSQ keepend | |
235 syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*/+ end=+/[cgimopsx]*+ contains=@perlInterpSlash keepend | |
236 syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*(+ end=+)[cgimopsx]*+ contains=@perlInterpMatch,perlParensDQ keepend | |
7 | 237 |
2152 | 238 " A special case for m{}, m<> and m[] which allows for comments and extra whitespace in the pattern |
239 syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*{+ end=+}[cgimopsx]*+ contains=@perlInterpMatch,perlComment,perlBracesDQ keepend | |
240 syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*<+ end=+>[cgimopsx]*+ contains=@perlInterpMatch,perlAnglesDQ keepend | |
241 syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*\[+ end=+\][cgimopsx]*+ contains=@perlInterpMatch,perlComment,perlBracketsDQ keepend | |
7 | 242 |
243 " Below some hacks to recognise the // variant. This is virtually impossible to catch in all | |
244 " cases as the / is used in so many other ways, but these should be the most obvious ones. | |
2152 | 245 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 |
7 | 246 |
247 | |
248 " Substitutions | |
249 " perlMatch is the first part, perlSubstitution* is the substitution part | |
2152 | 250 syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\>\s*\z([^[:space:]'([{<#]\)+ end=+\z1+me=e-1 contains=@perlInterpMatch nextgroup=perlSubstitutionGQQ keepend |
251 syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*'+ end=+'+me=e-1 contains=@perlInterpSQ nextgroup=perlSubstitutionSQ keepend | |
252 syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*/+ end=+/+me=e-1 contains=@perlInterpSlash nextgroup=perlSubstitutionGQQ keepend | |
253 syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s#+ end=+#+me=e-1 contains=@perlInterpMatch nextgroup=perlSubstitutionGQQ keepend | |
254 syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*(+ end=+)+ contains=@perlInterpMatch,perlParensDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend | |
255 syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*<+ end=+>+ contains=@perlInterpMatch,perlAnglesDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend | |
256 syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*\[+ end=+\]+ contains=@perlInterpMatch,perlBracketsDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend | |
257 syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*{+ end=+}+ contains=@perlInterpMatch,perlBracesDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend | |
258 syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+\z([^[:space:]'([{<]\)+ end=+\z1[ecgimopsx]*+ keepend contained contains=@perlInterpDQ | |
259 syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+(+ end=+)[ecgimopsx]*+ contained contains=@perlInterpDQ,perlParensDQ keepend | |
260 syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+\[+ end=+\][ecgimopsx]*+ contained contains=@perlInterpDQ,perlBracketsDQ keepend | |
261 syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+{+ end=+}[ecgimopsx]*+ contained contains=@perlInterpDQ,perlBracesDQ keepend | |
262 syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+<+ end=+>[ecgimopsx]*+ contained contains=@perlInterpDQ,perlAnglesDQ keepend | |
263 syn region perlSubstitutionSQ matchgroup=perlMatchStartEnd start=+'+ end=+'[ecgimopsx]*+ contained contains=@perlInterpSQ keepend | |
7 | 264 |
2152 | 265 " Translations |
7 | 266 " perlMatch is the first part, perlTranslation* is the second, translator part. |
2152 | 267 syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)\>\s*\z([^[:space:]([{<#]\)+ end=+\z1+me=e-1 contains=@perlInterpSQ nextgroup=perlTranslationGQ |
268 syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)#+ end=+#+me=e-1 contains=@perlInterpSQ nextgroup=perlTranslationGQ | |
269 syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)\s*\[+ end=+\]+ contains=@perlInterpSQ,perlBracketsSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl | |
270 syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)\s*(+ end=+)+ contains=@perlInterpSQ,perlParensSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl | |
271 syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)\s*<+ end=+>+ contains=@perlInterpSQ,perlAnglesSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl | |
272 syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)\s*{+ end=+}+ contains=@perlInterpSQ,perlBracesSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl | |
273 syn region perlTranslationGQ matchgroup=perlMatchStartEnd start=+\z([^[:space:]([{<]\)+ end=+\z1[cds]*+ contained | |
274 syn region perlTranslationGQ matchgroup=perlMatchStartEnd start=+(+ end=+)[cds]*+ contains=perlParensSQ contained | |
275 syn region perlTranslationGQ matchgroup=perlMatchStartEnd start=+\[+ end=+\][cds]*+ contains=perlBracketsSQ contained | |
276 syn region perlTranslationGQ matchgroup=perlMatchStartEnd start=+{+ end=+}[cds]*+ contains=perlBracesSQ contained | |
277 syn region perlTranslationGQ matchgroup=perlMatchStartEnd start=+<+ end=+>[cds]*+ contains=perlAnglesSQ contained | |
7 | 278 |
279 | |
280 " Strings and q, qq, qw and qr expressions | |
281 | |
2152 | 282 syn region perlStringUnexpanded matchgroup=perlStringStartEnd start="'" end="'" contains=@perlInterpSQ keepend |
283 syn region perlString matchgroup=perlStringStartEnd start=+"+ end=+"+ contains=@perlInterpDQ keepend | |
284 syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\>\s*\z([^[:space:]#([{<]\)+ end=+\z1+ contains=@perlInterpSQ keepend | |
285 syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q#+ end=+#+ contains=@perlInterpSQ keepend | |
286 syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\s*(+ end=+)+ contains=@perlInterpSQ,perlParensSQ keepend | |
287 syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\s*\[+ end=+\]+ contains=@perlInterpSQ,perlBracketsSQ keepend | |
288 syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\s*{+ end=+}+ contains=@perlInterpSQ,perlBracesSQ keepend | |
289 syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\s*<+ end=+>+ contains=@perlInterpSQ,perlAnglesSQ keepend | |
290 | |
291 syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]\>\s*\z([^[:space:]#([{<]\)+ end=+\z1+ contains=@perlInterpDQ keepend | |
292 syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]#+ end=+#+ contains=@perlInterpDQ keepend | |
293 syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]\s*(+ end=+)+ contains=@perlInterpDQ,perlParensDQ keepend | |
294 syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]\s*\[+ end=+\]+ contains=@perlInterpDQ,perlBracketsDQ keepend | |
295 syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]\s*{+ end=+}+ contains=@perlInterpDQ,perlBracesDQ keepend | |
296 syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]\s*<+ end=+>+ contains=@perlInterpDQ,perlAnglesDQ keepend | |
7 | 297 |
2152 | 298 syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*\z([^[:space:]#([{<]\)+ end=+\z1+ contains=@perlInterpSQ keepend |
299 syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw#+ end=+#+ contains=@perlInterpSQ keepend | |
300 syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*(+ end=+)+ contains=@perlInterpSQ,perlParensSQ keepend | |
301 syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*\[+ end=+\]+ contains=@perlInterpSQ,perlBracketsSQ keepend | |
302 syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*{+ end=+}+ contains=@perlInterpSQ,perlBracesSQ keepend | |
303 syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*<+ end=+>+ contains=@perlInterpSQ,perlAnglesSQ keepend | |
304 | |
305 syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\>\s*\z([^[:space:]#([{<'/]\)+ end=+\z1[imosx]*+ contains=@perlInterpMatch keepend | |
306 syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*/+ end=+/[imosx]*+ contains=@perlInterpSlash keepend | |
307 syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr#+ end=+#[imosx]*+ contains=@perlInterpMatch keepend | |
308 syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*'+ end=+'[imosx]*+ contains=@perlInterpSQ keepend | |
309 syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*(+ end=+)[imosx]*+ contains=@perlInterpMatch,perlParensDQ keepend | |
310 | |
311 " A special case for qr{}, qr<> and qr[] which allows for comments and extra whitespace in the pattern | |
312 syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*{+ end=+}[imosx]*+ contains=@perlInterpMatch,perlBracesDQ,perlComment keepend | |
313 syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*<+ end=+>[imosx]*+ contains=@perlInterpMatch,perlAnglesDQ,perlComment keepend | |
314 syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*\[+ end=+\][imosx]*+ contains=@perlInterpMatch,perlBracketsDQ,perlComment keepend | |
7 | 315 |
316 " Constructs such as print <<EOF [...] EOF, 'here' documents | |
317 " | |
2152 | 318 " XXX Any statements after the identifier are in perlString colour (i.e. |
319 " 'if $a' in 'print <<EOF if $a'). This is almost impossible to get right it | |
320 " seems due to the 'auto-extending nature' of regions. | |
321 if exists("perl_fold") | |
322 syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\z(\I\i*\).*+ end=+^\z1$+ contains=@perlInterpDQ fold | |
323 syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*"\z([^\\"]*\%(\\.[^\\"]*\)*\)"+ end=+^\z1$+ contains=@perlInterpDQ fold | |
324 syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*'\z([^\\']*\%(\\.[^\\']*\)*\)'+ end=+^\z1$+ contains=@perlInterpSQ fold | |
325 syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*""+ end=+^$+ contains=@perlInterpDQ,perlNotEmptyLine fold | |
326 syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*''+ end=+^$+ contains=@perlInterpSQ,perlNotEmptyLine fold | |
327 syn region perlAutoload matchgroup=perlStringStartEnd start=+<<\s*\(['"]\=\)\z(END_\%(SUB\|OF_FUNC\|OF_AUTOLOAD\)\)\1+ end=+^\z1$+ contains=ALL fold | |
7 | 328 else |
2152 | 329 syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\z(\I\i*\)+ end=+^\z1$+ contains=@perlInterpDQ |
330 syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*"\z([^\\"]*\%(\\.[^\\"]*\)*\)"+ end=+^\z1$+ contains=@perlInterpDQ | |
331 syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*'\z([^\\']*\%(\\.[^\\']*\)*\)'+ end=+^\z1$+ contains=@perlInterpSQ | |
332 syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*""+ end=+^$+ contains=@perlInterpDQ,perlNotEmptyLine | |
333 syn region perlHereDoc matchgroup=perlStringStartEnd start=+<<\s*''+ end=+^$+ contains=@perlInterpSQ,perlNotEmptyLine | |
334 syn region perlAutoload matchgroup=perlStringStartEnd start=+<<\s*\(['"]\=\)\z(END_\%(SUB\|OF_FUNC\|OF_AUTOLOAD\)\)\1+ end=+^\z1$+ contains=ALL | |
7 | 335 endif |
336 | |
337 | |
338 " Class declarations | |
339 " | |
2152 | 340 syn match perlPackageDecl "\<package\s\+\%(\h\|::\)\%(\w\|::\)*" contains=perlStatementPackage |
7 | 341 syn keyword perlStatementPackage package contained |
342 | |
343 " Functions | |
344 " sub [name] [(prototype)] { | |
345 " | |
2152 | 346 syn match perlSubError "[^[:space:];{#]" contained |
347 if v:version == 701 && !has('patch221') " XXX I hope that's the right one | |
348 syn match perlSubAttributes ":" contained | |
349 else | |
350 syn match perlSubAttributesCont "\h\w*\_s*\%(:\_s*\)\=" nextgroup=@perlSubAttrMaybe contained | |
351 syn region perlSubAttributesCont matchgroup=perlSubAttributesCont start="\h\w*(" end=")\_s*\%(:\_s*\)\=" nextgroup=@perlSubAttrMaybe contained contains=@perlInterpSQ,perlParensSQ | |
352 syn cluster perlSubAttrMaybe contains=perlSubAttributesCont,perlSubError | |
353 syn match perlSubAttributes "" contained nextgroup=perlSubError | |
354 syn match perlSubAttributes ":\_s*" contained nextgroup=@perlSubAttrMaybe | |
355 endif | |
356 syn match perlSubPrototypeError "(\%(\_s*\%(\%(\\\%([$@%&*]\|\[[$@%&*]\+\]\)\|[$&*]\|[@%]\%(\_s*)\)\@=\|;\%(\_s*[)$@%&*\\]\)\@=\|_\%(\_s*[);]\)\@=\)\_s*\)*\)\@>\zs\_[^)]\+" contained | |
357 syn match perlSubPrototype +(\_[^)]*)\_s*\|+ nextgroup=perlSubAttributes contained contains=perlSubPrototypeError | |
358 syn match perlSubName +\%(\h\|::\|'\w\)\%(\w\|::\|'\w\)*\_s*\|+ contained nextgroup=perlSubPrototype | |
7 | 359 |
2152 | 360 syn match perlFunction +\<sub\>\_s*+ nextgroup=perlSubName |
361 | |
362 if !exists("perl_no_scope_in_variables") | |
7 | 363 syn match perlFunctionPRef "\h\w*::" contained |
364 syn match perlFunctionName "\h\w*[^:]" contained | |
365 else | |
366 syn match perlFunctionName "\h[[:alnum:]_:]*" contained | |
367 endif | |
368 | |
2152 | 369 " The => operator forces a bareword to the left of it to be interpreted as |
370 " a string | |
371 syn match perlString "\I\@<!-\?\I\i*\%(\s*=>\)\@=" | |
372 | |
7 | 373 " All other # are comments, except ^#! |
2152 | 374 syn match perlComment "#.*" contains=perlTodo,@Spell |
7 | 375 syn match perlSharpBang "^#!.*" |
376 | |
377 " Formats | |
1118 | 378 syn region perlFormat matchgroup=perlStatementIOFunc start="^\s*\<format\s\+\k\+\s*=\s*$"rs=s+6 end="^\s*\.\s*$" contains=perlFormatName,perlFormatField,perlVarPlain,perlVarPlain2 |
7 | 379 syn match perlFormatName "format\s\+\k\+\s*="lc=7,me=e-1 contained |
2152 | 380 syn match perlFormatField "[@^][|<>~]\+\%(\.\.\.\)\=" contained |
7 | 381 syn match perlFormatField "[@^]#[#.]*" contained |
382 syn match perlFormatField "@\*" contained | |
383 syn match perlFormatField "@[^A-Za-z_|<>~#*]"me=e-1 contained | |
384 syn match perlFormatField "@$" contained | |
385 | |
386 " __END__ and __DATA__ clauses | |
387 if exists("perl_fold") | |
2152 | 388 syntax region perlDATA start="^__\%(DATA\|END\)__$" skip="." end="." contains=perlPOD,@perlDATA fold |
7 | 389 else |
2152 | 390 syntax region perlDATA start="^__\%(DATA\|END\)__$" skip="." end="." contains=perlPOD,@perlDATA |
7 | 391 endif |
392 | |
2548
0bb74f626ba7
Update to Perl runtime files. (Andy Lester)
Bram Moolenaar <bram@vim.org>
parents:
2531
diff
changeset
|
393 " |
0bb74f626ba7
Update to Perl runtime files. (Andy Lester)
Bram Moolenaar <bram@vim.org>
parents:
2531
diff
changeset
|
394 " Folding |
0bb74f626ba7
Update to Perl runtime files. (Andy Lester)
Bram Moolenaar <bram@vim.org>
parents:
2531
diff
changeset
|
395 |
0bb74f626ba7
Update to Perl runtime files. (Andy Lester)
Bram Moolenaar <bram@vim.org>
parents:
2531
diff
changeset
|
396 if exists("perl_fold") |
0bb74f626ba7
Update to Perl runtime files. (Andy Lester)
Bram Moolenaar <bram@vim.org>
parents:
2531
diff
changeset
|
397 " Note: this bit must come before the actual highlighting of the "package" |
0bb74f626ba7
Update to Perl runtime files. (Andy Lester)
Bram Moolenaar <bram@vim.org>
parents:
2531
diff
changeset
|
398 " keyword, otherwise this will screw up Pod lines that match /^package/ |
0bb74f626ba7
Update to Perl runtime files. (Andy Lester)
Bram Moolenaar <bram@vim.org>
parents:
2531
diff
changeset
|
399 if !exists("perl_nofold_packages") |
0bb74f626ba7
Update to Perl runtime files. (Andy Lester)
Bram Moolenaar <bram@vim.org>
parents:
2531
diff
changeset
|
400 syn region perlPackageFold start="^package \S\+;\s*\%(#.*\)\=$" end="^1;\=\s*\%(#.*\)\=$" end="\n\+package"me=s-1 transparent fold keepend |
0bb74f626ba7
Update to Perl runtime files. (Andy Lester)
Bram Moolenaar <bram@vim.org>
parents:
2531
diff
changeset
|
401 endif |
0bb74f626ba7
Update to Perl runtime files. (Andy Lester)
Bram Moolenaar <bram@vim.org>
parents:
2531
diff
changeset
|
402 if !exists("perl_nofold_subs") |
0bb74f626ba7
Update to Perl runtime files. (Andy Lester)
Bram Moolenaar <bram@vim.org>
parents:
2531
diff
changeset
|
403 syn region perlSubFold start="^\z(\s*\)\<sub\>.*[^};]$" end="^\z1}\s*\%(#.*\)\=$" transparent fold keepend |
0bb74f626ba7
Update to Perl runtime files. (Andy Lester)
Bram Moolenaar <bram@vim.org>
parents:
2531
diff
changeset
|
404 syn region perlSubFold start="^\z(\s*\)\<\%(BEGIN\|END\|CHECK\|INIT\|UNITCHECK\)\>.*[^};]$" end="^\z1}\s*$" transparent fold keepend |
0bb74f626ba7
Update to Perl runtime files. (Andy Lester)
Bram Moolenaar <bram@vim.org>
parents:
2531
diff
changeset
|
405 endif |
0bb74f626ba7
Update to Perl runtime files. (Andy Lester)
Bram Moolenaar <bram@vim.org>
parents:
2531
diff
changeset
|
406 |
0bb74f626ba7
Update to Perl runtime files. (Andy Lester)
Bram Moolenaar <bram@vim.org>
parents:
2531
diff
changeset
|
407 if exists("perl_fold_blocks") |
0bb74f626ba7
Update to Perl runtime files. (Andy Lester)
Bram Moolenaar <bram@vim.org>
parents:
2531
diff
changeset
|
408 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 |
0bb74f626ba7
Update to Perl runtime files. (Andy Lester)
Bram Moolenaar <bram@vim.org>
parents:
2531
diff
changeset
|
409 syn region perlBlockFold start="^\z(\s*\)\%(do\|else\)\%(\s*{\)\=\s*\%(#.*\)\=$" end="^\z1}\s*while" end="^\z1}\s*;\=\%(#.*\)\=$" transparent fold keepend |
0bb74f626ba7
Update to Perl runtime files. (Andy Lester)
Bram Moolenaar <bram@vim.org>
parents:
2531
diff
changeset
|
410 endif |
0bb74f626ba7
Update to Perl runtime files. (Andy Lester)
Bram Moolenaar <bram@vim.org>
parents:
2531
diff
changeset
|
411 |
0bb74f626ba7
Update to Perl runtime files. (Andy Lester)
Bram Moolenaar <bram@vim.org>
parents:
2531
diff
changeset
|
412 setlocal foldmethod=syntax |
0bb74f626ba7
Update to Perl runtime files. (Andy Lester)
Bram Moolenaar <bram@vim.org>
parents:
2531
diff
changeset
|
413 syn sync fromstart |
0bb74f626ba7
Update to Perl runtime files. (Andy Lester)
Bram Moolenaar <bram@vim.org>
parents:
2531
diff
changeset
|
414 else |
0bb74f626ba7
Update to Perl runtime files. (Andy Lester)
Bram Moolenaar <bram@vim.org>
parents:
2531
diff
changeset
|
415 " fromstart above seems to set minlines even if perl_fold is not set. |
0bb74f626ba7
Update to Perl runtime files. (Andy Lester)
Bram Moolenaar <bram@vim.org>
parents:
2531
diff
changeset
|
416 syn sync minlines=0 |
0bb74f626ba7
Update to Perl runtime files. (Andy Lester)
Bram Moolenaar <bram@vim.org>
parents:
2531
diff
changeset
|
417 endif |
0bb74f626ba7
Update to Perl runtime files. (Andy Lester)
Bram Moolenaar <bram@vim.org>
parents:
2531
diff
changeset
|
418 |
2152 | 419 command -nargs=+ HiLink hi def link <args> |
7 | 420 |
2152 | 421 " The default highlighting. |
422 HiLink perlSharpBang PreProc | |
423 HiLink perlControl PreProc | |
424 HiLink perlInclude Include | |
425 HiLink perlSpecial Special | |
426 HiLink perlString String | |
427 HiLink perlCharacter Character | |
428 HiLink perlNumber Number | |
429 HiLink perlFloat Float | |
430 HiLink perlType Type | |
431 HiLink perlIdentifier Identifier | |
432 HiLink perlLabel Label | |
433 HiLink perlStatement Statement | |
434 HiLink perlConditional Conditional | |
435 HiLink perlRepeat Repeat | |
436 HiLink perlOperator Operator | |
437 HiLink perlFunction Keyword | |
438 HiLink perlSubName Function | |
439 HiLink perlSubPrototype Type | |
440 HiLink perlSubAttributes PreProc | |
441 HiLink perlSubAttributesCont perlSubAttributes | |
442 HiLink perlComment Comment | |
443 HiLink perlTodo Todo | |
444 if exists("perl_string_as_statement") | |
445 HiLink perlStringStartEnd perlStatement | |
446 else | |
447 HiLink perlStringStartEnd perlString | |
448 endif | |
449 HiLink perlVStringV perlStringStartEnd | |
450 HiLink perlList perlStatement | |
451 HiLink perlMisc perlStatement | |
452 HiLink perlVarPlain perlIdentifier | |
453 HiLink perlVarPlain2 perlIdentifier | |
454 HiLink perlArrow perlIdentifier | |
455 HiLink perlFiledescRead perlIdentifier | |
456 HiLink perlFiledescStatement perlIdentifier | |
457 HiLink perlVarSimpleMember perlIdentifier | |
458 HiLink perlVarSimpleMemberName perlString | |
459 HiLink perlVarNotInMatches perlIdentifier | |
460 HiLink perlVarSlash perlIdentifier | |
461 HiLink perlQQ perlString | |
462 HiLink perlHereDoc perlString | |
463 HiLink perlStringUnexpanded perlString | |
464 HiLink perlSubstitutionSQ perlString | |
465 HiLink perlSubstitutionGQQ perlString | |
466 HiLink perlTranslationGQ perlString | |
467 HiLink perlMatch perlString | |
468 HiLink perlMatchStartEnd perlStatement | |
469 HiLink perlFormatName perlIdentifier | |
470 HiLink perlFormatField perlString | |
471 HiLink perlPackageDecl perlType | |
472 HiLink perlStorageClass perlType | |
473 HiLink perlPackageRef perlType | |
474 HiLink perlStatementPackage perlStatement | |
475 HiLink perlStatementStorage perlStatement | |
476 HiLink perlStatementControl perlStatement | |
477 HiLink perlStatementScalar perlStatement | |
478 HiLink perlStatementRegexp perlStatement | |
479 HiLink perlStatementNumeric perlStatement | |
480 HiLink perlStatementList perlStatement | |
481 HiLink perlStatementHash perlStatement | |
482 HiLink perlStatementIOfunc perlStatement | |
483 HiLink perlStatementFiledesc perlStatement | |
484 HiLink perlStatementVector perlStatement | |
485 HiLink perlStatementFiles perlStatement | |
486 HiLink perlStatementFlow perlStatement | |
487 HiLink perlStatementInclude perlStatement | |
488 HiLink perlStatementProc perlStatement | |
489 HiLink perlStatementSocket perlStatement | |
490 HiLink perlStatementIPC perlStatement | |
491 HiLink perlStatementNetwork perlStatement | |
492 HiLink perlStatementPword perlStatement | |
493 HiLink perlStatementTime perlStatement | |
494 HiLink perlStatementMisc perlStatement | |
495 HiLink perlStatementIndirObj perlStatement | |
496 HiLink perlFunctionName perlIdentifier | |
497 HiLink perlMethod perlIdentifier | |
498 HiLink perlFunctionPRef perlType | |
499 HiLink perlPOD perlComment | |
500 HiLink perlShellCommand perlString | |
501 HiLink perlSpecialAscii perlSpecial | |
502 HiLink perlSpecialDollar perlSpecial | |
503 HiLink perlSpecialString perlSpecial | |
504 HiLink perlSpecialStringU perlSpecial | |
505 HiLink perlSpecialMatch perlSpecial | |
506 HiLink perlDATA perlComment | |
1118 | 507 |
2152 | 508 " Possible errors |
509 HiLink perlNotEmptyLine Error | |
510 HiLink perlElseIfError Error | |
511 HiLink perlSubPrototypeError Error | |
512 HiLink perlSubError Error | |
1118 | 513 |
2152 | 514 delcommand HiLink |
7 | 515 |
516 " Syncing to speed up processing | |
517 " | |
518 if !exists("perl_no_sync_on_sub") | |
519 syn sync match perlSync grouphere NONE "^\s*\<package\s" | |
2152 | 520 syn sync match perlSync grouphere NONE "^\s*\<sub\>" |
7 | 521 syn sync match perlSync grouphere NONE "^}" |
522 endif | |
523 | |
524 if !exists("perl_no_sync_on_global_var") | |
525 syn sync match perlSync grouphere NONE "^$\I[[:alnum:]_:]+\s*=\s*{" | |
526 syn sync match perlSync grouphere NONE "^[@%]\I[[:alnum:]_:]+\s*=\s*(" | |
527 endif | |
528 | |
529 if exists("perl_sync_dist") | |
530 execute "syn sync maxlines=" . perl_sync_dist | |
531 else | |
532 syn sync maxlines=100 | |
533 endif | |
534 | |
535 syn sync match perlSyncPOD grouphere perlPOD "^=pod" | |
536 syn sync match perlSyncPOD grouphere perlPOD "^=head" | |
537 syn sync match perlSyncPOD grouphere perlPOD "^=item" | |
538 syn sync match perlSyncPOD grouphere NONE "^=cut" | |
539 | |
540 let b:current_syntax = "perl" | |
541 | |
2152 | 542 " XXX Change to sts=4:sw=4 |
543 " vim:ts=8:sts=2:sw=2:expandtab:ft=vim |