@fresh-editor/fresh-editor 0.1.74 → 0.1.75
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 +28 -0
- package/package.json +1 -1
- package/plugins/lib/fresh.d.ts +12 -3
- package/plugins/theme_editor.ts +46 -25
- package/themes/dark.json +102 -0
- package/themes/high-contrast.json +102 -0
- package/themes/light.json +102 -0
- package/themes/nostalgia.json +102 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# Release Notes
|
|
2
2
|
|
|
3
|
+
## 0.1.75
|
|
4
|
+
|
|
5
|
+
This is mostly a bugfix release.
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
* **Prompt History**: Generic prompt history system with Up/Down navigation, now available for Go to Line and other prompts.
|
|
10
|
+
* **Session External Files**: Files opened from outside the project directory are now restored in sessions.
|
|
11
|
+
* **Fuzzy Search Exact Match Priority**: Open File dialog now prioritizes exact filename matches over fuzzy matches.
|
|
12
|
+
* **Horizontal Scroll**: Fixed cursor position with horizontal scroll after Open File dialog and pressing Enter on long lines.
|
|
13
|
+
* **Multi-Cursor Bracket Skip**: Fixed bracket skip-over with multiple cursors in bulk edit.
|
|
14
|
+
* **F3 Search**: Fixed F3 to allow searching more after editing and to update positions correctly after buffer modifications.
|
|
15
|
+
* **File Explorer**: Removed plain letter shortcuts causing accidental actions, fixed focus after rename/delete, improved new file command behavior.
|
|
16
|
+
* **Terminal**: Fixed scrollback colors, mouse scroll now exits to scrollback mode, fixed viewport position bugs, persist exit message.
|
|
17
|
+
* **Theme Editor**: Fixed reopening after closing the theme editor, allow editing builtin themes (#696), store builtin themes as json instead of hardcoded inside rust.
|
|
18
|
+
* **LSP Diagnostics**: Made diagnostic cache per-buffer to prevent marker position bugs.
|
|
19
|
+
* **Cursor Visibility**: You can see the letter under the block cursor now! Apply REVERSED style to primary cursor for better visibility.
|
|
20
|
+
* **Open Terminal**: Command now available in all contexts.
|
|
21
|
+
* **Open File Dialog**: When run while a terminal is focused, use CWD instead of the internal backing file directory.
|
|
22
|
+
|
|
23
|
+
### Internal
|
|
24
|
+
|
|
25
|
+
* Refactored reference highlighting to use overlay system (#694).
|
|
26
|
+
* Built-in themes now loaded from JSON artifacts at build time instead of hardcoded Rust.
|
|
27
|
+
* Removed duplicate dead code from LspTask.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
3
31
|
## 0.1.74
|
|
4
32
|
|
|
5
33
|
### Features
|
package/package.json
CHANGED
package/plugins/lib/fresh.d.ts
CHANGED
|
@@ -414,6 +414,7 @@ interface EditorAPI {
|
|
|
414
414
|
* @returns JSON Schema object
|
|
415
415
|
*/
|
|
416
416
|
getThemeSchema(): unknown;
|
|
417
|
+
getBuiltinThemes(): unknown;
|
|
417
418
|
/**
|
|
418
419
|
* Get the current editor configuration
|
|
419
420
|
*
|
|
@@ -819,6 +820,14 @@ interface EditorAPI {
|
|
|
819
820
|
* @returns true if prompt was started successfully
|
|
820
821
|
*/
|
|
821
822
|
startPromptWithInitial(label: string, prompt_type: string, initial_value: string): boolean;
|
|
823
|
+
/**
|
|
824
|
+
* Delete a theme file by name
|
|
825
|
+
*
|
|
826
|
+
* Only deletes files from the user's themes directory.
|
|
827
|
+
* This is a safe operation that prevents plugins from deleting arbitrary files.
|
|
828
|
+
* @param name - Theme name (without .json extension)
|
|
829
|
+
*/
|
|
830
|
+
deleteTheme(name: string): Promise<[]>;
|
|
822
831
|
/**
|
|
823
832
|
* Create a composite buffer that displays multiple source buffers
|
|
824
833
|
*
|
|
@@ -1060,10 +1069,10 @@ interface EditorAPI {
|
|
|
1060
1069
|
*/
|
|
1061
1070
|
readFile(path: string): Promise<string>;
|
|
1062
1071
|
/**
|
|
1063
|
-
* Write string content to a file
|
|
1072
|
+
* Write string content to a NEW file (fails if file exists)
|
|
1064
1073
|
*
|
|
1065
|
-
* Creates
|
|
1066
|
-
*
|
|
1074
|
+
* Creates a new file with the given content. Fails if the file already exists
|
|
1075
|
+
* to prevent plugins from accidentally overwriting user data.
|
|
1067
1076
|
* @param path - Destination path (absolute or relative to cwd)
|
|
1068
1077
|
* @param content - UTF-8 string to write
|
|
1069
1078
|
*/
|
package/plugins/theme_editor.ts
CHANGED
|
@@ -197,7 +197,6 @@ function getThemeSections(): ThemeSection[] {
|
|
|
197
197
|
// =============================================================================
|
|
198
198
|
|
|
199
199
|
interface ThemeEditorState {
|
|
200
|
-
isOpen: boolean;
|
|
201
200
|
bufferId: number | null;
|
|
202
201
|
splitId: number | null;
|
|
203
202
|
sourceSplitId: number | null;
|
|
@@ -228,8 +227,33 @@ interface ThemeEditorState {
|
|
|
228
227
|
savedCursorPath: string | null;
|
|
229
228
|
}
|
|
230
229
|
|
|
230
|
+
/**
|
|
231
|
+
* Check if the theme editor is currently open.
|
|
232
|
+
* Uses a stateless approach by checking if the buffer actually exists.
|
|
233
|
+
* This handles cases where the buffer was closed externally (e.g., Ctrl+W).
|
|
234
|
+
*/
|
|
235
|
+
function isThemeEditorOpen(): boolean {
|
|
236
|
+
if (state.bufferId === null) {
|
|
237
|
+
return false;
|
|
238
|
+
}
|
|
239
|
+
// Check if the buffer actually exists
|
|
240
|
+
const buffers = editor.listBuffers();
|
|
241
|
+
const exists = buffers.some(b => b.id === state.bufferId);
|
|
242
|
+
|
|
243
|
+
// If buffer doesn't exist, reset our stale state
|
|
244
|
+
if (!exists) {
|
|
245
|
+
editor.debug(`Theme editor buffer ${state.bufferId} no longer exists, resetting state`);
|
|
246
|
+
state.bufferId = null;
|
|
247
|
+
state.splitId = null;
|
|
248
|
+
state.themeData = {};
|
|
249
|
+
state.originalThemeData = {};
|
|
250
|
+
state.hasChanges = false;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
return exists;
|
|
254
|
+
}
|
|
255
|
+
|
|
231
256
|
const state: ThemeEditorState = {
|
|
232
|
-
isOpen: false,
|
|
233
257
|
bufferId: null,
|
|
234
258
|
splitId: null,
|
|
235
259
|
sourceSplitId: null,
|
|
@@ -455,29 +479,27 @@ function findThemesDir(): string {
|
|
|
455
479
|
* Load list of available built-in themes
|
|
456
480
|
*/
|
|
457
481
|
async function loadBuiltinThemes(): Promise<string[]> {
|
|
458
|
-
const themesDir = findThemesDir();
|
|
459
482
|
try {
|
|
460
|
-
const
|
|
461
|
-
return
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
return ["dark", "light", "high-contrast", "dracula", "nord", "solarized-dark"];
|
|
483
|
+
const builtinThemes = editor.getBuiltinThemes();
|
|
484
|
+
return Object.keys(builtinThemes);
|
|
485
|
+
} catch (e) {
|
|
486
|
+
editor.debug(`Failed to load built-in themes list: ${e}`);
|
|
487
|
+
throw e;
|
|
466
488
|
}
|
|
467
489
|
}
|
|
468
490
|
|
|
469
491
|
/**
|
|
470
|
-
* Load a theme file from built-in themes
|
|
492
|
+
* Load a theme file from built-in themes
|
|
471
493
|
*/
|
|
472
494
|
async function loadThemeFile(name: string): Promise<Record<string, unknown> | null> {
|
|
473
|
-
const themesDir = findThemesDir();
|
|
474
|
-
const themePath = editor.pathJoin(themesDir, `${name}.json`);
|
|
475
|
-
|
|
476
495
|
try {
|
|
477
|
-
const
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
496
|
+
const builtinThemes = editor.getBuiltinThemes();
|
|
497
|
+
if (name in builtinThemes) {
|
|
498
|
+
return JSON.parse(builtinThemes[name]);
|
|
499
|
+
}
|
|
500
|
+
return null;
|
|
501
|
+
} catch (e) {
|
|
502
|
+
editor.debug(`Failed to load theme data for '${name}': ${e}`);
|
|
481
503
|
return null;
|
|
482
504
|
}
|
|
483
505
|
}
|
|
@@ -1401,7 +1423,6 @@ globalThis.onThemeEditorBufferClosed = function(data: {
|
|
|
1401
1423
|
}): void {
|
|
1402
1424
|
if (state.bufferId !== null && data.buffer_id === state.bufferId) {
|
|
1403
1425
|
// Reset state when our buffer is closed
|
|
1404
|
-
state.isOpen = false;
|
|
1405
1426
|
state.bufferId = null;
|
|
1406
1427
|
state.splitId = null;
|
|
1407
1428
|
state.themeData = {};
|
|
@@ -1617,7 +1638,9 @@ globalThis.theme_editor_nav_prev_section = function(): void {
|
|
|
1617
1638
|
* Open the theme editor - prompts user to select theme first
|
|
1618
1639
|
*/
|
|
1619
1640
|
globalThis.open_theme_editor = async function(): Promise<void> {
|
|
1620
|
-
if (
|
|
1641
|
+
if (isThemeEditorOpen()) {
|
|
1642
|
+
// Focus the existing theme editor buffer
|
|
1643
|
+
editor.focusBuffer(state.bufferId!);
|
|
1621
1644
|
editor.setStatus(editor.t("status.already_open"));
|
|
1622
1645
|
return;
|
|
1623
1646
|
}
|
|
@@ -1690,7 +1713,6 @@ async function doOpenThemeEditor(): Promise<void> {
|
|
|
1690
1713
|
});
|
|
1691
1714
|
|
|
1692
1715
|
if (bufferId !== null) {
|
|
1693
|
-
state.isOpen = true;
|
|
1694
1716
|
state.bufferId = bufferId;
|
|
1695
1717
|
state.splitId = null;
|
|
1696
1718
|
|
|
@@ -1705,7 +1727,7 @@ async function doOpenThemeEditor(): Promise<void> {
|
|
|
1705
1727
|
* Close the theme editor
|
|
1706
1728
|
*/
|
|
1707
1729
|
globalThis.theme_editor_close = function(): void {
|
|
1708
|
-
if (!
|
|
1730
|
+
if (!isThemeEditorOpen()) return;
|
|
1709
1731
|
|
|
1710
1732
|
if (state.hasChanges) {
|
|
1711
1733
|
// Show confirmation prompt before closing with unsaved changes
|
|
@@ -1731,7 +1753,6 @@ function doCloseEditor(): void {
|
|
|
1731
1753
|
}
|
|
1732
1754
|
|
|
1733
1755
|
// Reset state
|
|
1734
|
-
state.isOpen = false;
|
|
1735
1756
|
state.bufferId = null;
|
|
1736
1757
|
state.splitId = null;
|
|
1737
1758
|
state.themeData = {};
|
|
@@ -1980,10 +2001,10 @@ globalThis.onThemeDeletePromptConfirmed = async function(args: {
|
|
|
1980
2001
|
|
|
1981
2002
|
const value = args.input.trim();
|
|
1982
2003
|
if (value === "delete" || value === editor.t("prompt.delete_yes")) {
|
|
1983
|
-
if (state.
|
|
2004
|
+
if (state.themeName) {
|
|
1984
2005
|
try {
|
|
1985
|
-
// Delete the theme file
|
|
1986
|
-
await editor.
|
|
2006
|
+
// Delete the theme file by name
|
|
2007
|
+
await editor.deleteTheme(state.themeName);
|
|
1987
2008
|
const deletedName = state.themeName;
|
|
1988
2009
|
|
|
1989
2010
|
// Reset to default theme
|
package/themes/dark.json
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "dark",
|
|
3
|
+
"editor": {
|
|
4
|
+
"bg": [30, 30, 30],
|
|
5
|
+
"fg": [212, 212, 212],
|
|
6
|
+
"cursor": [255, 255, 255],
|
|
7
|
+
"inactive_cursor": [100, 100, 100],
|
|
8
|
+
"selection_bg": [38, 79, 120],
|
|
9
|
+
"current_line_bg": [40, 40, 40],
|
|
10
|
+
"line_number_fg": [100, 100, 100],
|
|
11
|
+
"line_number_bg": [30, 30, 30],
|
|
12
|
+
"diff_add_bg": [35, 60, 35],
|
|
13
|
+
"diff_remove_bg": [70, 35, 35],
|
|
14
|
+
"diff_modify_bg": [40, 38, 30]
|
|
15
|
+
},
|
|
16
|
+
"ui": {
|
|
17
|
+
"tab_active_fg": "Yellow",
|
|
18
|
+
"tab_active_bg": "Blue",
|
|
19
|
+
"tab_inactive_fg": "White",
|
|
20
|
+
"tab_inactive_bg": "DarkGray",
|
|
21
|
+
"tab_separator_bg": [45, 45, 48],
|
|
22
|
+
"tab_close_hover_fg": [255, 100, 100],
|
|
23
|
+
"tab_hover_bg": [70, 70, 75],
|
|
24
|
+
"menu_bg": [60, 60, 65],
|
|
25
|
+
"menu_fg": [220, 220, 220],
|
|
26
|
+
"menu_active_bg": [60, 60, 60],
|
|
27
|
+
"menu_active_fg": [255, 255, 255],
|
|
28
|
+
"menu_dropdown_bg": [50, 50, 50],
|
|
29
|
+
"menu_dropdown_fg": [220, 220, 220],
|
|
30
|
+
"menu_highlight_bg": [70, 130, 180],
|
|
31
|
+
"menu_highlight_fg": [255, 255, 255],
|
|
32
|
+
"menu_border_fg": [100, 100, 100],
|
|
33
|
+
"menu_separator_fg": [80, 80, 80],
|
|
34
|
+
"menu_hover_bg": [55, 55, 55],
|
|
35
|
+
"menu_hover_fg": [255, 255, 255],
|
|
36
|
+
"menu_disabled_fg": [100, 100, 100],
|
|
37
|
+
"menu_disabled_bg": [50, 50, 50],
|
|
38
|
+
"status_bar_fg": "White",
|
|
39
|
+
"status_bar_bg": [30, 30, 30],
|
|
40
|
+
"prompt_fg": "White",
|
|
41
|
+
"prompt_bg": [20, 20, 20],
|
|
42
|
+
"prompt_selection_fg": "White",
|
|
43
|
+
"prompt_selection_bg": [58, 79, 120],
|
|
44
|
+
"popup_border_fg": "Gray",
|
|
45
|
+
"popup_bg": [30, 30, 30],
|
|
46
|
+
"popup_selection_bg": [58, 79, 120],
|
|
47
|
+
"popup_text_fg": "White",
|
|
48
|
+
"suggestion_bg": [30, 30, 30],
|
|
49
|
+
"suggestion_selected_bg": [58, 79, 120],
|
|
50
|
+
"help_bg": "Black",
|
|
51
|
+
"help_fg": "White",
|
|
52
|
+
"help_key_fg": "Cyan",
|
|
53
|
+
"help_separator_fg": "DarkGray",
|
|
54
|
+
"help_indicator_fg": "Red",
|
|
55
|
+
"help_indicator_bg": "Black",
|
|
56
|
+
"inline_code_bg": [60, 60, 60],
|
|
57
|
+
"split_separator_fg": [100, 100, 100],
|
|
58
|
+
"split_separator_hover_fg": [100, 149, 237],
|
|
59
|
+
"scrollbar_track_fg": "DarkGray",
|
|
60
|
+
"scrollbar_thumb_fg": "Gray",
|
|
61
|
+
"scrollbar_track_hover_fg": "Gray",
|
|
62
|
+
"scrollbar_thumb_hover_fg": "White",
|
|
63
|
+
"compose_margin_bg": [18, 18, 18],
|
|
64
|
+
"semantic_highlight_bg": [60, 60, 80],
|
|
65
|
+
"terminal_bg": "Default",
|
|
66
|
+
"terminal_fg": "Default",
|
|
67
|
+
"status_warning_indicator_bg": [181, 137, 0],
|
|
68
|
+
"status_warning_indicator_fg": [0, 0, 0],
|
|
69
|
+
"status_error_indicator_bg": [220, 50, 47],
|
|
70
|
+
"status_error_indicator_fg": [255, 255, 255],
|
|
71
|
+
"status_warning_indicator_hover_bg": [211, 167, 30],
|
|
72
|
+
"status_warning_indicator_hover_fg": [0, 0, 0],
|
|
73
|
+
"status_error_indicator_hover_bg": [250, 80, 77],
|
|
74
|
+
"status_error_indicator_hover_fg": [255, 255, 255],
|
|
75
|
+
"tab_drop_zone_bg": [70, 130, 180],
|
|
76
|
+
"tab_drop_zone_border": [100, 149, 237]
|
|
77
|
+
},
|
|
78
|
+
"search": {
|
|
79
|
+
"match_bg": [100, 100, 20],
|
|
80
|
+
"match_fg": [255, 255, 255]
|
|
81
|
+
},
|
|
82
|
+
"diagnostic": {
|
|
83
|
+
"error_fg": "Red",
|
|
84
|
+
"error_bg": [60, 20, 20],
|
|
85
|
+
"warning_fg": "Yellow",
|
|
86
|
+
"warning_bg": [60, 50, 0],
|
|
87
|
+
"info_fg": "Blue",
|
|
88
|
+
"info_bg": [0, 30, 60],
|
|
89
|
+
"hint_fg": "Gray",
|
|
90
|
+
"hint_bg": [30, 30, 30]
|
|
91
|
+
},
|
|
92
|
+
"syntax": {
|
|
93
|
+
"keyword": [86, 156, 214],
|
|
94
|
+
"string": [206, 145, 120],
|
|
95
|
+
"comment": [106, 153, 85],
|
|
96
|
+
"function": [220, 220, 170],
|
|
97
|
+
"type": [78, 201, 176],
|
|
98
|
+
"variable": [156, 220, 254],
|
|
99
|
+
"constant": [79, 193, 255],
|
|
100
|
+
"operator": [212, 212, 212]
|
|
101
|
+
}
|
|
102
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "high-contrast",
|
|
3
|
+
"editor": {
|
|
4
|
+
"bg": "Black",
|
|
5
|
+
"fg": "White",
|
|
6
|
+
"cursor": "White",
|
|
7
|
+
"inactive_cursor": "DarkGray",
|
|
8
|
+
"selection_bg": [0, 100, 200],
|
|
9
|
+
"current_line_bg": [20, 20, 20],
|
|
10
|
+
"line_number_fg": [140, 140, 140],
|
|
11
|
+
"line_number_bg": "Black",
|
|
12
|
+
"diff_add_bg": [0, 80, 0],
|
|
13
|
+
"diff_remove_bg": [100, 0, 0],
|
|
14
|
+
"diff_modify_bg": [25, 22, 0]
|
|
15
|
+
},
|
|
16
|
+
"ui": {
|
|
17
|
+
"tab_active_fg": "Black",
|
|
18
|
+
"tab_active_bg": "Yellow",
|
|
19
|
+
"tab_inactive_fg": "White",
|
|
20
|
+
"tab_inactive_bg": "Black",
|
|
21
|
+
"tab_separator_bg": [30, 30, 35],
|
|
22
|
+
"tab_close_hover_fg": [249, 38, 114],
|
|
23
|
+
"tab_hover_bg": [50, 50, 55],
|
|
24
|
+
"menu_bg": [50, 50, 55],
|
|
25
|
+
"menu_fg": "White",
|
|
26
|
+
"menu_active_bg": "Yellow",
|
|
27
|
+
"menu_active_fg": "Black",
|
|
28
|
+
"menu_dropdown_bg": [20, 20, 20],
|
|
29
|
+
"menu_dropdown_fg": "White",
|
|
30
|
+
"menu_highlight_bg": [0, 100, 200],
|
|
31
|
+
"menu_highlight_fg": "White",
|
|
32
|
+
"menu_border_fg": "Yellow",
|
|
33
|
+
"menu_separator_fg": "White",
|
|
34
|
+
"menu_hover_bg": [50, 50, 50],
|
|
35
|
+
"menu_hover_fg": "Yellow",
|
|
36
|
+
"menu_disabled_fg": "DarkGray",
|
|
37
|
+
"menu_disabled_bg": [20, 20, 20],
|
|
38
|
+
"status_bar_fg": "White",
|
|
39
|
+
"status_bar_bg": [20, 20, 20],
|
|
40
|
+
"prompt_fg": "White",
|
|
41
|
+
"prompt_bg": [10, 10, 10],
|
|
42
|
+
"prompt_selection_fg": "White",
|
|
43
|
+
"prompt_selection_bg": [0, 100, 200],
|
|
44
|
+
"popup_border_fg": "LightCyan",
|
|
45
|
+
"popup_bg": "Black",
|
|
46
|
+
"popup_selection_bg": [0, 100, 200],
|
|
47
|
+
"popup_text_fg": "White",
|
|
48
|
+
"suggestion_bg": "Black",
|
|
49
|
+
"suggestion_selected_bg": [0, 100, 200],
|
|
50
|
+
"help_bg": "Black",
|
|
51
|
+
"help_fg": "White",
|
|
52
|
+
"help_key_fg": "LightCyan",
|
|
53
|
+
"help_separator_fg": "White",
|
|
54
|
+
"help_indicator_fg": "Red",
|
|
55
|
+
"help_indicator_bg": "Black",
|
|
56
|
+
"inline_code_bg": [40, 40, 40],
|
|
57
|
+
"split_separator_fg": [140, 140, 140],
|
|
58
|
+
"split_separator_hover_fg": "Yellow",
|
|
59
|
+
"scrollbar_track_fg": "White",
|
|
60
|
+
"scrollbar_thumb_fg": "Yellow",
|
|
61
|
+
"scrollbar_track_hover_fg": "Yellow",
|
|
62
|
+
"scrollbar_thumb_hover_fg": "Cyan",
|
|
63
|
+
"compose_margin_bg": [10, 10, 10],
|
|
64
|
+
"semantic_highlight_bg": [0, 60, 100],
|
|
65
|
+
"terminal_bg": "Default",
|
|
66
|
+
"terminal_fg": "Default",
|
|
67
|
+
"status_warning_indicator_bg": "Yellow",
|
|
68
|
+
"status_warning_indicator_fg": "Black",
|
|
69
|
+
"status_error_indicator_bg": "Red",
|
|
70
|
+
"status_error_indicator_fg": "White",
|
|
71
|
+
"status_warning_indicator_hover_bg": "LightYellow",
|
|
72
|
+
"status_warning_indicator_hover_fg": "Black",
|
|
73
|
+
"status_error_indicator_hover_bg": "LightRed",
|
|
74
|
+
"status_error_indicator_hover_fg": "White",
|
|
75
|
+
"tab_drop_zone_bg": [0, 100, 200],
|
|
76
|
+
"tab_drop_zone_border": "Yellow"
|
|
77
|
+
},
|
|
78
|
+
"search": {
|
|
79
|
+
"match_bg": "Yellow",
|
|
80
|
+
"match_fg": "Black"
|
|
81
|
+
},
|
|
82
|
+
"diagnostic": {
|
|
83
|
+
"error_fg": "Red",
|
|
84
|
+
"error_bg": [100, 0, 0],
|
|
85
|
+
"warning_fg": "Yellow",
|
|
86
|
+
"warning_bg": [100, 100, 0],
|
|
87
|
+
"info_fg": "Cyan",
|
|
88
|
+
"info_bg": [0, 50, 100],
|
|
89
|
+
"hint_fg": "White",
|
|
90
|
+
"hint_bg": [50, 50, 50]
|
|
91
|
+
},
|
|
92
|
+
"syntax": {
|
|
93
|
+
"keyword": "Cyan",
|
|
94
|
+
"string": "Green",
|
|
95
|
+
"comment": "Gray",
|
|
96
|
+
"function": "Yellow",
|
|
97
|
+
"type": "Magenta",
|
|
98
|
+
"variable": "White",
|
|
99
|
+
"constant": "LightBlue",
|
|
100
|
+
"operator": "White"
|
|
101
|
+
}
|
|
102
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "light",
|
|
3
|
+
"editor": {
|
|
4
|
+
"bg": [255, 255, 255],
|
|
5
|
+
"fg": [0, 0, 0],
|
|
6
|
+
"cursor": [0, 0, 0],
|
|
7
|
+
"inactive_cursor": [180, 180, 180],
|
|
8
|
+
"selection_bg": [173, 214, 255],
|
|
9
|
+
"current_line_bg": [245, 245, 245],
|
|
10
|
+
"line_number_fg": [140, 140, 140],
|
|
11
|
+
"line_number_bg": [255, 255, 255],
|
|
12
|
+
"diff_add_bg": [200, 255, 200],
|
|
13
|
+
"diff_remove_bg": [255, 200, 200],
|
|
14
|
+
"diff_modify_bg": [255, 252, 240]
|
|
15
|
+
},
|
|
16
|
+
"ui": {
|
|
17
|
+
"tab_active_fg": [40, 40, 40],
|
|
18
|
+
"tab_active_bg": [255, 255, 255],
|
|
19
|
+
"tab_inactive_fg": [100, 100, 100],
|
|
20
|
+
"tab_inactive_bg": [230, 230, 230],
|
|
21
|
+
"tab_separator_bg": [200, 200, 200],
|
|
22
|
+
"tab_close_hover_fg": [220, 50, 50],
|
|
23
|
+
"tab_hover_bg": [210, 210, 210],
|
|
24
|
+
"menu_bg": [245, 245, 245],
|
|
25
|
+
"menu_fg": [30, 30, 30],
|
|
26
|
+
"menu_active_bg": [225, 225, 225],
|
|
27
|
+
"menu_active_fg": [0, 0, 0],
|
|
28
|
+
"menu_dropdown_bg": [248, 248, 248],
|
|
29
|
+
"menu_dropdown_fg": [30, 30, 30],
|
|
30
|
+
"menu_highlight_bg": [209, 226, 243],
|
|
31
|
+
"menu_highlight_fg": [0, 0, 0],
|
|
32
|
+
"menu_border_fg": [180, 180, 180],
|
|
33
|
+
"menu_separator_fg": [210, 210, 210],
|
|
34
|
+
"menu_hover_bg": [230, 235, 240],
|
|
35
|
+
"menu_hover_fg": [0, 0, 0],
|
|
36
|
+
"menu_disabled_fg": [160, 160, 160],
|
|
37
|
+
"menu_disabled_bg": [248, 248, 248],
|
|
38
|
+
"status_bar_fg": "Black",
|
|
39
|
+
"status_bar_bg": [220, 220, 220],
|
|
40
|
+
"prompt_fg": "Black",
|
|
41
|
+
"prompt_bg": [230, 240, 250],
|
|
42
|
+
"prompt_selection_fg": "Black",
|
|
43
|
+
"prompt_selection_bg": [173, 214, 255],
|
|
44
|
+
"popup_border_fg": [180, 180, 180],
|
|
45
|
+
"popup_bg": [232, 238, 245],
|
|
46
|
+
"popup_selection_bg": [209, 226, 243],
|
|
47
|
+
"popup_text_fg": [30, 30, 30],
|
|
48
|
+
"suggestion_bg": [232, 238, 245],
|
|
49
|
+
"suggestion_selected_bg": [209, 226, 243],
|
|
50
|
+
"help_bg": "White",
|
|
51
|
+
"help_fg": "Black",
|
|
52
|
+
"help_key_fg": "Blue",
|
|
53
|
+
"help_separator_fg": "Gray",
|
|
54
|
+
"help_indicator_fg": "Red",
|
|
55
|
+
"help_indicator_bg": "White",
|
|
56
|
+
"inline_code_bg": [230, 230, 235],
|
|
57
|
+
"split_separator_fg": [140, 140, 140],
|
|
58
|
+
"split_separator_hover_fg": [70, 130, 180],
|
|
59
|
+
"scrollbar_track_fg": [220, 220, 220],
|
|
60
|
+
"scrollbar_thumb_fg": [180, 180, 180],
|
|
61
|
+
"scrollbar_track_hover_fg": [200, 200, 200],
|
|
62
|
+
"scrollbar_thumb_hover_fg": [140, 140, 140],
|
|
63
|
+
"compose_margin_bg": [220, 220, 225],
|
|
64
|
+
"semantic_highlight_bg": [220, 230, 240],
|
|
65
|
+
"terminal_bg": "Default",
|
|
66
|
+
"terminal_fg": "Default",
|
|
67
|
+
"status_warning_indicator_bg": [202, 145, 0],
|
|
68
|
+
"status_warning_indicator_fg": [0, 0, 0],
|
|
69
|
+
"status_error_indicator_bg": [200, 40, 40],
|
|
70
|
+
"status_error_indicator_fg": [255, 255, 255],
|
|
71
|
+
"status_warning_indicator_hover_bg": [232, 175, 30],
|
|
72
|
+
"status_warning_indicator_hover_fg": [0, 0, 0],
|
|
73
|
+
"status_error_indicator_hover_bg": [230, 70, 70],
|
|
74
|
+
"status_error_indicator_hover_fg": [255, 255, 255],
|
|
75
|
+
"tab_drop_zone_bg": [173, 214, 255],
|
|
76
|
+
"tab_drop_zone_border": [70, 130, 180]
|
|
77
|
+
},
|
|
78
|
+
"search": {
|
|
79
|
+
"match_bg": [255, 255, 150],
|
|
80
|
+
"match_fg": [0, 0, 0]
|
|
81
|
+
},
|
|
82
|
+
"diagnostic": {
|
|
83
|
+
"error_fg": "Red",
|
|
84
|
+
"error_bg": [255, 220, 220],
|
|
85
|
+
"warning_fg": [128, 128, 0],
|
|
86
|
+
"warning_bg": [255, 255, 200],
|
|
87
|
+
"info_fg": "Blue",
|
|
88
|
+
"info_bg": [220, 240, 255],
|
|
89
|
+
"hint_fg": "DarkGray",
|
|
90
|
+
"hint_bg": [240, 240, 240]
|
|
91
|
+
},
|
|
92
|
+
"syntax": {
|
|
93
|
+
"keyword": [175, 0, 219],
|
|
94
|
+
"string": [163, 21, 21],
|
|
95
|
+
"comment": [0, 128, 0],
|
|
96
|
+
"function": [121, 94, 38],
|
|
97
|
+
"type": [0, 128, 128],
|
|
98
|
+
"variable": [0, 16, 128],
|
|
99
|
+
"constant": [0, 112, 193],
|
|
100
|
+
"operator": [0, 0, 0]
|
|
101
|
+
}
|
|
102
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "nostalgia",
|
|
3
|
+
"editor": {
|
|
4
|
+
"bg": [0, 0, 170],
|
|
5
|
+
"fg": [255, 255, 85],
|
|
6
|
+
"cursor": [255, 255, 255],
|
|
7
|
+
"inactive_cursor": [170, 170, 170],
|
|
8
|
+
"selection_bg": [170, 170, 170],
|
|
9
|
+
"current_line_bg": [0, 0, 128],
|
|
10
|
+
"line_number_fg": [85, 255, 255],
|
|
11
|
+
"line_number_bg": [0, 0, 170],
|
|
12
|
+
"diff_add_bg": [0, 100, 0],
|
|
13
|
+
"diff_remove_bg": [170, 0, 0],
|
|
14
|
+
"diff_modify_bg": [20, 20, 140]
|
|
15
|
+
},
|
|
16
|
+
"ui": {
|
|
17
|
+
"tab_active_fg": [0, 0, 0],
|
|
18
|
+
"tab_active_bg": [170, 170, 170],
|
|
19
|
+
"tab_inactive_fg": [255, 255, 85],
|
|
20
|
+
"tab_inactive_bg": [0, 0, 128],
|
|
21
|
+
"tab_separator_bg": [0, 0, 170],
|
|
22
|
+
"tab_close_hover_fg": [255, 85, 85],
|
|
23
|
+
"tab_hover_bg": [0, 0, 200],
|
|
24
|
+
"menu_bg": [170, 170, 170],
|
|
25
|
+
"menu_fg": [0, 0, 0],
|
|
26
|
+
"menu_active_bg": [0, 170, 0],
|
|
27
|
+
"menu_active_fg": [255, 255, 255],
|
|
28
|
+
"menu_dropdown_bg": [170, 170, 170],
|
|
29
|
+
"menu_dropdown_fg": [0, 0, 0],
|
|
30
|
+
"menu_highlight_bg": [0, 170, 0],
|
|
31
|
+
"menu_highlight_fg": [255, 255, 255],
|
|
32
|
+
"menu_border_fg": [0, 0, 0],
|
|
33
|
+
"menu_separator_fg": [85, 85, 85],
|
|
34
|
+
"menu_hover_bg": [0, 170, 0],
|
|
35
|
+
"menu_hover_fg": [255, 255, 255],
|
|
36
|
+
"menu_disabled_fg": [85, 85, 85],
|
|
37
|
+
"menu_disabled_bg": [170, 170, 170],
|
|
38
|
+
"status_bar_fg": [0, 0, 0],
|
|
39
|
+
"status_bar_bg": [0, 170, 170],
|
|
40
|
+
"prompt_fg": [255, 255, 85],
|
|
41
|
+
"prompt_bg": [0, 0, 170],
|
|
42
|
+
"prompt_selection_fg": [0, 0, 0],
|
|
43
|
+
"prompt_selection_bg": [170, 170, 170],
|
|
44
|
+
"popup_border_fg": [255, 255, 255],
|
|
45
|
+
"popup_bg": [0, 0, 170],
|
|
46
|
+
"popup_selection_bg": [0, 170, 0],
|
|
47
|
+
"popup_text_fg": [255, 255, 85],
|
|
48
|
+
"suggestion_bg": [0, 0, 170],
|
|
49
|
+
"suggestion_selected_bg": [0, 170, 0],
|
|
50
|
+
"help_bg": [0, 0, 170],
|
|
51
|
+
"help_fg": [255, 255, 85],
|
|
52
|
+
"help_key_fg": [85, 255, 255],
|
|
53
|
+
"help_separator_fg": [170, 170, 170],
|
|
54
|
+
"help_indicator_fg": [255, 85, 85],
|
|
55
|
+
"help_indicator_bg": [0, 0, 170],
|
|
56
|
+
"inline_code_bg": [0, 0, 85],
|
|
57
|
+
"split_separator_fg": [85, 255, 255],
|
|
58
|
+
"split_separator_hover_fg": [255, 255, 255],
|
|
59
|
+
"scrollbar_track_fg": [0, 0, 128],
|
|
60
|
+
"scrollbar_thumb_fg": [170, 170, 170],
|
|
61
|
+
"scrollbar_track_hover_fg": [0, 0, 128],
|
|
62
|
+
"scrollbar_thumb_hover_fg": [255, 255, 255],
|
|
63
|
+
"compose_margin_bg": [0, 0, 128],
|
|
64
|
+
"semantic_highlight_bg": [0, 85, 170],
|
|
65
|
+
"terminal_bg": [0, 0, 170],
|
|
66
|
+
"terminal_fg": [255, 255, 85],
|
|
67
|
+
"status_warning_indicator_bg": [170, 85, 0],
|
|
68
|
+
"status_warning_indicator_fg": [255, 255, 255],
|
|
69
|
+
"status_error_indicator_bg": [170, 0, 0],
|
|
70
|
+
"status_error_indicator_fg": [255, 255, 255],
|
|
71
|
+
"status_warning_indicator_hover_bg": [200, 115, 30],
|
|
72
|
+
"status_warning_indicator_hover_fg": [255, 255, 255],
|
|
73
|
+
"status_error_indicator_hover_bg": [200, 30, 30],
|
|
74
|
+
"status_error_indicator_hover_fg": [255, 255, 255],
|
|
75
|
+
"tab_drop_zone_bg": [0, 170, 170],
|
|
76
|
+
"tab_drop_zone_border": [255, 255, 255]
|
|
77
|
+
},
|
|
78
|
+
"search": {
|
|
79
|
+
"match_bg": [170, 85, 0],
|
|
80
|
+
"match_fg": [255, 255, 255]
|
|
81
|
+
},
|
|
82
|
+
"diagnostic": {
|
|
83
|
+
"error_fg": [255, 85, 85],
|
|
84
|
+
"error_bg": [128, 0, 0],
|
|
85
|
+
"warning_fg": [255, 255, 85],
|
|
86
|
+
"warning_bg": [128, 128, 0],
|
|
87
|
+
"info_fg": [85, 255, 255],
|
|
88
|
+
"info_bg": [0, 85, 128],
|
|
89
|
+
"hint_fg": [170, 170, 170],
|
|
90
|
+
"hint_bg": [0, 0, 128]
|
|
91
|
+
},
|
|
92
|
+
"syntax": {
|
|
93
|
+
"keyword": [255, 255, 255],
|
|
94
|
+
"string": [0, 255, 255],
|
|
95
|
+
"comment": [128, 128, 128],
|
|
96
|
+
"function": [255, 255, 0],
|
|
97
|
+
"type": [0, 255, 0],
|
|
98
|
+
"variable": [255, 255, 85],
|
|
99
|
+
"constant": [255, 0, 255],
|
|
100
|
+
"operator": [170, 170, 170]
|
|
101
|
+
}
|
|
102
|
+
}
|