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