ver 2009.10.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. data/CHANGELOG +1404 -0
  2. data/MANIFEST +187 -0
  3. data/Rakefile +30 -0
  4. data/TODO +169 -0
  5. data/bin/ver +19 -0
  6. data/config/detect.rb +109 -0
  7. data/config/keymap/vim.rb +239 -0
  8. data/config/rc.rb +0 -0
  9. data/config/scratch +3 -0
  10. data/config/syntax/ANTLR.json +275 -0
  11. data/config/syntax/ASP VB.net.json +228 -0
  12. data/config/syntax/ASP.json +135 -0
  13. data/config/syntax/ActionScript.json +168 -0
  14. data/config/syntax/Ada.json +108 -0
  15. data/config/syntax/Apache.json +342 -0
  16. data/config/syntax/AppleScript.json +721 -0
  17. data/config/syntax/Bibtex.json +253 -0
  18. data/config/syntax/Blog (HTML).json +47 -0
  19. data/config/syntax/Blog (Markdown).json +50 -0
  20. data/config/syntax/Blog (Text).json +45 -0
  21. data/config/syntax/Blog (Textile).json +45 -0
  22. data/config/syntax/Bulletin Board.json +428 -0
  23. data/config/syntax/C++.json +323 -0
  24. data/config/syntax/C.json +694 -0
  25. data/config/syntax/CSS.json +346 -0
  26. data/config/syntax/DOT.json +79 -0
  27. data/config/syntax/Diff.json +136 -0
  28. data/config/syntax/Dylan.json +104 -0
  29. data/config/syntax/Eiffel.json +128 -0
  30. data/config/syntax/Erlang.json +1636 -0
  31. data/config/syntax/F-Script.json +137 -0
  32. data/config/syntax/FXScript.json +260 -0
  33. data/config/syntax/Gri.json +141 -0
  34. data/config/syntax/HTML (Mason).json +207 -0
  35. data/config/syntax/HTML (Rails).json +52 -0
  36. data/config/syntax/HTML (Tcl).json +42 -0
  37. data/config/syntax/HTML for ASP.net.json +736 -0
  38. data/config/syntax/HTML-ASP.json +45 -0
  39. data/config/syntax/HTML.json +614 -0
  40. data/config/syntax/Haskell.json +407 -0
  41. data/config/syntax/Inform.json +80 -0
  42. data/config/syntax/Ini.json +91 -0
  43. data/config/syntax/Io.json +142 -0
  44. data/config/syntax/Java.json +745 -0
  45. data/config/syntax/JavaProperties.json +42 -0
  46. data/config/syntax/JavaScript.json +446 -0
  47. data/config/syntax/LaTeX Beamer.json +65 -0
  48. data/config/syntax/LaTeX Log.json +88 -0
  49. data/config/syntax/LaTeX.json +962 -0
  50. data/config/syntax/Lighttpd.json +93 -0
  51. data/config/syntax/Lisp.json +101 -0
  52. data/config/syntax/Literate Haskell.json +55 -0
  53. data/config/syntax/Logtalk.json +289 -0
  54. data/config/syntax/Lua.json +146 -0
  55. data/config/syntax/M.json +744 -0
  56. data/config/syntax/MEL.json +161 -0
  57. data/config/syntax/MIPS.json +114 -0
  58. data/config/syntax/Mail.json +224 -0
  59. data/config/syntax/Makefile.json +66 -0
  60. data/config/syntax/Markdown.json +644 -0
  61. data/config/syntax/Modula-3.json +80 -0
  62. data/config/syntax/Movable Type.json +348 -0
  63. data/config/syntax/OCaml.json +1391 -0
  64. data/config/syntax/Objective-C++.json +21 -0
  65. data/config/syntax/OpenGL.json +24 -0
  66. data/config/syntax/PHP.json +2184 -0
  67. data/config/syntax/Pascal.json +128 -0
  68. data/config/syntax/Perl.json +2091 -0
  69. data/config/syntax/Plain text.json +49 -0
  70. data/config/syntax/Processing.json +188 -0
  71. data/config/syntax/Quake3 Config.json +54 -0
  72. data/config/syntax/R.json +157 -0
  73. data/config/syntax/Rez.json +137 -0
  74. data/config/syntax/Ruby on Rails.json +170 -0
  75. data/config/syntax/Ruby.json +1753 -0
  76. data/config/syntax/SQL (Rails).json +31 -0
  77. data/config/syntax/SQL.json +435 -0
  78. data/config/syntax/SWIG.json +96 -0
  79. data/config/syntax/Scheme.json +359 -0
  80. data/config/syntax/Shell-Unix-Generic.json +1198 -0
  81. data/config/syntax/Slate.json +265 -0
  82. data/config/syntax/Smarty.json +110 -0
  83. data/config/syntax/Standard ML.json +322 -0
  84. data/config/syntax/Subversion commit message.json +62 -0
  85. data/config/syntax/Tcl.json +278 -0
  86. data/config/syntax/TeX Math.json +83 -0
  87. data/config/syntax/TeX.json +157 -0
  88. data/config/syntax/Textile.json +273 -0
  89. data/config/syntax/Twiki.json +436 -0
  90. data/config/syntax/Vectorscript.json +97 -0
  91. data/config/syntax/XML strict.json +148 -0
  92. data/config/syntax/XML.json +301 -0
  93. data/config/syntax/XSL.json +96 -0
  94. data/config/syntax/YAML.json +293 -0
  95. data/config/syntax/iCalendar.json +51 -0
  96. data/config/syntax/reStructuredText.json +403 -0
  97. data/config/theme/Active4D.json +260 -0
  98. data/config/theme/All Hallow's Eve.json +171 -0
  99. data/config/theme/Amy.json +359 -0
  100. data/config/theme/BBEdit.json +269 -0
  101. data/config/theme/Bespin.json +322 -0
  102. data/config/theme/Blackboard.json +215 -0
  103. data/config/theme/BoysAndGirls01.json +156 -0
  104. data/config/theme/Brilliance Black.json +1695 -0
  105. data/config/theme/Brilliance Dull.json +1451 -0
  106. data/config/theme/Classic Modified.json +288 -0
  107. data/config/theme/Cobalt.json +345 -0
  108. data/config/theme/Cool Glow.json +215 -0
  109. data/config/theme/Dawn.json +258 -0
  110. data/config/theme/Eiffel.json +270 -0
  111. data/config/theme/Espresso Libre.json +247 -0
  112. data/config/theme/Fluidvision.json +272 -0
  113. data/config/theme/IDLE.json +159 -0
  114. data/config/theme/LAZY.json +178 -0
  115. data/config/theme/Mac Classic.json +277 -0
  116. data/config/theme/MagicWB (Amiga).json +231 -0
  117. data/config/theme/Merbivore Soft.json +181 -0
  118. data/config/theme/Merbivore.json +181 -0
  119. data/config/theme/Monokai.json +177 -0
  120. data/config/theme/Notepad2.json +166 -0
  121. data/config/theme/Pastels on Dark.json +437 -0
  122. data/config/theme/RubyBlue.json +226 -0
  123. data/config/theme/Sin City 2.json +361 -0
  124. data/config/theme/Slate.json +270 -0
  125. data/config/theme/Slush & Poppies.json +232 -0
  126. data/config/theme/SpaceCadet.json +143 -0
  127. data/config/theme/Sunburst.json +415 -0
  128. data/config/theme/Twilight BG FG.json +633 -0
  129. data/config/theme/Twilight.json +321 -0
  130. data/config/theme/Whys Poignant.json +119 -0
  131. data/config/theme/Zenburnesque.json +237 -0
  132. data/config/theme/barf.json +155 -0
  133. data/config/theme/fake.json +418 -0
  134. data/config/theme/happydeluxe.json +114 -0
  135. data/config/theme/iLife 05.json +393 -0
  136. data/config/theme/iPlastic.json +177 -0
  137. data/config/theme/mintBlue Dark.json +414 -0
  138. data/config/theme/mintBlue.json +415 -0
  139. data/config/theme/monoindustrial.json +276 -0
  140. data/config/theme/starlight.json +67 -0
  141. data/config/tutorial +74 -0
  142. data/config/welcome +115 -0
  143. data/help/index.verh +14 -0
  144. data/lib/ver.rb +156 -0
  145. data/lib/ver/entry.rb +97 -0
  146. data/lib/ver/keymap.rb +96 -0
  147. data/lib/ver/layout.rb +107 -0
  148. data/lib/ver/methods.rb +19 -0
  149. data/lib/ver/methods/completion.rb +116 -0
  150. data/lib/ver/methods/control.rb +340 -0
  151. data/lib/ver/methods/insert.rb +6 -0
  152. data/lib/ver/methods/move.rb +65 -0
  153. data/lib/ver/methods/search.rb +33 -0
  154. data/lib/ver/methods/select.rb +145 -0
  155. data/lib/ver/methods/views.rb +21 -0
  156. data/lib/ver/mode.rb +160 -0
  157. data/lib/ver/options.rb +207 -0
  158. data/lib/ver/plist.rb +106 -0
  159. data/lib/ver/status.rb +67 -0
  160. data/lib/ver/syntax.rb +68 -0
  161. data/lib/ver/syntax/detector.rb +53 -0
  162. data/lib/ver/syntax/processor.rb +48 -0
  163. data/lib/ver/text.rb +374 -0
  164. data/lib/ver/textpow.rb +357 -0
  165. data/lib/ver/theme.rb +162 -0
  166. data/lib/ver/vendor/fuzzy_file_finder.rb +340 -0
  167. data/lib/ver/view.rb +163 -0
  168. data/lib/ver/view/entry.rb +28 -0
  169. data/lib/ver/view/list.rb +137 -0
  170. data/lib/ver/view/list/buffer.rb +27 -0
  171. data/lib/ver/view/list/fuzzy_file_finder.rb +44 -0
  172. data/lib/ver/view/list/syntax.rb +13 -0
  173. data/lib/ver/view/list/theme.rb +13 -0
  174. data/spec/keymap.rb +224 -0
  175. data/tasks/bacon.rake +49 -0
  176. data/tasks/changelog.rake +18 -0
  177. data/tasks/gem.rake +22 -0
  178. data/tasks/gem_installer.rake +76 -0
  179. data/tasks/grancher.rake +12 -0
  180. data/tasks/install_dependencies.rake +6 -0
  181. data/tasks/manifest.rake +4 -0
  182. data/tasks/plist2json.rake +35 -0
  183. data/tasks/rcov.rake +18 -0
  184. data/tasks/release.rake +12 -0
  185. data/tasks/reversion.rake +8 -0
  186. data/tasks/syntax_list.rake +31 -0
  187. data/ver.gemspec +29 -0
  188. metadata +241 -0
