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,96 @@
1
+ {
2
+ "fileTypes": [
3
+ "i",
4
+ "swg"
5
+ ],
6
+ "foldingStartMarker": "(\/\\*\\*|%?\\{\\s*$)",
7
+ "foldingStopMarker": "(\\*\\*\/|^\\s*%?\\})",
8
+ "keyEquivalent": "^~S",
9
+ "name": "SWIG",
10
+ "patterns": [
11
+ {
12
+ "comment": "SWIG files contain C or C++ code, so it's logical to derive from the C++ rules",
13
+ "include": "source.c++"
14
+ },
15
+ {
16
+ "captures": {
17
+ "1": {
18
+ "name": "punctuation.definition.keyword.swig"
19
+ }
20
+ },
21
+ "match": "(%)(header|init|inline|native|runtime|wrapper)\\b",
22
+ "name": "keyword.other.directive.inlinecode.swig"
23
+ },
24
+ {
25
+ "captures": {
26
+ "1": {
27
+ "name": "punctuation.definition.keyword.swig"
28
+ }
29
+ },
30
+ "match": "(\\$)([\\*&]*[1-9]+(_name|_type|_ltype|_basetype|_mangle|_descriptor){0,1}|action|input|result|symname)\\b",
31
+ "name": "keyword.other.function-parameter.swig"
32
+ },
33
+ {
34
+ "match": "\\b(in|out|typecheck|arginit|default|check|argout|freearg|newfree|memberin|varin|varout|throws|numinputs)\\b",
35
+ "name": "support.function.type.swig"
36
+ },
37
+ {
38
+ "captures": {
39
+ "1": {
40
+ "name": "punctuation.definition.keyword.swig"
41
+ }
42
+ },
43
+ "match": "(%)(apply|callback|clear|constant|contract|define|enddef|extend|feature|ignore|insert|makedefault|module|nocallback|nodefault|rename|typemap|varargs|template)\\b",
44
+ "name": "keyword.other.directive.swig"
45
+ },
46
+ {
47
+ "captures": {
48
+ "1": {
49
+ "name": "keyword.control.import.swig"
50
+ }
51
+ },
52
+ "match": "\\(\\s*(allegrocl|chicken|csharp|guile|java|modula3|mzscheme|ocaml|perl|php|pike|python|ruby|sexp|tcl|xml)\\b",
53
+ "name": "meta.preprocessor.swig"
54
+ },
55
+ {
56
+ "begin": "^\\s*(%)\\s*(include|import)\\b\\s+(\"?[A-Za-z0-9\\._]+\"?)",
57
+ "captures": {
58
+ "1": {
59
+ "name": "punctuation.definition.preprocessor.swig"
60
+ },
61
+ "2": {
62
+ "name": "keyword.control.import.swig"
63
+ },
64
+ "3": {
65
+ "name": "string.quoted.double.swig"
66
+ }
67
+ },
68
+ "end": "$",
69
+ "name": "meta.preprocessor.swig"
70
+ },
71
+ {
72
+ "captures": {
73
+ "1": {
74
+ "name": "punctuation.definition.preprocessor.swig"
75
+ }
76
+ },
77
+ "match": "(%)([A-Za-z]+[A-Za-z0-9_]*)\\b",
78
+ "name": "meta.preprocessor.macro.swig"
79
+ },
80
+ {
81
+ "match": "\\bSWIG_TYPECHECK_(POINTER|VOIDPTR|BOOL|UINT8|INT8|UINT16|INT16|UINT32|INT32|UINT64|INT64|UINT128|INT128|INTEGER|FLOAT|DOUBLE|COMPLEX|UNICHAR|UNISTRING|CHAR|STRING|BOOL_ARRAY|INT8_ARRAY|INT16_ARRAY|INT32_ARRAY|INT64_ARRAY|INT128_ARRAY|FLOAT_ARRAY|DOUBLE_ARRAY|CHAR_ARRAY|STRING_ARRAY)\\b",
82
+ "name": "storage.type.swig"
83
+ },
84
+ {
85
+ "captures": {
86
+ "1": {
87
+ "name": "punctuation.section.embedded.swig"
88
+ }
89
+ },
90
+ "match": "(%\\{|%\\})",
91
+ "name": "source.swig.codeblock"
92
+ }
93
+ ],
94
+ "scopeName": "source.swig",
95
+ "uuid": "C781B0D0-BED9-11D9-A141-000393A143CC"
96
+ }
@@ -0,0 +1,359 @@
1
+ {
2
+ "comment": "\n\t\tThe foldings do not currently work the way I want them to. This\n\t\tmay be a limitation of the way they are applied rather than the\n\t\tregexps in use. Nonetheless, the foldings will end on the last\n\t\tidentically indented blank line following an s-expression. Not\n\t\tideal perhaps, but it works. Also, the #illegal pattern never\n\t\tmatches an unpaired ( as being illegal. Why?! -- Rob Rix\n\t\t\n\t\tOk, hopefully this grammar works better on quoted stuff now. It\n\t\tmay break for fancy macros, but should generally work pretty\n\t\tsmoothly. -- Jacob Rus\n\t\t\n\t\tI have attempted to get this under control but because of the way folding\n\t\tand indentation interact in Textmate, I am not sure if it is possible. In the\n\t\tmeantime, I have implemented Python-style folding anchored at newlines.\n\t\tAdditionally, I have made some minor improvements to the numeric constant\n\t\thighlighting. Next up is square bracket expressions, I guess, but that\n\t\tshould be trivial. -- ozy`\n\t",
3
+ "fileTypes": [
4
+ "scm",
5
+ "sch"
6
+ ],
7
+ "foldingStartMarker": "(?x)^ [ \\t]* \\(\n\t (?<par>\n\t ( [^()\\n]++ | \\( \\g<par> \\)? )*+\n\t )\n\t$",
8
+ "foldingStopMarker": "^\\s*$",
9
+ "keyEquivalent": "^~S",
10
+ "name": "Scheme",
11
+ "patterns": [
12
+ {
13
+ "include": "#comment"
14
+ },
15
+ {
16
+ "include": "#sexp"
17
+ },
18
+ {
19
+ "include": "#string"
20
+ },
21
+ {
22
+ "include": "#language-functions"
23
+ },
24
+ {
25
+ "include": "#quote"
26
+ },
27
+ {
28
+ "include": "#illegal"
29
+ }
30
+ ],
31
+ "repository": {
32
+ "comment": {
33
+ "captures": {
34
+ "1": {
35
+ "name": "punctuation.definition.comment.scheme"
36
+ }
37
+ },
38
+ "match": "(;).*$\\n?",
39
+ "name": "comment.line.semicolon.scheme"
40
+ },
41
+ "constants": {
42
+ "patterns": [
43
+ {
44
+ "match": "#[t|f]",
45
+ "name": "constant.language.boolean.scheme"
46
+ },
47
+ {
48
+ "match": "(?<=[\\(\\s])((#e|#i)?[0-9]+(\\.[0-9]+)?|(#x)[0-9a-fA-F]+|(#o)[0-7]+|(#b)[01]+)(?=[\\s;()'\",\\[\\]])",
49
+ "name": "constant.numeric.scheme"
50
+ }
51
+ ]
52
+ },
53
+ "illegal": {
54
+ "match": "[()\\[\\]]",
55
+ "name": "invalid.illegal.parenthesis.scheme"
56
+ },
57
+ "language-functions": {
58
+ "patterns": [
59
+ {
60
+ "match": "(?x)\n\t\t\t\t\t\t(?<=(\\s|\\(|\\[)) # preceded by space or ( \n\t\t\t\t\t\t( do|or|and|else|quasiquote|begin|if|case|set!|\n\t\t\t\t\t\t cond|let|unquote|define|let\\*|unquote-splicing|delay|\n\t\t\t\t\t\t letrec)\n\t\t\t\t\t\t(?=(\\s|\\())",
61
+ "name": "keyword.control.scheme"
62
+ },
63
+ {
64
+ "comment": "\n\t\t\t\t\t\tThese functions run a test, and return a boolean\n\t\t\t\t\t\tanswer.\n\t\t\t\t\t",
65
+ "match": "(?x)\n\t\t\t\t\t\t(?<=(\\s|\\()) # preceded by space or (\n\t\t\t\t\t\t( char-alphabetic|char-lower-case|char-numeric|\n\t\t\t\t\t\t char-ready|char-upper-case|char-whitespace|\n\t\t\t\t\t\t (?:char|string)(?:-ci)?(?:=|<=?|>=?)|\n\t\t\t\t\t\t atom|boolean|bound-identifier=|char|complex|\n\t\t\t\t\t\t identifier|integer|symbol|free-identifier=|inexact|\n\t\t\t\t\t\t eof-object|exact|list|(?:input|output)-port|pair|\n\t\t\t\t\t\t real|rational|zero|vector|negative|odd|null|string|\n\t\t\t\t\t\t eq|equal|eqv|even|number|positive|procedure\n\t\t\t\t\t\t)\n\t\t\t\t\t\t(\\?)\t\t# name ends with ? sign\n\t\t\t\t\t\t(?=(\\s|\\()) # followed by space or (\n\t\t\t\t\t",
66
+ "name": "support.function.boolean-test.scheme"
67
+ },
68
+ {
69
+ "comment": "\n\t\t\t\t\t\tThese functions change one type into another.\n\t\t\t\t\t",
70
+ "match": "(?x)\n\t\t\t\t\t\t(?<=(\\s|\\()) # preceded by space or (\n\t\t\t\t\t\t( char->integer|exact->inexact|inexact->exact|\n\t\t\t\t\t\t integer->char|symbol->string|list->vector|\n\t\t\t\t\t\t list->string|identifier->symbol|vector->list|\n\t\t\t\t\t\t string->list|string->number|string->symbol|\n\t\t\t\t\t\t number->string\n\t\t\t\t\t\t)\n\t\t\t\t\t\t(?=(\\s|\\()) # followed by space or (\t\t\t\t\t\n\t\t\t\t\t",
71
+ "name": "support.function.convert-type.scheme"
72
+ },
73
+ {
74
+ "comment": "\n\t\t\t\t\t\tThese functions are potentially dangerous because\n\t\t\t\t\t\tthey have side-effects which could affect other\n\t\t\t\t\t\tparts of the program.\n\t\t\t\t\t",
75
+ "match": "(?x)\n\t\t\t\t\t\t(?<=(\\s|\\()) # preceded by space or (\n\t\t\t\t\t\t( set-(?:car|cdr)|\t\t\t\t # set car\/cdr\n\t\t\t\t\t\t (?:vector|string)-(?:fill|set) # fill\/set string\/vector\n\t\t\t\t\t\t)\n\t\t\t\t\t\t(!)\t\t\t# name ends with ! sign\n\t\t\t\t\t\t(?=(\\s|\\()) # followed by space or (\n\t\t\t\t\t",
76
+ "name": "support.function.with-side-effects.scheme"
77
+ },
78
+ {
79
+ "comment": "\n\t\t\t\t\t\t+, -, *, \/, =, >, etc. \n\t\t\t\t\t",
80
+ "match": "(?x)\n\t\t\t\t\t\t(?<=(\\s|\\()) # preceded by space or (\n\t\t\t\t\t\t( >=?|<=?|=|[*\/+-])\n\t\t\t\t\t\t(?=(\\s|\\()) # followed by space or (\n\t\t\t\t\t\t",
81
+ "name": "keyword.operator.arithmetic.scheme"
82
+ },
83
+ {
84
+ "match": "(?x)\n\t\t\t\t\t\t(?<=(\\s|\\()) # preceded by space or (\n\t\t\t\t\t\t( append|apply|approximate|\n\t\t\t\t\t\t call-with-current-continuation|call\/cc|catch|\n\t\t\t\t\t\t construct-identifier|define-syntax|display|foo|\n\t\t\t\t\t\t for-each|force|cd|gen-counter|gen-loser|\n\t\t\t\t\t\t generate-identifier|last-pair|length|let-syntax|\n\t\t\t\t\t\t letrec-syntax|list|list-ref|list-tail|load|log|\n\t\t\t\t\t\t macro|magnitude|map|map-streams|max|member|memq|\n\t\t\t\t\t\t memv|min|newline|nil|not|peek-char|rationalize|\n\t\t\t\t\t\t read|read-char|return|reverse|sequence|substring|\n\t\t\t\t\t\t syntax|syntax-rules|transcript-off|transcript-on|\n\t\t\t\t\t\t truncate|unwrap-syntax|values-list|write|write-char|\n\t\t\t\t\t\t \n\t\t\t\t\t\t # cons, car, cdr, etc\n\t\t\t\t\t\t cons|c(a|d){1,4}r| \n \n\t\t\t\t\t\t # unary math operators\n\t\t\t\t\t\t abs|acos|angle|asin|assoc|assq|assv|atan|ceiling|\n\t\t\t\t\t\t cos|floor|round|sin|sqrt|tan|\n\t\t\t\t\t\t (?:real|imag)-part|numerator|denominator\n \n\t\t\t\t\t\t # other math operators\n\t\t\t\t\t\t modulo|exp|expt|remainder|quotient|lcm|\n \n\t\t\t\t\t\t # ports \/ files\n\t\t\t\t\t\t call-with-(?:input|output)-file|\n\t\t\t\t\t\t (?:close|current)-(?:input|output)-port|\n\t\t\t\t\t\t with-(?:input|output)-from-file|\n\t\t\t\t\t\t open-(?:input|output)-file|\n\t\t\t\t\t\t \n\t\t\t\t\t\t # char-\u00abfoo\u00bb\n\t\t\t\t\t\t char-(?:downcase|upcase|ready)|\n\t\t\t\t\t\t \n\t\t\t\t\t\t # make-\u00abfoo\u00bb\n\t\t\t\t\t\t make-(?:polar|promise|rectangular|string|vector)\n\t\t\t\t\t\t \n\t\t\t\t\t\t # string-\u00abfoo\u00bb, vector-\u00abfoo\u00bb\n\t\t\t\t\t\t string(?:-(?:append|copy|length|ref))?|\n\t\t\t\t\t\t vector(?:-length|-ref)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t(?=(\\s|\\()) # followed by space or (\n\t\t\t\t\t",
85
+ "name": "support.function.general.scheme"
86
+ }
87
+ ]
88
+ },
89
+ "quote": {
90
+ "comment": "\n\t\t\t\tWe need to be able to quote any kind of item, which creates\n\t\t\t\ta tiny bit of complexity in our grammar. It is hopefully\n\t\t\t\tnot overwhelming complexity.\n\t\t\t\t\n\t\t\t\tNote: the first two matches are special cases. quoted\n\t\t\t\tsymbols, and quoted empty lists are considered constant.other\n\t\t\t\t\n\t\t\t",
91
+ "patterns": [
92
+ {
93
+ "captures": {
94
+ "1": {
95
+ "name": "punctuation.section.quoted.symbol.scheme"
96
+ }
97
+ },
98
+ "match": "(?x)\n\t\t\t\t\t\t(')\\s*\n\t\t\t\t\t\t([[:alnum:]][[:alnum:]!$%&*+-.\/:<=>?@^_~]*)\n\t\t\t\t\t",
99
+ "name": "constant.other.symbol.scheme"
100
+ },
101
+ {
102
+ "captures": {
103
+ "1": {
104
+ "name": "punctuation.section.quoted.empty-list.scheme"
105
+ },
106
+ "2": {
107
+ "name": "meta.expression.scheme"
108
+ },
109
+ "3": {
110
+ "name": "punctuation.section.expression.begin.scheme"
111
+ },
112
+ "4": {
113
+ "name": "punctuation.section.expression.end.scheme"
114
+ }
115
+ },
116
+ "match": "(?x)\n\t\t\t\t\t\t(')\\s*\n\t\t\t\t\t\t((\\()\\s*(\\)))\n\t\t\t\t\t",
117
+ "name": "constant.other.empty-list.schem"
118
+ },
119
+ {
120
+ "begin": "(')\\s*",
121
+ "beginCaptures": {
122
+ "1": {
123
+ "name": "punctuation.section.quoted.scheme"
124
+ }
125
+ },
126
+ "comment": "quoted double-quoted string or s-expression",
127
+ "end": "(?=[\\s()])|(?<=\\n)",
128
+ "name": "string.other.quoted-object.scheme",
129
+ "patterns": [
130
+ {
131
+ "include": "#quoted"
132
+ }
133
+ ]
134
+ }
135
+ ]
136
+ },
137
+ "quote-sexp": {
138
+ "begin": "(?<=\\()\\s*(quote)\\b\\s*",
139
+ "beginCaptures": {
140
+ "1": {
141
+ "name": "keyword.control.quote.scheme"
142
+ }
143
+ },
144
+ "comment": "\n\t\t\t\tSomething quoted with (quote \u00abthing\u00bb). In this case \u00abthing\u00bb\n\t\t\t\twill not be evaluated, so we are considering it a string.\n\t\t\t",
145
+ "contentName": "string.other.quote.scheme",
146
+ "end": "(?=[\\s)])|(?<=\\n)",
147
+ "patterns": [
148
+ {
149
+ "include": "#quoted"
150
+ }
151
+ ]
152
+ },
153
+ "quoted": {
154
+ "patterns": [
155
+ {
156
+ "include": "#string"
157
+ },
158
+ {
159
+ "begin": "(\\()",
160
+ "beginCaptures": {
161
+ "1": {
162
+ "name": "punctuation.section.expression.begin.scheme"
163
+ }
164
+ },
165
+ "end": "(\\))",
166
+ "endCaptures": {
167
+ "1": {
168
+ "name": "punctuation.section.expression.end.scheme"
169
+ }
170
+ },
171
+ "name": "meta.expression.scheme",
172
+ "patterns": [
173
+ {
174
+ "include": "#quoted"
175
+ }
176
+ ]
177
+ },
178
+ {
179
+ "include": "#quote"
180
+ },
181
+ {
182
+ "include": "#illegal"
183
+ }
184
+ ]
185
+ },
186
+ "sexp": {
187
+ "begin": "(\\()",
188
+ "beginCaptures": {
189
+ "1": {
190
+ "name": "punctuation.section.expression.begin.scheme"
191
+ }
192
+ },
193
+ "end": "(\\))(\\n)?",
194
+ "endCaptures": {
195
+ "1": {
196
+ "name": "punctuation.section.expression.end.scheme"
197
+ },
198
+ "2": {
199
+ "name": "meta.after-expression.scheme"
200
+ }
201
+ },
202
+ "name": "meta.expression.scheme",
203
+ "patterns": [
204
+ {
205
+ "include": "#comment"
206
+ },
207
+ {
208
+ "begin": "(?x)\n\t\t\t\t\t\t(?<=\\() # preceded by (\n\t\t\t\t\t\t(define)\\s+ # define\n\t\t\t\t\t\t(\\() # list of parameters\n\t\t\t\t\t\t ([[:alnum:]][[:alnum:]!$%&*+-.\/:<=>?@^_~]*)\n\t\t\t\t\t\t ((\\s+\n\t\t\t\t\t\t ([[:alnum:]][[:alnum:]!$%&*+-.\/:<=>?@^_~]*|[._])\n\t\t\t\t\t\t )*\n\t\t\t\t\t\t )\\s*\n\t\t\t\t\t\t(\\))\n\t\t\t\t\t",
209
+ "captures": {
210
+ "1": {
211
+ "name": "keyword.control.scheme"
212
+ },
213
+ "2": {
214
+ "name": "punctuation.definition.function.scheme"
215
+ },
216
+ "3": {
217
+ "name": "entity.name.function.scheme"
218
+ },
219
+ "4": {
220
+ "name": "variable.parameter.function.scheme"
221
+ },
222
+ "7": {
223
+ "name": "punctuation.definition.function.scheme"
224
+ }
225
+ },
226
+ "end": "(?=\\))",
227
+ "name": "meta.declaration.procedure.scheme",
228
+ "patterns": [
229
+ {
230
+ "include": "#comment"
231
+ },
232
+ {
233
+ "include": "#sexp"
234
+ },
235
+ {
236
+ "include": "#illegal"
237
+ }
238
+ ]
239
+ },
240
+ {
241
+ "begin": "(?x)\n\t\t\t\t\t\t(?<=\\() # preceded by (\n\t\t\t\t\t\t(lambda)\\s+\n\t\t\t\t\t\t(\\() # opening paren\n\t\t\t\t\t\t((?:\n\t\t\t\t\t\t ([[:alnum:]][[:alnum:]!$%&*+-.\/:<=>?@^_~]*|[._])\n\t\t\t\t\t\t \\s+\n\t\t\t\t\t\t)*(?:\n\t\t\t\t\t\t ([[:alnum:]][[:alnum:]!$%&*+-.\/:<=>?@^_~]*|[._])\n\t\t\t\t\t\t)?)\n\t\t\t\t\t\t(\\)) # closing paren\n\t\t\t\t\t",
242
+ "captures": {
243
+ "1": {
244
+ "name": "keyword.control.scheme"
245
+ },
246
+ "2": {
247
+ "name": "punctuation.definition.variable.scheme"
248
+ },
249
+ "3": {
250
+ "name": "variable.parameter.scheme"
251
+ },
252
+ "6": {
253
+ "name": "punctuation.definition.variable.scheme"
254
+ }
255
+ },
256
+ "comment": "\n\t\t\t\t\t\tNot sure this one is quite correct. That \\s* is\n\t\t\t\t\t\tparticularly troubling\n\t\t\t\t\t",
257
+ "end": "(?=\\))",
258
+ "name": "meta.declaration.procedure.scheme",
259
+ "patterns": [
260
+ {
261
+ "include": "#comment"
262
+ },
263
+ {
264
+ "include": "#sexp"
265
+ },
266
+ {
267
+ "include": "#illegal"
268
+ }
269
+ ]
270
+ },
271
+ {
272
+ "begin": "(?<=\\()(define)\\s([[:alnum:]][[:alnum:]!$%&*+-.\/:<=>?@^_~]*)\\s*.*?",
273
+ "captures": {
274
+ "1": {
275
+ "name": "keyword.control.scheme"
276
+ },
277
+ "2": {
278
+ "name": "variable.other.scheme"
279
+ }
280
+ },
281
+ "end": "(?=\\))",
282
+ "name": "meta.declaration.variable.scheme",
283
+ "patterns": [
284
+ {
285
+ "include": "#comment"
286
+ },
287
+ {
288
+ "include": "#sexp"
289
+ },
290
+ {
291
+ "include": "#illegal"
292
+ }
293
+ ]
294
+ },
295
+ {
296
+ "include": "#quote-sexp"
297
+ },
298
+ {
299
+ "include": "#quote"
300
+ },
301
+ {
302
+ "include": "#language-functions"
303
+ },
304
+ {
305
+ "include": "#string"
306
+ },
307
+ {
308
+ "include": "#constants"
309
+ },
310
+ {
311
+ "match": "(?<=[\\(\\s])(#\\\\)(space|newline|tab)(?=[\\s\\)])",
312
+ "name": "constant.character.named.scheme"
313
+ },
314
+ {
315
+ "match": "(?<=[\\(\\s])(#\\\\)x[0-9A-F]{2,4}(?=[\\s\\)])",
316
+ "name": "constant.character.hex-literal.scheme"
317
+ },
318
+ {
319
+ "match": "(?<=[\\(\\s])(#\\\\).(?=[\\s\\)])",
320
+ "name": "constant.character.escape.scheme"
321
+ },
322
+ {
323
+ "comment": "\n\t\t\t\t\t\tthe . in (a . b) which conses together two elements\n\t\t\t\t\t\ta and b. (a b c) == (a . (b . (c . nil)))\n\t\t\t\t\t",
324
+ "match": "(?<=[ ()])\\.(?=[ ()])",
325
+ "name": "punctuation.separator.cons.scheme"
326
+ },
327
+ {
328
+ "include": "#sexp"
329
+ },
330
+ {
331
+ "include": "#illegal"
332
+ }
333
+ ]
334
+ },
335
+ "string": {
336
+ "begin": "(\")",
337
+ "beginCaptures": {
338
+ "1": {
339
+ "name": "punctuation.definition.string.begin.scheme"
340
+ }
341
+ },
342
+ "end": "(\")",
343
+ "endCaptures": {
344
+ "1": {
345
+ "name": "punctuation.definition.string.end.scheme"
346
+ }
347
+ },
348
+ "name": "string.quoted.double.scheme",
349
+ "patterns": [
350
+ {
351
+ "match": "\\\\.",
352
+ "name": "constant.character.escape.scheme"
353
+ }
354
+ ]
355
+ }
356
+ },
357
+ "scopeName": "source.scheme",
358
+ "uuid": "3EC2CFD0-909C-4692-AC29-1A60ADBC161E"
359
+ }