@phenx-inc/ctlsurf 0.1.0

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 (133) hide show
  1. package/bin/ctlsurf-worker.js +173 -0
  2. package/electron-vite.config.ts +34 -0
  3. package/out/headless/index.mjs +1364 -0
  4. package/out/headless/index.mjs.map +7 -0
  5. package/out/main/index.js +1131 -0
  6. package/out/preload/index.js +67 -0
  7. package/out/renderer/assets/abap-D5KwWAsZ.js +1399 -0
  8. package/out/renderer/assets/apex-DVGUZ64i.js +331 -0
  9. package/out/renderer/assets/azcli-BEAhqcuE.js +69 -0
  10. package/out/renderer/assets/bat-Bqkp9Cfu.js +101 -0
  11. package/out/renderer/assets/bicep-DIlfshcM.js +110 -0
  12. package/out/renderer/assets/cameligo-CLaaYNMV.js +175 -0
  13. package/out/renderer/assets/clojure-fcgFaMHx.js +762 -0
  14. package/out/renderer/assets/codicon-ngg6Pgfi.ttf +0 -0
  15. package/out/renderer/assets/coffee-CzJ5oEdj.js +233 -0
  16. package/out/renderer/assets/cpp-CcN6f0ik.js +390 -0
  17. package/out/renderer/assets/csharp-BJeIuvde.js +327 -0
  18. package/out/renderer/assets/csp-D_3BK2Wp.js +54 -0
  19. package/out/renderer/assets/css-i3rI3_64.js +186 -0
  20. package/out/renderer/assets/css.worker-umuuUiIb.js +53567 -0
  21. package/out/renderer/assets/cssMode-DL0XItGB.js +208 -0
  22. package/out/renderer/assets/cypher-D0--_GAN.js +264 -0
  23. package/out/renderer/assets/dart-vLMHv35g.js +282 -0
  24. package/out/renderer/assets/dockerfile--oxj0cAH.js +131 -0
  25. package/out/renderer/assets/ecl-CeuUgzaZ.js +457 -0
  26. package/out/renderer/assets/editor.worker-CNgWLVu7.js +13695 -0
  27. package/out/renderer/assets/elixir-eLfY1jWH.js +570 -0
  28. package/out/renderer/assets/flow9-ZSTChSMd.js +143 -0
  29. package/out/renderer/assets/freemarker2-CrOEuDcF.js +995 -0
  30. package/out/renderer/assets/fsharp-D2uoxuLH.js +218 -0
  31. package/out/renderer/assets/go-brnMpFrj.js +219 -0
  32. package/out/renderer/assets/graphql-BeiGgjIU.js +152 -0
  33. package/out/renderer/assets/handlebars-D4QYaBof.js +414 -0
  34. package/out/renderer/assets/hcl-CrX1Es2W.js +184 -0
  35. package/out/renderer/assets/html-B2Dqk2ai.js +303 -0
  36. package/out/renderer/assets/html.worker-BT47iy49.js +29777 -0
  37. package/out/renderer/assets/htmlMode-CdZ0Prhd.js +224 -0
  38. package/out/renderer/assets/index-CJ6RsQWP.css +8108 -0
  39. package/out/renderer/assets/index-pZmE1QXB.js +211777 -0
  40. package/out/renderer/assets/ini-BcQysCTb.js +72 -0
  41. package/out/renderer/assets/java-Dt3iMn2o.js +233 -0
  42. package/out/renderer/assets/javascript-CK8zNQXj.js +72 -0
  43. package/out/renderer/assets/json.worker-D4JVmXIe.js +21424 -0
  44. package/out/renderer/assets/jsonMode-Cewaellc.js +931 -0
  45. package/out/renderer/assets/julia-Cm3ItYL_.js +512 -0
  46. package/out/renderer/assets/kotlin-Ddo1SjA5.js +253 -0
  47. package/out/renderer/assets/less-B7Qaxw-O.js +162 -0
  48. package/out/renderer/assets/lexon-C1U0m2n9.js +158 -0
  49. package/out/renderer/assets/liquid-Bd3GPNs2.js +235 -0
  50. package/out/renderer/assets/lspLanguageFeatures-DSDH7BnA.js +1841 -0
  51. package/out/renderer/assets/lua-hNsuGJkO.js +163 -0
  52. package/out/renderer/assets/m3-6ko6q9-_.js +211 -0
  53. package/out/renderer/assets/markdown-B0YTnTxW.js +230 -0
  54. package/out/renderer/assets/mdx-CCPVCrXC.js +159 -0
  55. package/out/renderer/assets/mips-CJm71dS3.js +199 -0
  56. package/out/renderer/assets/msdax-BBeIktCY.js +376 -0
  57. package/out/renderer/assets/mysql-BWiizXSn.js +879 -0
  58. package/out/renderer/assets/objective-c-B1L1C5EC.js +184 -0
  59. package/out/renderer/assets/pascal-DMQyD4Xk.js +252 -0
  60. package/out/renderer/assets/pascaligo-VA_LQ1oU.js +165 -0
  61. package/out/renderer/assets/perl-DC0Z0tlO.js +627 -0
  62. package/out/renderer/assets/pgsql-DaSGFTLp.js +852 -0
  63. package/out/renderer/assets/php-Bkx1qpkQ.js +501 -0
  64. package/out/renderer/assets/pla-DEV89yYj.js +138 -0
  65. package/out/renderer/assets/postiats-CVVurEnu.js +908 -0
  66. package/out/renderer/assets/powerquery-BQ_t1ZiQ.js +891 -0
  67. package/out/renderer/assets/powershell-BXiKvz7Z.js +240 -0
  68. package/out/renderer/assets/protobuf-CndvAUGu.js +421 -0
  69. package/out/renderer/assets/pug-BxCXwerb.js +403 -0
  70. package/out/renderer/assets/python-34jOtlcC.js +295 -0
  71. package/out/renderer/assets/qsharp-BWK6YLKm.js +302 -0
  72. package/out/renderer/assets/r-CtqYUQ6l.js +244 -0
  73. package/out/renderer/assets/razor-DXRw694z.js +545 -0
  74. package/out/renderer/assets/redis-O7gSt3oh.js +303 -0
  75. package/out/renderer/assets/redshift-CvYMMYZY.js +810 -0
  76. package/out/renderer/assets/restructuredtext-B-KQCVu_.js +175 -0
  77. package/out/renderer/assets/ruby-DCd4DmAr.js +512 -0
  78. package/out/renderer/assets/rust-B1c0VCeq.js +344 -0
  79. package/out/renderer/assets/sb-Chfc_wZF.js +116 -0
  80. package/out/renderer/assets/scala-DbVzH-3O.js +371 -0
  81. package/out/renderer/assets/scheme-D7PxodDG.js +109 -0
  82. package/out/renderer/assets/scss-B42qMyAu.js +261 -0
  83. package/out/renderer/assets/shell-vZEubQ82.js +222 -0
  84. package/out/renderer/assets/solidity-yHOxYChb.js +1368 -0
  85. package/out/renderer/assets/sophia-D7pU0Y1d.js +200 -0
  86. package/out/renderer/assets/sparql-DxuVdnRl.js +202 -0
  87. package/out/renderer/assets/sql-BAGepFCR.js +854 -0
  88. package/out/renderer/assets/st-C-b0Dh53.js +417 -0
  89. package/out/renderer/assets/swift-BmOZGynf.js +313 -0
  90. package/out/renderer/assets/systemverilog-BOC0OOdC.js +577 -0
  91. package/out/renderer/assets/tcl-Bb4GCwBr.js +233 -0
  92. package/out/renderer/assets/ts.worker-C7hW3aY-.js +225330 -0
  93. package/out/renderer/assets/tsMode-CmND5_wB.js +1265 -0
  94. package/out/renderer/assets/twig-DvgEGWAV.js +393 -0
  95. package/out/renderer/assets/typescript-BNNI0Euv.js +337 -0
  96. package/out/renderer/assets/typespec-R77Ln7Jb.js +128 -0
  97. package/out/renderer/assets/vb-Bm6ESA0Q.js +373 -0
  98. package/out/renderer/assets/wgsl-_KPae5vw.js +454 -0
  99. package/out/renderer/assets/xml-CgdndrNB.js +89 -0
  100. package/out/renderer/assets/yaml-DNWPIf1s.js +200 -0
  101. package/out/renderer/index.html +13 -0
  102. package/package.json +67 -0
  103. package/resources/icon.icns +0 -0
  104. package/resources/icon.ico +0 -0
  105. package/resources/icon.png +0 -0
  106. package/src/main/agents.ts +46 -0
  107. package/src/main/bridge.ts +180 -0
  108. package/src/main/ctlsurfApi.ts +142 -0
  109. package/src/main/detectMode.ts +17 -0
  110. package/src/main/headless.ts +182 -0
  111. package/src/main/index.ts +300 -0
  112. package/src/main/orchestrator.ts +404 -0
  113. package/src/main/pty.ts +65 -0
  114. package/src/main/settingsDir.ts +17 -0
  115. package/src/main/tui.ts +366 -0
  116. package/src/main/workerWs.ts +312 -0
  117. package/src/preload/index.ts +114 -0
  118. package/src/renderer/App.tsx +275 -0
  119. package/src/renderer/components/CtlsurfPanel.tsx +49 -0
  120. package/src/renderer/components/EditorPanel.tsx +232 -0
  121. package/src/renderer/components/MultiSplitPane.tsx +251 -0
  122. package/src/renderer/components/PaneLayout.tsx +419 -0
  123. package/src/renderer/components/SettingsDialog.tsx +204 -0
  124. package/src/renderer/components/SplitPane.tsx +82 -0
  125. package/src/renderer/components/StatusBar.tsx +73 -0
  126. package/src/renderer/components/TerminalPanel.tsx +140 -0
  127. package/src/renderer/index.html +12 -0
  128. package/src/renderer/main.tsx +10 -0
  129. package/src/renderer/styles.css +722 -0
  130. package/tsconfig.json +8 -0
  131. package/tsconfig.main.json +15 -0
  132. package/tsconfig.preload.json +14 -0
  133. package/tsconfig.renderer.json +15 -0
