@lvce-editor/shared-process 0.11.8 → 0.11.10

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 (45) hide show
  1. package/config/defaultKeyBindings.json +25 -0
  2. package/config/defaultSettings.json +2 -7
  3. package/extensions/builtin.language-basics-coffeescript/src/tokenizeCoffeeScript.js +232 -3
  4. package/extensions/builtin.language-basics-cpp/src/tokenizeCpp.js +14 -0
  5. package/extensions/builtin.language-basics-css/src/tokenizeCss.js +8 -0
  6. package/extensions/builtin.language-basics-javascript/src/tokenizeJavaScript.js +52 -4
  7. package/extensions/builtin.language-basics-perl/extension.json +2 -1
  8. package/extensions/builtin.language-basics-perl/src/tokenizePerl.js +53 -6
  9. package/extensions/builtin.language-basics-python/src/tokenizePython.js +86 -3
  10. package/extensions/builtin.language-basics-ruby/README.md +14 -0
  11. package/extensions/builtin.language-basics-ruby/extension.json +48 -0
  12. package/extensions/builtin.language-basics-ruby/src/tokenizeRuby.js +241 -0
  13. package/extensions/builtin.language-basics-scss/README.md +14 -0
  14. package/extensions/builtin.language-basics-scss/extension.json +12 -0
  15. package/extensions/builtin.language-basics-scss/src/tokenizeScss.js +28 -0
  16. package/extensions/builtin.language-basics-shellscript/extension.json +2 -1
  17. package/extensions/builtin.language-basics-shellscript/src/tokenizeShellScript.js +326 -13
  18. package/extensions/builtin.language-basics-toml/src/tokenizeToml.js +87 -13
  19. package/extensions/builtin.language-basics-xml/extension.json +2 -1
  20. package/extensions/builtin.language-basics-xml/src/tokenizeXml.js +7 -0
  21. package/extensions/builtin.language-basics-yaml/src/tokenizeYaml.js +8 -1
  22. package/extensions/builtin.theme-cobalt2/color-theme.json +4 -0
  23. package/extensions/builtin.theme-gruvbox/color-theme.json +4 -0
  24. package/extensions/builtin.theme-palenight/color-theme.json +4 -0
  25. package/extensions/builtin.theme-slime/color-theme.json +9 -1
  26. package/package.json +5 -5
  27. package/src/parts/Cli/Cli.js +2 -2
  28. package/src/parts/CliInstall/CliInstall.js +21 -6
  29. package/src/parts/CliList/CliList.js +3 -2
  30. package/src/parts/CliUnlink/CliUnlink.js +1 -1
  31. package/src/parts/DownloadAndExtract/DownloadAndExtract.js +18 -8
  32. package/src/parts/ErrorCodes/ErrorCodes.js +8 -18
  33. package/src/parts/ErrorHandling/ErrorHandling.js +4 -9
  34. package/src/parts/ExportStatic/ExportStatic.js +57 -330
  35. package/src/parts/ExtensionHost/ExtensionHost.js +4 -7
  36. package/src/parts/ExtensionInstallFromGitHub/ExtensionInstallFromGitHub.js +1 -4
  37. package/src/parts/ExtensionManagement/ExtensionManagementColorTheme.js +3 -4
  38. package/src/parts/FileSystem/FileSystem.js +5 -15
  39. package/src/parts/GetResponse/GetResponse.js +10 -14
  40. package/src/parts/JsonRpc/JsonRpc.js +3 -6
  41. package/src/parts/JsonRpcErrorCode/JsonRpcErrorCode.js +2 -0
  42. package/src/parts/JsonRpcVersion/JsonRpcVersion.js +1 -0
  43. package/src/parts/OutputChannel/OutputChannel.ipc.js +3 -2
  44. package/src/parts/Terminal/Terminal.js +5 -4
  45. package/src/sharedProcessMain.js +2 -5
@@ -16,6 +16,8 @@ export const State = {
16
16
  InsideDoubleQuoteString: 11,
17
17
  InsideLineComment: 12,
18
18
  InsideSingleQuoteString: 13,
19
+ InsideTripleDoubleQuoteString: 14,
20
+ InsideTripleSingleQuoteString: 15,
19
21
  }
20
22
 
