ver 2009.10.14

Sign up to get free protection for your applications and to get access to all the features.
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,1198 @@
1
+ {
2
+ "fileTypes": [
3
+ "sh",
4
+ "ss",
5
+ "bashrc",
6
+ "bash_profile",
7
+ "bash_login",
8
+ "profile",
9
+ "bash_logout",
10
+ ".textmate_init"
11
+ ],
12
+ "firstLineMatch": "^#!.*(bash|zsh|sh|tcsh)",
13
+ "foldingStartMarker": "\\b(if|case)\\b|(\\{|\\b(do)\\b)$",
14
+ "foldingStopMarker": "^\\s*(\\}|(done|fi|esac)\\b)",
15
+ "keyEquivalent": "^~S",
16
+ "name": "Shell Script (Bash)",
17
+ "patterns": [
18
+ {
19
+ "include": "#comment"
20
+ },
21
+ {
22
+ "include": "#pipeline"
23
+ },
24
+ {
25
+ "include": "#list"
26
+ },
27
+ {
28
+ "include": "#compound-command"
29
+ },
30
+ {
31
+ "include": "#loop"
32
+ },
33
+ {
34
+ "include": "#function-definition"
35
+ },
36
+ {
37
+ "include": "#string"
38
+ },
39
+ {
40
+ "include": "#variable"
41
+ },
42
+ {
43
+ "include": "#interpolation"
44
+ },
45
+ {
46
+ "include": "#heredoc"
47
+ },
48
+ {
49
+ "include": "#herestring"
50
+ },
51
+ {
52
+ "include": "#redirection"
53
+ },
54
+ {
55
+ "include": "#pathname"
56
+ },
57
+ {
58
+ "include": "#keyword"
59
+ },
60
+ {
61
+ "include": "#support"
62
+ }
63
+ ],
64
+ "repository": {
65
+ "case-clause": {
66
+ "patterns": [
67
+ {
68
+ "begin": "(?=\\S)",
69
+ "end": ";;",
70
+ "endCaptures": {
71
+ "0": {
72
+ "name": "punctuation.terminator.case-clause.shell"
73
+ }
74
+ },
75
+ "name": "meta.scope.case-clause.shell",
76
+ "patterns": [
77
+ {
78
+ "begin": "(\\(|(?=\\S))",
79
+ "captures": {
80
+ "0": {
81
+ "name": "punctuation.definition.case-pattern.shell"
82
+ }
83
+ },
84
+ "end": "\\)",
85
+ "name": "meta.scope.case-pattern.shell",
86
+ "patterns": [
87
+ {
88
+ "match": "\\|",
89
+ "name": "punctuation.separator.pipe-sign.shell"
90
+ },
91
+ {
92
+ "include": "#string"
93
+ },
94
+ {
95
+ "include": "#variable"
96
+ },
97
+ {
98
+ "include": "#interpolation"
99
+ },
100
+ {
101
+ "include": "#pathname"
102
+ }
103
+ ]
104
+ },
105
+ {
106
+ "begin": "(?<=\\))",
107
+ "end": "(?=;;)",
108
+ "name": "meta.scope.case-clause-body.shell",
109
+ "patterns": [
110
+ {
111
+ "include": "$self"
112
+ }
113
+ ]
114
+ }
115
+ ]
116
+ }
117
+ ]
118
+ },
119
+ "comment": {
120
+ "patterns": [
121
+ {
122
+ "captures": {
123
+ "1": {
124
+ "name": "punctuation.definition.comment.shell"
125
+ }
126
+ },
127
+ "match": "(?<!\\$)(#)(?!\\{).*$\\n?",
128
+ "name": "comment.line.number-sign.shell"
129
+ }
130
+ ]
131
+ },
132
+ "compound-command": {
133
+ "patterns": [
134
+ {
135
+ "begin": "(\\[{2})",
136
+ "captures": {
137
+ "1": {
138
+ "name": "punctuation.definition.logical-expression.shell"
139
+ }
140
+ },
141
+ "end": "(\\]{2})",
142
+ "name": "meta.scope.logical-expression.shell",
143
+ "patterns": [
144
+ {
145
+ "include": "#logical-expression"
146
+ },
147
+ {
148
+ "include": "$self"
149
+ }
150
+ ]
151
+ },
152
+ {
153
+ "begin": "(\\({2})",
154
+ "beginCaptures": {
155
+ "0": {
156
+ "name": "punctuation.definition.string.begin.shell"
157
+ }
158
+ },
159
+ "end": "(\\){2})",
160
+ "endCaptures": {
161
+ "0": {
162
+ "name": "punctuation.definition.string.end.shell"
163
+ }
164
+ },
165
+ "name": "string.other.math.shell",
166
+ "patterns": [
167
+ {
168
+ "include": "#math"
169
+ }
170
+ ]
171
+ },
172
+ {
173
+ "begin": "(\\()",
174
+ "captures": {
175
+ "1": {
176
+ "name": "punctuation.definition.subshell.shell"
177
+ }
178
+ },
179
+ "end": "(\\))",
180
+ "name": "meta.scope.subshell.shell",
181
+ "patterns": [
182
+ {
183
+ "include": "$self"
184
+ }
185
+ ]
186
+ },
187
+ {
188
+ "begin": "(?<=\\s|^)(\\{)(?=\\s|$)",
189
+ "captures": {
190
+ "1": {
191
+ "name": "punctuation.definition.group.shell"
192
+ }
193
+ },
194
+ "end": "(?<=^|;)\\s*(\\})",
195
+ "name": "meta.scope.group.shell",
196
+ "patterns": [
197
+ {
198
+ "include": "$self"
199
+ }
200
+ ]
201
+ }
202
+ ]
203
+ },
204
+ "function-definition": {
205
+ "patterns": [
206
+ {
207
+ "begin": "\\b(function)\\s+((?:[^\\s\\\\]|\\\\.)+)(?:\\s*(\\(\\)))?",
208
+ "beginCaptures": {
209
+ "1": {
210
+ "name": "storage.type.function.shell"
211
+ },
212
+ "2": {
213
+ "name": "entity.name.function.shell"
214
+ },
215
+ "3": {
216
+ "name": "punctuation.definition.arguments.shell"
217
+ }
218
+ },
219
+ "end": ";|&|$",
220
+ "endCaptures": {
221
+ "0": {
222
+ "name": "punctuation.definition.function.shell"
223
+ }
224
+ },
225
+ "name": "meta.function.shell",
226
+ "patterns": [
227
+ {
228
+ "include": "$self"
229
+ }
230
+ ]
231
+ },
232
+ {
233
+ "begin": "\\b((?:[^\\s\\\\]|\\\\.)+)\\s*(\\(\\))",
234
+ "beginCaptures": {
235
+ "1": {
236
+ "name": "entity.name.function.shell"
237
+ },
238
+ "2": {
239
+ "name": "punctuation.definition.arguments.shell"
240
+ }
241
+ },
242
+ "end": ";|&|$",
243
+ "endCaptures": {
244
+ "0": {
245
+ "name": "punctuation.definition.function.shell"
246
+ }
247
+ },
248
+ "name": "meta.function.shell",
249
+ "patterns": [
250
+ {
251
+ "include": "$self"
252
+ }
253
+ ]
254
+ }
255
+ ]
256
+ },
257
+ "heredoc": {
258
+ "patterns": [
259
+ {
260
+ "begin": "(<<)-(\"|'|)(RUBY)\\2",
261
+ "beginCaptures": {
262
+ "1": {
263
+ "name": "keyword.operator.heredoc.shell"
264
+ },
265
+ "3": {
266
+ "name": "keyword.control.heredoc-token.shell"
267
+ }
268
+ },
269
+ "captures": {
270
+ "0": {
271
+ "name": "punctuation.definition.string.shell"
272
+ }
273
+ },
274
+ "contentName": "source.ruby.embedded.shell",
275
+ "end": "^\\t*(RUBY)$",
276
+ "endCaptures": {
277
+ "1": {
278
+ "name": "keyword.control.heredoc-token.shell"
279
+ }
280
+ },
281
+ "name": "string.unquoted.heredoc.no-indent.ruby.shell",
282
+ "patterns": [
283
+ {
284
+ "include": "source.ruby"
285
+ }
286
+ ]
287
+ },
288
+ {
289
+ "begin": "(<<)(\"|'|)(RUBY)\\2",
290
+ "beginCaptures": {
291
+ "1": {
292
+ "name": "keyword.operator.heredoc.shell"
293
+ },
294
+ "3": {
295
+ "name": "keyword.control.heredoc-token.shell"
296
+ }
297
+ },
298
+ "captures": {
299
+ "0": {
300
+ "name": "punctuation.definition.string.shell"
301
+ }
302
+ },
303
+ "contentName": "source.ruby.embedded.shell",
304
+ "end": "^(RUBY)$",
305
+ "endCaptures": {
306
+ "1": {
307
+ "name": "keyword.control.heredoc-token.shell"
308
+ }
309
+ },
310
+ "name": "string.unquoted.heredoc.ruby.shell",
311
+ "patterns": [
312
+ {
313
+ "include": "source.ruby"
314
+ }
315
+ ]
316
+ },
317
+ {
318
+ "begin": "(<<)-(\"|'|)(PYTHON)\\2",
319
+ "beginCaptures": {
320
+ "1": {
321
+ "name": "keyword.operator.heredoc.shell"
322
+ },
323
+ "3": {
324
+ "name": "keyword.control.heredoc-token.shell"
325
+ }
326
+ },
327
+ "captures": {
328
+ "0": {
329
+ "name": "punctuation.definition.string.shell"
330
+ }
331
+ },
332
+ "contentName": "source.python.embedded.shell",
333
+ "end": "^\\t*(PYTHON)$",
334
+ "endCaptures": {
335
+ "1": {
336
+ "name": "keyword.control.heredoc-token.shell"
337
+ }
338
+ },
339
+ "name": "string.unquoted.heredoc.no-indent.python.shell",
340
+ "patterns": [
341
+ {
342
+ "include": "source.python"
343
+ }
344
+ ]
345
+ },
346
+ {
347
+ "begin": "(<<)(\"|'|)(PYTHON)\\2",
348
+ "beginCaptures": {
349
+ "1": {
350
+ "name": "keyword.operator.heredoc.shell"
351
+ },
352
+ "3": {
353
+ "name": "keyword.control.heredoc-token.shell"
354
+ }
355
+ },
356
+ "captures": {
357
+ "0": {
358
+ "name": "punctuation.definition.string.shell"
359
+ }
360
+ },
361
+ "contentName": "source.python.embedded.shell",
362
+ "end": "^(PYTHON)$",
363
+ "endCaptures": {
364
+ "1": {
365
+ "name": "keyword.control.heredoc-token.shell"
366
+ }
367
+ },
368
+ "name": "string.unquoted.heredoc.python.shell",
369
+ "patterns": [
370
+ {
371
+ "include": "source.python"
372
+ }
373
+ ]
374
+ },
375
+ {
376
+ "begin": "(<<)-(\"|'|)(APPLESCRIPT)\\2",
377
+ "beginCaptures": {
378
+ "1": {
379
+ "name": "keyword.operator.heredoc.shell"
380
+ },
381
+ "3": {
382
+ "name": "keyword.control.heredoc-token.shell"
383
+ }
384
+ },
385
+ "captures": {
386
+ "0": {
387
+ "name": "punctuation.definition.string.shell"
388
+ }
389
+ },
390
+ "contentName": "source.applescript.embedded.shell",
391
+ "end": "^\\t*(APPLESCRIPT)$",
392
+ "endCaptures": {
393
+ "1": {
394
+ "name": "keyword.control.heredoc-token.shell"
395
+ }
396
+ },
397
+ "name": "string.unquoted.heredoc.no-indent.applescript.shell",
398
+ "patterns": [
399
+ {
400
+ "include": "source.applescript"
401
+ }
402
+ ]
403
+ },
404
+ {
405
+ "begin": "(<<)(\"|'|)(APPLESCRIPT)\\2",
406
+ "beginCaptures": {
407
+ "1": {
408
+ "name": "keyword.operator.heredoc.shell"
409
+ },
410
+ "3": {
411
+ "name": "keyword.control.heredoc-token.shell"
412
+ }
413
+ },
414
+ "captures": {
415
+ "0": {
416
+ "name": "punctuation.definition.string.shell"
417
+ }
418
+ },
419
+ "contentName": "source.applescript.embedded.shell",
420
+ "end": "^(APPLESCRIPT)$",
421
+ "endCaptures": {
422
+ "1": {
423
+ "name": "keyword.control.heredoc-token.shell"
424
+ }
425
+ },
426
+ "name": "string.unquoted.heredoc.applescript.shell",
427
+ "patterns": [
428
+ {
429
+ "include": "source.applescript"
430
+ }
431
+ ]
432
+ },
433
+ {
434
+ "begin": "(<<)-(\"|'|)(HTML)\\2",
435
+ "beginCaptures": {
436
+ "1": {
437
+ "name": "keyword.operator.heredoc.shell"
438
+ },
439
+ "3": {
440
+ "name": "keyword.control.heredoc-token.shell"
441
+ }
442
+ },
443
+ "captures": {
444
+ "0": {
445
+ "name": "punctuation.definition.string.shell"
446
+ }
447
+ },
448
+ "contentName": "text.html.embedded.shell",
449
+ "end": "^\\t*(HTML)$",
450
+ "endCaptures": {
451
+ "1": {
452
+ "name": "keyword.control.heredoc-token.shell"
453
+ }
454
+ },
455
+ "name": "string.unquoted.heredoc.no-indent.html.shell",
456
+ "patterns": [
457
+ {
458
+ "include": "text.html.basic"
459
+ }
460
+ ]
461
+ },
462
+ {
463
+ "begin": "(<<)(\"|'|)(HTML)\\2",
464
+ "beginCaptures": {
465
+ "1": {
466
+ "name": "keyword.operator.heredoc.shell"
467
+ },
468
+ "3": {
469
+ "name": "keyword.control.heredoc-token.shell"
470
+ }
471
+ },
472
+ "captures": {
473
+ "0": {
474
+ "name": "punctuation.definition.string.shell"
475
+ }
476
+ },
477
+ "contentName": "text.html.embedded.shell",
478
+ "end": "^(HTML)$",
479
+ "endCaptures": {
480
+ "1": {
481
+ "name": "keyword.control.heredoc-token.shell"
482
+ }
483
+ },
484
+ "name": "string.unquoted.heredoc.html.shell",
485
+ "patterns": [
486
+ {
487
+ "include": "text.html.basic"
488
+ }
489
+ ]
490
+ },
491
+ {
492
+ "begin": "(<<)-(\"|'|)(MARKDOWN)\\2",
493
+ "beginCaptures": {
494
+ "1": {
495
+ "name": "keyword.operator.heredoc.shell"
496
+ },
497
+ "3": {
498
+ "name": "keyword.control.heredoc-token.shell"
499
+ }
500
+ },
501
+ "captures": {
502
+ "0": {
503
+ "name": "punctuation.definition.string.shell"
504
+ }
505
+ },
506
+ "contentName": "text.html.markdown.embedded.shell",
507
+ "end": "^\\t*(MARKDOWN)$",
508
+ "endCaptures": {
509
+ "1": {
510
+ "name": "keyword.control.heredoc-token.shell"
511
+ }
512
+ },
513
+ "name": "string.unquoted.heredoc.no-indent.markdown.shell",
514
+ "patterns": [
515
+ {
516
+ "include": "text.html.markdown"
517
+ }
518
+ ]
519
+ },
520
+ {
521
+ "begin": "(<<)(\"|'|)(MARKDOWN)\\2",
522
+ "beginCaptures": {
523
+ "1": {
524
+ "name": "keyword.operator.heredoc.shell"
525
+ },
526
+ "3": {
527
+ "name": "keyword.control.heredoc-token.shell"
528
+ }
529
+ },
530
+ "captures": {
531
+ "0": {
532
+ "name": "punctuation.definition.string.shell"
533
+ }
534
+ },
535
+ "contentName": "text.html.markdown.embedded.shell",
536
+ "end": "^(MARKDOWN)$",
537
+ "endCaptures": {
538
+ "1": {
539
+ "name": "keyword.control.heredoc-token.shell"
540
+ }
541
+ },
542
+ "name": "string.unquoted.heredoc.markdown.shell",
543
+ "patterns": [
544
+ {
545
+ "include": "text.html.markdown"
546
+ }
547
+ ]
548
+ },
549
+ {
550
+ "begin": "(<<)-(\"|'|)(TEXTILE)\\2",
551
+ "beginCaptures": {
552
+ "1": {
553
+ "name": "keyword.operator.heredoc.shell"
554
+ },
555
+ "3": {
556
+ "name": "keyword.control.heredoc-token.shell"
557
+ }
558
+ },
559
+ "captures": {
560
+ "0": {
561
+ "name": "punctuation.definition.string.shell"
562
+ }
563
+ },
564
+ "contentName": "text.html.textile.embedded.shell",
565
+ "end": "^\\t*(TEXTILE)$",
566
+ "endCaptures": {
567
+ "1": {
568
+ "name": "keyword.control.heredoc-token.shell"
569
+ }
570
+ },
571
+ "name": "string.unquoted.heredoc.no-indent.textile.shell",
572
+ "patterns": [
573
+ {
574
+ "include": "text.html.textile"
575
+ }
576
+ ]
577
+ },
578
+ {
579
+ "begin": "(<<)(\"|'|)(TEXTILE)\\2",
580
+ "beginCaptures": {
581
+ "1": {
582
+ "name": "keyword.operator.heredoc.shell"
583
+ },
584
+ "3": {
585
+ "name": "keyword.control.heredoc-token.shell"
586
+ }
587
+ },
588
+ "captures": {
589
+ "0": {
590
+ "name": "punctuation.definition.string.shell"
591
+ }
592
+ },
593
+ "contentName": "text.html.textile.embedded.shell",
594
+ "end": "^(TEXTILE)$",
595
+ "endCaptures": {
596
+ "1": {
597
+ "name": "keyword.control.heredoc-token.shell"
598
+ }
599
+ },
600
+ "name": "string.unquoted.heredoc.textile.shell",
601
+ "patterns": [
602
+ {
603
+ "include": "text.html.textile"
604
+ }
605
+ ]
606
+ },
607
+ {
608
+ "begin": "(<<)-(\"|'|)\\\\?(\\w+)\\2",
609
+ "beginCaptures": {
610
+ "1": {
611
+ "name": "keyword.operator.heredoc.shell"
612
+ },
613
+ "3": {
614
+ "name": "keyword.control.heredoc-token.shell"
615
+ }
616
+ },
617
+ "captures": {
618
+ "0": {
619
+ "name": "punctuation.definition.string.shell"
620
+ }
621
+ },
622
+ "end": "^\\t*(\\3)$",
623
+ "endCaptures": {
624
+ "1": {
625
+ "name": "keyword.control.heredoc-token.shell"
626
+ }
627
+ },
628
+ "name": "string.unquoted.heredoc.no-indent.shell"
629
+ },
630
+ {
631
+ "begin": "(<<)(\"|'|)\\\\?(\\w+)\\2",
632
+ "beginCaptures": {
633
+ "1": {
634
+ "name": "keyword.operator.heredoc.shell"
635
+ },
636
+ "3": {
637
+ "name": "keyword.control.heredoc-token.shell"
638
+ }
639
+ },
640
+ "captures": {
641
+ "0": {
642
+ "name": "punctuation.definition.string.shell"
643
+ }
644
+ },
645
+ "end": "^(\\3)$",
646
+ "endCaptures": {
647
+ "1": {
648
+ "name": "keyword.control.heredoc-token.shell"
649
+ }
650
+ },
651
+ "name": "string.unquoted.heredoc.shell"
652
+ }
653
+ ]
654
+ },
655
+ "herestring": {
656
+ "patterns": [
657
+ {
658
+ "captures": {
659
+ "1": {
660
+ "name": "keyword.operator.herestring.shell"
661
+ },
662
+ "2": {
663
+ "name": "string.quoted.single.herestring.shell"
664
+ },
665
+ "3": {
666
+ "name": "punctuation.definition.string.begin.shell"
667
+ },
668
+ "4": {
669
+ "name": "punctuation.definition.string.end.shell"
670
+ }
671
+ },
672
+ "match": "(<<<)((')[^']*('))",
673
+ "name": "meta.herestring.shell"
674
+ },
675
+ {
676
+ "captures": {
677
+ "1": {
678
+ "name": "keyword.operator.herestring.shell"
679
+ },
680
+ "2": {
681
+ "name": "string.quoted.double.herestring.shell"
682
+ },
683
+ "3": {
684
+ "name": "punctuation.definition.string.begin.shell"
685
+ },
686
+ "6": {
687
+ "name": "punctuation.definition.string.end.shell"
688
+ }
689
+ },
690
+ "match": "(<<<)((\")(\\\\(\"|\\\\)|[^\"])*(\"))",
691
+ "name": "meta.herestring.shell"
692
+ },
693
+ {
694
+ "captures": {
695
+ "1": {
696
+ "name": "keyword.operator.herestring.shell"
697
+ },
698
+ "2": {
699
+ "name": "string.unquoted.herestring.shell"
700
+ }
701
+ },
702
+ "match": "(<<<)(([^\\s\\\\]|\\\\.)+)",
703
+ "name": "meta.herestring.shell"
704
+ }
705
+ ]
706
+ },
707
+ "interpolation": {
708
+ "patterns": [
709
+ {
710
+ "begin": "\\$\\({2}",
711
+ "beginCaptures": {
712
+ "0": {
713
+ "name": "punctuation.definition.string.begin.shell"
714
+ }
715
+ },
716
+ "end": "\\){2}",
717
+ "endCaptures": {
718
+ "0": {
719
+ "name": "punctuation.definition.string.end.shell"
720
+ }
721
+ },
722
+ "name": "string.other.math.shell",
723
+ "patterns": [
724
+ {
725
+ "include": "#math"
726
+ }
727
+ ]
728
+ },
729
+ {
730
+ "begin": "`",
731
+ "beginCaptures": {
732
+ "0": {
733
+ "name": "punctuation.definition.string.begin.shell"
734
+ }
735
+ },
736
+ "end": "`",
737
+ "endCaptures": {
738
+ "0": {
739
+ "name": "punctuation.definition.string.end.shell"
740
+ }
741
+ },
742
+ "name": "string.interpolated.backtick.shell",
743
+ "patterns": [
744
+ {
745
+ "match": "\\\\[`\\\\$]",
746
+ "name": "constant.character.escape.shell"
747
+ },
748
+ {
749
+ "include": "$self"
750
+ }
751
+ ]
752
+ },
753
+ {
754
+ "begin": "\\$\\(",
755
+ "beginCaptures": {
756
+ "0": {
757
+ "name": "punctuation.definition.string.begin.shell"
758
+ }
759
+ },
760
+ "end": "\\)",
761
+ "endCaptures": {
762
+ "0": {
763
+ "name": "punctuation.definition.string.end.shell"
764
+ }
765
+ },
766
+ "name": "string.interpolated.dollar.shell",
767
+ "patterns": [
768
+ {
769
+ "include": "$self"
770
+ }
771
+ ]
772
+ }
773
+ ]
774
+ },
775
+ "keyword": {
776
+ "patterns": [
777
+ {
778
+ "match": "\\b(?:if|then|else|elif|fi|for|in|do|done|select|case|continue|esac|while|until|return)\\b",
779
+ "name": "keyword.control.shell"
780
+ },
781
+ {
782
+ "match": "\\b(?:export|declare|typeset|local|readonly)\\b",
783
+ "name": "storage.modifier.shell"
784
+ }
785
+ ]
786
+ },
787
+ "list": {
788
+ "patterns": [
789
+ {
790
+ "match": ";|&&|&|\\|\\|",
791
+ "name": "keyword.operator.list.shell"
792
+ }
793
+ ]
794
+ },
795
+ "logical-expression": {
796
+ "patterns": [
797
+ {
798
+ "comment": "do we want a special rule for ( expr )?",
799
+ "match": "=[=~]?|!=?|<|>|&&|\\|\\|",
800
+ "name": "keyword.operator.logical.shell"
801
+ },
802
+ {
803
+ "match": "-(nt|ot|ef|eq|ne|l[te]|g[te]|[a-hknoprstuwxzOGLSN])",
804
+ "name": "keyword.operator.logical.shell"
805
+ }
806
+ ]
807
+ },
808
+ "loop": {
809
+ "patterns": [
810
+ {
811
+ "begin": "\\b(for)\\s+(?=\\({2})",
812
+ "captures": {
813
+ "1": {
814
+ "name": "keyword.control.shell"
815
+ }
816
+ },
817
+ "end": "\\b(done)\\b",
818
+ "name": "meta.scope.for-loop.shell",
819
+ "patterns": [
820
+ {
821
+ "include": "$self"
822
+ }
823
+ ]
824
+ },
825
+ {
826
+ "begin": "\\b(for)\\s+((?:[^\\s\\\\]|\\\\.)+)\\b",
827
+ "beginCaptures": {
828
+ "1": {
829
+ "name": "keyword.control.shell"
830
+ },
831
+ "2": {
832
+ "name": "variable.other.loop.shell"
833
+ }
834
+ },
835
+ "end": "\\b(done)\\b",
836
+ "endCaptures": {
837
+ "1": {
838
+ "name": "keyword.control.shell"
839
+ }
840
+ },
841
+ "name": "meta.scope.for-in-loop.shell",
842
+ "patterns": [
843
+ {
844
+ "include": "$self"
845
+ }
846
+ ]
847
+ },
848
+ {
849
+ "begin": "\\b(while|until)\\b",
850
+ "captures": {
851
+ "1": {
852
+ "name": "keyword.control.shell"
853
+ }
854
+ },
855
+ "end": "\\b(done)\\b",
856
+ "name": "meta.scope.while-loop.shell",
857
+ "patterns": [
858
+ {
859
+ "include": "$self"
860
+ }
861
+ ]
862
+ },
863
+ {
864
+ "begin": "\\b(select)\\s+((?:[^\\s\\\\]|\\\\.)+)\\b",
865
+ "beginCaptures": {
866
+ "1": {
867
+ "name": "keyword.control.shell"
868
+ },
869
+ "2": {
870
+ "name": "variable.other.loop.shell"
871
+ }
872
+ },
873
+ "end": "\\b(done)\\b",
874
+ "endCaptures": {
875
+ "1": {
876
+ "name": "keyword.control.shell"
877
+ }
878
+ },
879
+ "name": "meta.scope.select-block.shell",
880
+ "patterns": [
881
+ {
882
+ "include": "$self"
883
+ }
884
+ ]
885
+ },
886
+ {
887
+ "begin": "\\b(case)\\b",
888
+ "captures": {
889
+ "1": {
890
+ "name": "keyword.control.shell"
891
+ }
892
+ },
893
+ "end": "\\b(esac)\\b",
894
+ "name": "meta.scope.case-block.shell",
895
+ "patterns": [
896
+ {
897
+ "begin": "\\b(?:in)\\b",
898
+ "beginCaptures": {
899
+ "1": {
900
+ "name": "keyword.control.shell"
901
+ }
902
+ },
903
+ "end": "(?=\\b(?:esac)\\b)",
904
+ "name": "meta.scope.case-body.shell",
905
+ "patterns": [
906
+ {
907
+ "include": "#comment"
908
+ },
909
+ {
910
+ "include": "#case-clause"
911
+ },
912
+ {
913
+ "include": "$self"
914
+ }
915
+ ]
916
+ },
917
+ {
918
+ "include": "$self"
919
+ }
920
+ ]
921
+ },
922
+ {
923
+ "begin": "\\b(if)\\b",
924
+ "captures": {
925
+ "1": {
926
+ "name": "keyword.control.shell"
927
+ }
928
+ },
929
+ "end": "\\b(fi)\\b",
930
+ "name": "meta.scope.if-block.shell",
931
+ "patterns": [
932
+ {
933
+ "include": "$self"
934
+ }
935
+ ]
936
+ }
937
+ ]
938
+ },
939
+ "math": {
940
+ "patterns": [
941
+ {
942
+ "include": "#variable"
943
+ },
944
+ {
945
+ "match": "\\+{1,2}|-{1,2}|!|~|\\*{1,2}|\/|%|<[<=]?|>[>=]?|==|!=|^|\\|{1,2}|&{1,2}|\\?|\\:|,|=|[*\/%+\\-&^|]=|<<=|>>=",
946
+ "name": "keyword.operator.arithmetic.shell"
947
+ },
948
+ {
949
+ "match": "0[xX]\\h+",
950
+ "name": "constant.numeric.hex.shell"
951
+ },
952
+ {
953
+ "match": "0\\d+",
954
+ "name": "constant.numeric.octal.shell"
955
+ },
956
+ {
957
+ "match": "\\d{1,2}#[0-9a-zA-Z@_]+",
958
+ "name": "constant.numeric.other.shell"
959
+ },
960
+ {
961
+ "match": "\\d+",
962
+ "name": "constant.numeric.integer.shell"
963
+ }
964
+ ]
965
+ },
966
+ "pathname": {
967
+ "patterns": [
968
+ {
969
+ "match": "(?<=\\s|:|=|^)~",
970
+ "name": "keyword.operator.tilde.shell"
971
+ },
972
+ {
973
+ "match": "\\*|\\?",
974
+ "name": "keyword.operator.glob.shell"
975
+ },
976
+ {
977
+ "begin": "([?*+@!])(\\()",
978
+ "beginCaptures": {
979
+ "1": {
980
+ "name": "keyword.operator.extglob.shell"
981
+ },
982
+ "2": {
983
+ "name": "punctuation.definition.extglob.shell"
984
+ }
985
+ },
986
+ "end": "(\\))",
987
+ "endCaptures": {
988
+ "1": {
989
+ "name": "punctuation.definition.extglob.shell"
990
+ }
991
+ },
992
+ "name": "meta.structure.extglob.shell",
993
+ "patterns": [
994
+ {
995
+ "include": "$self"
996
+ }
997
+ ]
998
+ }
999
+ ]
1000
+ },
1001
+ "pipeline": {
1002
+ "patterns": [
1003
+ {
1004
+ "match": "\\b(time)\\b",
1005
+ "name": "keyword.other.shell"
1006
+ },
1007
+ {
1008
+ "match": "[|!]",
1009
+ "name": "keyword.operator.pipe.shell"
1010
+ }
1011
+ ]
1012
+ },
1013
+ "redirection": {
1014
+ "patterns": [
1015
+ {
1016
+ "begin": "[><]\\(",
1017
+ "beginCaptures": {
1018
+ "0": {
1019
+ "name": "punctuation.definition.string.begin.shell"
1020
+ }
1021
+ },
1022
+ "end": "\\)",
1023
+ "endCaptures": {
1024
+ "0": {
1025
+ "name": "punctuation.definition.string.end.shell"
1026
+ }
1027
+ },
1028
+ "name": "string.interpolated.process-substitution.shell",
1029
+ "patterns": [
1030
+ {
1031
+ "include": "$self"
1032
+ }
1033
+ ]
1034
+ },
1035
+ {
1036
+ "comment": "valid: &>word >&word >word [n]>&[n] [n]<word [n]>word [n]>>word [n]<&word (last one is duplicate)",
1037
+ "match": "&>|\\d*>&\\d*|\\d*(>>|>|<)|\\d*<&|\\d*<>",
1038
+ "name": "keyword.operator.redirect.shell"
1039
+ }
1040
+ ]
1041
+ },
1042
+ "string": {
1043
+ "patterns": [
1044
+ {
1045
+ "match": "\\\\.",
1046
+ "name": "constant.character.escape.shell"
1047
+ },
1048
+ {
1049
+ "begin": "'",
1050
+ "beginCaptures": {
1051
+ "0": {
1052
+ "name": "punctuation.definition.string.begin.shell"
1053
+ }
1054
+ },
1055
+ "end": "'",
1056
+ "endCaptures": {
1057
+ "0": {
1058
+ "name": "punctuation.definition.string.end.shell"
1059
+ }
1060
+ },
1061
+ "name": "string.quoted.single.shell"
1062
+ },
1063
+ {
1064
+ "begin": "\\$?\"",
1065
+ "beginCaptures": {
1066
+ "0": {
1067
+ "name": "punctuation.definition.string.begin.shell"
1068
+ }
1069
+ },
1070
+ "end": "\"",
1071
+ "endCaptures": {
1072
+ "0": {
1073
+ "name": "punctuation.definition.string.end.shell"
1074
+ }
1075
+ },
1076
+ "name": "string.quoted.double.shell",
1077
+ "patterns": [
1078
+ {
1079
+ "match": "\\\\[\\$`\"\\\\\\n]",
1080
+ "name": "constant.character.escape.shell"
1081
+ },
1082
+ {
1083
+ "include": "#variable"
1084
+ },
1085
+ {
1086
+ "include": "#interpolation"
1087
+ }
1088
+ ]
1089
+ },
1090
+ {
1091
+ "begin": "\\$'",
1092
+ "beginCaptures": {
1093
+ "0": {
1094
+ "name": "punctuation.definition.string.begin.shell"
1095
+ }
1096
+ },
1097
+ "end": "'",
1098
+ "endCaptures": {
1099
+ "0": {
1100
+ "name": "punctuation.definition.string.end.shell"
1101
+ }
1102
+ },
1103
+ "name": "string.quoted.single.dollar.shell",
1104
+ "patterns": [
1105
+ {
1106
+ "match": "\\\\(a|b|e|f|n|r|t|v|\\\\|')",
1107
+ "name": "constant.character.escape.ansi-c.shell"
1108
+ },
1109
+ {
1110
+ "match": "\\\\[0-9]{3}",
1111
+ "name": "constant.character.escape.octal.shell"
1112
+ },
1113
+ {
1114
+ "match": "\\\\x[0-9a-fA-F]{2}",
1115
+ "name": "constant.character.escape.hex.shell"
1116
+ },
1117
+ {
1118
+ "match": "\\\\c.",
1119
+ "name": "constant.character.escape.control-char.shell"
1120
+ }
1121
+ ]
1122
+ }
1123
+ ]
1124
+ },
1125
+ "support": {
1126
+ "patterns": [
1127
+ {
1128
+ "match": "(?<=^|\\s)(?::|\\.)(?=\\s|;|&|$)",
1129
+ "name": "support.function.builtin.shell"
1130
+ },
1131
+ {
1132
+ "match": "\\b(?:alias|bg|bind|break|builtin|caller|cd|command|compgen|complete|dirs|disown|echo|enable|eval|exec|exit|false|fc|fg|getopts|hash|help|history|jobs|kill|let|local|logout|popd|printf|pushd|pwd|read|readonly|set|shift|shopt|source|suspend|test|times|trap|true|type|ulimit|umask|unalias|unset|wait)\\b",
1133
+ "name": "support.function.builtin.shell"
1134
+ }
1135
+ ]
1136
+ },
1137
+ "variable": {
1138
+ "patterns": [
1139
+ {
1140
+ "captures": {
1141
+ "1": {
1142
+ "name": "punctuation.definition.variable.shell"
1143
+ }
1144
+ },
1145
+ "match": "(\\$)[-*@#?$!0_]",
1146
+ "name": "variable.other.special.shell"
1147
+ },
1148
+ {
1149
+ "captures": {
1150
+ "1": {
1151
+ "name": "punctuation.definition.variable.shell"
1152
+ }
1153
+ },
1154
+ "match": "(\\$)[1-9]",
1155
+ "name": "variable.other.positional.shell"
1156
+ },
1157
+ {
1158
+ "captures": {
1159
+ "1": {
1160
+ "name": "punctuation.definition.variable.shell"
1161
+ }
1162
+ },
1163
+ "match": "(\\$)[a-zA-Z_][a-zA-Z0-9_]*",
1164
+ "name": "variable.other.normal.shell"
1165
+ },
1166
+ {
1167
+ "begin": "\\$\\{",
1168
+ "captures": {
1169
+ "0": {
1170
+ "name": "punctuation.definition.variable.shell"
1171
+ }
1172
+ },
1173
+ "end": "\\}",
1174
+ "name": "variable.other.bracket.shell",
1175
+ "patterns": [
1176
+ {
1177
+ "match": "!|:[-=?]?|\\*|@|#{1,2}|%{1,2}|\/",
1178
+ "name": "keyword.operator.expansion.shell"
1179
+ },
1180
+ {
1181
+ "captures": {
1182
+ "1": {
1183
+ "name": "punctuation.section.array.shell"
1184
+ },
1185
+ "3": {
1186
+ "name": "punctuation.section.array.shell"
1187
+ }
1188
+ },
1189
+ "match": "(\\[)([^\\]]+)(\\])"
1190
+ }
1191
+ ]
1192
+ }
1193
+ ]
1194
+ }
1195
+ },
1196
+ "scopeName": "source.shell",
1197
+ "uuid": "DDEEA3ED-6B1C-11D9-8B10-000D93589AF6"
1198
+ }