@fresh-editor/fresh-editor 0.2.18 → 0.2.21
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.
- package/CHANGELOG.md +100 -0
- package/package.json +1 -1
- package/plugins/config-schema.json +264 -42
- package/plugins/diagnostics_panel.ts +4 -12
- package/plugins/diff_nav.i18n.json +128 -0
- package/plugins/diff_nav.ts +196 -0
- package/plugins/git_explorer.ts +6 -0
- package/plugins/git_gutter.ts +5 -0
- package/plugins/lib/finder.ts +19 -12
- package/plugins/lib/fresh.d.ts +5 -1
- package/plugins/pkg.ts +4 -29
- package/plugins/schemas/package.schema.json +437 -272
- package/plugins/schemas/theme.schema.json +18 -0
- package/plugins/theme_editor.i18n.json +42 -14
- package/plugins/theme_editor.ts +30 -3
- package/plugins/vi_mode.ts +189 -51
- package/themes/high-contrast.json +66 -66
- package/themes/light.json +18 -18
|
@@ -1,346 +1,511 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://raw.githubusercontent.com/sinelaw/fresh/main/crates/fresh-editor/plugins/schemas/package.schema.json",
|
|
4
3
|
"title": "Fresh Package Manifest",
|
|
5
4
|
"description": "Schema for Fresh plugin and theme package.json files",
|
|
6
5
|
"type": "object",
|
|
7
|
-
"required": ["name", "version", "description", "type"],
|
|
8
6
|
"properties": {
|
|
9
7
|
"name": {
|
|
8
|
+
"description": "Package name (lowercase, hyphens allowed)",
|
|
10
9
|
"type": "string",
|
|
11
|
-
"pattern": "^[a-z0-9-]+$"
|
|
12
|
-
"description": "Package name (lowercase, hyphens allowed)"
|
|
10
|
+
"pattern": "^[a-z0-9-]+$"
|
|
13
11
|
},
|
|
14
12
|
"version": {
|
|
15
|
-
"
|
|
13
|
+
"description": "Semantic version (e.g., 1.0.0)",
|
|
14
|
+
"type": [
|
|
15
|
+
"string",
|
|
16
|
+
"null"
|
|
17
|
+
],
|
|
16
18
|
"pattern": "^\\d+\\.\\d+\\.\\d+",
|
|
17
|
-
"
|
|
19
|
+
"default": null
|
|
18
20
|
},
|
|
19
21
|
"description": {
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
+
"description": "Short package description",
|
|
23
|
+
"type": [
|
|
24
|
+
"string",
|
|
25
|
+
"null"
|
|
26
|
+
],
|
|
27
|
+
"default": null
|
|
22
28
|
},
|
|
23
29
|
"type": {
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
|
|
30
|
+
"description": "Package type",
|
|
31
|
+
"anyOf": [
|
|
32
|
+
{
|
|
33
|
+
"$ref": "#/$defs/PackageType"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"type": "null"
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
},
|
|
40
|
+
"fresh": {
|
|
41
|
+
"description": "Fresh-specific configuration",
|
|
42
|
+
"anyOf": [
|
|
43
|
+
{
|
|
44
|
+
"$ref": "#/$defs/FreshManifestConfig"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"type": "null"
|
|
48
|
+
}
|
|
49
|
+
]
|
|
27
50
|
},
|
|
28
51
|
"author": {
|
|
29
|
-
"
|
|
30
|
-
"
|
|
52
|
+
"description": "Author name",
|
|
53
|
+
"type": [
|
|
54
|
+
"string",
|
|
55
|
+
"null"
|
|
56
|
+
],
|
|
57
|
+
"default": null
|
|
31
58
|
},
|
|
32
59
|
"license": {
|
|
33
|
-
"
|
|
34
|
-
"
|
|
60
|
+
"description": "SPDX license identifier",
|
|
61
|
+
"type": [
|
|
62
|
+
"string",
|
|
63
|
+
"null"
|
|
64
|
+
],
|
|
65
|
+
"default": null
|
|
35
66
|
},
|
|
36
67
|
"repository": {
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
|
|
68
|
+
"description": "Git repository URL",
|
|
69
|
+
"type": [
|
|
70
|
+
"string",
|
|
71
|
+
"null"
|
|
72
|
+
],
|
|
73
|
+
"default": null
|
|
40
74
|
},
|
|
41
75
|
"keywords": {
|
|
76
|
+
"description": "Search keywords",
|
|
42
77
|
"type": "array",
|
|
43
|
-
"items": {
|
|
44
|
-
|
|
78
|
+
"items": {
|
|
79
|
+
"type": "string"
|
|
80
|
+
},
|
|
81
|
+
"default": []
|
|
45
82
|
},
|
|
46
|
-
"
|
|
83
|
+
"dependencies": {
|
|
84
|
+
"description": "Package dependencies (reserved for future use)",
|
|
85
|
+
"type": "object",
|
|
86
|
+
"additionalProperties": {
|
|
87
|
+
"type": "string"
|
|
88
|
+
},
|
|
89
|
+
"default": {}
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
"required": [
|
|
93
|
+
"name"
|
|
94
|
+
],
|
|
95
|
+
"$defs": {
|
|
96
|
+
"PackageType": {
|
|
97
|
+
"description": "Package type discriminator.",
|
|
98
|
+
"type": "string",
|
|
99
|
+
"enum": [
|
|
100
|
+
"plugin",
|
|
101
|
+
"theme",
|
|
102
|
+
"theme-pack",
|
|
103
|
+
"language",
|
|
104
|
+
"bundle"
|
|
105
|
+
]
|
|
106
|
+
},
|
|
107
|
+
"FreshManifestConfig": {
|
|
108
|
+
"description": "The `fresh` configuration block inside a package manifest.",
|
|
47
109
|
"type": "object",
|
|
48
|
-
"description": "Fresh-specific configuration",
|
|
49
110
|
"properties": {
|
|
50
111
|
"min_version": {
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
|
|
112
|
+
"description": "Minimum required Fresh version",
|
|
113
|
+
"type": [
|
|
114
|
+
"string",
|
|
115
|
+
"null"
|
|
116
|
+
],
|
|
117
|
+
"default": null
|
|
54
118
|
},
|
|
55
119
|
"min_api_version": {
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
|
|
120
|
+
"description": "Minimum required plugin API version",
|
|
121
|
+
"type": [
|
|
122
|
+
"integer",
|
|
123
|
+
"null"
|
|
124
|
+
],
|
|
125
|
+
"format": "uint32",
|
|
126
|
+
"minimum": 0,
|
|
127
|
+
"default": null
|
|
59
128
|
},
|
|
60
129
|
"entry": {
|
|
61
|
-
"
|
|
62
|
-
"
|
|
130
|
+
"description": "Plugin entry point file",
|
|
131
|
+
"type": [
|
|
132
|
+
"string",
|
|
133
|
+
"null"
|
|
134
|
+
],
|
|
135
|
+
"default": null
|
|
136
|
+
},
|
|
137
|
+
"main": {
|
|
138
|
+
"description": "Plugin entry point file (alias for entry)",
|
|
139
|
+
"type": [
|
|
140
|
+
"string",
|
|
141
|
+
"null"
|
|
142
|
+
],
|
|
143
|
+
"default": null
|
|
144
|
+
},
|
|
145
|
+
"theme": {
|
|
146
|
+
"description": "Single theme JSON file path (for theme packages)",
|
|
147
|
+
"type": [
|
|
148
|
+
"string",
|
|
149
|
+
"null"
|
|
150
|
+
],
|
|
151
|
+
"default": null
|
|
63
152
|
},
|
|
64
153
|
"themes": {
|
|
154
|
+
"description": "Theme definitions (for theme packs and bundles)",
|
|
65
155
|
"type": "array",
|
|
66
|
-
"description": "Theme definitions (for theme packs)",
|
|
67
156
|
"items": {
|
|
68
|
-
"
|
|
69
|
-
"required": ["file", "name"],
|
|
70
|
-
"properties": {
|
|
71
|
-
"file": {
|
|
72
|
-
"type": "string",
|
|
73
|
-
"description": "Theme JSON file path"
|
|
74
|
-
},
|
|
75
|
-
"name": {
|
|
76
|
-
"type": "string",
|
|
77
|
-
"description": "Display name for the theme"
|
|
78
|
-
},
|
|
79
|
-
"variant": {
|
|
80
|
-
"type": "string",
|
|
81
|
-
"enum": ["dark", "light"],
|
|
82
|
-
"description": "Theme variant (dark or light)"
|
|
83
|
-
}
|
|
84
|
-
}
|
|
157
|
+
"$ref": "#/$defs/BundleTheme"
|
|
85
158
|
}
|
|
86
159
|
},
|
|
87
160
|
"config_schema": {
|
|
88
|
-
"
|
|
89
|
-
"
|
|
90
|
-
},
|
|
91
|
-
"main": {
|
|
92
|
-
"type": "string",
|
|
93
|
-
"description": "Plugin entry point file (alias for entry)"
|
|
94
|
-
},
|
|
95
|
-
"theme": {
|
|
96
|
-
"type": "string",
|
|
97
|
-
"description": "Theme JSON file path (for single theme packages)"
|
|
161
|
+
"description": "JSON Schema for plugin configuration options",
|
|
162
|
+
"default": null
|
|
98
163
|
},
|
|
99
164
|
"grammar": {
|
|
100
|
-
"type": "object",
|
|
101
165
|
"description": "Grammar configuration (for language packs)",
|
|
102
|
-
"
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
"type": "string",
|
|
106
|
-
"description": "Path to grammar file (.sublime-syntax recommended, or .tmLanguage)"
|
|
166
|
+
"anyOf": [
|
|
167
|
+
{
|
|
168
|
+
"$ref": "#/$defs/GrammarManifestConfig"
|
|
107
169
|
},
|
|
108
|
-
|
|
109
|
-
"type": "
|
|
110
|
-
"items": { "type": "string" },
|
|
111
|
-
"description": "File extensions this grammar handles (e.g., [\"rs\", \"rust\"])"
|
|
112
|
-
},
|
|
113
|
-
"firstLine": {
|
|
114
|
-
"type": "string",
|
|
115
|
-
"description": "Regex pattern for shebang detection"
|
|
170
|
+
{
|
|
171
|
+
"type": "null"
|
|
116
172
|
}
|
|
117
|
-
|
|
173
|
+
]
|
|
118
174
|
},
|
|
119
175
|
"language": {
|
|
120
|
-
"type": "object",
|
|
121
176
|
"description": "Language configuration (for language packs)",
|
|
122
|
-
"
|
|
123
|
-
|
|
124
|
-
"
|
|
125
|
-
"description": "Line comment prefix (e.g., \"//\" or \"#\")"
|
|
177
|
+
"anyOf": [
|
|
178
|
+
{
|
|
179
|
+
"$ref": "#/$defs/LanguageManifestConfig"
|
|
126
180
|
},
|
|
127
|
-
|
|
128
|
-
"type": "
|
|
129
|
-
"description": "Block comment start marker (e.g., \"/*\")"
|
|
130
|
-
},
|
|
131
|
-
"blockCommentEnd": {
|
|
132
|
-
"type": "string",
|
|
133
|
-
"description": "Block comment end marker (e.g., \"*/\")"
|
|
134
|
-
},
|
|
135
|
-
"tabSize": {
|
|
136
|
-
"type": "integer",
|
|
137
|
-
"minimum": 1,
|
|
138
|
-
"description": "Default tab size for this language"
|
|
139
|
-
},
|
|
140
|
-
"useTabs": {
|
|
141
|
-
"type": "boolean",
|
|
142
|
-
"description": "Use tabs instead of spaces"
|
|
143
|
-
},
|
|
144
|
-
"autoIndent": {
|
|
145
|
-
"type": "boolean",
|
|
146
|
-
"description": "Enable automatic indentation"
|
|
147
|
-
},
|
|
148
|
-
"showWhitespaceTabs": {
|
|
149
|
-
"type": "boolean",
|
|
150
|
-
"description": "Whether to show whitespace tab indicators (→). Defaults to true. Set to false for languages like Go/Hare that use tabs for indentation."
|
|
151
|
-
},
|
|
152
|
-
"formatter": {
|
|
153
|
-
"type": "object",
|
|
154
|
-
"required": ["command"],
|
|
155
|
-
"properties": {
|
|
156
|
-
"command": {
|
|
157
|
-
"type": "string",
|
|
158
|
-
"description": "Formatter command (e.g., \"rustfmt\")"
|
|
159
|
-
},
|
|
160
|
-
"args": {
|
|
161
|
-
"type": "array",
|
|
162
|
-
"items": { "type": "string" },
|
|
163
|
-
"description": "Arguments to pass to the formatter"
|
|
164
|
-
}
|
|
165
|
-
}
|
|
181
|
+
{
|
|
182
|
+
"type": "null"
|
|
166
183
|
}
|
|
167
|
-
|
|
184
|
+
]
|
|
168
185
|
},
|
|
169
186
|
"lsp": {
|
|
170
|
-
"type": "object",
|
|
171
187
|
"description": "LSP server configuration (for language packs)",
|
|
172
|
-
"
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
"type": "string",
|
|
176
|
-
"description": "LSP server command"
|
|
177
|
-
},
|
|
178
|
-
"args": {
|
|
179
|
-
"type": "array",
|
|
180
|
-
"items": { "type": "string" },
|
|
181
|
-
"description": "Arguments to pass to the server"
|
|
188
|
+
"anyOf": [
|
|
189
|
+
{
|
|
190
|
+
"$ref": "#/$defs/LspManifestConfig"
|
|
182
191
|
},
|
|
183
|
-
|
|
184
|
-
"type": "
|
|
185
|
-
"description": "Auto-start the server when a matching file is opened"
|
|
186
|
-
},
|
|
187
|
-
"initializationOptions": {
|
|
188
|
-
"type": "object",
|
|
189
|
-
"description": "LSP initialization options"
|
|
192
|
+
{
|
|
193
|
+
"type": "null"
|
|
190
194
|
}
|
|
191
|
-
|
|
195
|
+
]
|
|
192
196
|
},
|
|
193
197
|
"languages": {
|
|
194
|
-
"type": "array",
|
|
195
198
|
"description": "Language definitions (for bundles)",
|
|
199
|
+
"type": "array",
|
|
196
200
|
"items": {
|
|
197
|
-
"
|
|
198
|
-
"required": ["id"],
|
|
199
|
-
"properties": {
|
|
200
|
-
"id": {
|
|
201
|
-
"type": "string",
|
|
202
|
-
"description": "Language identifier (e.g., 'elixir', 'heex')"
|
|
203
|
-
},
|
|
204
|
-
"grammar": {
|
|
205
|
-
"type": "object",
|
|
206
|
-
"description": "Grammar configuration",
|
|
207
|
-
"required": ["file"],
|
|
208
|
-
"properties": {
|
|
209
|
-
"file": {
|
|
210
|
-
"type": "string",
|
|
211
|
-
"description": "Path to grammar file relative to package"
|
|
212
|
-
},
|
|
213
|
-
"extensions": {
|
|
214
|
-
"type": "array",
|
|
215
|
-
"items": { "type": "string" },
|
|
216
|
-
"description": "File extensions this grammar handles"
|
|
217
|
-
},
|
|
218
|
-
"firstLine": {
|
|
219
|
-
"type": "string",
|
|
220
|
-
"description": "Regex pattern for shebang detection"
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
},
|
|
224
|
-
"language": {
|
|
225
|
-
"type": "object",
|
|
226
|
-
"description": "Language configuration",
|
|
227
|
-
"properties": {
|
|
228
|
-
"commentPrefix": {
|
|
229
|
-
"type": "string",
|
|
230
|
-
"description": "Line comment prefix"
|
|
231
|
-
},
|
|
232
|
-
"blockCommentStart": {
|
|
233
|
-
"type": "string",
|
|
234
|
-
"description": "Block comment start marker"
|
|
235
|
-
},
|
|
236
|
-
"blockCommentEnd": {
|
|
237
|
-
"type": "string",
|
|
238
|
-
"description": "Block comment end marker"
|
|
239
|
-
},
|
|
240
|
-
"tabSize": {
|
|
241
|
-
"type": "integer",
|
|
242
|
-
"minimum": 1,
|
|
243
|
-
"description": "Default tab size for this language"
|
|
244
|
-
},
|
|
245
|
-
"useTabs": {
|
|
246
|
-
"type": "boolean",
|
|
247
|
-
"description": "Use tabs instead of spaces"
|
|
248
|
-
},
|
|
249
|
-
"autoIndent": {
|
|
250
|
-
"type": "boolean",
|
|
251
|
-
"description": "Enable automatic indentation"
|
|
252
|
-
},
|
|
253
|
-
"showWhitespaceTabs": {
|
|
254
|
-
"type": "boolean",
|
|
255
|
-
"description": "Whether to show whitespace tab indicators"
|
|
256
|
-
},
|
|
257
|
-
"formatter": {
|
|
258
|
-
"type": "object",
|
|
259
|
-
"required": ["command"],
|
|
260
|
-
"properties": {
|
|
261
|
-
"command": {
|
|
262
|
-
"type": "string",
|
|
263
|
-
"description": "Formatter command"
|
|
264
|
-
},
|
|
265
|
-
"args": {
|
|
266
|
-
"type": "array",
|
|
267
|
-
"items": { "type": "string" },
|
|
268
|
-
"description": "Arguments to pass to the formatter"
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
},
|
|
274
|
-
"lsp": {
|
|
275
|
-
"type": "object",
|
|
276
|
-
"description": "LSP server configuration",
|
|
277
|
-
"required": ["command"],
|
|
278
|
-
"properties": {
|
|
279
|
-
"command": {
|
|
280
|
-
"type": "string",
|
|
281
|
-
"description": "LSP server command"
|
|
282
|
-
},
|
|
283
|
-
"args": {
|
|
284
|
-
"type": "array",
|
|
285
|
-
"items": { "type": "string" },
|
|
286
|
-
"description": "Arguments to pass to the server"
|
|
287
|
-
},
|
|
288
|
-
"autoStart": {
|
|
289
|
-
"type": "boolean",
|
|
290
|
-
"description": "Auto-start the server when a matching file is opened"
|
|
291
|
-
},
|
|
292
|
-
"initializationOptions": {
|
|
293
|
-
"type": "object",
|
|
294
|
-
"description": "LSP initialization options"
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
}
|
|
201
|
+
"$ref": "#/$defs/BundleLanguage"
|
|
299
202
|
}
|
|
300
203
|
},
|
|
301
204
|
"plugins": {
|
|
302
|
-
"type": "array",
|
|
303
205
|
"description": "Plugin definitions (for bundles)",
|
|
206
|
+
"type": "array",
|
|
304
207
|
"items": {
|
|
305
|
-
"
|
|
306
|
-
"required": ["entry"],
|
|
307
|
-
"properties": {
|
|
308
|
-
"entry": {
|
|
309
|
-
"type": "string",
|
|
310
|
-
"description": "Plugin entry point file relative to package"
|
|
311
|
-
}
|
|
312
|
-
}
|
|
208
|
+
"$ref": "#/$defs/BundlePlugin"
|
|
313
209
|
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
},
|
|
213
|
+
"BundleTheme": {
|
|
214
|
+
"description": "A theme entry within a package manifest.",
|
|
215
|
+
"type": "object",
|
|
216
|
+
"properties": {
|
|
217
|
+
"file": {
|
|
218
|
+
"description": "Theme JSON file path relative to package",
|
|
219
|
+
"type": "string"
|
|
314
220
|
},
|
|
315
|
-
"
|
|
221
|
+
"name": {
|
|
222
|
+
"description": "Display name for the theme",
|
|
223
|
+
"type": "string"
|
|
224
|
+
},
|
|
225
|
+
"variant": {
|
|
226
|
+
"description": "Theme variant (dark or light)",
|
|
227
|
+
"anyOf": [
|
|
228
|
+
{
|
|
229
|
+
"$ref": "#/$defs/ThemeVariant"
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
"type": "null"
|
|
233
|
+
}
|
|
234
|
+
]
|
|
235
|
+
}
|
|
236
|
+
},
|
|
237
|
+
"required": [
|
|
238
|
+
"file",
|
|
239
|
+
"name"
|
|
240
|
+
]
|
|
241
|
+
},
|
|
242
|
+
"ThemeVariant": {
|
|
243
|
+
"description": "Theme variant (dark or light).",
|
|
244
|
+
"type": "string",
|
|
245
|
+
"enum": [
|
|
246
|
+
"dark",
|
|
247
|
+
"light"
|
|
248
|
+
]
|
|
249
|
+
},
|
|
250
|
+
"GrammarManifestConfig": {
|
|
251
|
+
"description": "Grammar file configuration within a package manifest.",
|
|
252
|
+
"type": "object",
|
|
253
|
+
"properties": {
|
|
254
|
+
"file": {
|
|
255
|
+
"description": "Path to grammar file (.sublime-syntax or .tmLanguage), relative to package",
|
|
256
|
+
"type": "string"
|
|
257
|
+
},
|
|
258
|
+
"extensions": {
|
|
259
|
+
"description": "File extensions this grammar handles (e.g., [\"rs\", \"rust\"])",
|
|
316
260
|
"type": "array",
|
|
317
|
-
"description": "Theme definitions (for bundles)",
|
|
318
261
|
"items": {
|
|
319
|
-
"type": "
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
262
|
+
"type": "string"
|
|
263
|
+
},
|
|
264
|
+
"default": []
|
|
265
|
+
},
|
|
266
|
+
"firstLine": {
|
|
267
|
+
"description": "Regex pattern for shebang/first-line detection",
|
|
268
|
+
"type": [
|
|
269
|
+
"string",
|
|
270
|
+
"null"
|
|
271
|
+
],
|
|
272
|
+
"default": null
|
|
273
|
+
}
|
|
274
|
+
},
|
|
275
|
+
"required": [
|
|
276
|
+
"file"
|
|
277
|
+
]
|
|
278
|
+
},
|
|
279
|
+
"LanguageManifestConfig": {
|
|
280
|
+
"description": "Language configuration within a package manifest (camelCase to match JSON schema).",
|
|
281
|
+
"type": "object",
|
|
282
|
+
"properties": {
|
|
283
|
+
"commentPrefix": {
|
|
284
|
+
"description": "Line comment prefix (e.g., \"//\" or \"#\")",
|
|
285
|
+
"type": [
|
|
286
|
+
"string",
|
|
287
|
+
"null"
|
|
288
|
+
],
|
|
289
|
+
"default": null
|
|
290
|
+
},
|
|
291
|
+
"blockCommentStart": {
|
|
292
|
+
"description": "Block comment start marker (e.g., \"/*\")",
|
|
293
|
+
"type": [
|
|
294
|
+
"string",
|
|
295
|
+
"null"
|
|
296
|
+
],
|
|
297
|
+
"default": null
|
|
298
|
+
},
|
|
299
|
+
"blockCommentEnd": {
|
|
300
|
+
"description": "Block comment end marker (e.g., \"*/\")",
|
|
301
|
+
"type": [
|
|
302
|
+
"string",
|
|
303
|
+
"null"
|
|
304
|
+
],
|
|
305
|
+
"default": null
|
|
306
|
+
},
|
|
307
|
+
"tabSize": {
|
|
308
|
+
"description": "Default tab size for this language",
|
|
309
|
+
"type": [
|
|
310
|
+
"integer",
|
|
311
|
+
"null"
|
|
312
|
+
],
|
|
313
|
+
"format": "uint",
|
|
314
|
+
"minimum": 0,
|
|
315
|
+
"default": null
|
|
316
|
+
},
|
|
317
|
+
"useTabs": {
|
|
318
|
+
"description": "Use tabs instead of spaces",
|
|
319
|
+
"type": [
|
|
320
|
+
"boolean",
|
|
321
|
+
"null"
|
|
322
|
+
],
|
|
323
|
+
"default": null
|
|
324
|
+
},
|
|
325
|
+
"autoIndent": {
|
|
326
|
+
"description": "Enable automatic indentation",
|
|
327
|
+
"type": [
|
|
328
|
+
"boolean",
|
|
329
|
+
"null"
|
|
330
|
+
],
|
|
331
|
+
"default": null
|
|
332
|
+
},
|
|
333
|
+
"showWhitespaceTabs": {
|
|
334
|
+
"description": "Whether to show whitespace tab indicators",
|
|
335
|
+
"type": [
|
|
336
|
+
"boolean",
|
|
337
|
+
"null"
|
|
338
|
+
],
|
|
339
|
+
"default": null
|
|
340
|
+
},
|
|
341
|
+
"formatter": {
|
|
342
|
+
"description": "Formatter configuration",
|
|
343
|
+
"anyOf": [
|
|
344
|
+
{
|
|
345
|
+
"$ref": "#/$defs/FormatterManifestConfig"
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
"type": "null"
|
|
335
349
|
}
|
|
336
|
-
|
|
350
|
+
]
|
|
337
351
|
}
|
|
338
352
|
}
|
|
339
353
|
},
|
|
340
|
-
"
|
|
354
|
+
"FormatterManifestConfig": {
|
|
355
|
+
"description": "Formatter configuration within a package manifest.",
|
|
341
356
|
"type": "object",
|
|
342
|
-
"
|
|
343
|
-
|
|
357
|
+
"properties": {
|
|
358
|
+
"command": {
|
|
359
|
+
"description": "Formatter command (e.g., \"rustfmt\", \"prettier\")",
|
|
360
|
+
"type": "string"
|
|
361
|
+
},
|
|
362
|
+
"args": {
|
|
363
|
+
"description": "Arguments to pass to the formatter",
|
|
364
|
+
"type": "array",
|
|
365
|
+
"items": {
|
|
366
|
+
"type": "string"
|
|
367
|
+
},
|
|
368
|
+
"default": []
|
|
369
|
+
}
|
|
370
|
+
},
|
|
371
|
+
"required": [
|
|
372
|
+
"command"
|
|
373
|
+
]
|
|
374
|
+
},
|
|
375
|
+
"LspManifestConfig": {
|
|
376
|
+
"description": "LSP server configuration within a package manifest (camelCase to match JSON schema).",
|
|
377
|
+
"type": "object",
|
|
378
|
+
"properties": {
|
|
379
|
+
"command": {
|
|
380
|
+
"description": "LSP server command",
|
|
381
|
+
"type": "string"
|
|
382
|
+
},
|
|
383
|
+
"args": {
|
|
384
|
+
"description": "Arguments to pass to the server",
|
|
385
|
+
"type": "array",
|
|
386
|
+
"items": {
|
|
387
|
+
"type": "string"
|
|
388
|
+
},
|
|
389
|
+
"default": []
|
|
390
|
+
},
|
|
391
|
+
"autoStart": {
|
|
392
|
+
"description": "Auto-start the server when a matching file is opened",
|
|
393
|
+
"type": [
|
|
394
|
+
"boolean",
|
|
395
|
+
"null"
|
|
396
|
+
],
|
|
397
|
+
"default": null
|
|
398
|
+
},
|
|
399
|
+
"initializationOptions": {
|
|
400
|
+
"description": "LSP initialization options",
|
|
401
|
+
"default": null
|
|
402
|
+
},
|
|
403
|
+
"processLimits": {
|
|
404
|
+
"description": "Process resource limits",
|
|
405
|
+
"anyOf": [
|
|
406
|
+
{
|
|
407
|
+
"$ref": "#/$defs/ProcessLimitsManifestConfig"
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
"type": "null"
|
|
411
|
+
}
|
|
412
|
+
]
|
|
413
|
+
}
|
|
414
|
+
},
|
|
415
|
+
"required": [
|
|
416
|
+
"command"
|
|
417
|
+
]
|
|
418
|
+
},
|
|
419
|
+
"ProcessLimitsManifestConfig": {
|
|
420
|
+
"description": "Process limits within a package manifest (camelCase to match JSON schema).",
|
|
421
|
+
"type": "object",
|
|
422
|
+
"properties": {
|
|
423
|
+
"maxMemoryPercent": {
|
|
424
|
+
"type": [
|
|
425
|
+
"integer",
|
|
426
|
+
"null"
|
|
427
|
+
],
|
|
428
|
+
"format": "uint32",
|
|
429
|
+
"minimum": 0,
|
|
430
|
+
"default": null
|
|
431
|
+
},
|
|
432
|
+
"maxCpuPercent": {
|
|
433
|
+
"type": [
|
|
434
|
+
"integer",
|
|
435
|
+
"null"
|
|
436
|
+
],
|
|
437
|
+
"format": "uint32",
|
|
438
|
+
"minimum": 0,
|
|
439
|
+
"default": null
|
|
440
|
+
},
|
|
441
|
+
"enabled": {
|
|
442
|
+
"type": [
|
|
443
|
+
"boolean",
|
|
444
|
+
"null"
|
|
445
|
+
],
|
|
446
|
+
"default": null
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
},
|
|
450
|
+
"BundleLanguage": {
|
|
451
|
+
"description": "A language entry within a bundle manifest.",
|
|
452
|
+
"type": "object",
|
|
453
|
+
"properties": {
|
|
454
|
+
"id": {
|
|
455
|
+
"description": "Language identifier (e.g., \"elixir\", \"heex\")",
|
|
456
|
+
"type": "string"
|
|
457
|
+
},
|
|
458
|
+
"grammar": {
|
|
459
|
+
"description": "Grammar configuration for this language",
|
|
460
|
+
"anyOf": [
|
|
461
|
+
{
|
|
462
|
+
"$ref": "#/$defs/GrammarManifestConfig"
|
|
463
|
+
},
|
|
464
|
+
{
|
|
465
|
+
"type": "null"
|
|
466
|
+
}
|
|
467
|
+
]
|
|
468
|
+
},
|
|
469
|
+
"language": {
|
|
470
|
+
"description": "Language configuration for this language",
|
|
471
|
+
"anyOf": [
|
|
472
|
+
{
|
|
473
|
+
"$ref": "#/$defs/LanguageManifestConfig"
|
|
474
|
+
},
|
|
475
|
+
{
|
|
476
|
+
"type": "null"
|
|
477
|
+
}
|
|
478
|
+
]
|
|
479
|
+
},
|
|
480
|
+
"lsp": {
|
|
481
|
+
"description": "LSP server configuration for this language",
|
|
482
|
+
"anyOf": [
|
|
483
|
+
{
|
|
484
|
+
"$ref": "#/$defs/LspManifestConfig"
|
|
485
|
+
},
|
|
486
|
+
{
|
|
487
|
+
"type": "null"
|
|
488
|
+
}
|
|
489
|
+
]
|
|
490
|
+
}
|
|
491
|
+
},
|
|
492
|
+
"required": [
|
|
493
|
+
"id"
|
|
494
|
+
]
|
|
495
|
+
},
|
|
496
|
+
"BundlePlugin": {
|
|
497
|
+
"description": "A plugin entry within a bundle manifest.",
|
|
498
|
+
"type": "object",
|
|
499
|
+
"properties": {
|
|
500
|
+
"entry": {
|
|
501
|
+
"description": "Plugin entry point file relative to package",
|
|
502
|
+
"type": "string"
|
|
503
|
+
}
|
|
504
|
+
},
|
|
505
|
+
"required": [
|
|
506
|
+
"entry"
|
|
507
|
+
]
|
|
344
508
|
}
|
|
345
|
-
}
|
|
509
|
+
},
|
|
510
|
+
"$id": "https://raw.githubusercontent.com/sinelaw/fresh/main/crates/fresh-editor/plugins/schemas/package.schema.json"
|
|
346
511
|
}
|