@@ -0,0 +1,371 @@
1
+ const conf = {
2
+ /*
3
+ * `...` is allowed as an identifier.
4
+ * $ is allowed in identifiers.
5
+ * unary_<op> is allowed as an identifier.
6
+ * <name>_= is allowed as an identifier.
7
+ */
8
+ wordPattern: /(unary_[@~!#%^&*()\-=+\\|:<>\/?]+)|([a-zA-Z_$][\w$]*?_=)|(`[^`]+`)|([a-zA-Z_$][\w$]*)/g,
9
+ comments: {
10
+ lineComment: "//",
11
+ blockComment: ["/*", "*/"]
12
+ },
13
+ brackets: [
14
+ ["{", "}"],
15
+ ["[", "]"],
16
+ ["(", ")"]
17
+ ],
18
+ autoClosingPairs: [
19
+ { open: "{", close: "}" },
20
+ { open: "[", close: "]" },
21
+ { open: "(", close: ")" },
22
+ { open: '"', close: '"' },
23
+ { open: "'", close: "'" }
24
+ ],
25
+ surroundingPairs: [
26
+ { open: "{", close: "}" },
27
+ { open: "[", close: "]" },
28
+ { open: "(", close: ")" },
29
+ { open: '"', close: '"' },
30
+ { open: "'", close: "'" }
31
+ ],
32
+ folding: {
33
+ markers: {
34
+ start: new RegExp("^\\s*//\\s*(?:(?:#?region\\b)|(?:<editor-fold\\b))"),
35
+ end: new RegExp("^\\s*//\\s*(?:(?:#?endregion\\b)|(?:</editor-fold>))")
36
+ }
37
+ }
38
+ };
39
+ const language = {
40
+ tokenPostfix: ".scala",
41
+ // We can't easily add everything from Dotty, but we can at least add some of its keywords
42
+ keywords: [
43
+ "asInstanceOf",
44
+ "catch",
45
+ "class",
46
+ "classOf",
47
+ "def",
48
+ "do",
49
+ "else",
50
+ "extends",
51
+ "finally",
52
+ "for",
53
+ "foreach",
54
+ "forSome",
55
+ "if",
56
+ "import",
57
+ "isInstanceOf",
58
+ "macro",
59
+ "match",
60
+ "new",
61
+ "object",
62
+ "package",
63
+ "return",
64
+ "throw",
65
+ "trait",
66
+ "try",
67
+ "type",
68
+ "until",
69
+ "val",
70
+ "var",
71
+ "while",
72
+ "with",
73
+ "yield",
74
+ // Dotty-specific:
75
+ "given",
76
+ "enum",
77
+ "then"
78
+ ],
79
+ // Dotty-specific:
80
+ softKeywords: ["as", "export", "extension", "end", "derives", "on"],
81
+ constants: ["true", "false", "null", "this", "super"],
82
+ modifiers: [
83
+ "abstract",
84
+ "final",
85
+ "implicit",
86
+ "lazy",
87
+ "override",
88
+ "private",
89
+ "protected",
90
+ "sealed"
91
+ ],
92
+ // Dotty-specific:
93
+ softModifiers: ["inline", "opaque", "open", "transparent", "using"],
94
+ name: /(?:[a-z_$][\w$]*|`[^`]+`)/,
95
+ type: /(?:[A-Z][\w$]*)/,
96
+ // we include these common regular expressions
97
+ symbols: /[=><!~?:&|+\-*\/^\\%@#]+/,
98
+ digits: /\d+(_+\d+)*/,
99
+ hexdigits: /[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,
100
+ // C# style strings
101
+ escapes: /\\(?:[btnfr\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
102
+ fstring_conv: /[bBhHsScCdoxXeEfgGaAt]|[Tn](?:[HIklMSLNpzZsQ]|[BbhAaCYyjmde]|[RTrDFC])/,
103
+ // The main tokenizer for our languages
104
+ tokenizer: {
105
+ root: [
106
+ // strings
107
+ [/\braw"""/, { token: "string.quote", bracket: "@open", next: "@rawstringt" }],
108
+ [/\braw"/, { token: "string.quote", bracket: "@open", next: "@rawstring" }],
109
+ [/\bs"""/, { token: "string.quote", bracket: "@open", next: "@sstringt" }],
110
+ [/\bs"/, { token: "string.quote", bracket: "@open", next: "@sstring" }],
111
+ [/\bf""""/, { token: "string.quote", bracket: "@open", next: "@fstringt" }],
112
+ [/\bf"/, { token: "string.quote", bracket: "@open", next: "@fstring" }],
113
+ [/"""/, { token: "string.quote", bracket: "@open", next: "@stringt" }],
114
+ [/"/, { token: "string.quote", bracket: "@open", next: "@string" }],
115
+ // numbers
116
+ [/(@digits)[eE]([\-+]?(@digits))?[fFdD]?/, "number.float", "@allowMethod"],
117
+ [/(@digits)\.(@digits)([eE][\-+]?(@digits))?[fFdD]?/, "number.float", "@allowMethod"],
118
+ [/0[xX](@hexdigits)[Ll]?/, "number.hex", "@allowMethod"],
119
+ [/(@digits)[fFdD]/, "number.float", "@allowMethod"],
120
+ [/(@digits)[lL]?/, "number", "@allowMethod"],
121
+ [/\b_\*/, "key"],
122
+ [/\b(_)\b/, "keyword", "@allowMethod"],
123
+ // identifiers and keywords
124
+ [/\bimport\b/, "keyword", "@import"],
125
+ [/\b(case)([ \t]+)(class)\b/, ["keyword.modifier", "white", "keyword"]],
126
+ [/\bcase\b/, "keyword", "@case"],
127
+ [/\bva[lr]\b/, "keyword", "@vardef"],
128
+ [
129
+ /\b(def)([ \t]+)((?:unary_)?@symbols|@name(?:_=)|@name)/,
130
+ ["keyword", "white", "identifier"]
131
+ ],
132
+ [/@name(?=[ \t]*:(?!:))/, "variable"],
133
+ [/(\.)(@name|@symbols)/, ["operator", { token: "@rematch", next: "@allowMethod" }]],
134
+ [/([{(])(\s*)(@name(?=\s*=>))/, ["@brackets", "white", "variable"]],
135
+ [
136
+ /@name/,
137
+ {
138
+ cases: {
139
+ "@keywords": "keyword",
140
+ "@softKeywords": "keyword",
141
+ "@modifiers": "keyword.modifier",
142
+ "@softModifiers": "keyword.modifier",
143
+ "@constants": {
144
+ token: "constant",
145
+ next: "@allowMethod"
146
+ },
147
+ "@default": {
148
+ token: "identifier",
149
+ next: "@allowMethod"
150
+ }
151
+ }
152
+ }
153
+ ],
154
+ [/@type/, "type", "@allowMethod"],
155
+ // whitespace
156
+ { include: "@whitespace" },
157
+ // @ annotations.
158
+ [/@[a-zA-Z_$][\w$]*(?:\.[a-zA-Z_$][\w$]*)*/, "annotation"],
159
+ // delimiters and operators
160
+ [/[{(]/, "@brackets"],
161
+ [/[})]/, "@brackets", "@allowMethod"],
162
+ [/\[/, "operator.square"],
163
+ [/](?!\s*(?:va[rl]|def|type)\b)/, "operator.square", "@allowMethod"],
164
+ [/]/, "operator.square"],
165
+ [/([=-]>|<-|>:|<:|:>|<%)(?=[\s\w()[\]{},\."'`])/, "keyword"],
166
+ [/@symbols/, "operator"],
167
+ // delimiter: after number because of .\d floats
168
+ [/[;,\.]/, "delimiter"],
169
+ // symbols
170
+ [/'[a-zA-Z$][\w$]*(?!')/, "attribute.name"],
171
+ // characters
172
+ [/'[^\\']'/, "string", "@allowMethod"],
173
+ [/(')(@escapes)(')/, ["string", "string.escape", { token: "string", next: "@allowMethod" }]],
174
+ [/'/, "string.invalid"]
175
+ ],
176
+ import: [
177
+ [/;/, "delimiter", "@pop"],
178
+ [/^|$/, "", "@pop"],
179
+ [/[ \t]+/, "white"],
180
+ [/[\n\r]+/, "white", "@pop"],
181
+ [/\/\*/, "comment", "@comment"],
182
+ [/@name|@type/, "type"],
183
+ [/[(){}]/, "@brackets"],
184
+ [/[[\]]/, "operator.square"],
185
+ [/[\.,]/, "delimiter"]
186
+ ],
187
+ allowMethod: [
188
+ [/^|$/, "", "@pop"],
189
+ [/[ \t]+/, "white"],
190
+ [/[\n\r]+/, "white", "@pop"],
191
+ [/\/\*/, "comment", "@comment"],
192
+ [/(?==>[\s\w([{])/, "keyword", "@pop"],
193
+ [
194
+ /(@name|@symbols)(?=[ \t]*[[({"'`]|[ \t]+(?:[+-]?\.?\d|\w))/,
195
+ {
196
+ cases: {
197
+ "@keywords": { token: "keyword", next: "@pop" },
198
+ "->|<-|>:|<:|<%": { token: "keyword", next: "@pop" },
199
+ "@default": { token: "@rematch", next: "@pop" }
200
+ }
201
+ }
202
+ ],
203
+ ["", "", "@pop"]
204
+ ],
205
+ comment: [
206
+ [/[^\/*]+/, "comment"],
207
+ [/\/\*/, "comment", "@push"],
208
+ // nested comment
209
+ [/\*\//, "comment", "@pop"],
210
+ [/[\/*]/, "comment"]
211
+ ],
212
+ case: [
213
+ [/\b_\*/, "key"],
214
+ [/\b(_|true|false|null|this|super)\b/, "keyword", "@allowMethod"],
215
+ [/\bif\b|=>/, "keyword", "@pop"],
216
+ [/`[^`]+`/, "identifier", "@allowMethod"],
217
+ [/@name/, "variable", "@allowMethod"],
218
+ [/:::?|\||@(?![a-z_$])/, "keyword"],
219
+ { include: "@root" }
220
+ ],
221
+ vardef: [
222
+ [/\b_\*/, "key"],
223
+ [/\b(_|true|false|null|this|super)\b/, "keyword"],
224
+ [/@name/, "variable"],
225
+ [/:::?|\||@(?![a-z_$])/, "keyword"],
226
+ [/=|:(?!:)/, "operator", "@pop"],
227
+ [/$/, "white", "@pop"],
228
+ { include: "@root" }
229
+ ],
230
+ string: [
231
+ [/[^\\"\n\r]+/, "string"],
232
+ [/@escapes/, "string.escape"],
233
+ [/\\./, "string.escape.invalid"],
234
+ [
235
+ /"/,
236
+ {
237
+ token: "string.quote",
238
+ bracket: "@close",
239
+ switchTo: "@allowMethod"
240
+ }
241
+ ]
242
+ ],
243
+ stringt: [
244
+ [/[^\\"\n\r]+/, "string"],
245
+ [/@escapes/, "string.escape"],
246
+ [/\\./, "string.escape.invalid"],
247
+ [/"(?=""")/, "string"],
248
+ [
249
+ /"""/,
250
+ {
251
+ token: "string.quote",
252
+ bracket: "@close",
253
+ switchTo: "@allowMethod"
254
+ }
255
+ ],
256
+ [/"/, "string"]
257
+ ],
258
+ fstring: [
259
+ [/@escapes/, "string.escape"],
260
+ [
261
+ /"/,
262
+ {
263
+ token: "string.quote",
264
+ bracket: "@close",
265
+ switchTo: "@allowMethod"
266
+ }
267
+ ],
268
+ [/\$\$/, "string"],
269
+ [/(\$)([a-z_]\w*)/, ["operator", "identifier"]],
270
+ [/\$\{/, "operator", "@interp"],
271
+ [/%%/, "string"],
272
+ [
273
+ /(%)([\-#+ 0,(])(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/,
274
+ ["metatag", "keyword.modifier", "number", "metatag"]
275
+ ],
276
+ [/(%)(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/, ["metatag", "number", "metatag"]],
277
+ [/(%)([\-#+ 0,(])(@fstring_conv)/, ["metatag", "keyword.modifier", "metatag"]],
278
+ [/(%)(@fstring_conv)/, ["metatag", "metatag"]],
279
+ [/./, "string"]
280
+ ],
281
+ fstringt: [
282
+ [/@escapes/, "string.escape"],
283
+ [/"(?=""")/, "string"],
284
+ [
285
+ /"""/,
286
+ {
287
+ token: "string.quote",
288
+ bracket: "@close",
289
+ switchTo: "@allowMethod"
290
+ }
291
+ ],
292
+ [/\$\$/, "string"],
293
+ [/(\$)([a-z_]\w*)/, ["operator", "identifier"]],
294
+ [/\$\{/, "operator", "@interp"],
295
+ [/%%/, "string"],
296
+ [
297
+ /(%)([\-#+ 0,(])(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/,
298
+ ["metatag", "keyword.modifier", "number", "metatag"]
299
+ ],
300
+ [/(%)(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/, ["metatag", "number", "metatag"]],
301
+ [/(%)([\-#+ 0,(])(@fstring_conv)/, ["metatag", "keyword.modifier", "metatag"]],
302
+ [/(%)(@fstring_conv)/, ["metatag", "metatag"]],
303
+ [/./, "string"]
304
+ ],
305
+ sstring: [
306
+ [/@escapes/, "string.escape"],
307
+ [
308
+ /"/,
309
+ {
310
+ token: "string.quote",
311
+ bracket: "@close",
312
+ switchTo: "@allowMethod"
313
+ }
314
+ ],
315
+ [/\$\$/, "string"],
316
+ [/(\$)([a-z_]\w*)/, ["operator", "identifier"]],
317
+ [/\$\{/, "operator", "@interp"],
318
+ [/./, "string"]
319
+ ],
320
+ sstringt: [
321
+ [/@escapes/, "string.escape"],
322
+ [/"(?=""")/, "string"],
323
+ [
324
+ /"""/,
325
+ {
326
+ token: "string.quote",
327
+ bracket: "@close",
328
+ switchTo: "@allowMethod"
329
+ }
330
+ ],
331
+ [/\$\$/, "string"],
332
+ [/(\$)([a-z_]\w*)/, ["operator", "identifier"]],
333
+ [/\$\{/, "operator", "@interp"],
334
+ [/./, "string"]
335
+ ],
336
+ interp: [[/{/, "operator", "@push"], [/}/, "operator", "@pop"], { include: "@root" }],
337
+ rawstring: [
338
+ [/[^"]/, "string"],
339
+ [
340
+ /"/,
341
+ {
342
+ token: "string.quote",
343
+ bracket: "@close",
344
+ switchTo: "@allowMethod"
345
+ }
346
+ ]
347
+ ],
348
+ rawstringt: [
349
+ [/[^"]/, "string"],
350
+ [/"(?=""")/, "string"],
351
+ [
352
+ /"""/,
353
+ {
354
+ token: "string.quote",
355
+ bracket: "@close",
356
+ switchTo: "@allowMethod"
357
+ }
358
+ ],
359
+ [/"/, "string"]
360
+ ],
361
+ whitespace: [
362
+ [/[ \t\r\n]+/, "white"],
363
+ [/\/\*/, "comment", "@comment"],
364
+ [/\/\/.*$/, "comment"]
365
+ ]
366
+ }
367
+ };
368
+ export {
369
+ conf,
370
+ language
371
+ };
@@ -0,0 +1,109 @@
1
+ const conf = {
2
+ comments: {
3
+ lineComment: ";",
4
+ blockComment: ["#|", "|#"]
5
+ },
6
+ brackets: [
7
+ ["(", ")"],
8
+ ["{", "}"],
9
+ ["[", "]"]
10
+ ],
11
+ autoClosingPairs: [
12
+ { open: "{", close: "}" },
13
+ { open: "[", close: "]" },
14
+ { open: "(", close: ")" },
15
+ { open: '"', close: '"' }
16
+ ],
17
+ surroundingPairs: [
18
+ { open: "{", close: "}" },
19
+ { open: "[", close: "]" },
20
+ { open: "(", close: ")" },
21
+ { open: '"', close: '"' }
22
+ ]
23
+ };
24
+ const language = {
25
+ defaultToken: "",
26
+ ignoreCase: true,
27
+ tokenPostfix: ".scheme",
28
+ brackets: [
29
+ { open: "(", close: ")", token: "delimiter.parenthesis" },
30
+ { open: "{", close: "}", token: "delimiter.curly" },
31
+ { open: "[", close: "]", token: "delimiter.square" }
32
+ ],
33
+ keywords: [
34
+ "case",
35
+ "do",
36
+ "let",
37
+ "loop",
38
+ "if",
39
+ "else",
40
+ "when",
41
+ "cons",
42
+ "car",
43
+ "cdr",
44
+ "cond",
45
+ "lambda",
46
+ "lambda*",
47
+ "syntax-rules",
48
+ "format",
49
+ "set!",
50
+ "quote",
51
+ "eval",
52
+ "append",
53
+ "list",
54
+ "list?",
55
+ "member?",
56
+ "load"
57
+ ],
58
+ constants: ["#t", "#f"],
59
+ operators: ["eq?", "eqv?", "equal?", "and", "or", "not", "null?"],
60
+ tokenizer: {
61
+ root: [
62
+ [/#[xXoObB][0-9a-fA-F]+/, "number.hex"],
63
+ [/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?/, "number.float"],
64
+ [
65
+ /(?:\b(?:(define|define-syntax|define-macro))\b)(\s+)((?:\w|\-|\!|\?)*)/,
66
+ ["keyword", "white", "variable"]
67
+ ],
68
+ { include: "@whitespace" },
69
+ { include: "@strings" },
70
+ [
71
+ /[a-zA-Z_#][a-zA-Z0-9_\-\?\!\*]*/,
72
+ {
73
+ cases: {
74
+ "@keywords": "keyword",
75
+ "@constants": "constant",
76
+ "@operators": "operators",
77
+ "@default": "identifier"
78
+ }
79
+ }
80
+ ]
81
+ ],
82
+ comment: [
83
+ [/[^\|#]+/, "comment"],
84
+ [/#\|/, "comment", "@push"],
85
+ [/\|#/, "comment", "@pop"],
86
+ [/[\|#]/, "comment"]
87
+ ],
88
+ whitespace: [
89
+ [/[ \t\r\n]+/, "white"],
90
+ [/#\|/, "comment", "@comment"],
91
+ [/;.*$/, "comment"]
92
+ ],
93
+ strings: [
94
+ [/"$/, "string", "@popall"],
95
+ [/"(?=.)/, "string", "@multiLineString"]
96
+ ],
97
+ multiLineString: [
98
+ [/[^\\"]+$/, "string", "@popall"],
99
+ [/[^\\"]+/, "string"],
100
+ [/\\./, "string.escape"],
101
+ [/"/, "string", "@popall"],
102
+ [/\\$/, "string"]
103
+ ]
104
+ }
105
+ };
106
+ export {
107
+ conf,
108
+ language
109
+ };