@fresh-editor/fresh-editor 0.2.18 → 0.2.20
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 +60 -0
- package/package.json +1 -1
- package/plugins/config-schema.json +242 -25
- 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_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/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,65 @@
|
|
|
1
1
|
# Release Notes
|
|
2
2
|
|
|
3
|
+
## 0.2.20
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* **Multi-LSP Server Support**: Configure multiple LSP servers per language (e.g., pylsp + pyright for Python). Servers are routed by feature using `only_features`/`except_features` filters, completions are merged from all eligible servers, and diagnostics are tracked per-server. Per-server status is shown in the status bar (#971).
|
|
8
|
+
|
|
9
|
+
* **Per-Language Editor Settings**: `line_wrap`, `wrap_column`, `page_view`, and `page_width` can now be configured per-language. For example, wrap Markdown at 80 columns while keeping code unwrapped (#1371).
|
|
10
|
+
|
|
11
|
+
* **Diff Chunk Navigation Plugin**: New built-in plugin for navigating between diff chunks, merging git and saved-diff sources.
|
|
12
|
+
|
|
13
|
+
### Improvements
|
|
14
|
+
|
|
15
|
+
* **Faster Startup (~350ms → ~170ms)**: Syntax grammars are pre-compiled at build time, package loading moved from JavaScript to Rust, plugin I/O and transpilation run in parallel, and redundant grammar rebuilds are eliminated. Plugins can now declare dependencies via `import type` from `"fresh:plugin/..."` and are topologically sorted.
|
|
16
|
+
|
|
17
|
+
* **Settings UI Overhaul**: Modernized visual design with wider modal (160 cols), rounded corner borders, Nerd Font category icons, styled `[✓]` toggles, and reverse-video key hints. Keyboard navigation rewritten: Tab cycles sequentially through all fields and buttons, composite controls (Map, ObjectArray, TextList) support internal navigation, entry dialogs have section headers with explicit field ordering, PageDown/PageUp work in the main panel, and TextList edits auto-accept on navigation. Focus indicator now highlights per-row in composite controls.
|
|
18
|
+
|
|
19
|
+
* **Settings Deep Search**: Also in the Settings UI: Search now walks into Map entries, TextList items, and nested JSON values. Searching "python" finds the "python" key in language/LSP maps. Results show hierarchical breadcrumbs (e.g., "Languages > python") and auto-focus the matching entry.
|
|
20
|
+
|
|
21
|
+
* **Per-Language Workspace Root Detection**: New `root_markers` field on LSP server configs. The editor walks upward from the file's directory looking for configured markers (e.g., `Cargo.toml`, `package.json`), replacing the old cwd-based root (#1360).
|
|
22
|
+
|
|
23
|
+
* **Page View Mode**: "Compose" mode renamed to "Page View". Can now auto-activate per language via `page_view: true` in language config. Old keybinding names continue to work.
|
|
24
|
+
|
|
25
|
+
* **256-Color Contrast Enforcement**: When running in a 256-color terminal, foreground colors are automatically adjusted to meet WCAG 3.0:1 minimum contrast ratio against their background. Fixes illegible text in Solarized Dark, Nord, Dracula, and light themes under tmux without truecolor.
|
|
26
|
+
|
|
27
|
+
* **LSP in Library Files**: Files in library paths (site-packages, node_modules, .cargo) now keep LSP enabled for Goto Definition, Hover, and Find References while remaining read-only (#1344).
|
|
28
|
+
|
|
29
|
+
* **Goto Matching Bracket**: Works inside bracket bodies by searching backward for the nearest enclosing bracket, matching VS Code and JetBrains behavior. All bracket searches are bounded to prevent hangs on huge files (#1258).
|
|
30
|
+
|
|
31
|
+
* **LSP Head-of-Line Blocking Fix**: LSP notifications (didClose, didChange, shutdown) are no longer blocked behind pending request responses.
|
|
32
|
+
|
|
33
|
+
* **New Settings**: `show_tilde` to hide EOF tilde markers (#1290), `menu_bar_mnemonics` to disable Alt+key menu shortcuts (#1257).
|
|
34
|
+
|
|
35
|
+
* **`getPluginDir()` Plugin API**: Plugins can now locate their own package directory to find bundled scripts or install local dependencies.
|
|
36
|
+
|
|
37
|
+
### Bug Fixes
|
|
38
|
+
|
|
39
|
+
* Fixed CSI u and xterm modifyOtherKeys key sequences inserted as literal text in terminal session mode (#1113).
|
|
40
|
+
|
|
41
|
+
* Fixed word selection (Ctrl+W) stopping at accented/Unicode characters (#1332).
|
|
42
|
+
|
|
43
|
+
* Fixed double-click backward drag losing the initial word selection (#1334).
|
|
44
|
+
|
|
45
|
+
* Fixed block cursor invisible in zellij due to double cursor-inversion (#1338).
|
|
46
|
+
|
|
47
|
+
* Fixed cursor visibility and command palette rendering in zellij (#1255).
|
|
48
|
+
|
|
49
|
+
* Fixed undo incorrectly clearing the modified flag after hot exit recovery, which could cause data loss.
|
|
50
|
+
|
|
51
|
+
* Fixed bulk edit (e.g., toggle comment) displacing inlay hints on subsequent lines (#1263). Displaced markers are now restored to exact positions on undo.
|
|
52
|
+
|
|
53
|
+
* Fixed large file syntax highlighting lost when revisiting a file, caused by checkpoint offset drift during partial cache updates.
|
|
54
|
+
|
|
55
|
+
* Fixed embedded language highlighting (e.g., CSS in HTML) breaking at large file offsets.
|
|
56
|
+
|
|
57
|
+
* Fixed Enter key leaking into the markdown buffer when the file explorer panel is focused.
|
|
58
|
+
|
|
59
|
+
* Fixed large file recovery saving the entire file as individual chunks instead of using the recovery format.
|
|
60
|
+
|
|
61
|
+
* Fixed read-only detection for files not owned by the current user (now checks effective uid/gid instead of file mode bits).
|
|
62
|
+
|
|
3
63
|
## 0.2.18
|
|
4
64
|
|
|
5
65
|
### Features
|
package/package.json
CHANGED
|
@@ -34,13 +34,17 @@
|
|
|
34
34
|
"relative_line_numbers": false,
|
|
35
35
|
"line_wrap": true,
|
|
36
36
|
"wrap_indent": true,
|
|
37
|
+
"wrap_column": null,
|
|
38
|
+
"page_width": 80,
|
|
37
39
|
"syntax_highlighting": true,
|
|
38
40
|
"show_menu_bar": true,
|
|
41
|
+
"menu_bar_mnemonics": true,
|
|
39
42
|
"show_tab_bar": true,
|
|
40
43
|
"show_status_bar": true,
|
|
41
44
|
"show_prompt_line": true,
|
|
42
45
|
"show_vertical_scrollbar": true,
|
|
43
46
|
"show_horizontal_scrollbar": false,
|
|
47
|
+
"show_tilde": true,
|
|
44
48
|
"use_terminal_bg": false,
|
|
45
49
|
"cursor_style": "default",
|
|
46
50
|
"rulers": [],
|
|
@@ -166,10 +170,10 @@
|
|
|
166
170
|
"default": null
|
|
167
171
|
},
|
|
168
172
|
"lsp": {
|
|
169
|
-
"description": "LSP server configurations by language",
|
|
173
|
+
"description": "LSP server configurations by language.\nEach language maps to one or more server configs (multi-LSP support).\nAccepts both single-object and array forms for backwards compatibility.",
|
|
170
174
|
"type": "object",
|
|
171
175
|
"additionalProperties": {
|
|
172
|
-
"$ref": "#/$defs/
|
|
176
|
+
"$ref": "#/$defs/LspLanguageConfig"
|
|
173
177
|
},
|
|
174
178
|
"default": {}
|
|
175
179
|
},
|
|
@@ -259,6 +263,28 @@
|
|
|
259
263
|
"default": true,
|
|
260
264
|
"x-section": "Display"
|
|
261
265
|
},
|
|
266
|
+
"wrap_column": {
|
|
267
|
+
"description": "Column at which to wrap lines when line wrapping is enabled.\nIf not specified (`null`), lines wrap at the viewport edge (default behavior).\nExample: `80` wraps at column 80. The actual wrap column is clamped to the\nviewport width (lines can't wrap beyond the visible area).",
|
|
268
|
+
"type": [
|
|
269
|
+
"integer",
|
|
270
|
+
"null"
|
|
271
|
+
],
|
|
272
|
+
"format": "uint",
|
|
273
|
+
"minimum": 0,
|
|
274
|
+
"default": null,
|
|
275
|
+
"x-section": "Display"
|
|
276
|
+
},
|
|
277
|
+
"page_width": {
|
|
278
|
+
"description": "Width of the page in page view mode (in columns).\nControls the content width when page view is active, with centering margins.\nDefaults to 80. Set to `null` to use the full viewport width.",
|
|
279
|
+
"type": [
|
|
280
|
+
"integer",
|
|
281
|
+
"null"
|
|
282
|
+
],
|
|
283
|
+
"format": "uint",
|
|
284
|
+
"minimum": 0,
|
|
285
|
+
"default": 80,
|
|
286
|
+
"x-section": "Display"
|
|
287
|
+
},
|
|
262
288
|
"syntax_highlighting": {
|
|
263
289
|
"description": "Enable syntax highlighting for code files",
|
|
264
290
|
"type": "boolean",
|
|
@@ -271,6 +297,12 @@
|
|
|
271
297
|
"default": true,
|
|
272
298
|
"x-section": "Display"
|
|
273
299
|
},
|
|
300
|
+
"menu_bar_mnemonics": {
|
|
301
|
+
"description": "Whether menu bar mnemonics (Alt+letter shortcuts) are enabled.\nWhen enabled, pressing Alt+F opens the File menu, Alt+E opens Edit, etc.\nDisabling this frees up Alt+letter keybindings for other actions.\nDefault: true",
|
|
302
|
+
"type": "boolean",
|
|
303
|
+
"default": true,
|
|
304
|
+
"x-section": "Display"
|
|
305
|
+
},
|
|
274
306
|
"show_tab_bar": {
|
|
275
307
|
"description": "Whether the tab bar is visible by default.\nThe tab bar shows open files in each split pane.\nCan be toggled at runtime via command palette or keybinding.\nDefault: true",
|
|
276
308
|
"type": "boolean",
|
|
@@ -301,6 +333,12 @@
|
|
|
301
333
|
"default": false,
|
|
302
334
|
"x-section": "Display"
|
|
303
335
|
},
|
|
336
|
+
"show_tilde": {
|
|
337
|
+
"description": "Show tilde (~) markers on lines after the end of the file.\nThese vim-style markers indicate lines that are not part of the file content.\nDefault: true",
|
|
338
|
+
"type": "boolean",
|
|
339
|
+
"default": true,
|
|
340
|
+
"x-section": "Display"
|
|
341
|
+
},
|
|
304
342
|
"use_terminal_bg": {
|
|
305
343
|
"description": "Use the terminal's default background color instead of the theme's editor background.\nWhen enabled, the editor background inherits from the terminal emulator,\nallowing transparency or custom terminal backgrounds to show through.\nDefault: false",
|
|
306
344
|
"type": "boolean",
|
|
@@ -457,7 +495,7 @@
|
|
|
457
495
|
"x-section": "Completion"
|
|
458
496
|
},
|
|
459
497
|
"accept_suggestion_on_enter": {
|
|
460
|
-
"description": "Controls whether pressing Enter accepts the selected completion.\n- \"on\": Enter always accepts the completion\n- \"off\": Enter inserts a newline (use Tab to accept)\n- \"smart\": Enter accepts only if the completion text differs from typed text\nDefault: \"on\"",
|
|
498
|
+
"description": "Controls whether pressing Enter accepts the selected completion.\n - \"on\": Enter always accepts the completion\n - \"off\": Enter inserts a newline (use Tab to accept)\n - \"smart\": Enter accepts only if the completion text differs from typed text\n\nDefault: \"on\"",
|
|
461
499
|
"$ref": "#/$defs/AcceptSuggestionOnEnter",
|
|
462
500
|
"default": "on",
|
|
463
501
|
"x-section": "Completion"
|
|
@@ -904,6 +942,42 @@
|
|
|
904
942
|
"type": "boolean",
|
|
905
943
|
"default": true
|
|
906
944
|
},
|
|
945
|
+
"line_wrap": {
|
|
946
|
+
"description": "Whether to enable line wrapping for this language.\nIf not specified (`null`), falls back to the global `editor.line_wrap` setting.\nUseful for prose-heavy languages like Markdown where wrapping is desirable\neven if globally disabled.",
|
|
947
|
+
"type": [
|
|
948
|
+
"boolean",
|
|
949
|
+
"null"
|
|
950
|
+
],
|
|
951
|
+
"default": null
|
|
952
|
+
},
|
|
953
|
+
"wrap_column": {
|
|
954
|
+
"description": "Column at which to wrap lines for this language.\nIf not specified (`null`), falls back to the global `editor.wrap_column` setting.",
|
|
955
|
+
"type": [
|
|
956
|
+
"integer",
|
|
957
|
+
"null"
|
|
958
|
+
],
|
|
959
|
+
"format": "uint",
|
|
960
|
+
"minimum": 0,
|
|
961
|
+
"default": null
|
|
962
|
+
},
|
|
963
|
+
"page_view": {
|
|
964
|
+
"description": "Whether to automatically enable page view (compose mode) for this language.\nPage view provides a document-style layout with centered content,\nconcealed formatting markers, and intelligent word wrapping.\nIf not specified (`null`), page view is not auto-activated.",
|
|
965
|
+
"type": [
|
|
966
|
+
"boolean",
|
|
967
|
+
"null"
|
|
968
|
+
],
|
|
969
|
+
"default": null
|
|
970
|
+
},
|
|
971
|
+
"page_width": {
|
|
972
|
+
"description": "Width of the page in page view mode (in columns).\nControls the content width when page view is active, with centering margins.\nIf not specified (`null`), falls back to the global `editor.page_width` setting.",
|
|
973
|
+
"type": [
|
|
974
|
+
"integer",
|
|
975
|
+
"null"
|
|
976
|
+
],
|
|
977
|
+
"format": "uint",
|
|
978
|
+
"minimum": 0,
|
|
979
|
+
"default": null
|
|
980
|
+
},
|
|
907
981
|
"use_tabs": {
|
|
908
982
|
"description": "Whether pressing Tab should insert a tab character instead of spaces.\nIf not specified (`null`), falls back to the global `editor.use_tabs` setting.\nSet to true for languages like Go and Makefile that require tabs.",
|
|
909
983
|
"type": [
|
|
@@ -1051,6 +1125,13 @@
|
|
|
1051
1125
|
],
|
|
1052
1126
|
"x-display-field": "/command"
|
|
1053
1127
|
},
|
|
1128
|
+
"LspLanguageConfig": {
|
|
1129
|
+
"description": "One or more LSP server configs for this language.\nAccepts both a single object and an array for backwards compatibility.",
|
|
1130
|
+
"type": "array",
|
|
1131
|
+
"items": {
|
|
1132
|
+
"$ref": "#/$defs/LspServerConfig"
|
|
1133
|
+
}
|
|
1134
|
+
},
|
|
1054
1135
|
"LspServerConfig": {
|
|
1055
1136
|
"description": "LSP server configuration",
|
|
1056
1137
|
"type": "object",
|
|
@@ -1058,7 +1139,23 @@
|
|
|
1058
1139
|
"command": {
|
|
1059
1140
|
"description": "Command to spawn the server.\nRequired when enabled=true, ignored when enabled=false.",
|
|
1060
1141
|
"type": "string",
|
|
1061
|
-
"default": ""
|
|
1142
|
+
"default": "",
|
|
1143
|
+
"x-order": 1
|
|
1144
|
+
},
|
|
1145
|
+
"enabled": {
|
|
1146
|
+
"description": "Whether the server is enabled",
|
|
1147
|
+
"type": "boolean",
|
|
1148
|
+
"default": true,
|
|
1149
|
+
"x-order": 2
|
|
1150
|
+
},
|
|
1151
|
+
"name": {
|
|
1152
|
+
"description": "Display name for this server (e.g., \"tsserver\", \"eslint\").\nDefaults to the command basename if not specified.",
|
|
1153
|
+
"type": [
|
|
1154
|
+
"string",
|
|
1155
|
+
"null"
|
|
1156
|
+
],
|
|
1157
|
+
"default": null,
|
|
1158
|
+
"x-order": 3
|
|
1062
1159
|
},
|
|
1063
1160
|
"args": {
|
|
1064
1161
|
"description": "Arguments to pass to the server",
|
|
@@ -1066,30 +1163,23 @@
|
|
|
1066
1163
|
"items": {
|
|
1067
1164
|
"type": "string"
|
|
1068
1165
|
},
|
|
1069
|
-
"default": []
|
|
1070
|
-
|
|
1071
|
-
"enabled": {
|
|
1072
|
-
"description": "Whether the server is enabled",
|
|
1073
|
-
"type": "boolean",
|
|
1074
|
-
"default": true
|
|
1166
|
+
"default": [],
|
|
1167
|
+
"x-order": 4
|
|
1075
1168
|
},
|
|
1076
1169
|
"auto_start": {
|
|
1077
1170
|
"description": "Whether to auto-start this LSP server when opening matching files\nIf false (default), the server must be started manually via command palette",
|
|
1078
1171
|
"type": "boolean",
|
|
1079
|
-
"default": false
|
|
1080
|
-
|
|
1081
|
-
"process_limits": {
|
|
1082
|
-
"description": "Process resource limits (memory and CPU)",
|
|
1083
|
-
"$ref": "#/$defs/ProcessLimits",
|
|
1084
|
-
"default": {
|
|
1085
|
-
"max_memory_percent": 50,
|
|
1086
|
-
"max_cpu_percent": 90,
|
|
1087
|
-
"enabled": true
|
|
1088
|
-
}
|
|
1172
|
+
"default": false,
|
|
1173
|
+
"x-order": 5
|
|
1089
1174
|
},
|
|
1090
|
-
"
|
|
1091
|
-
"description": "
|
|
1092
|
-
"
|
|
1175
|
+
"root_markers": {
|
|
1176
|
+
"description": "File/directory names to search for when detecting the workspace root.\nThe editor walks upward from the opened file's directory looking for\nany of these markers. The first directory containing a match becomes\nthe workspace root sent to the LSP server.\n\nIf empty, falls back to `[\".git\"]` as a universal marker.\nIf the walk reaches a filesystem boundary without a match, uses the\nfile's parent directory (never cwd or $HOME).",
|
|
1177
|
+
"type": "array",
|
|
1178
|
+
"items": {
|
|
1179
|
+
"type": "string"
|
|
1180
|
+
},
|
|
1181
|
+
"default": [],
|
|
1182
|
+
"x-order": 6
|
|
1093
1183
|
},
|
|
1094
1184
|
"env": {
|
|
1095
1185
|
"description": "Environment variables to set for the LSP server process.\nThese are added to (or override) the inherited parent environment.",
|
|
@@ -1097,7 +1187,9 @@
|
|
|
1097
1187
|
"additionalProperties": {
|
|
1098
1188
|
"type": "string"
|
|
1099
1189
|
},
|
|
1100
|
-
"default": {}
|
|
1190
|
+
"default": {},
|
|
1191
|
+
"x-section": "Advanced",
|
|
1192
|
+
"x-order": 10
|
|
1101
1193
|
},
|
|
1102
1194
|
"language_id_overrides": {
|
|
1103
1195
|
"description": "Override the LSP languageId sent in textDocument/didOpen based on file extension.\nMaps file extension (without dot) to LSP language ID string.\nFor example: `{\"tsx\": \"typescriptreact\", \"jsx\": \"javascriptreact\"}`",
|
|
@@ -1105,11 +1197,136 @@
|
|
|
1105
1197
|
"additionalProperties": {
|
|
1106
1198
|
"type": "string"
|
|
1107
1199
|
},
|
|
1108
|
-
"default": {}
|
|
1200
|
+
"default": {},
|
|
1201
|
+
"x-section": "Advanced",
|
|
1202
|
+
"x-order": 11
|
|
1203
|
+
},
|
|
1204
|
+
"initialization_options": {
|
|
1205
|
+
"description": "Custom initialization options to send to the server\nThese are passed in the `initializationOptions` field of the LSP Initialize request",
|
|
1206
|
+
"default": null,
|
|
1207
|
+
"x-section": "Advanced",
|
|
1208
|
+
"x-order": 12
|
|
1209
|
+
},
|
|
1210
|
+
"only_features": {
|
|
1211
|
+
"description": "Restrict this server to only handle the listed features.\nMutually exclusive with `except_features`. If neither is set, all features are handled.",
|
|
1212
|
+
"type": [
|
|
1213
|
+
"array",
|
|
1214
|
+
"null"
|
|
1215
|
+
],
|
|
1216
|
+
"items": {
|
|
1217
|
+
"$ref": "#/$defs/LspFeature"
|
|
1218
|
+
},
|
|
1219
|
+
"default": null,
|
|
1220
|
+
"x-section": "Advanced",
|
|
1221
|
+
"x-order": 13
|
|
1222
|
+
},
|
|
1223
|
+
"except_features": {
|
|
1224
|
+
"description": "Exclude the listed features from this server.\nMutually exclusive with `only_features`. If neither is set, all features are handled.",
|
|
1225
|
+
"type": [
|
|
1226
|
+
"array",
|
|
1227
|
+
"null"
|
|
1228
|
+
],
|
|
1229
|
+
"items": {
|
|
1230
|
+
"$ref": "#/$defs/LspFeature"
|
|
1231
|
+
},
|
|
1232
|
+
"default": null,
|
|
1233
|
+
"x-section": "Advanced",
|
|
1234
|
+
"x-order": 14
|
|
1235
|
+
},
|
|
1236
|
+
"process_limits": {
|
|
1237
|
+
"description": "Process resource limits (memory and CPU)",
|
|
1238
|
+
"$ref": "#/$defs/ProcessLimits",
|
|
1239
|
+
"default": {
|
|
1240
|
+
"max_memory_percent": 50,
|
|
1241
|
+
"max_cpu_percent": 90,
|
|
1242
|
+
"enabled": true
|
|
1243
|
+
},
|
|
1244
|
+
"x-section": "Advanced",
|
|
1245
|
+
"x-order": 15
|
|
1109
1246
|
}
|
|
1110
1247
|
},
|
|
1111
1248
|
"x-display-field": "/command"
|
|
1112
1249
|
},
|
|
1250
|
+
"LspFeature": {
|
|
1251
|
+
"description": "LSP features that can be routed to specific servers in a multi-server setup.\n\nFeatures are classified as either \"merged\" (results from all servers are combined)\nor \"exclusive\" (first eligible server wins). This classification is used by the\ndispatch layer, not by this enum itself.",
|
|
1252
|
+
"oneOf": [
|
|
1253
|
+
{
|
|
1254
|
+
"description": "Diagnostics (merged: combined from all servers)",
|
|
1255
|
+
"type": "string",
|
|
1256
|
+
"const": "diagnostics"
|
|
1257
|
+
},
|
|
1258
|
+
{
|
|
1259
|
+
"description": "Code completion (merged: combined from all servers)",
|
|
1260
|
+
"type": "string",
|
|
1261
|
+
"const": "completion"
|
|
1262
|
+
},
|
|
1263
|
+
{
|
|
1264
|
+
"description": "Code actions / quick fixes (merged: combined from all servers)",
|
|
1265
|
+
"type": "string",
|
|
1266
|
+
"const": "code_action"
|
|
1267
|
+
},
|
|
1268
|
+
{
|
|
1269
|
+
"description": "Document symbols (merged: combined from all servers)",
|
|
1270
|
+
"type": "string",
|
|
1271
|
+
"const": "document_symbols"
|
|
1272
|
+
},
|
|
1273
|
+
{
|
|
1274
|
+
"description": "Workspace symbols (merged: combined from all servers)",
|
|
1275
|
+
"type": "string",
|
|
1276
|
+
"const": "workspace_symbols"
|
|
1277
|
+
},
|
|
1278
|
+
{
|
|
1279
|
+
"description": "Hover information (exclusive: first eligible server wins)",
|
|
1280
|
+
"type": "string",
|
|
1281
|
+
"const": "hover"
|
|
1282
|
+
},
|
|
1283
|
+
{
|
|
1284
|
+
"description": "Go to definition, declaration, type definition, implementation (exclusive)",
|
|
1285
|
+
"type": "string",
|
|
1286
|
+
"const": "definition"
|
|
1287
|
+
},
|
|
1288
|
+
{
|
|
1289
|
+
"description": "Find references (exclusive)",
|
|
1290
|
+
"type": "string",
|
|
1291
|
+
"const": "references"
|
|
1292
|
+
},
|
|
1293
|
+
{
|
|
1294
|
+
"description": "Document formatting and range formatting (exclusive)",
|
|
1295
|
+
"type": "string",
|
|
1296
|
+
"const": "format"
|
|
1297
|
+
},
|
|
1298
|
+
{
|
|
1299
|
+
"description": "Rename and prepare rename (exclusive)",
|
|
1300
|
+
"type": "string",
|
|
1301
|
+
"const": "rename"
|
|
1302
|
+
},
|
|
1303
|
+
{
|
|
1304
|
+
"description": "Signature help (exclusive)",
|
|
1305
|
+
"type": "string",
|
|
1306
|
+
"const": "signature_help"
|
|
1307
|
+
},
|
|
1308
|
+
{
|
|
1309
|
+
"description": "Inlay hints (exclusive)",
|
|
1310
|
+
"type": "string",
|
|
1311
|
+
"const": "inlay_hints"
|
|
1312
|
+
},
|
|
1313
|
+
{
|
|
1314
|
+
"description": "Folding ranges (exclusive)",
|
|
1315
|
+
"type": "string",
|
|
1316
|
+
"const": "folding_range"
|
|
1317
|
+
},
|
|
1318
|
+
{
|
|
1319
|
+
"description": "Semantic tokens (exclusive)",
|
|
1320
|
+
"type": "string",
|
|
1321
|
+
"const": "semantic_tokens"
|
|
1322
|
+
},
|
|
1323
|
+
{
|
|
1324
|
+
"description": "Document highlight (exclusive)",
|
|
1325
|
+
"type": "string",
|
|
1326
|
+
"const": "document_highlight"
|
|
1327
|
+
}
|
|
1328
|
+
]
|
|
1329
|
+
},
|
|
1113
1330
|
"ProcessLimits": {
|
|
1114
1331
|
"description": "Configuration for process resource limits",
|
|
1115
1332
|
"type": "object",
|
|
@@ -126,6 +126,10 @@ const finder = new Finder<DiagnosticItem>(editor, {
|
|
|
126
126
|
groupBy: "file",
|
|
127
127
|
syncWithEditor: true,
|
|
128
128
|
navigateOnCursorMove: true,
|
|
129
|
+
onClose: () => {
|
|
130
|
+
isOpen = false;
|
|
131
|
+
sourceBufferId = null;
|
|
132
|
+
},
|
|
129
133
|
});
|
|
130
134
|
|
|
131
135
|
// Get title based on current filter state
|
|
@@ -244,18 +248,6 @@ registerHandler("on_diagnostics_buffer_activated", on_diagnostics_buffer_activat
|
|
|
244
248
|
editor.on("diagnostics_updated", "on_diagnostics_updated");
|
|
245
249
|
editor.on("buffer_activated", "on_diagnostics_buffer_activated");
|
|
246
250
|
|
|
247
|
-
// Mode Definition (for custom keybindings beyond Enter/Escape)
|
|
248
|
-
editor.defineMode(
|
|
249
|
-
"diagnostics-extra",
|
|
250
|
-
[
|
|
251
|
-
["a", "diagnostics_toggle_all"],
|
|
252
|
-
["r", "diagnostics_refresh"],
|
|
253
|
-
["Return", `_finder_diagnostics_panel_select`],
|
|
254
|
-
["Escape", `_finder_diagnostics_panel_close`],
|
|
255
|
-
],
|
|
256
|
-
true
|
|
257
|
-
);
|
|
258
|
-
|
|
259
251
|
// Command Registration
|
|
260
252
|
editor.registerCommand(
|
|
261
253
|
"%cmd.show_diagnostics_panel",
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
{
|
|
2
|
+
"en": {
|
|
3
|
+
"cmd.next_change": "Next Change",
|
|
4
|
+
"cmd.next_change_desc": "Jump to the next changed region",
|
|
5
|
+
"cmd.prev_change": "Previous Change",
|
|
6
|
+
"cmd.prev_change_desc": "Jump to the previous changed region",
|
|
7
|
+
"status.no_changes": "No changes",
|
|
8
|
+
"status.change": "Change %{n}/%{total}",
|
|
9
|
+
"status.change_wrapped": "Change %{n}/%{total} [wrapped]"
|
|
10
|
+
},
|
|
11
|
+
"cs": {
|
|
12
|
+
"cmd.next_change": "Další změna",
|
|
13
|
+
"cmd.next_change_desc": "Přejít na další změněnou oblast",
|
|
14
|
+
"cmd.prev_change": "Předchozí změna",
|
|
15
|
+
"cmd.prev_change_desc": "Přejít na předchozí změněnou oblast",
|
|
16
|
+
"status.no_changes": "Žádné změny",
|
|
17
|
+
"status.change": "Změna %{n}/%{total}",
|
|
18
|
+
"status.change_wrapped": "Změna %{n}/%{total} [zabaleno]"
|
|
19
|
+
},
|
|
20
|
+
"de": {
|
|
21
|
+
"cmd.next_change": "Nächste Änderung",
|
|
22
|
+
"cmd.next_change_desc": "Zur nächsten geänderten Region springen",
|
|
23
|
+
"cmd.prev_change": "Vorherige Änderung",
|
|
24
|
+
"cmd.prev_change_desc": "Zur vorherigen geänderten Region springen",
|
|
25
|
+
"status.no_changes": "Keine Änderungen",
|
|
26
|
+
"status.change": "Änderung %{n}/%{total}",
|
|
27
|
+
"status.change_wrapped": "Änderung %{n}/%{total} [umgebrochen]"
|
|
28
|
+
},
|
|
29
|
+
"es": {
|
|
30
|
+
"cmd.next_change": "Siguiente cambio",
|
|
31
|
+
"cmd.next_change_desc": "Saltar a la siguiente región modificada",
|
|
32
|
+
"cmd.prev_change": "Cambio anterior",
|
|
33
|
+
"cmd.prev_change_desc": "Saltar a la región modificada anterior",
|
|
34
|
+
"status.no_changes": "Sin cambios",
|
|
35
|
+
"status.change": "Cambio %{n}/%{total}",
|
|
36
|
+
"status.change_wrapped": "Cambio %{n}/%{total} [envuelto]"
|
|
37
|
+
},
|
|
38
|
+
"fr": {
|
|
39
|
+
"cmd.next_change": "Modification suivante",
|
|
40
|
+
"cmd.next_change_desc": "Aller à la prochaine région modifiée",
|
|
41
|
+
"cmd.prev_change": "Modification précédente",
|
|
42
|
+
"cmd.prev_change_desc": "Aller à la région modifiée précédente",
|
|
43
|
+
"status.no_changes": "Aucune modification",
|
|
44
|
+
"status.change": "Modification %{n}/%{total}",
|
|
45
|
+
"status.change_wrapped": "Modification %{n}/%{total} [bouclé]"
|
|
46
|
+
},
|
|
47
|
+
"it": {
|
|
48
|
+
"cmd.next_change": "Modifica successiva",
|
|
49
|
+
"cmd.next_change_desc": "Vai alla prossima regione modificata",
|
|
50
|
+
"cmd.prev_change": "Modifica precedente",
|
|
51
|
+
"cmd.prev_change_desc": "Vai alla regione modificata precedente",
|
|
52
|
+
"status.no_changes": "Nessuna modifica",
|
|
53
|
+
"status.change": "Modifica %{n}/%{total}",
|
|
54
|
+
"status.change_wrapped": "Modifica %{n}/%{total} [avvolto]"
|
|
55
|
+
},
|
|
56
|
+
"ja": {
|
|
57
|
+
"cmd.next_change": "次の変更",
|
|
58
|
+
"cmd.next_change_desc": "次の変更箇所にジャンプ",
|
|
59
|
+
"cmd.prev_change": "前の変更",
|
|
60
|
+
"cmd.prev_change_desc": "前の変更箇所にジャンプ",
|
|
61
|
+
"status.no_changes": "変更なし",
|
|
62
|
+
"status.change": "変更 %{n}/%{total}",
|
|
63
|
+
"status.change_wrapped": "変更 %{n}/%{total} [折り返し]"
|
|
64
|
+
},
|
|
65
|
+
"ko": {
|
|
66
|
+
"cmd.next_change": "다음 변경",
|
|
67
|
+
"cmd.next_change_desc": "다음 변경된 영역으로 이동",
|
|
68
|
+
"cmd.prev_change": "이전 변경",
|
|
69
|
+
"cmd.prev_change_desc": "이전 변경된 영역으로 이동",
|
|
70
|
+
"status.no_changes": "변경 없음",
|
|
71
|
+
"status.change": "변경 %{n}/%{total}",
|
|
72
|
+
"status.change_wrapped": "변경 %{n}/%{total} [순환]"
|
|
73
|
+
},
|
|
74
|
+
"pt-BR": {
|
|
75
|
+
"cmd.next_change": "Próxima alteração",
|
|
76
|
+
"cmd.next_change_desc": "Ir para a próxima região alterada",
|
|
77
|
+
"cmd.prev_change": "Alteração anterior",
|
|
78
|
+
"cmd.prev_change_desc": "Ir para a região alterada anterior",
|
|
79
|
+
"status.no_changes": "Sem alterações",
|
|
80
|
+
"status.change": "Alteração %{n}/%{total}",
|
|
81
|
+
"status.change_wrapped": "Alteração %{n}/%{total} [retornou]"
|
|
82
|
+
},
|
|
83
|
+
"ru": {
|
|
84
|
+
"cmd.next_change": "Следующее изменение",
|
|
85
|
+
"cmd.next_change_desc": "Перейти к следующей изменённой области",
|
|
86
|
+
"cmd.prev_change": "Предыдущее изменение",
|
|
87
|
+
"cmd.prev_change_desc": "Перейти к предыдущей изменённой области",
|
|
88
|
+
"status.no_changes": "Нет изменений",
|
|
89
|
+
"status.change": "Изменение %{n}/%{total}",
|
|
90
|
+
"status.change_wrapped": "Изменение %{n}/%{total} [цикл]"
|
|
91
|
+
},
|
|
92
|
+
"th": {
|
|
93
|
+
"cmd.next_change": "การเปลี่ยนแปลงถัดไป",
|
|
94
|
+
"cmd.next_change_desc": "ข้ามไปยังพื้นที่ที่เปลี่ยนแปลงถัดไป",
|
|
95
|
+
"cmd.prev_change": "การเปลี่ยนแปลงก่อนหน้า",
|
|
96
|
+
"cmd.prev_change_desc": "ข้ามไปยังพื้นที่ที่เปลี่ยนแปลงก่อนหน้า",
|
|
97
|
+
"status.no_changes": "ไม่มีการเปลี่ยนแปลง",
|
|
98
|
+
"status.change": "การเปลี่ยนแปลง %{n}/%{total}",
|
|
99
|
+
"status.change_wrapped": "การเปลี่ยนแปลง %{n}/%{total} [วนรอบ]"
|
|
100
|
+
},
|
|
101
|
+
"uk": {
|
|
102
|
+
"cmd.next_change": "Наступна зміна",
|
|
103
|
+
"cmd.next_change_desc": "Перейти до наступної зміненої області",
|
|
104
|
+
"cmd.prev_change": "Попередня зміна",
|
|
105
|
+
"cmd.prev_change_desc": "Перейти до попередньої зміненої області",
|
|
106
|
+
"status.no_changes": "Немає змін",
|
|
107
|
+
"status.change": "Зміна %{n}/%{total}",
|
|
108
|
+
"status.change_wrapped": "Зміна %{n}/%{total} [цикл]"
|
|
109
|
+
},
|
|
110
|
+
"vi": {
|
|
111
|
+
"cmd.next_change": "Thay đổi tiếp theo",
|
|
112
|
+
"cmd.next_change_desc": "Nhảy đến vùng thay đổi tiếp theo",
|
|
113
|
+
"cmd.prev_change": "Thay đổi trước đó",
|
|
114
|
+
"cmd.prev_change_desc": "Nhảy đến vùng thay đổi trước đó",
|
|
115
|
+
"status.no_changes": "Không có thay đổi",
|
|
116
|
+
"status.change": "Thay đổi %{n}/%{total}",
|
|
117
|
+
"status.change_wrapped": "Thay đổi %{n}/%{total} [quay vòng]"
|
|
118
|
+
},
|
|
119
|
+
"zh-CN": {
|
|
120
|
+
"cmd.next_change": "下一个更改",
|
|
121
|
+
"cmd.next_change_desc": "跳转到下一个已更改的区域",
|
|
122
|
+
"cmd.prev_change": "上一个更改",
|
|
123
|
+
"cmd.prev_change_desc": "跳转到上一个已更改的区域",
|
|
124
|
+
"status.no_changes": "没有更改",
|
|
125
|
+
"status.change": "更改 %{n}/%{total}",
|
|
126
|
+
"status.change_wrapped": "更改 %{n}/%{total} [已循环]"
|
|
127
|
+
}
|
|
128
|
+
}
|