21
23
  /**
@@ -69,19 +71,29 @@ export const TokenMap = {
69
71
 
70
72
  const RE_WHITESPACE = /^\s+/
71
73
  const RE_DOUBLE_QUOTE = /^"/
74
+ const RE_TRIPLE_DOUBLE_QUOTE = /^"{3}/
72
75
  const RE_SINGLE_QUOTE = /^'/
73
76
  const RE_TEXT = /^.+/
74
77
  const RE_ANY_TEXT = /^[^\n]+/
75
- const RE_STRING_DOUBLE_QUOTE_CONTENT = /^[^"]+/
76
- const RE_STRING_SINGLE_QUOTE_CONTENT = /^[^']+/
78
+ const RE_STRING_DOUBLE_QUOTE_CONTENT = /^[^"\\]+/
79
+ const RE_STRING_SINGLE_QUOTE_CONTENT = /^[^'\\]+/
80
+ const RE_STRING_TRIPLE_DOUBLE_QUOTE_CONTENT = /^.+(?=""")/
77
81
  const RE_LINE_COMMENT = /^#/
78
82
  const RE_KEYWORD =
79
83
  /^(?:__debug__|Ellipsis|yield|with|while|try|true|True|return|raise|pass|or|NotImplemented|not|nonlocal|None|lambda|is|in|import|if|global|from|for|finally|False|false|except|else|elif|del|def|continue|class|break|await|async|assert|as|and)\b/
80
84
  const RE_VARIABLE_NAME = /^[_a-zA-Z][a-zA-Z\d_]*/
81
85
  const RE_NUMERIC =