@@ -0,0 +1,128 @@
1
+ {
2
+ "fileTypes": [
3
+ "pas",
4
+ "p"
5
+ ],
6
+ "foldingStartMarker": "\\b(?i:(function|package|procedure|try|type))\\b",
7
+ "foldingStopMarker": "\\b(?i:(end))\\b",
8
+ "keyEquivalent": "^~P",
9
+ "name": "Pascal",
10
+ "patterns": [
11
+ {
12
+ "match": "\\b(?i:(absolute|abstract|all|and|and_then|array|as|asm|attribute|begin|bindable|case|class|const|constructor|destructor|div|do|do|else|end|except|export|exports|external|far|file|finalization|finally|for|forward|goto|if|implementation|import|in|inherited|initialization|interface|interrupt|is|label|library|mod|module|name|near|nil|not|object|of|only|operator|or|or_else|otherwise|packed|pow|private|program|property|protected|public|published|qualified|record|repeat|resident|restricted|segment|set|shl|shr|then|to|try|type|unit|until|uses|value|var|view|virtual|while|with|xor))\\b",
13
+ "name": "keyword.control.pascal"
14
+ },
15
+ {
16
+ "captures": {
17
+ "1": {
18
+ "name": "storage.type.prototype.pascal"
19
+ },
20
+ "2": {
21
+ "name": "entity.name.function.prototype.pascal"
22
+ }
23
+ },
24
+ "match": "\\b(?i:(function|procedure))\\b\\s+(\\w+(\\.\\w+)?)(\\(.*?\\))?;\\s*(?=(?i:attribute|forward|external))",
25
+ "name": "meta.function.prototype.pascal"
26
+ },
27
+ {
28
+ "captures": {
29
+ "1": {
30
+ "name": "storage.type.function.pascal"
31
+ },
32
+ "2": {
33
+ "name": "entity.name.function.pascal"
34
+ }
35
+ },
36
+ "match": "\\b(?i:(function|procedure))\\b\\s+(\\w+(\\.\\w+)?)",
37
+ "name": "meta.function.pascal"
38
+ },
39
+ {
40
+ "match": "\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b",
41
+ "name": "constant.numeric.pascal"
42
+ },
43
+ {
44
+ "captures": {
45
+ "1": {
46
+ "name": "punctuation.definition.comment.pascal"
47
+ }
48
+ },
49
+ "match": "(--).*$\\n?",
50
+ "name": "comment.line.double-dash.pascal.one"
51
+ },
52
+ {
53
+ "captures": {
54
+ "1": {
55
+ "name": "punctuation.definition.comment.pascal"
56
+ }
57
+ },
58
+ "match": "(\/\/).*$\\n?",
59
+ "name": "comment.line.double-slash.pascal.two"
60
+ },
61
+ {
62
+ "begin": "\\(\\*",
63
+ "captures": {
64
+ "0": {
65
+ "name": "punctuation.definition.comment.pascal"
66
+ }
67
+ },
68
+ "end": "\\*\\)",
69
+ "name": "comment.block.pascal.one"
70
+ },
71
+ {
72
+ "begin": "\\{",
73
+ "captures": {
74
+ "0": {
75
+ "name": "punctuation.definition.comment.pascal"
76
+ }
77
+ },
78
+ "end": "\\}",
79
+ "name": "comment.block.pascal.two"
80
+ },
81
+ {
82
+ "begin": "\"",
83
+ "beginCaptures": {
84
+ "0": {
85
+ "name": "punctuation.definition.string.begin.pascal"
86
+ }
87
+ },
88
+ "comment": "Double quoted strings are an extension and (generally) support C-style escape sequences.",
89
+ "end": "\"",
90
+ "endCaptures": {
91
+ "0": {
92
+ "name": "punctuation.definition.string.end.pascal"
93
+ }
94
+ },
95
+ "name": "string.quoted.double.pascal",
96
+ "patterns": [
97
+ {
98
+ "match": "\\\\.",
99
+ "name": "constant.character.escape.pascal"
100
+ }
101
+ ]
102
+ },
103
+ {
104
+ "applyEndPatternLast": 1,
105
+ "begin": "'",
106
+ "beginCaptures": {
107
+ "0": {
108
+ "name": "punctuation.definition.string.begin.pascal"
109
+ }
110
+ },
111
+ "end": "'",
112
+ "endCaptures": {
113
+ "0": {
114
+ "name": "punctuation.definition.string.end.pascal"
115
+ }
116
+ },
117
+ "name": "string.quoted.single.pascal",
118
+ "patterns": [
119
+ {
120
+ "match": "''",
121
+ "name": "constant.character.escape.apostrophe.pascal"
122
+ }
123
+ ]
124
+ }
125
+ ],
126
+ "scopeName": "source.pascal",
127
+ "uuid": "F42FA544-6B1C-11D9-9517-000D93589AF6"
128
+ }
@@ -0,0 +1,2091 @@
1
+ {
2
+ "comment": "\n\tTODO:\tInclude RegExp syntax\n",
3
+ "fileTypes": [
4
+ "pl",
5
+ "pm",
6
+ "pod",
7
+ "t",
8
+ "PL"
9
+ ],
10
+ "firstLineMatch": "^#!.*\\bperl\\b",
11
+ "foldingStartMarker": "(\/\\*|(\\{|\\[|\\()\\s*$)",
12
+ "foldingStopMarker": "(\\*\/|^\\s*(\\}|\\]|\\)))",
13
+ "keyEquivalent": "^~P",
14
+ "name": "Perl",
15
+ "patterns": [
16
+ {
17
+ "include": "#line_comment"
18
+ },
19
+ {
20
+ "begin": "^=",
21
+ "captures": {
22
+ "0": {
23
+ "name": "punctuation.definition.comment.perl"
24
+ }
25
+ },
26
+ "end": "^=cut",
27
+ "name": "comment.block.documentation.perl"
28
+ },
29
+ {
30
+ "include": "#variable"
31
+ },
32
+ {
33
+ "applyEndPatternLast": 1,
34
+ "begin": "\\b(?=qr\\s*[^\\s\\w])",
35
+ "comment": "string.regexp.compile.perl",
36
+ "end": "((([egimosx]*)))(?=(\\s+\\S|\\s*[;\\,\\#\\{\\}\\)]|$))",
37
+ "endCaptures": {
38
+ "1": {
39
+ "name": "string.regexp.compile.perl"
40
+ },
41
+ "2": {
42
+ "name": "punctuation.definition.string.perl"
43
+ },
44
+ "3": {
45
+ "name": "keyword.control.regexp-option.perl"
46
+ }
47
+ },
48
+ "patterns": [
49
+ {
50
+ "begin": "(qr)\\s*\\{",
51
+ "captures": {
52
+ "0": {
53
+ "name": "punctuation.definition.string.perl"
54
+ },
55
+ "1": {
56
+ "name": "support.function.perl"
57
+ }
58
+ },
59
+ "end": "\\}",
60
+ "name": "string.regexp.compile.nested_braces.perl",
61
+ "patterns": [
62
+ {
63
+ "include": "#escaped_char"
64
+ },
65
+ {
66
+ "include": "#variable"
67
+ },
68
+ {
69
+ "include": "#nested_braces_interpolated"
70
+ }
71
+ ]
72
+ },
73
+ {
74
+ "begin": "(qr)\\s*\\[",
75
+ "captures": {
76
+ "0": {
77
+ "name": "punctuation.definition.string.perl"
78
+ },
79
+ "1": {
80
+ "name": "support.function.perl"
81
+ }
82
+ },
83
+ "end": "\\]",
84
+ "name": "string.regexp.compile.nested_brackets.perl",
85
+ "patterns": [
86
+ {
87
+ "include": "#escaped_char"
88
+ },
89
+ {
90
+ "include": "#variable"
91
+ },
92
+ {
93
+ "include": "#nested_brackets_interpolated"
94
+ }
95
+ ]
96
+ },
97
+ {
98
+ "begin": "(qr)\\s*<",
99
+ "captures": {
100
+ "0": {
101
+ "name": "punctuation.definition.string.perl"
102
+ },
103
+ "1": {
104
+ "name": "support.function.perl"
105
+ }
106
+ },
107
+ "end": ">",
108
+ "name": "string.regexp.compile.nested_ltgt.perl",
109
+ "patterns": [
110
+ {
111
+ "include": "#escaped_char"
112
+ },
113
+ {
114
+ "include": "#variable"
115
+ },
116
+ {
117
+ "include": "#nested_ltgt_interpolated"
118
+ }
119
+ ]
120
+ },
121
+ {
122
+ "begin": "(qr)\\s*\\(",
123
+ "captures": {
124
+ "0": {
125
+ "name": "punctuation.definition.string.perl"
126
+ },
127
+ "1": {
128
+ "name": "support.function.perl"
129
+ }
130
+ },
131
+ "end": "\\)",
132
+ "name": "string.regexp.compile.nested_parens.perl",
133
+ "patterns": [
134
+ {
135
+ "include": "#escaped_char"
136
+ },
137
+ {
138
+ "include": "#variable"
139
+ },
140
+ {
141
+ "include": "#nested_parens_interpolated"
142
+ }
143
+ ]
144
+ },
145
+ {
146
+ "begin": "(qr)\\s*\\'",
147
+ "captures": {
148
+ "0": {
149
+ "name": "punctuation.definition.string.perl"
150
+ },
151
+ "1": {
152
+ "name": "support.function.perl"
153
+ }
154
+ },
155
+ "end": "\\'",
156
+ "name": "string.regexp.compile.single-quote.perl",
157
+ "patterns": [
158
+ {
159
+ "include": "#escaped_char"
160
+ }
161
+ ]
162
+ },
163
+ {
164
+ "begin": "(qr)\\s*([^\\s\\w\\'\\{\\[\\(\\<])",
165
+ "captures": {
166
+ "0": {
167
+ "name": "punctuation.definition.string.perl"
168
+ },
169
+ "1": {
170
+ "name": "support.function.perl"
171
+ }
172
+ },
173
+ "end": "\\2",
174
+ "name": "string.regexp.compile.simple-delimiter.perl",
175
+ "patterns": [
176
+ {
177
+ "comment": "This is to prevent thinks like qr\/foo$\/ to treat $\/ as a variable",
178
+ "match": "\\$(?=[^\\s\\w\\'\\{\\[\\(\\<])",
179
+ "name": "keyword.control.anchor.perl"
180
+ },
181
+ {
182
+ "include": "#escaped_char"
183
+ },
184
+ {
185
+ "include": "#variable"
186
+ },
187
+ {
188
+ "include": "#nested_parens_interpolated"
189
+ }
190
+ ]
191
+ }
192
+ ]
193
+ },
194
+ {
195
+ "applyEndPatternLast": 1,
196
+ "begin": "\\b(?=(?<!\\&)(s)(\\s+\\S|\\s*[;\\,\\#\\{\\}\\(\\)\\[<]|$))",
197
+ "comment": "string.regexp.replace.perl",
198
+ "end": "((([egimosx]*)))(?=(\\s+\\S|\\s*[;\\,\\#\\{\\}\\)\\]>]|$))",
199
+ "endCaptures": {
200
+ "1": {
201
+ "name": "string.regexp.replace.perl"
202
+ },
203
+ "2": {
204
+ "name": "punctuation.definition.string.perl"
205
+ },
206
+ "3": {
207
+ "name": "keyword.control.regexp-option.perl"
208
+ }
209
+ },
210
+ "patterns": [
211
+ {
212
+ "begin": "(s)\\s*\\{",
213
+ "captures": {
214
+ "0": {
215
+ "name": "punctuation.definition.string.perl"
216
+ },
217
+ "1": {
218
+ "name": "support.function.perl"
219
+ }
220
+ },
221
+ "end": "\\}",
222
+ "name": "string.regexp.nested_braces.perl",
223
+ "patterns": [
224
+ {
225
+ "include": "#escaped_char"
226
+ },
227
+ {
228
+ "include": "#nested_braces"
229
+ }
230
+ ]
231
+ },
232
+ {
233
+ "begin": "(s)\\s*\\[",
234
+ "captures": {
235
+ "0": {
236
+ "name": "punctuation.definition.string.perl"
237
+ },
238
+ "1": {
239
+ "name": "support.function.perl"
240
+ }
241
+ },
242
+ "end": "\\]",
243
+ "name": "string.regexp.nested_brackets.perl",
244
+ "patterns": [
245
+ {
246
+ "include": "#escaped_char"
247
+ },
248
+ {
249
+ "include": "#nested_brackets"
250
+ }
251
+ ]
252
+ },
253
+ {
254
+ "begin": "(s)\\s*<",
255
+ "captures": {
256
+ "0": {
257
+ "name": "punctuation.definition.string.perl"
258
+ },
259
+ "1": {
260
+ "name": "support.function.perl"
261
+ }
262
+ },
263
+ "end": ">",
264
+ "name": "string.regexp.nested_ltgt.perl",
265
+ "patterns": [
266
+ {
267
+ "include": "#escaped_char"
268
+ },
269
+ {
270
+ "include": "#nested_ltgt"
271
+ }
272
+ ]
273
+ },
274
+ {
275
+ "begin": "(s)\\s*\\(",
276
+ "captures": {
277
+ "0": {
278
+ "name": "punctuation.definition.string.perl"
279
+ },
280
+ "1": {
281
+ "name": "support.function.perl"
282
+ }
283
+ },
284
+ "end": "\\)",
285
+ "name": "string.regexp.nested_parens.perl",
286
+ "patterns": [
287
+ {
288
+ "include": "#escaped_char"
289
+ },
290
+ {
291
+ "include": "#nested_parens"
292
+ }
293
+ ]
294
+ },
295
+ {
296
+ "begin": "\\{",
297
+ "captures": {
298
+ "0": {
299
+ "name": "punctuation.definition.string.perl"
300
+ }
301
+ },
302
+ "end": "\\}",
303
+ "name": "string.regexp.format.nested_braces.perl",
304
+ "patterns": [
305
+ {
306
+ "include": "#escaped_char"
307
+ },
308
+ {
309
+ "include": "#variable"
310
+ },
311
+ {
312
+ "include": "#nested_braces_interpolated"
313
+ }
314
+ ]
315
+ },
316
+ {
317
+ "begin": "\\[",
318
+ "captures": {
319
+ "0": {
320
+ "name": "punctuation.definition.string.perl"
321
+ }
322
+ },
323
+ "end": "\\]",
324
+ "name": "string.regexp.format.nested_brackets.perl",
325
+ "patterns": [
326
+ {
327
+ "include": "#escaped_char"
328
+ },
329
+ {
330
+ "include": "#variable"
331
+ },
332
+ {
333
+ "include": "#nested_brackets_interpolated"
334
+ }
335
+ ]
336
+ },
337
+ {
338
+ "begin": "<",
339
+ "captures": {
340
+ "0": {
341
+ "name": "punctuation.definition.string.perl"
342
+ }
343
+ },
344
+ "end": ">",
345
+ "name": "string.regexp.format.nested_ltgt.perl",
346
+ "patterns": [
347
+ {
348
+ "include": "#escaped_char"
349
+ },
350
+ {
351
+ "include": "#variable"
352
+ },
353
+ {
354
+ "include": "#nested_ltgt_interpolated"
355
+ }
356
+ ]
357
+ },
358
+ {
359
+ "begin": "\\(",
360
+ "captures": {
361
+ "0": {
362
+ "name": "punctuation.definition.string.perl"
363
+ }
364
+ },
365
+ "end": "\\)",
366
+ "name": "string.regexp.format.nested_parens.perl",
367
+ "patterns": [
368
+ {
369
+ "include": "#escaped_char"
370
+ },
371
+ {
372
+ "include": "#variable"
373
+ },
374
+ {
375
+ "include": "#nested_parens_interpolated"
376
+ }
377
+ ]
378
+ },
379
+ {
380
+ "begin": "'",
381
+ "captures": {
382
+ "0": {
383
+ "name": "punctuation.definition.string.perl"
384
+ }
385
+ },
386
+ "end": "'",
387
+ "name": "string.regexp.format.single_quote.perl",
388
+ "patterns": [
389
+ {
390
+ "match": "\\\\['\\\\]",
391
+ "name": "constant.character.escape.perl"
392
+ }
393
+ ]
394
+ },
395
+ {
396
+ "begin": "([^\\s\\w\\[({<;])",
397
+ "captures": {
398
+ "0": {
399
+ "name": "punctuation.definition.string.perl"
400
+ }
401
+ },
402
+ "end": "\\1",
403
+ "name": "string.regexp.format.simple_delimiter.perl",
404
+ "patterns": [
405
+ {
406
+ "include": "#escaped_char"
407
+ },
408
+ {
409
+ "include": "#variable"
410
+ }
411
+ ]
412
+ },
413
+ {
414
+ "match": "\\s+"
415
+ }
416
+ ]
417
+ },
418
+ {
419
+ "begin": "\\b(?=s([^\\s\\w\\[({<]).*\\1([egimos]*)([\\}\\)\\;\\,]|\\s+))",
420
+ "comment": "string.regexp.replaceXXX",
421
+ "end": "((([egimos]*)))(?=([\\}\\)\\;\\,]|\\s+|$))",
422
+ "endCaptures": {
423
+ "1": {
424
+ "name": "string.regexp.replace.perl"
425
+ },
426
+ "2": {
427
+ "name": "punctuation.definition.string.perl"
428
+ },
429
+ "3": {
430
+ "name": "keyword.control.regexp-option.perl"
431
+ }
432
+ },
433
+ "patterns": [
434
+ {
435
+ "begin": "(s\\s*)([^\\s\\w\\[({<])",
436
+ "captures": {
437
+ "0": {
438
+ "name": "punctuation.definition.string.perl"
439
+ },
440
+ "1": {
441
+ "name": "support.function.perl"
442
+ }
443
+ },
444
+ "end": "(?=\\2)",
445
+ "name": "string.regexp.replaceXXX.simple_delimiter.perl",
446
+ "patterns": [
447
+ {
448
+ "include": "#escaped_char"
449
+ }
450
+ ]
451
+ },
452
+ {
453
+ "begin": "'",
454
+ "captures": {
455
+ "0": {
456
+ "name": "punctuation.definition.string.perl"
457
+ }
458
+ },
459
+ "end": "'",
460
+ "name": "string.regexp.replaceXXX.format.single_quote.perl",
461
+ "patterns": [
462
+ {
463
+ "match": "\\\\['\\\\]",
464
+ "name": "constant.character.escape.perl.perl"
465
+ }
466
+ ]
467
+ },
468
+ {
469
+ "begin": "([^\\s\\w\\[({<])",
470
+ "captures": {
471
+ "0": {
472
+ "name": "punctuation.definition.string.perl"
473
+ }
474
+ },
475
+ "end": "\\1",
476
+ "name": "string.regexp.replaceXXX.format.simple_delimiter.perl",
477
+ "patterns": [
478
+ {
479
+ "include": "#escaped_char"
480
+ },
481
+ {
482
+ "include": "#variable"
483
+ }
484
+ ]
485
+ }
486
+ ]
487
+ },
488
+ {
489
+ "begin": "\\b(?=(?<!\\\\)s\\s*([^\\s\\w\\[({<]))",
490
+ "comment": "string.regexp.replace.extended",
491
+ "end": "\\2((([egimos]*x[egimos]*)))\\b",
492
+ "endCaptures": {
493
+ "1": {
494
+ "name": "string.regexp.replace.perl"
495
+ },
496
+ "2": {
497
+ "name": "punctuation.definition.string.perl"
498
+ },
499
+ "3": {
500
+ "name": "keyword.control.regexp-option.perl"
501
+ }
502
+ },
503
+ "patterns": [
504
+ {
505
+ "begin": "(s)\\s*(.)",
506
+ "captures": {
507
+ "0": {
508
+ "name": "punctuation.definition.string.perl"
509
+ },
510
+ "1": {
511
+ "name": "support.function.perl"
512
+ }
513
+ },
514
+ "end": "(?=\\2)",
515
+ "name": "string.regexp.replace.extended.simple_delimiter.perl",
516
+ "patterns": [
517
+ {
518
+ "include": "#escaped_char"
519
+ }
520
+ ]
521
+ },
522
+ {
523
+ "begin": "'",
524
+ "captures": {
525
+ "0": {
526
+ "name": "punctuation.definition.string.perl"
527
+ }
528
+ },
529
+ "end": "'(?=[egimos]*x[egimos]*)\\b",
530
+ "name": "string.regexp.replace.extended.simple_delimiter.perl",
531
+ "patterns": [
532
+ {
533
+ "include": "#escaped_char"
534
+ }
535
+ ]
536
+ },
537
+ {
538
+ "begin": "(.)",
539
+ "captures": {
540
+ "0": {
541
+ "name": "punctuation.definition.string.perl"
542
+ }
543
+ },
544
+ "end": "\\1(?=[egimos]*x[egimos]*)\\b",
545
+ "name": "string.regexp.replace.extended.simple_delimiter.perl",
546
+ "patterns": [
547
+ {
548
+ "include": "#escaped_char"
549
+ },
550
+ {
551
+ "include": "#variable"
552
+ }
553
+ ]
554
+ }
555
+ ]
556
+ },
557
+ {
558
+ "match": "\\b\\w+\\s*(?==>)",
559
+ "name": "constant.other.key.perl"
560
+ },
561
+ {
562
+ "match": "(?<={)\\s*\\w+\\s*(?=})",
563
+ "name": "constant.other.bareword.perl"
564
+ },
565
+ {
566
+ "captures": {
567
+ "1": {
568
+ "name": "punctuation.definition.string.perl"
569
+ },
570
+ "5": {
571
+ "name": "punctuation.definition.string.perl"
572
+ }
573
+ },
574
+ "match": "(?<!\\\\)((~\\s*)?\\\/)(\\S.*?)(?<!\\\\)(\\\\{2})*(\\\/)",
575
+ "name": "string.regexp.find.perl"
576
+ },
577
+ {
578
+ "begin": "(?<!\\\\)(\\~\\s*\\\/)",
579
+ "captures": {
580
+ "0": {
581
+ "name": "punctuation.definition.string.perl"
582
+ }
583
+ },
584
+ "end": "\\\/([cgimos]*x[cgimos]*)\\b",
585
+ "endCaptures": {
586
+ "1": {
587
+ "name": "keyword.control.regexp-option.perl"
588
+ }
589
+ },
590
+ "name": "string.regexp.find.extended.perl",
591
+ "patterns": [
592
+ {
593
+ "include": "#escaped_char"
594
+ },
595
+ {
596
+ "include": "#variable"
597
+ }
598
+ ]
599
+ },
600
+ {
601
+ "captures": {
602
+ "1": {
603
+ "name": "keyword.control.perl"
604
+ },
605
+ "2": {
606
+ "name": "entity.name.type.class.perl"
607
+ },
608
+ "3": {
609
+ "name": "comment.line.number-sign.perl"
610
+ },
611
+ "4": {
612
+ "name": "punctuation.definition.comment.perl"
613
+ }
614
+ },
615
+ "match": "^\\s*(package)\\s+(\\S+)\\s*((#).*)?$\\n?",
616
+ "name": "meta.class.perl"
617
+ },
618
+ {
619
+ "captures": {
620
+ "1": {
621
+ "name": "storage.type.sub.perl"
622
+ },
623
+ "2": {
624
+ "name": "entity.name.function.perl"
625
+ },
626
+ "3": {
627
+ "name": "storage.type.method.perl"
628
+ }
629
+ },
630
+ "match": "^\\s*(sub)\\s+([-a-zA-Z0-9_]+)\\s*(\\([\\$\\@\\*;]*\\))?",
631
+ "name": "meta.function.perl"
632
+ },
633
+ {
634
+ "captures": {
635
+ "1": {
636
+ "name": "entity.name.function.perl"
637
+ },
638
+ "2": {
639
+ "name": "punctuation.definition.parameters.perl"
640
+ },
641
+ "3": {
642
+ "name": "variable.parameter.function.perl"
643
+ }
644
+ },
645
+ "match": "^\\s*(BEGIN|END|DESTROY)\\b",
646
+ "name": "meta.function.perl"
647
+ },
648
+ {
649
+ "begin": "^(?=(\\t| {4}))",
650
+ "end": "(?=[^\\t\\s])",
651
+ "name": "meta.leading-tabs",
652
+ "patterns": [
653
+ {
654
+ "captures": {
655
+ "1": {
656
+ "name": "meta.odd-tab"
657
+ },
658
+ "2": {
659
+ "name": "meta.even-tab"
660
+ }
661
+ },
662
+ "match": "(\\t| {4})(\\t| {4})?"
663
+ }
664
+ ]
665
+ },
666
+ {
667
+ "captures": {
668
+ "1": {
669
+ "name": "support.function.perl"
670
+ },
671
+ "2": {
672
+ "name": "punctuation.definition.string.perl"
673
+ },
674
+ "5": {
675
+ "name": "punctuation.definition.string.perl"
676
+ }
677
+ },
678
+ "match": "\\b(m)\\s*(?<!\\\\)([^\\[\\{\\(A-Za-z0-9\\s])(.*?)(?<!\\\\)(\\\\{2})*(\\2)",
679
+ "name": "string.regexp.find-m.perl"
680
+ },
681
+ {
682
+ "begin": "\\b(m)\\s*(?<!\\\\)\\(",
683
+ "beginCaptures": {
684
+ "0": {
685
+ "name": "punctuation.definition.string.begin.perl"
686
+ }
687
+ },
688
+ "end": "\\)",
689
+ "endCaptures": {
690
+ "0": {
691
+ "name": "punctuation.definition.string.end.perl"
692
+ }
693
+ },
694
+ "name": "string.regexp.find-m-paren.perl",
695
+ "patterns": [
696
+ {
697
+ "include": "#escaped_char"
698
+ },
699
+ {
700
+ "include": "#nested_parens_interpolated"
701
+ },
702
+ {
703
+ "include": "#variable"
704
+ }
705
+ ]
706
+ },
707
+ {
708
+ "begin": "\\b(m)\\s*(?<!\\\\)\\{",
709
+ "beginCaptures": {
710
+ "0": {
711
+ "name": "punctuation.definition.string.begin.perl"
712
+ }
713
+ },
714
+ "end": "\\}",
715
+ "endCaptures": {
716
+ "0": {
717
+ "name": "punctuation.definition.string.end.perl"
718
+ }
719
+ },
720
+ "name": "string.regexp.find-m-brace.perl",
721
+ "patterns": [
722
+ {
723
+ "include": "#escaped_char"
724
+ },
725
+ {
726
+ "include": "#nested_braces_interpolated"
727
+ },
728
+ {
729
+ "include": "#variable"
730
+ }
731
+ ]
732
+ },
733
+ {
734
+ "begin": "\\b(m)\\s*(?<!\\\\)\\[",
735
+ "beginCaptures": {
736
+ "0": {
737
+ "name": "punctuation.definition.string.begin.perl"
738
+ }
739
+ },
740
+ "end": "\\]",
741
+ "endCaptures": {
742
+ "0": {
743
+ "name": "punctuation.definition.string.end.perl"
744
+ }
745
+ },
746
+ "name": "string.regexp.find-m-bracket.perl",
747
+ "patterns": [
748
+ {
749
+ "include": "#escaped_char"
750
+ },
751
+ {
752
+ "include": "#nested_brackets_interpolated"
753
+ },
754
+ {
755
+ "include": "#variable"
756
+ }
757
+ ]
758
+ },
759
+ {
760
+ "begin": "\\b(m)\\s*(?<!\\\\)\\<",
761
+ "beginCaptures": {
762
+ "0": {
763
+ "name": "punctuation.definition.string.begin.perl"
764
+ }
765
+ },
766
+ "end": "\\>",
767
+ "endCaptures": {
768
+ "0": {
769
+ "name": "punctuation.definition.string.end.perl"
770
+ }
771
+ },
772
+ "name": "string.regexp.find-m-ltgt.perl",
773
+ "patterns": [
774
+ {
775
+ "include": "#escaped_char"
776
+ },
777
+ {
778
+ "include": "#nested_ltgt_interpolated"
779
+ },
780
+ {
781
+ "include": "#variable"
782
+ }
783
+ ]
784
+ },
785
+ {
786
+ "captures": {
787
+ "1": {
788
+ "name": "support.function.perl"
789
+ },
790
+ "2": {
791
+ "name": "punctuation.definition.string.perl"
792
+ },
793
+ "5": {
794
+ "name": "punctuation.definition.string.perl"
795
+ },
796
+ "8": {
797
+ "name": "punctuation.definition.string.perl"
798
+ }
799
+ },
800
+ "match": "\\b(s|tr|y)\\s*([^A-Za-z0-9\\s])(.*?)(?<!\\\\)(\\\\{2})*(\\2)(.*?)(?<!\\\\)(\\\\{2})*(\\2)",
801
+ "name": "string.regexp.replace.perl"
802
+ },
803
+ {
804
+ "match": "\\b(__FILE__|__LINE__|__PACKAGE__)\\b",
805
+ "name": "constant.language.perl"
806
+ },
807
+ {
808
+ "match": "(?<!->)\\b(continue|die|do|else|elsif|exit|for|foreach|goto|if|last|next|redo|return|select|unless|until|wait|while|switch|case|package|require|use|eval)\\b",
809
+ "name": "keyword.control.perl"
810
+ },
811
+ {
812
+ "match": "\\b(my|our|local)\\b",
813
+ "name": "storage.modifier.perl"
814
+ },
815
+ {
816
+ "match": "(?<!\\w)\\-[rwx0RWXOezsfdlpSbctugkTBMAC]\\b",
817
+ "name": "keyword.operator.filetest.perl"
818
+ },
819
+ {
820
+ "match": "\\b(and|or|xor|as)\\b",
821
+ "name": "keyword.operator.logical.perl"
822
+ },
823
+ {
824
+ "match": "(<=>| =>|->)",
825
+ "name": "keyword.operator.comparison.perl"
826
+ },
827
+ {
828
+ "begin": "((<<) *\"HTML\").*\\n?",
829
+ "captures": {
830
+ "0": {
831
+ "name": "punctuation.definition.string.perl"
832
+ },
833
+ "1": {
834
+ "name": "string.unquoted.heredoc.doublequote.perl"
835
+ },
836
+ "2": {
837
+ "name": "punctuation.definition.heredoc.perl"
838
+ }
839
+ },
840
+ "contentName": "text.html.embedded.perl",
841
+ "end": "(^HTML$)",
842
+ "patterns": [
843
+ {
844
+ "include": "#escaped_char"
845
+ },
846
+ {
847
+ "include": "#variable"
848
+ },
849
+ {
850
+ "include": "text.html.basic"
851
+ }
852
+ ]
853
+ },
854
+ {
855
+ "begin": "((<<) *\"XML\").*\\n?",
856
+ "captures": {
857
+ "0": {
858
+ "name": "punctuation.definition.string.perl"
859
+ },
860
+ "1": {
861
+ "name": "string.unquoted.heredoc.doublequote.perl"
862
+ },
863
+ "2": {
864
+ "name": "punctuation.definition.heredoc.perl"
865
+ }
866
+ },
867
+ "contentName": "text.xml.embedded.perl",
868
+ "end": "(^XML$)",
869
+ "patterns": [
870
+ {
871
+ "include": "#escaped_char"
872
+ },
873
+ {
874
+ "include": "#variable"
875
+ },
876
+ {
877
+ "include": "text.xml"
878
+ }
879
+ ]
880
+ },
881
+ {
882
+ "begin": "((<<) *\"CSS\").*\\n?",
883
+ "captures": {
884
+ "0": {
885
+ "name": "punctuation.definition.string.perl"
886
+ },
887
+ "1": {
888
+ "name": "string.unquoted.heredoc.doublequote.perl"
889
+ },
890
+ "2": {
891
+ "name": "punctuation.definition.heredoc.perl"
892
+ }
893
+ },
894
+ "contentName": "text.css.embedded.perl",
895
+ "end": "(^CSS$)",
896
+ "patterns": [
897
+ {
898
+ "include": "#escaped_char"
899
+ },
900
+ {
901
+ "include": "#variable"
902
+ },
903
+ {
904
+ "include": "source.css"
905
+ }
906
+ ]
907
+ },
908
+ {
909
+ "begin": "((<<) *\"JAVASCRIPT\").*\\n?",
910
+ "captures": {
911
+ "0": {
912
+ "name": "punctuation.definition.string.perl"
913
+ },
914
+ "1": {
915
+ "name": "string.unquoted.heredoc.doublequote.perl"
916
+ },
917
+ "2": {
918
+ "name": "punctuation.definition.heredoc.perl"
919
+ }
920
+ },
921
+ "contentName": "text.js.embedded.perl",
922
+ "end": "(^JAVASCRIPT$)",
923
+ "patterns": [
924
+ {
925
+ "include": "#escaped_char"
926
+ },
927
+ {
928
+ "include": "#variable"
929
+ },
930
+ {
931
+ "include": "source.js"
932
+ }
933
+ ]
934
+ },
935
+ {
936
+ "begin": "((<<) *\"SQL\").*\\n?",
937
+ "captures": {
938
+ "0": {
939
+ "name": "punctuation.definition.string.perl"
940
+ },
941
+ "1": {
942
+ "name": "string.unquoted.heredoc.doublequote.perl"
943
+ },
944
+ "2": {
945
+ "name": "punctuation.definition.heredoc.perl"
946
+ }
947
+ },
948
+ "contentName": "source.sql.embedded.perl",
949
+ "end": "(^SQL$)",
950
+ "patterns": [
951
+ {
952
+ "include": "#escaped_char"
953
+ },
954
+ {
955
+ "include": "#variable"
956
+ },
957
+ {
958
+ "include": "source.sql"
959
+ }
960
+ ]
961
+ },
962
+ {
963
+ "begin": "((<<) *\"POSTSCRIPT\").*\\n?",
964
+ "captures": {
965
+ "0": {
966
+ "name": "punctuation.definition.string.perl"
967
+ },
968
+ "1": {
969
+ "name": "string.unquoted.heredoc.doublequote.perl"
970
+ },
971
+ "2": {
972
+ "name": "punctuation.definition.heredoc.perl"
973
+ }
974
+ },
975
+ "contentName": "text.postscript.embedded.perl",
976
+ "end": "(^POSTSCRIPT$)",
977
+ "patterns": [
978
+ {
979
+ "include": "#escaped_char"
980
+ },
981
+ {
982
+ "include": "#variable"
983
+ },
984
+ {
985
+ "include": "source.postscript"
986
+ }
987
+ ]
988
+ },
989
+ {
990
+ "begin": "((<<) *\"([^\"]*)\").*\\n?",
991
+ "captures": {
992
+ "0": {
993
+ "name": "punctuation.definition.string.perl"
994
+ },
995
+ "1": {
996
+ "name": "string.unquoted.heredoc.doublequote.perl"
997
+ },
998
+ "2": {
999
+ "name": "punctuation.definition.heredoc.perl"
1000
+ }
1001
+ },
1002
+ "contentName": "string.unquoted.heredoc.doublequote.perl",
1003
+ "end": "(^\\3$)",
1004
+ "patterns": [
1005
+ {
1006
+ "include": "#escaped_char"
1007
+ },
1008
+ {
1009
+ "include": "#variable"
1010
+ }
1011
+ ]
1012
+ },
1013
+ {
1014
+ "begin": "((<<) *'HTML').*\\n?",
1015
+ "captures": {
1016
+ "0": {
1017
+ "name": "punctuation.definition.string.perl"
1018
+ },
1019
+ "1": {
1020
+ "name": "string.unquoted.heredoc.quote.perl"
1021
+ },
1022
+ "2": {
1023
+ "name": "punctuation.definition.heredoc.perl"
1024
+ }
1025
+ },
1026
+ "contentName": "text.html.embedded.perl",
1027
+ "end": "(^HTML$)",
1028
+ "patterns": [
1029
+ {
1030
+ "include": "text.html.basic"
1031
+ }
1032
+ ]
1033
+ },
1034
+ {
1035
+ "begin": "((<<) *'XML').*\\n?",
1036
+ "captures": {
1037
+ "0": {
1038
+ "name": "punctuation.definition.string.perl"
1039
+ },
1040
+ "1": {
1041
+ "name": "string.unquoted.heredoc.quote.perl"
1042
+ },
1043
+ "2": {
1044
+ "name": "punctuation.definition.heredoc.perl"
1045
+ }
1046
+ },
1047
+ "contentName": "text.xml.embedded.perl",
1048
+ "end": "(^XML$)",
1049
+ "patterns": [
1050
+ {
1051
+ "include": "text.xml"
1052
+ }
1053
+ ]
1054
+ },
1055
+ {
1056
+ "begin": "((<<) *'CSS').*\\n?",
1057
+ "captures": {
1058
+ "0": {
1059
+ "name": "punctuation.definition.string.perl"
1060
+ },
1061
+ "1": {
1062
+ "name": "string.unquoted.heredoc.quote.perl"
1063
+ },
1064
+ "2": {
1065
+ "name": "punctuation.definition.heredoc.perl"
1066
+ }
1067
+ },
1068
+ "contentName": "text.css.embedded.perl",
1069
+ "end": "(^CSS$)",
1070
+ "patterns": [
1071
+ {
1072
+ "include": "source.css"
1073
+ }
1074
+ ]
1075
+ },
1076
+ {
1077
+ "begin": "((<<) *'JAVASCRIPT').*\\n?",
1078
+ "captures": {
1079
+ "0": {
1080
+ "name": "punctuation.definition.string.perl"
1081
+ },
1082
+ "1": {
1083
+ "name": "string.unquoted.heredoc.quote.perl"
1084
+ },
1085
+ "2": {
1086
+ "name": "punctuation.definition.heredoc.perl"
1087
+ }
1088
+ },
1089
+ "contentName": "text.js.embedded.perl",
1090
+ "end": "(^JAVASCRIPT$)",
1091
+ "patterns": [
1092
+ {
1093
+ "include": "source.js"
1094
+ }
1095
+ ]
1096
+ },
1097
+ {
1098
+ "begin": "((<<) *'SQL').*\\n?",
1099
+ "captures": {
1100
+ "0": {
1101
+ "name": "punctuation.definition.string.perl"
1102
+ },
1103
+ "1": {
1104
+ "name": "string.unquoted.heredoc.quote.perl"
1105
+ },
1106
+ "2": {
1107
+ "name": "punctuation.definition.heredoc.perl"
1108
+ }
1109
+ },
1110
+ "contentName": "source.sql.embedded.perl",
1111
+ "end": "(^SQL$)",
1112
+ "patterns": [
1113
+ {
1114
+ "include": "source.sql"
1115
+ }
1116
+ ]
1117
+ },
1118
+ {
1119
+ "begin": "((<<) *'POSTSCRIPT').*\\n?",
1120
+ "captures": {
1121
+ "0": {
1122
+ "name": "punctuation.definition.string.perl"
1123
+ },
1124
+ "1": {
1125
+ "name": "string.unquoted.heredoc.quote.perl"
1126
+ },
1127
+ "2": {
1128
+ "name": "punctuation.definition.heredoc.perl"
1129
+ }
1130
+ },
1131
+ "contentName": "source.postscript.embedded.perl",
1132
+ "end": "(^POSTSCRIPT)",
1133
+ "patterns": [
1134
+ {
1135
+ "include": "source.postscript"
1136
+ }
1137
+ ]
1138
+ },
1139
+ {
1140
+ "begin": "((<<) *'([^']*)').*\\n?",
1141
+ "captures": {
1142
+ "0": {
1143
+ "name": "punctuation.definition.string.perl"
1144
+ },
1145
+ "1": {
1146
+ "name": "string.unquoted.heredoc.quote.perl"
1147
+ },
1148
+ "2": {
1149
+ "name": "punctuation.definition.heredoc.perl"
1150
+ }
1151
+ },
1152
+ "contentName": "string.unquoted.heredoc.quote.perl",
1153
+ "end": "(^\\3$)"
1154
+ },
1155
+ {
1156
+ "begin": "((<<) *`([^`]*)`).*\\n?",
1157
+ "captures": {
1158
+ "0": {
1159
+ "name": "punctuation.definition.string.perl"
1160
+ },
1161
+ "1": {
1162
+ "name": "string.unquoted.heredoc.backtick.perl"
1163
+ },
1164
+ "2": {
1165
+ "name": "punctuation.definition.heredoc.perl"
1166
+ }
1167
+ },
1168
+ "contentName": "string.unquoted.heredoc.backtick.perl",
1169
+ "end": "(^\\3$)",
1170
+ "patterns": [
1171
+ {
1172
+ "include": "#escaped_char"
1173
+ },
1174
+ {
1175
+ "include": "#variable"
1176
+ }
1177
+ ]
1178
+ },
1179
+ {
1180
+ "begin": "((<<) *HTML\\b).*\\n?",
1181
+ "captures": {
1182
+ "0": {
1183
+ "name": "punctuation.definition.string.perl"
1184
+ },
1185
+ "1": {
1186
+ "name": "string.unquoted.heredoc.perl"
1187
+ },
1188
+ "2": {
1189
+ "name": "punctuation.definition.heredoc.perl"
1190
+ }
1191
+ },
1192
+ "contentName": "text.html.embedded.perl",
1193
+ "end": "(^HTML$)",
1194
+ "patterns": [
1195
+ {
1196
+ "include": "#escaped_char"
1197
+ },
1198
+ {
1199
+ "include": "#variable"
1200
+ },
1201
+ {
1202
+ "include": "text.html.basic"
1203
+ }
1204
+ ]
1205
+ },
1206
+ {
1207
+ "begin": "((<<) *XML\\b).*\\n?",
1208
+ "captures": {
1209
+ "0": {
1210
+ "name": "punctuation.definition.string.perl"
1211
+ },
1212
+ "1": {
1213
+ "name": "string.unquoted.heredoc.perl"
1214
+ },
1215
+ "2": {
1216
+ "name": "punctuation.definition.heredoc.perl"
1217
+ }
1218
+ },
1219
+ "contentName": "text.xml.embedded.perl",
1220
+ "end": "(^XML$)",
1221
+ "patterns": [
1222
+ {
1223
+ "include": "#escaped_char"
1224
+ },
1225
+ {
1226
+ "include": "#variable"
1227
+ },
1228
+ {
1229
+ "include": "text.xml"
1230
+ }
1231
+ ]
1232
+ },
1233
+ {
1234
+ "begin": "((<<) *SQL\\b).*\\n?",
1235
+ "captures": {
1236
+ "0": {
1237
+ "name": "punctuation.definition.string.perl"
1238
+ },
1239
+ "1": {
1240
+ "name": "string.unquoted.heredoc.perl"
1241
+ },
1242
+ "2": {
1243
+ "name": "punctuation.definition.heredoc.perl"
1244
+ }
1245
+ },
1246
+ "contentName": "source.sql.embedded.perl",
1247
+ "end": "(^SQL$)",
1248
+ "patterns": [
1249
+ {
1250
+ "include": "#escaped_char"
1251
+ },
1252
+ {
1253
+ "include": "#variable"
1254
+ },
1255
+ {
1256
+ "include": "source.sql"
1257
+ }
1258
+ ]
1259
+ },
1260
+ {
1261
+ "begin": "((<<) *POSTSCRIPT\\b).*\\n?",
1262
+ "captures": {
1263
+ "0": {
1264
+ "name": "punctuation.definition.string.perl"
1265
+ },
1266
+ "1": {
1267
+ "name": "string.unquoted.heredoc.perl"
1268
+ },
1269
+ "2": {
1270
+ "name": "punctuation.definition.heredoc.perl"
1271
+ }
1272
+ },
1273
+ "contentName": "source.postscript.embedded.perl",
1274
+ "end": "(^POSTSCRIPT)",
1275
+ "patterns": [
1276
+ {
1277
+ "include": "#escaped_char"
1278
+ },
1279
+ {
1280
+ "include": "#variable"
1281
+ },
1282
+ {
1283
+ "include": "source.postscript"
1284
+ }
1285
+ ]
1286
+ },
1287
+ {
1288
+ "begin": "((<<) *((?![=\\d\\$ ])[^;,'\"`\\s)]*)).*\\n?",
1289
+ "captures": {
1290
+ "0": {
1291
+ "name": "punctuation.definition.string.perl"
1292
+ },
1293
+ "1": {
1294
+ "name": "string.unquoted.heredoc.perl"
1295
+ },
1296
+ "2": {
1297
+ "name": "punctuation.definition.heredoc.perl"
1298
+ }
1299
+ },
1300
+ "contentName": "string.unquoted.heredoc.perl",
1301
+ "end": "(^\\3$)",
1302
+ "patterns": [
1303
+ {
1304
+ "include": "#escaped_char"
1305
+ },
1306
+ {
1307
+ "include": "#variable"
1308
+ }
1309
+ ]
1310
+ },
1311
+ {
1312
+ "begin": "\\bqq\\s*([^\\(\\{\\[\\<\\w\\s])",
1313
+ "beginCaptures": {
1314
+ "0": {
1315
+ "name": "punctuation.definition.string.begin.perl"
1316
+ }
1317
+ },
1318
+ "end": "\\1",
1319
+ "endCaptures": {
1320
+ "0": {
1321
+ "name": "punctuation.definition.string.end.perl"
1322
+ }
1323
+ },
1324
+ "name": "string.quoted.other.qq.perl",
1325
+ "patterns": [
1326
+ {
1327
+ "include": "#escaped_char"
1328
+ },
1329
+ {
1330
+ "include": "#variable"
1331
+ }
1332
+ ]
1333
+ },
1334
+ {
1335
+ "begin": "\\bqx\\s*([^'\\(\\{\\[\\<\\w\\s])",
1336
+ "beginCaptures": {
1337
+ "0": {
1338
+ "name": "punctuation.definition.string.begin.perl"
1339
+ }
1340
+ },
1341
+ "end": "\\1",
1342
+ "endCaptures": {
1343
+ "0": {
1344
+ "name": "punctuation.definition.string.end.perl"
1345
+ }
1346
+ },
1347
+ "name": "string.interpolated.qx.perl",
1348
+ "patterns": [
1349
+ {
1350
+ "include": "#escaped_char"
1351
+ },
1352
+ {
1353
+ "include": "#variable"
1354
+ }
1355
+ ]
1356
+ },
1357
+ {
1358
+ "begin": "\\bqx\\s*'",
1359
+ "beginCaptures": {
1360
+ "0": {
1361
+ "name": "punctuation.definition.string.begin.perl"
1362
+ }
1363
+ },
1364
+ "end": "'",
1365
+ "endCaptures": {
1366
+ "0": {
1367
+ "name": "punctuation.definition.string.end.perl"
1368
+ }
1369
+ },
1370
+ "name": "string.interpolated.qx.single-quote.perl",
1371
+ "patterns": [
1372
+ {
1373
+ "include": "#escaped_char"
1374
+ }
1375
+ ]
1376
+ },
1377
+ {
1378
+ "begin": "\"",
1379
+ "beginCaptures": {
1380
+ "0": {
1381
+ "name": "punctuation.definition.string.begin.perl"
1382
+ }
1383
+ },
1384
+ "end": "\"",
1385
+ "endCaptures": {
1386
+ "0": {
1387
+ "name": "punctuation.definition.string.end.perl"
1388
+ }
1389
+ },
1390
+ "name": "string.quoted.double.perl",
1391
+ "patterns": [
1392
+ {
1393
+ "include": "#escaped_char"
1394
+ },
1395
+ {
1396
+ "include": "#variable"
1397
+ }
1398
+ ]
1399
+ },
1400
+ {
1401
+ "begin": "\\bqw?\\s*([^\\(\\{\\[\\<\\w\\s])",
1402
+ "beginCaptures": {
1403
+ "0": {
1404
+ "name": "punctuation.definition.string.begin.perl"
1405
+ }
1406
+ },
1407
+ "end": "\\1",
1408
+ "endCaptures": {
1409
+ "0": {
1410
+ "name": "punctuation.definition.string.end.perl"
1411
+ }
1412
+ },
1413
+ "name": "string.quoted.other.q.perl",
1414
+ "patterns": [
1415
+ {
1416
+ "include": "#escaped_char"
1417
+ }
1418
+ ]
1419
+ },
1420
+ {
1421
+ "begin": "'",
1422
+ "beginCaptures": {
1423
+ "0": {
1424
+ "name": "punctuation.definition.string.begin.perl"
1425
+ }
1426
+ },
1427
+ "end": "'",
1428
+ "endCaptures": {
1429
+ "0": {
1430
+ "name": "punctuation.definition.string.end.perl"
1431
+ }
1432
+ },
1433
+ "name": "string.quoted.single.perl",
1434
+ "patterns": [
1435
+ {
1436
+ "match": "\\\\['\\\\]",
1437
+ "name": "constant.character.escape.perl"
1438
+ }
1439
+ ]
1440
+ },
1441
+ {
1442
+ "begin": "`",
1443
+ "beginCaptures": {
1444
+ "0": {
1445
+ "name": "punctuation.definition.string.begin.perl"
1446
+ }
1447
+ },
1448
+ "end": "`",
1449
+ "endCaptures": {
1450
+ "0": {
1451
+ "name": "punctuation.definition.string.end.perl"
1452
+ }
1453
+ },
1454
+ "name": "string.interpolated.perl",
1455
+ "patterns": [
1456
+ {
1457
+ "include": "#escaped_char"
1458
+ },
1459
+ {
1460
+ "include": "#variable"
1461
+ }
1462
+ ]
1463
+ },
1464
+ {
1465
+ "begin": "\\bqq\\s*\\(",
1466
+ "beginCaptures": {
1467
+ "0": {
1468
+ "name": "punctuation.definition.string.begin.perl"
1469
+ }
1470
+ },
1471
+ "end": "\\)",
1472
+ "endCaptures": {
1473
+ "0": {
1474
+ "name": "punctuation.definition.string.end.perl"
1475
+ }
1476
+ },
1477
+ "name": "string.quoted.other.qq-paren.perl",
1478
+ "patterns": [
1479
+ {
1480
+ "include": "#escaped_char"
1481
+ },
1482
+ {
1483
+ "include": "#nested_parens_interpolated"
1484
+ },
1485
+ {
1486
+ "include": "#variable"
1487
+ }
1488
+ ]
1489
+ },
1490
+ {
1491
+ "begin": "\\bqq\\s*\\{",
1492
+ "beginCaptures": {
1493
+ "0": {
1494
+ "name": "punctuation.definition.string.begin.perl"
1495
+ }
1496
+ },
1497
+ "end": "\\}",
1498
+ "endCaptures": {
1499
+ "0": {
1500
+ "name": "punctuation.definition.string.end.perl"
1501
+ }
1502
+ },
1503
+ "name": "string.quoted.other.qq-brace.perl",
1504
+ "patterns": [
1505
+ {
1506
+ "include": "#escaped_char"
1507
+ },
1508
+ {
1509
+ "include": "#nested_braces_interpolated"
1510
+ },
1511
+ {
1512
+ "include": "#variable"
1513
+ }
1514
+ ]
1515
+ },
1516
+ {
1517
+ "begin": "\\bqq\\s*\\[",
1518
+ "beginCaptures": {
1519
+ "0": {
1520
+ "name": "punctuation.definition.string.begin.perl"
1521
+ }
1522
+ },
1523
+ "end": "\\]",
1524
+ "endCaptures": {
1525
+ "0": {
1526
+ "name": "punctuation.definition.string.end.perl"
1527
+ }
1528
+ },
1529
+ "name": "string.quoted.other.qq-bracket.perl",
1530
+ "patterns": [
1531
+ {
1532
+ "include": "#escaped_char"
1533
+ },
1534
+ {
1535
+ "include": "#nested_brackets_interpolated"
1536
+ },
1537
+ {
1538
+ "include": "#variable"
1539
+ }
1540
+ ]
1541
+ },
1542
+ {
1543
+ "begin": "\\bqq\\s*\\<",
1544
+ "beginCaptures": {
1545
+ "0": {
1546
+ "name": "punctuation.definition.string.begin.perl"
1547
+ }
1548
+ },
1549
+ "end": "\\>",
1550
+ "endCaptures": {
1551
+ "0": {
1552
+ "name": "punctuation.definition.string.end.perl"
1553
+ }
1554
+ },
1555
+ "name": "string.quoted.other.qq-ltgt.perl",
1556
+ "patterns": [
1557
+ {
1558
+ "include": "#escaped_char"
1559
+ },
1560
+ {
1561
+ "include": "#nested_ltgt_interpolated"
1562
+ },
1563
+ {
1564
+ "include": "#variable"
1565
+ }
1566
+ ]
1567
+ },
1568
+ {
1569
+ "begin": "\\bqx\\s*\\(",
1570
+ "beginCaptures": {
1571
+ "0": {
1572
+ "name": "punctuation.definition.string.begin.perl"
1573
+ }
1574
+ },
1575
+ "end": "\\)",
1576
+ "endCaptures": {
1577
+ "0": {
1578
+ "name": "punctuation.definition.string.end.perl"
1579
+ }
1580
+ },
1581
+ "name": "string.interpolated.qx-paren.perl",
1582
+ "patterns": [
1583
+ {
1584
+ "include": "#escaped_char"
1585
+ },
1586
+ {
1587
+ "include": "#nested_parens_interpolated"
1588
+ },
1589
+ {
1590
+ "include": "#variable"
1591
+ }
1592
+ ]
1593
+ },
1594
+ {
1595
+ "begin": "\\bqx\\s*\\{",
1596
+ "beginCaptures": {
1597
+ "0": {
1598
+ "name": "punctuation.definition.string.begin.perl"
1599
+ }
1600
+ },
1601
+ "end": "\\}",
1602
+ "endCaptures": {
1603
+ "0": {
1604
+ "name": "punctuation.definition.string.end.perl"
1605
+ }
1606
+ },
1607
+ "name": "string.interpolated.qx-brace.perl",
1608
+ "patterns": [
1609
+ {
1610
+ "include": "#escaped_char"
1611
+ },
1612
+ {
1613
+ "include": "#nested_braces_interpolated"
1614
+ },
1615
+ {
1616
+ "include": "#variable"
1617
+ }
1618
+ ]
1619
+ },
1620
+ {
1621
+ "begin": "\\bqx\\s*\\[",
1622
+ "beginCaptures": {
1623
+ "0": {
1624
+ "name": "punctuation.definition.string.begin.perl"
1625
+ }
1626
+ },
1627
+ "end": "\\]",
1628
+ "endCaptures": {
1629
+ "0": {
1630
+ "name": "punctuation.definition.string.end.perl"
1631
+ }
1632
+ },
1633
+ "name": "string.interpolated.qx-bracket.perl",
1634
+ "patterns": [
1635
+ {
1636
+ "include": "#escaped_char"
1637
+ },
1638
+ {
1639
+ "include": "#nested_brackets_interpolated"
1640
+ },
1641
+ {
1642
+ "include": "#variable"
1643
+ }
1644
+ ]
1645
+ },
1646
+ {
1647
+ "begin": "\\bqx\\s*\\<",
1648
+ "beginCaptures": {
1649
+ "0": {
1650
+ "name": "punctuation.definition.string.begin.perl"
1651
+ }
1652
+ },
1653
+ "end": "\\>",
1654
+ "endCaptures": {
1655
+ "0": {
1656
+ "name": "punctuation.definition.string.end.perl"
1657
+ }
1658
+ },
1659
+ "name": "string.interpolated.qx-ltgt.perl",
1660
+ "patterns": [
1661
+ {
1662
+ "include": "#escaped_char"
1663
+ },
1664
+ {
1665
+ "include": "#nested_ltgt_interpolated"
1666
+ },
1667
+ {
1668
+ "include": "#variable"
1669
+ }
1670
+ ]
1671
+ },
1672
+ {
1673
+ "begin": "\\bqw?\\s*\\(",
1674
+ "beginCaptures": {
1675
+ "0": {
1676
+ "name": "punctuation.definition.string.begin.perl"
1677
+ }
1678
+ },
1679
+ "end": "\\)",
1680
+ "endCaptures": {
1681
+ "0": {
1682
+ "name": "punctuation.definition.string.end.perl"
1683
+ }
1684
+ },
1685
+ "name": "string.quoted.other.q-paren.perl",
1686
+ "patterns": [
1687
+ {
1688
+ "include": "#escaped_char"
1689
+ },
1690
+ {
1691
+ "include": "#nested_parens"
1692
+ }
1693
+ ]
1694
+ },
1695
+ {
1696
+ "begin": "\\bqw?\\s*\\{",
1697
+ "beginCaptures": {
1698
+ "0": {
1699
+ "name": "punctuation.definition.string.begin.perl"
1700
+ }
1701
+ },
1702
+ "end": "\\}",
1703
+ "endCaptures": {
1704
+ "0": {
1705
+ "name": "punctuation.definition.string.end.perl"
1706
+ }
1707
+ },
1708
+ "name": "string.quoted.other.q-brace.perl",
1709
+ "patterns": [
1710
+ {
1711
+ "include": "#escaped_char"
1712
+ },
1713
+ {
1714
+ "include": "#nested_braces"
1715
+ }
1716
+ ]
1717
+ },
1718
+ {
1719
+ "begin": "\\bqw?\\s*\\[",
1720
+ "beginCaptures": {
1721
+ "0": {
1722
+ "name": "punctuation.definition.string.begin.perl"
1723
+ }
1724
+ },
1725
+ "end": "\\]",
1726
+ "endCaptures": {
1727
+ "0": {
1728
+ "name": "punctuation.definition.string.end.perl"
1729
+ }
1730
+ },
1731
+ "name": "string.quoted.other.q-bracket.perl",
1732
+ "patterns": [
1733
+ {
1734
+ "include": "#escaped_char"
1735
+ },
1736
+ {
1737
+ "include": "#nested_brackets"
1738
+ }
1739
+ ]
1740
+ },
1741
+ {
1742
+ "begin": "\\bqw?\\s*\\<",
1743
+ "beginCaptures": {
1744
+ "0": {
1745
+ "name": "punctuation.definition.string.begin.perl"
1746
+ }
1747
+ },
1748
+ "end": "\\>",
1749
+ "endCaptures": {
1750
+ "0": {
1751
+ "name": "punctuation.definition.string.end.perl"
1752
+ }
1753
+ },
1754
+ "name": "string.quoted.other.q-ltgt.perl",
1755
+ "patterns": [
1756
+ {
1757
+ "include": "#escaped_char"
1758
+ },
1759
+ {
1760
+ "include": "#nested_ltgt"
1761
+ }
1762
+ ]
1763
+ },
1764
+ {
1765
+ "begin": "^__\\w+__",
1766
+ "beginCaptures": {
1767
+ "0": {
1768
+ "name": "punctuation.definition.string.begin.perl"
1769
+ }
1770
+ },
1771
+ "end": "$",
1772
+ "endCaptures": {
1773
+ "0": {
1774
+ "name": "punctuation.definition.string.end.perl"
1775
+ }
1776
+ },
1777
+ "name": "string.unquoted.program-block.perl"
1778
+ },
1779
+ {
1780
+ "begin": "\\b(format)\\s+([A-Za-z]+)\\s*=",
1781
+ "beginCaptures": {
1782
+ "1": {
1783
+ "name": "support.function.perl"
1784
+ },
1785
+ "2": {
1786
+ "name": "entity.name.function.format.perl"
1787
+ }
1788
+ },
1789
+ "end": "^\\.\\s*$",
1790
+ "name": "meta.format.perl",
1791
+ "patterns": [
1792
+ {
1793
+ "include": "#line_comment"
1794
+ },
1795
+ {
1796
+ "include": "#variable"
1797
+ }
1798
+ ]
1799
+ },
1800
+ {
1801
+ "match": "\\b(ARGV|DATA|ENV|SIG|STDERR|STDIN|STDOUT|atan2|bind|binmode|bless|caller|chdir|chmod|chomp|chop|chown|chr|chroot|close|closedir|cmp|connect|cos|crypt|dbmclose|dbmopen|defined|delete|dump|each|endgrent|endhostent|endnetent|endprotoent|endpwent|endservent|eof|eq|eval|exec|exists|exp|fcntl|fileno|flock|fork|format|formline|ge|getc|getgrent|getgrgid|getgrnam|gethostbyaddr|gethostbyname|gethostent|getlogin|getnetbyaddr|getnetbyname|getnetent|getpeername|getpgrp|getppid|getpriority|getprotobyname|getprotobynumber|getprotoent|getpwent|getpwnam|getpwuid|getservbyname|getservbyport|getservent|getsockname|getsockopt|glob|gmtime|grep|gt|hex|import|index|int|ioctl|join|keys|kill|lc|lcfirst|le|length|link|listen|local|localtime|log|lstat|lt|m|map|mkdir|msgctl|msgget|msgrcv|msgsnd|ne|no|oct|open|opendir|ord|pack|pipe|pop|pos|print|printf|push|q|qq|quotemeta|qw|qx|rand|read|readdir|readlink|recv|ref|rename|reset|reverse|rewinddir|rindex|rmdir|s|scalar|seek|seekdir|semctl|semget|semop|send|setgrent|sethostent|setnetent|setpgrp|setpriority|setprotoent|setpwent|setservent|setsockopt|shift|shmctl|shmget|shmread|shmwrite|shutdown|sin|sleep|socket|socketpair|sort|splice|split|sprintf|sqrt|srand|stat|study|substr|symlink|syscall|sysopen|sysread|system|syswrite|tell|telldir|tie|tied|time|times|tr|truncate|uc|ucfirst|umask|undef|unlink|unpack|unshift|untie|utime|values|vec|waitpid|wantarray|warn|write|y|q|qw|qq|qx)\\b",
1802
+ "name": "support.function.perl"
1803
+ }
1804
+ ],
1805
+ "repository": {
1806
+ "escaped_char": {
1807
+ "match": "\\\\.",
1808
+ "name": "constant.character.escape.perl"
1809
+ },
1810
+ "line_comment": {
1811
+ "patterns": [
1812
+ {
1813
+ "captures": {
1814
+ "1": {
1815
+ "name": "comment.line.number-sign.perl"
1816
+ },
1817
+ "2": {
1818
+ "name": "punctuation.definition.comment.perl"
1819
+ }
1820
+ },
1821
+ "match": "^((#).*$\\n?)",
1822
+ "name": "meta.comment.full-line.perl"
1823
+ },
1824
+ {
1825
+ "captures": {
1826
+ "1": {
1827
+ "name": "punctuation.definition.comment.perl"
1828
+ }
1829
+ },
1830
+ "match": "(#).*$\\n?",
1831
+ "name": "comment.line.number-sign.perl"
1832
+ }
1833
+ ]
1834
+ },
1835
+ "nested_braces": {
1836
+ "begin": "\\{",
1837
+ "captures": {
1838
+ "1": {
1839
+ "name": "punctuation.section.scope.perl"
1840
+ }
1841
+ },
1842
+ "end": "\\}",
1843
+ "patterns": [
1844
+ {
1845
+ "include": "#escaped_char"
1846
+ },
1847
+ {
1848
+ "include": "#nested_braces"
1849
+ }
1850
+ ]
1851
+ },
1852
+ "nested_braces_interpolated": {
1853
+ "begin": "\\{",
1854
+ "captures": {
1855
+ "1": {
1856
+ "name": "punctuation.section.scope.perl"
1857
+ }
1858
+ },
1859
+ "end": "\\}",
1860
+ "patterns": [
1861
+ {
1862
+ "include": "#escaped_char"
1863
+ },
1864
+ {
1865
+ "include": "#variable"
1866
+ },
1867
+ {
1868
+ "include": "#nested_braces_interpolated"
1869
+ }
1870
+ ]
1871
+ },
1872
+ "nested_brackets": {
1873
+ "begin": "\\[",
1874
+ "captures": {
1875
+ "1": {
1876
+ "name": "punctuation.section.scope.perl"
1877
+ }
1878
+ },
1879
+ "end": "\\]",
1880
+ "patterns": [
1881
+ {
1882
+ "include": "#escaped_char"
1883
+ },
1884
+ {
1885
+ "include": "#nested_brackets"
1886
+ }
1887
+ ]
1888
+ },
1889
+ "nested_brackets_interpolated": {
1890
+ "begin": "\\[",
1891
+ "captures": {
1892
+ "1": {
1893
+ "name": "punctuation.section.scope.perl"
1894
+ }
1895
+ },
1896
+ "end": "\\]",
1897
+ "patterns": [
1898
+ {
1899
+ "include": "#escaped_char"
1900
+ },
1901
+ {
1902
+ "include": "#variable"
1903
+ },
1904
+ {
1905
+ "include": "#nested_brackets_interpolated"
1906
+ }
1907
+ ]
1908
+ },
1909
+ "nested_ltgt": {
1910
+ "begin": "<",
1911
+ "captures": {
1912
+ "1": {
1913
+ "name": "punctuation.section.scope.perl"
1914
+ }
1915
+ },
1916
+ "end": ">",
1917
+ "patterns": [
1918
+ {
1919
+ "include": "#nested_ltgt"
1920
+ }
1921
+ ]
1922
+ },
1923
+ "nested_ltgt_interpolated": {
1924
+ "begin": "<",
1925
+ "captures": {
1926
+ "1": {
1927
+ "name": "punctuation.section.scope.perl"
1928
+ }
1929
+ },
1930
+ "end": ">",
1931
+ "patterns": [
1932
+ {
1933
+ "include": "#variable"
1934
+ },
1935
+ {
1936
+ "include": "#nested_ltgt_interpolated"
1937
+ }
1938
+ ]
1939
+ },
1940
+ "nested_parens": {
1941
+ "begin": "\\(",
1942
+ "captures": {
1943
+ "1": {
1944
+ "name": "punctuation.section.scope.perl"
1945
+ }
1946
+ },
1947
+ "end": "\\)",
1948
+ "patterns": [
1949
+ {
1950
+ "include": "#escaped_char"
1951
+ },
1952
+ {
1953
+ "include": "#nested_parens"
1954
+ }
1955
+ ]
1956
+ },
1957
+ "nested_parens_interpolated": {
1958
+ "begin": "\\(",
1959
+ "captures": {
1960
+ "1": {
1961
+ "name": "punctuation.section.scope.perl"
1962
+ }
1963
+ },
1964
+ "end": "\\)",
1965
+ "patterns": [
1966
+ {
1967
+ "comment": "This is to prevent thinks like qr\/foo$\/ to treat $\/ as a variable",
1968
+ "match": "\\$(?=[^\\s\\w\\'\\{\\[\\(\\<])",
1969
+ "name": "keyword.control.anchor.perl"
1970
+ },
1971
+ {
1972
+ "include": "#escaped_char"
1973
+ },
1974
+ {
1975
+ "include": "#variable"
1976
+ },
1977
+ {
1978
+ "include": "#nested_parens_interpolated"
1979
+ }
1980
+ ]
1981
+ },
1982
+ "variable": {
1983
+ "patterns": [
1984
+ {
1985
+ "captures": {
1986
+ "1": {
1987
+ "name": "punctuation.definition.variable.perl"
1988
+ }
1989
+ },
1990
+ "match": "(\\$)&(?![A-Za-z0-9_])",
1991
+ "name": "variable.other.regexp.match.perl"
1992
+ },
1993
+ {
1994
+ "captures": {
1995
+ "1": {
1996
+ "name": "punctuation.definition.variable.perl"
1997
+ }
1998
+ },
1999
+ "match": "(\\$)`(?![A-Za-z0-9_])",
2000
+ "name": "variable.other.regexp.pre-match.perl"
2001
+ },
2002
+ {
2003
+ "captures": {
2004
+ "1": {
2005
+ "name": "punctuation.definition.variable.perl"
2006
+ }
2007
+ },
2008
+ "match": "(\\$)'(?![A-Za-z0-9_])",
2009
+ "name": "variable.other.regexp.post-match.perl"
2010
+ },
2011
+ {
2012
+ "captures": {
2013
+ "1": {
2014
+ "name": "punctuation.definition.variable.perl"
2015
+ }
2016
+ },
2017
+ "match": "(\\$)\\+(?![A-Za-z0-9_])",
2018
+ "name": "variable.other.regexp.last-paren-match.perl"
2019
+ },
2020
+ {
2021
+ "captures": {
2022
+ "1": {
2023
+ "name": "punctuation.definition.variable.perl"
2024
+ }
2025
+ },
2026
+ "match": "(\\$)\"(?![A-Za-z0-9_])",
2027
+ "name": "variable.other.readwrite.list-separator.perl"
2028
+ },
2029
+ {
2030
+ "captures": {
2031
+ "1": {
2032
+ "name": "punctuation.definition.variable.perl"
2033
+ }
2034
+ },
2035
+ "match": "(\\$)0(?![A-Za-z0-9_])",
2036
+ "name": "variable.other.predefined.program-name.perl"
2037
+ },
2038
+ {
2039
+ "captures": {
2040
+ "1": {
2041
+ "name": "punctuation.definition.variable.perl"
2042
+ }
2043
+ },
2044
+ "match": "(\\$)[_ab\\*\\.\\\/\\|,\\\\;#%=\\-~^:?!\\$<>\\(\\)\\[\\]@](?![A-Za-z0-9_])",
2045
+ "name": "variable.other.predefined.perl"
2046
+ },
2047
+ {
2048
+ "captures": {
2049
+ "1": {
2050
+ "name": "punctuation.definition.variable.perl"
2051
+ }
2052
+ },
2053
+ "match": "(\\$)[0-9]+(?![A-Za-z0-9_])",
2054
+ "name": "variable.other.subpattern.perl"
2055
+ },
2056
+ {
2057
+ "captures": {
2058
+ "1": {
2059
+ "name": "punctuation.definition.variable.perl"
2060
+ }
2061
+ },
2062
+ "match": "([\\$\\@\\%](#)?)([a-zA-Zx7f-xff\\$]|::)([a-zA-Z0-9_x7f-xff\\$]|::)*\\b",
2063
+ "name": "variable.other.readwrite.global.perl"
2064
+ },
2065
+ {
2066
+ "captures": {
2067
+ "1": {
2068
+ "name": "punctuation.definition.variable.perl"
2069
+ },
2070
+ "2": {
2071
+ "name": "punctuation.definition.variable.perl"
2072
+ }
2073
+ },
2074
+ "match": "(\\$\\{)(?:[a-zA-Zx7f-xff\\$]|::)(?:[a-zA-Z0-9_x7f-xff\\$]|::)*(\\})",
2075
+ "name": "variable.other.readwrite.global.perl"
2076
+ },
2077
+ {
2078
+ "captures": {
2079
+ "1": {
2080
+ "name": "punctuation.definition.variable.perl"
2081
+ }
2082
+ },
2083
+ "match": "([\\$\\@\\%](#)?)[0-9_]\\b",
2084
+ "name": "variable.other.readwrite.global.special.perl"
2085
+ }
2086
+ ]
2087
+ }
2088
+ },
2089
+ "scopeName": "source.perl",
2090
+ "uuid": "EDBFE125-6B1C-11D9-9189-000D93589AF6"
2091
+ }