82
86
  /^((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)\b/
83
- const RE_PUNCTUATION = /^[\(\)\{\}:,\+\-\*&=\/\\\[\]!\.<>%]+/
87
+ const RE_PUNCTUATION = /^[\(\)\{\}:,\+\-\*&=\/\\\[\]!\.<>%\|\~]+/
84
88
  const RE_FUNCTION_CALL_NAME = /^[\w]+(?=\s*\()/
89
+ const RE_DECORATOR = /^@[\w]+/
90
+ const RE_TRIPLE_QUOTED_STRING_CONTENT_DOUBLE_QUOTES = /.*(?=""")/s
91
+ const RE_TRIPLE_QUOTED_STRING_CONTENT_SINGLE_QUOTES = /.*(?=''')/s
92
+ const RE_TRIPLE_QUOTED_STRING_CONTENT_COMMON = /.*/s
93
+ const RE_STRING_ESCAPE = /^\\./
94
+ const RE_BACKSLASH = /^\\/
95
+ const RE_TRIPLE_SINGLE_QUOTE = /^'{3}/
96
+ const RE_NUMERIC_OCTAL = /^0(?:o|O)?[0-7][0-7_]*(n)?\b/
85
97
 
86
98
  export const initialLineState = {
87
99
  state: State.TopLevelContent,
@@ -130,6 +142,14 @@ export const tokenizeLine = (line, lineState) => {
130
142
  case 'finally':
131
143
  case 'while':
132
144
  case 'for':
145
+ case 'continue':
146
+ case 'not':
147
+ case 'except':
148
+ case 'with':
149
+ case 'as':
150
+ case 'raise':
151
+ case 'break':
152
+ case 'pass':
133
153
  token = TokenType.KeywordControl
134
154
  break
135
155
  default:
@@ -149,6 +169,15 @@ export const tokenizeLine = (line, lineState) => {
149
169
  } else if ((next = part.match(RE_NUMERIC))) {
150
170
  token = TokenType.Numeric
151
171
  state = State.TopLevelContent
172
+ } else if ((next = part.match(RE_NUMERIC_OCTAL))) {
173
+ token = TokenType.Numeric
174
+ state = State.TopLevelContent
175
+ } else if ((next = part.match(RE_TRIPLE_DOUBLE_QUOTE))) {
176
+ token = TokenType.Punctuation
177
+ state = State.InsideTripleDoubleQuoteString
178
+ } else if ((next = part.match(RE_TRIPLE_SINGLE_QUOTE))) {
179
+ token = TokenType.Punctuation
180
+ state = State.InsideTripleSingleQuoteString
152
181
  } else if ((next = part.match(RE_DOUBLE_QUOTE))) {
153
182
  token = TokenType.PunctuationString
154
183
  state = State.InsideDoubleQuoteString
@@ -158,6 +187,9 @@ export const tokenizeLine = (line, lineState) => {
158
187
  } else if ((next = part.match(RE_LINE_COMMENT))) {
159
188
  token = TokenType.Comment
160
189
  state = State.InsideLineComment
190
+ } else if ((next = part.match(RE_DECORATOR))) {
191
+ token = TokenType.VariableName
192
+ state = State.TopLevelContent
161
193
  } else if ((next = part.match(RE_TEXT))) {
162
194
  token = TokenType.Text
163
195
  state = State.TopLevelContent
@@ -173,6 +205,12 @@ export const tokenizeLine = (line, lineState) => {
173
205
  } else if ((next = part.match(RE_DOUBLE_QUOTE))) {
174
206
  token = TokenType.PunctuationString
175
207
  state = State.TopLevelContent
208
+ } else if ((next = part.match(RE_STRING_ESCAPE))) {
209
+ token = TokenType.String
210
+ state = State.InsideDoubleQuoteString
211
+ } else if ((next = part.match(RE_BACKSLASH))) {
212
+ token = TokenType.String
213
+ state = State.InsideDoubleQuoteString
176
214
  } else {
177
215
  throw new Error('no')
178
216
  }
@@ -184,6 +222,49 @@ export const tokenizeLine = (line, lineState) => {
184
222
  } else if ((next = part.match(RE_SINGLE_QUOTE))) {
185
223
  token = TokenType.PunctuationString
186
224
  state = State.TopLevelContent
225
+ } else if ((next = part.match(RE_STRING_ESCAPE))) {
226
+ token = TokenType.String
227
+ state = State.InsideSingleQuoteString
228
+ } else if ((next = part.match(RE_BACKSLASH))) {
229
+ token = TokenType.String
230
+ state = State.InsideSingleQuoteString
231
+ } else {
232
+ throw new Error('no')
233
+ }
234
+ break
235
+ case State.InsideTripleDoubleQuoteString:
236
+ if ((next = part.match(RE_TRIPLE_DOUBLE_QUOTE))) {
237
+ token = TokenType.Punctuation
238
+ state = State.TopLevelContent
239
+ } else if (
240
+ (next = part.match(RE_TRIPLE_QUOTED_STRING_CONTENT_DOUBLE_QUOTES))
241
+ ) {
242
+ token = TokenType.String
243
+ state = State.InsideTripleDoubleQuoteString
244
+ } else if (
245
+ (next = part.match(RE_TRIPLE_QUOTED_STRING_CONTENT_COMMON))
246
+ ) {
247
+ token = TokenType.String
248
+ state = State.InsideTripleDoubleQuoteString
249
+ } else {
250
+ throw new Error('no')
251
+ }
252
+ break
253
+ case State.InsideTripleSingleQuoteString:
254
+ if ((next = part.match(RE_TRIPLE_SINGLE_QUOTE))) {
255
+ token = TokenType.Punctuation
256
+ state = State.TopLevelContent
257
+ } else if (
258
+ (next = part.match(RE_TRIPLE_QUOTED_STRING_CONTENT_SINGLE_QUOTES))
259
+ ) {
260
+ token = TokenType.String
261
+ state = State.InsideTripleSingleQuoteString
262
+ } else if (
263
+ (next = part.match(RE_TRIPLE_QUOTED_STRING_CONTENT_COMMON))
264
+ ) {
265
+ next
266
+ token = TokenType.String
267
+ state = State.InsideTripleSingleQuoteString
187
268
  } else {
188
269
  throw new Error('no')
189
270
  }
@@ -209,3 +290,5 @@ export const tokenizeLine = (line, lineState) => {
209
290
  tokens,
210
291
  }
211
292
  }
293
+
294
+ tokenizeLine(`'''test'''`, initialLineState) //?
@@ -0,0 +1,14 @@
1
+ # Language Basics Ruby
2
+
3
+ ## Contributing
4
+
5
+ ```sh
6
+ git clone git@github.com:lvce-editor/language-basics-ruby.git &&
7
+ cd language-basics-ruby &&
8
+ npm ci &&
9
+ npm test
10
+ ```
11
+
12
+ ## Gitpod
13
+
14
+ [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/lvce-editor/language-basics-ruby)
@@ -0,0 +1,48 @@
1
+ {
2
+ "id": "builtin.language-basics-ruby",
3
+ "name": "Language Basics Ruby",
4
+ "description": "Provides syntax highlighting and bracket matching in Ruby files.",
5
+ "languages": [
6
+ {
7
+ "id": "ruby",
8
+ "extensions": [
9
+ ".rb",
10
+ ".rbx",
11
+ ".rjs",
12
+ ".gemspec",
13
+ ".rake",
14
+ ".ru",
15
+ ".erb",
16
+ ".podspec",
17
+ ".rbi"
18
+ ],
19
+ "fileNames": [
20
+ "rakefile",
21
+ "gemfile",
22
+ "guardfile",
23
+ "podfile",
24
+ "capfile",
25
+ "cheffile",
26
+ "hobofile",
27
+ "vagrantfile",
28
+ "appraisals",
29
+ "rantfile",
30
+ "berksfile",
31
+ "berksfile.lock",
32
+ "thorfile",
33
+ "puppetfile",
34
+ "dangerfile",
35
+ "brewfile",
36
+ "fastfile",
37
+ "appfile",
38
+ "deliverfile",
39
+ "matchfile",
40
+ "scanfile",
41
+ "snapfile",
42
+ "gymfile"
43
+ ],
44
+ "firstLine": "^#!\\s*/.*\\bruby\\b",
45
+ "tokenize": "src/tokenizeRuby.js"
46
+ }
47
+ ]
48
+ }
@@ -0,0 +1,241 @@
1
+ /**
2
+ * @enum number
3
+ */
4
+ export const State = {
5
+ TopLevelContent: 1,
6
+ InsideDoubleQuoteString: 2,
7
+ InsideSingleQuoteString: 3,
8
+ InsideBackTickQuoteString: 4,
9
+ InsideEof: 5,
10
+ }
11
+
12
+ export const StateMap = {
13
+ [State.TopLevelContent]: 'TopLevelContent',
14
+ }
15
+
16
+ /**
17
+ * @enum number
18
+ */
19
+ export const TokenType = {
20
+ None: 1,
21
+ Whitespace: 2,
22
+ PunctuationString: 3,
23
+ String: 4,
24
+ Keyword: 5,
25
+ Numeric: 6,
26
+ Punctuation: 7,
27
+ VariableName: 8,
28
+ Comment: 9,
29
+ KeywordControl: 10,
30
+ LanguageConstant: 11,
31
+ KeywordReturn: 12,
32
+ Regex: 13,
33
+ KeywordImport: 14,
34
+ }
35
+
36
+ export const TokenMap = {
37
+ [TokenType.None]: 'None',
38
+ [TokenType.Whitespace]: 'Whitespace',
39
+ [TokenType.PunctuationString]: 'PunctuationString',
40
+ [TokenType.String]: 'String',
41
+ [TokenType.Keyword]: 'Keyword',
42
+ [TokenType.Numeric]: 'Numeric',
43
+ [TokenType.Punctuation]: 'Punctuation',
44
+ [TokenType.VariableName]: 'VariableName',
45
+ [TokenType.Comment]: 'Comment',
46
+ [TokenType.KeywordControl]: 'KeywordControl',
47
+ [TokenType.LanguageConstant]: 'LanguageConstant',
48
+ [TokenType.KeywordReturn]: 'KeywordReturn',
49
+ [TokenType.Regex]: 'Regex',
50
+ [TokenType.KeywordImport]: 'KeywordImport',
51
+ }
52
+
53
+ const RE_SELECTOR = /^[\.a-zA-Z\d\-\:>]+/
54
+ const RE_WHITESPACE = /^ +/
55
+ const RE_CURLY_OPEN = /^\{/
56
+ const RE_CURLY_CLOSE = /^\}/
57
+ const RE_PROPERTY_NAME = /^[a-zA-Z\-]+\b/
58
+ const RE_COLON = /^:/
59
+ const RE_PROPERTY_VALUE = /^[^;\}]+/
60
+ const RE_SEMICOLON = /^;/
61
+ const RE_COMMA = /^,/
62
+ const RE_ANYTHING = /^.+/s
63
+ const RE_ANYTHING_UNTIL_CLOSE_BRACE = /^[^\}]+/
64
+ const RE_QUOTE_DOUBLE = /^"/
65
+ const RE_QUOTE_SINGLE = /^'/
66
+ const RE_QUOTE_BACKTICK = /^`/
67
+ const RE_STRING_DOUBLE_QUOTE_CONTENT = /^[^"\\]+/
68
+ const RE_STRING_SINGLE_QUOTE_CONTENT = /^[^'\\]+/
69
+ const RE_STRING_BACKTICK_QUOTE_CONTENT = /^[^`]+/
70
+ const RE_KEYWORD =
71
+ /^(?:alias|and|begin|break|case|class|def|defined\?|do|else|elsif|end|ensure|false|for|if|in|module|next|nil|not|or|redo|require|rescue|retry|return|self|super|then|true|undef|unless|until|when|while|yield)\b/
72
+ const RE_VARIABLE_NAME = /^[a-zA-Z\_\$]+/
73
+ const RE_PUNCTUATION = /^[:,;\{\}\[\]\.=\(\)<>\-\|\&\+\?\!\%\*\/\@\~]/
74
+ const RE_NUMERIC = /^\d+/
75
+ const RE_LINE_COMMENT = /^#.*/s
76
+ const RE_EOF_START = /^<<\-?\s*([\w\!]+)/
77
+ const RE_EOF_CONTENT = /.*/s
78
+ // const RE_REGEX = /^\/.+/
79
+ const RE_REGEX = /^\/.*\//
80
+ const RE_STRING_ESCAPE = /^\\./
81
+
82
+ export const initialLineState = {
83
+ state: State.TopLevelContent,
84
+ tokens: [],
85
+ stringEnd: '',
86
+ }
87
+
88
+ export const isEqualLineState = (lineStateA, lineStateB) => {
89
+ return lineStateA.state === lineStateB.state
90
+ }
91
+
92
+ export const hasArrayReturn = true
93
+
94
+ /**
95
+ * @param {string} line
96
+ */
97
+ export const tokenizeLine = (line, lineState) => {
98
+ let next = null
99
+ let index = 0
100
+ let tokens = []
101
+ let token = TokenType.None
102
+ let state = lineState.state
103
+ let stringEnd = lineState.stringEnd
104
+ while (index < line.length) {
105
+ const part = line.slice(index)
106
+ switch (state) {
107
+ case State.TopLevelContent:
108
+ if ((next = part.match(RE_WHITESPACE))) {
109
+ token = TokenType.Whitespace
110
+ state = State.TopLevelContent
111
+ } else if ((next = part.match(RE_KEYWORD))) {
112
+ switch (next[0]) {
113
+ case 'break':
114
+ case 'case':
115
+ case 'do':
116
+ case 'elsif':
117
+ case 'else':
118
+ case 'for':
119
+ case 'if':
120
+ case 'in':
121
+ case 'then':
122
+ case 'while':
123
+ case 'end':
124
+ case 'begin':
125
+ case 'rescue':
126
+ case 'unless':
127
+ token = TokenType.KeywordControl
128
+ break
129
+ case 'true':
130
+ case 'false':
131
+ case 'nil':
132
+ token = TokenType.LanguageConstant
133
+ break
134
+ case 'return':
135
+ token = TokenType.KeywordReturn
136
+ break
137
+ case 'require':
138
+ token = TokenType.KeywordImport
139
+ break
140
+ default:
141
+ token = TokenType.Keyword
142
+ break
143
+ }
144
+ state = State.TopLevelContent
145
+ } else if ((next = part.match(RE_EOF_START))) {
146
+ token = TokenType.Punctuation
147
+ state = State.InsideEof
148
+ stringEnd = next[1]
149
+ } else if ((next = part.match(RE_REGEX))) {
150
+ token = TokenType.Regex
151
+ state = State.TopLevelContent
152
+ } else if ((next = part.match(RE_PUNCTUATION))) {
153
+ token = TokenType.Punctuation
154
+ state = State.TopLevelContent
155
+ } else if ((next = part.match(RE_VARIABLE_NAME))) {
156
+ token = TokenType.VariableName
157
+ state = State.TopLevelContent
158
+ } else if ((next = part.match(RE_NUMERIC))) {
159
+ token = TokenType.Numeric
160
+ state = State.TopLevelContent
161
+ } else if ((next = part.match(RE_QUOTE_DOUBLE))) {
162
+ token = TokenType.PunctuationString
163
+ state = State.InsideDoubleQuoteString
164
+ } else if ((next = part.match(RE_QUOTE_SINGLE))) {
165
+ token = TokenType.Punctuation
166
+ state = State.InsideSingleQuoteString
167
+ } else if ((next = part.match(RE_QUOTE_BACKTICK))) {
168
+ token = TokenType.Punctuation
169
+ state = State.InsideBackTickQuoteString
170
+ } else if ((next = part.match(RE_LINE_COMMENT))) {
171
+ token = TokenType.Comment
172
+ state = State.TopLevelContent
173
+ } else {
174
+ console.log({ part })
175
+ part //?
176
+ throw new Error('no')
177
+ }
178
+ break
179
+ case State.InsideDoubleQuoteString:
180
+ if ((next = part.match(RE_QUOTE_DOUBLE))) {
181
+ token = TokenType.PunctuationString
182
+ state = State.TopLevelContent
183
+ } else if ((next = part.match(RE_STRING_DOUBLE_QUOTE_CONTENT))) {
184
+ token = TokenType.String
185
+ state = State.InsideDoubleQuoteString
186
+ } else if ((next = part.match(RE_STRING_ESCAPE))) {
187
+ token = TokenType.String
188
+ state = State.InsideDoubleQuoteString
189
+ } else {
190
+ throw new Error('no')
191
+ }
192
+ break
193
+ case State.InsideSingleQuoteString:
194
+ if ((next = part.match(RE_QUOTE_SINGLE))) {
195
+ token = TokenType.PunctuationString
196
+ state = State.TopLevelContent
197
+ } else if ((next = part.match(RE_STRING_SINGLE_QUOTE_CONTENT))) {
198
+ token = TokenType.String
199
+ state = State.InsideSingleQuoteString
200
+ } else if ((next = part.match(RE_STRING_ESCAPE))) {
201
+ token = TokenType.String
202
+ state = State.InsideSingleQuoteString
203
+ } else {
204
+ throw new Error('no')
205
+ }
206
+ break
207
+ case State.InsideBackTickQuoteString:
208
+ if ((next = part.match(RE_QUOTE_BACKTICK))) {
209
+ token = TokenType.PunctuationString
210
+ state = State.TopLevelContent
211
+ } else if ((next = part.match(RE_STRING_BACKTICK_QUOTE_CONTENT))) {
212
+ token = TokenType.String
213
+ state = State.InsideBackTickQuoteString
214
+ } else {
215
+ throw new Error('no')
216
+ }
217
+ break
218
+ case State.InsideEof:
219
+ if ((next = part.match(stringEnd))) {
220
+ token = TokenType.Punctuation
221
+ state = State.TopLevelContent
222
+ } else if ((next = part.match(RE_EOF_CONTENT))) {
223
+ token = TokenType.String
224
+ state = State.InsideEof
225
+ } else {
226
+ throw new Error('no')
227
+ }
228
+ break
229
+ default:
230
+ throw new Error('no')
231
+ }
232
+ const tokenLength = next[0].length
233
+ index += tokenLength
234
+ tokens.push(token, tokenLength)
235
+ }
236
+ return {
237
+ state,
238
+ tokens,
239
+ stringEnd,
240
+ }
241
+ }
@@ -0,0 +1,14 @@
1
+ # Language Basics Scss
2
+
3
+ ## Contributing
4
+
5
+ ```sh
6
+ git clone git@github.com:lvce-editor/language-basics-scss.git &&
7
+ cd language-basics-scss &&
8
+ npm ci &&
9
+ npm test
10
+ ```
11
+
12
+ ## Gitpod
13
+
14
+ [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/lvce-editor/language-basics-scss)
@@ -0,0 +1,12 @@
1
+ {
2
+ "id": "builtin.language-basics-scss",
3
+ "name": "Language Basics Scss",
4
+ "description": "Provides syntax highlighting and bracket matching in Scss files.",
5
+ "languages": [
6
+ {
7
+ "id": "scss",
8
+ "extensions": [".scss"],
9
+ "tokenize": "src/tokenizeScss.js"
10
+ }
11
+ ]
12
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @enum number
3
+ */
4
+ export const TokenType = {
5
+ Text: 1,
6
+ }
7
+
8
+ export const TokenMap = {
9
+ [TokenType.Text]: 'Text',
10
+ }
11
+
12
+ export const initialLineState = {
13
+ state: 1,
14
+ tokens: [],
15
+ }
16
+
17
+ export const hasArrayReturn = true
18
+
19
+ /**
20
+ * @param {string} line
21
+ */
22
+ export const tokenizeLine = (line) => {
23
+ const tokens = [TokenType.Text, line.length]
24
+ return {
25
+ state: 1,
26
+ tokens,
27
+ }
28
+ }
@@ -46,7 +46,8 @@
46
46
  "zprofile",
47
47
  "zlogout",
48
48
  "bashrc_Apple_Terminal",
49
- "zshrc_Apple_Terminal"
49
+ "zshrc_Apple_Terminal",
50
+ "xvfb.init"
50
51
  ],
51
52
  "firstLine": "^#!.*\\b(bash|fish|zsh|sh|ksh|dtksh|pdksh|mksh|ash|dash|yash|sh|csh|jcsh|tcsh|itcsh).*|^#\\s*-\\*-[^*]*mode:\\s*shell-script[^*]*-\\*-",
52
53
  "tokenize": "src/tokenizeShellScript.js"