@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.
@@ -826,6 +826,24 @@
826
826
  212,
827
827
  212
828
828
  ]
829
+ },
830
+ "punctuation_bracket": {
831
+ "description": "Punctuation brackets ({, }, (, ), [, ])",
832
+ "$ref": "#/$defs/ColorDef",
833
+ "default": [
834
+ 212,
835
+ 212,
836
+ 212
837
+ ]
838
+ },
839
+ "punctuation_delimiter": {
840
+ "description": "Punctuation delimiters (;, ,, .)",
841
+ "$ref": "#/$defs/ColorDef",
842
+ "default": [
843
+ 212,
844
+ 212,
845
+ 212
846
+ ]
829
847
  }
830
848
  }
831
849
  }
@@ -300,7 +300,9 @@
300
300
  "field.punctuation_bracket": "závorka",
301
301
  "field.punctuation_bracket_desc": "závorkas ({, }, (, ), [, ])",
302
302
  "field.punctuation_delimiter": "oddělovač",
303
- "field.punctuation_delimiter_desc": "oddělovačs (;, ,, .)"
303
+ "field.punctuation_delimiter_desc": "oddělovačs (;, ,, .)",
304
+ "suggestion.current_builtin": "(aktuální · vestavěný · pouze pro čtení)",
305
+ "prompt.save_as_builtin_error": "Nelze přepsat vestavěný motiv, zvolte jiný název: "
304
306
  },
305
307
  "de": {
306
308
  "cmd.edit_theme": "Theme bearbeiten",
@@ -603,7 +605,9 @@
603
605
  "field.punctuation_bracket": "Klammer",
604
606
  "field.punctuation_bracket_desc": "Klammern ({, }, (, ), [, ])",
605
607
  "field.punctuation_delimiter": "Trennzeichen",
606
- "field.punctuation_delimiter_desc": "Trennzeichen (;, ,, .)"
608
+ "field.punctuation_delimiter_desc": "Trennzeichen (;, ,, .)",
609
+ "suggestion.current_builtin": "(aktuell · eingebaut · schreibgeschützt)",
610
+ "prompt.save_as_builtin_error": "Eingebautes Theme kann nicht überschrieben werden, anderen Namen wählen: "
607
611
  },
608
612
  "en": {
609
613
  "cmd.edit_theme": "Edit Theme",
@@ -906,7 +910,9 @@
906
910
  "field.punctuation_bracket": "Punctuation Bracket",
907
911
  "field.punctuation_bracket_desc": "Brackets and parentheses ({, }, (, ), [, ])",
908
912
  "field.punctuation_delimiter": "Punctuation Delimiter",
909
- "field.punctuation_delimiter_desc": "Delimiters and separators (;, ,, .)"
913
+ "field.punctuation_delimiter_desc": "Delimiters and separators (;, ,, .)",
914
+ "suggestion.current_builtin": "(current · built-in · read-only)",
915
+ "prompt.save_as_builtin_error": "Can't override built-in theme, choose a different name: "
910
916
  },
911
917
  "es": {
912
918
  "cmd.edit_theme": "Editar tema",
@@ -1209,7 +1215,9 @@
1209
1215
  "field.punctuation_bracket": "Paréntesis",
1210
1216
  "field.punctuation_bracket_desc": "Paréntesis y corchetes ({, }, (, ), [, ])",
1211
1217
  "field.punctuation_delimiter": "Delimitador",
1212
- "field.punctuation_delimiter_desc": "Delimitadores y separadores (;, ,, .)"
1218
+ "field.punctuation_delimiter_desc": "Delimitadores y separadores (;, ,, .)",
1219
+ "suggestion.current_builtin": "(actual · predefinido · solo lectura)",
1220
+ "prompt.save_as_builtin_error": "No se puede sobrescribir un tema predefinido, elija otro nombre: "
1213
1221
  },
1214
1222
  "fr": {
1215
1223
  "cmd.edit_theme": "Modifier le theme",
@@ -1512,7 +1520,9 @@
1512
1520
  "field.punctuation_bracket": "Parenthese",
1513
1521
  "field.punctuation_bracket_desc": "Parentheses et crochets ({, }, (, ), [, ])",
1514
1522
  "field.punctuation_delimiter": "Delimiteur",
1515
- "field.punctuation_delimiter_desc": "Delimiteurs et separateurs (;, ,, .)"
1523
+ "field.punctuation_delimiter_desc": "Delimiteurs et separateurs (;, ,, .)",
1524
+ "suggestion.current_builtin": "(actuel · intégré · lecture seule)",
1525
+ "prompt.save_as_builtin_error": "Impossible de remplacer un thème intégré, choisissez un autre nom : "
1516
1526
  },
1517
1527
  "ja": {
1518
1528
  "cmd.edit_theme": "テーマを編集",
@@ -1815,7 +1825,9 @@
1815
1825
  "field.punctuation_bracket": "括弧",
1816
1826
  "field.punctuation_bracket_desc": "括弧 ({、}、(、)、[、])",
1817
1827
  "field.punctuation_delimiter": "区切り文字",
1818
- "field.punctuation_delimiter_desc": "区切り文字 (;、,、.)"
1828
+ "field.punctuation_delimiter_desc": "区切り文字 (;、,、.)",
1829
+ "suggestion.current_builtin": "(現在 · 組み込み · 読み取り専用)",
1830
+ "prompt.save_as_builtin_error": "組み込みテーマは上書きできません。別の名前を入力してください: "
1819
1831
  },
1820
1832
  "ko": {
1821
1833
  "cmd.edit_theme": "편집 Theme",
@@ -2118,7 +2130,9 @@
2118
2130
  "field.punctuation_bracket": "괄호",
2119
2131
  "field.punctuation_bracket_desc": "괄호s ({, }, (, ), [, ])",
2120
2132
  "field.punctuation_delimiter": "구분자",
2121
- "field.punctuation_delimiter_desc": "구분자s (;, ,, .)"
2133
+ "field.punctuation_delimiter_desc": "구분자s (;, ,, .)",
2134
+ "suggestion.current_builtin": "(현재 · 기본 제공 · 읽기 전용)",
2135
+ "prompt.save_as_builtin_error": "기본 제공 테마를 덮어쓸 수 없습니다. 다른 이름을 입력하세요: "
2122
2136
  },
2123
2137
  "pt-BR": {
2124
2138
  "cmd.edit_theme": "editar Theme",
@@ -2421,7 +2435,9 @@
2421
2435
  "field.punctuation_bracket": "parêntese",
2422
2436
  "field.punctuation_bracket_desc": "parênteses ({, }, (, ), [, ])",
2423
2437
  "field.punctuation_delimiter": "delimitador",
2424
- "field.punctuation_delimiter_desc": "delimitadors (;, ,, .)"
2438
+ "field.punctuation_delimiter_desc": "delimitadors (;, ,, .)",
2439
+ "suggestion.current_builtin": "(atual · integrado · somente leitura)",
2440
+ "prompt.save_as_builtin_error": "Não é possível sobrescrever tema integrado, escolha outro nome: "
2425
2441
  },
2426
2442
  "ru": {
2427
2443
  "cmd.edit_theme": "редактировать Theme",
@@ -2724,7 +2740,9 @@
2724
2740
  "field.punctuation_bracket": "скобка",
2725
2741
  "field.punctuation_bracket_desc": "скобкаs ({, }, (, ), [, ])",
2726
2742
  "field.punctuation_delimiter": "разделитель",
2727
- "field.punctuation_delimiter_desc": "разделительs (;, ,, .)"
2743
+ "field.punctuation_delimiter_desc": "разделительs (;, ,, .)",
2744
+ "suggestion.current_builtin": "(текущий · встроенная · только чтение)",
2745
+ "prompt.save_as_builtin_error": "Невозможно перезаписать встроенную тему, выберите другое имя: "
2728
2746
  },
2729
2747
  "th": {
2730
2748
  "cmd.edit_theme": "แก้ไข Theme",
@@ -3027,7 +3045,9 @@
3027
3045
  "field.punctuation_bracket": "วงเล็บ",
3028
3046
  "field.punctuation_bracket_desc": "วงเล็บs ({, }, (, ), [, ])",
3029
3047
  "field.punctuation_delimiter": "ตัวคั่น",
3030
- "field.punctuation_delimiter_desc": "ตัวคั่นs (;, ,, .)"
3048
+ "field.punctuation_delimiter_desc": "ตัวคั่นs (;, ,, .)",
3049
+ "suggestion.current_builtin": "(ปัจจุบัน · ในตัว · อ่านอย่างเดียว)",
3050
+ "prompt.save_as_builtin_error": "ไม่สามารถเขียนทับธีมในตัวได้ กรุณาเลือกชื่ออื่น: "
3031
3051
  },
3032
3052
  "uk": {
3033
3053
  "cmd.edit_theme": "редагувати Theme",
@@ -3330,7 +3350,9 @@
3330
3350
  "field.punctuation_bracket": "дужка",
3331
3351
  "field.punctuation_bracket_desc": "дужкаs ({, }, (, ), [, ])",
3332
3352
  "field.punctuation_delimiter": "роздільник",
3333
- "field.punctuation_delimiter_desc": "роздільникs (;, ,, .)"
3353
+ "field.punctuation_delimiter_desc": "роздільникs (;, ,, .)",
3354
+ "suggestion.current_builtin": "(поточний · вбудована · лише читання)",
3355
+ "prompt.save_as_builtin_error": "Неможливо перезаписати вбудовану тему, виберіть іншу назву: "
3334
3356
  },
3335
3357
  "vi": {
3336
3358
  "cmd.edit_theme": "Chỉnh sửa giao diện",
@@ -3633,7 +3655,9 @@
3633
3655
  "field.punctuation_bracket": "Dấu ngoặc",
3634
3656
  "field.punctuation_bracket_desc": "Dấu ngoặc ({, }, (, ), [, ])",
3635
3657
  "field.punctuation_delimiter": "Dấu phân cách",
3636
- "field.punctuation_delimiter_desc": "Dấu phân cách (;, ,, .)"
3658
+ "field.punctuation_delimiter_desc": "Dấu phân cách (;, ,, .)",
3659
+ "suggestion.current_builtin": "(hiện tại · có sẵn · chỉ đọc)",
3660
+ "prompt.save_as_builtin_error": "Không thể ghi đè chủ đề có sẵn, chọn tên khác: "
3637
3661
  },
3638
3662
  "zh-CN": {
3639
3663
  "cmd.edit_theme": "编辑主题",
@@ -3936,7 +3960,9 @@
3936
3960
  "field.punctuation_bracket": "括号",
3937
3961
  "field.punctuation_bracket_desc": "括号 ({、}、(、)、[、])",
3938
3962
  "field.punctuation_delimiter": "分隔符",
3939
- "field.punctuation_delimiter_desc": "分隔符 (;、,、.)"
3963
+ "field.punctuation_delimiter_desc": "分隔符 (;、,、.)",
3964
+ "suggestion.current_builtin": "(当前 · 内置 · 只读)",
3965
+ "prompt.save_as_builtin_error": "无法覆盖内置主题,请选择其他名称: "
3940
3966
  },
3941
3967
  "it": {
3942
3968
  "cmd.edit_theme": "Modifica tema",
@@ -4239,6 +4265,8 @@
4239
4265
  "field.punctuation_bracket": "Parentesi",
4240
4266
  "field.punctuation_bracket_desc": "Parentesi e parentesi quadre ({, }, (, ), [, ])",
4241
4267
  "field.punctuation_delimiter": "Delimitatore",
4242
- "field.punctuation_delimiter_desc": "Delimitatori e separatori (;, ,, .)"
4268
+ "field.punctuation_delimiter_desc": "Delimitatori e separatori (;, ,, .)",
4269
+ "suggestion.current_builtin": "(corrente · integrato · sola lettura)",
4270
+ "prompt.save_as_builtin_error": "Impossibile sovrascrivere il tema integrato, scegli un altro nome: "
4243
4271
  }
4244
4272
  }
@@ -355,6 +355,8 @@ interface ThemeEditorState {
355
355
  savedCursorPath: string | null;
356
356
  /** Whether to close the editor after a successful save */
357
357
  closeAfterSave: boolean;
358
+ /** Whether the Save As prompt has been pre-filled (to distinguish first vs second Enter) */
359
+ saveAsPreFilled: boolean;
358
360
  /** Which panel has focus */
359
361
  focusPanel: "tree" | "picker";
360
362
  /** Focus target within picker panel */
@@ -420,6 +422,7 @@ const state: ThemeEditorState = {
420
422
  isBuiltin: false,
421
423
  savedCursorPath: null,
422
424
  closeAfterSave: false,
425
+ saveAsPreFilled: false,
423
426
  focusPanel: "tree",
424
427
  pickerFocus: { type: "hex-input" },
425
428
  filterText: "",
@@ -1604,10 +1607,31 @@ async function onThemeSaveAsPromptConfirmed(args: {
1604
1607
 
1605
1608
  const name = args.input.trim();
1606
1609
  if (name) {
1610
+ // If user accepted a suggestion without typing, pre-fill the prompt so they can edit the name
1611
+ if (args.selected_index !== null && !state.saveAsPreFilled) {
1612
+ state.saveAsPreFilled = true;
1613
+ editor.startPromptWithInitial(editor.t("prompt.save_as"), "theme-save-as", name);
1614
+ editor.setPromptSuggestions([{
1615
+ text: state.themeName,
1616
+ description: state.isBuiltin
1617
+ ? editor.t("suggestion.current_builtin")
1618
+ : editor.t("suggestion.current"),
1619
+ value: state.themeName,
1620
+ }]);
1621
+ return true;
1622
+ }
1623
+ state.saveAsPreFilled = false;
1624
+
1607
1625
  // Reject names that match a built-in theme
1608
1626
  if (state.builtinThemes.includes(name)) {
1609
- editor.setStatus(editor.t("error.name_is_builtin", { name }));
1610
- theme_editor_save_as();
1627
+ editor.startPromptWithInitial(editor.t("prompt.save_as_builtin_error"), "theme-save-as", name);
1628
+ editor.setPromptSuggestions([{
1629
+ text: state.themeName,
1630
+ description: state.isBuiltin
1631
+ ? editor.t("suggestion.current_builtin")
1632
+ : editor.t("suggestion.current"),
1633
+ value: state.themeName,
1634
+ }]);
1611
1635
  return true;
1612
1636
  }
1613
1637
 
@@ -2757,11 +2781,14 @@ function theme_editor_save_as() : void {
2757
2781
  state.savedCursorPath = getCurrentFieldPath();
2758
2782
  }
2759
2783
 
2784
+ state.saveAsPreFilled = false;
2760
2785
  editor.startPrompt(editor.t("prompt.save_as"), "theme-save-as");
2761
2786
 
2762
2787
  editor.setPromptSuggestions([{
2763
2788
  text: state.themeName,
2764
- description: editor.t("suggestion.current"),
2789
+ description: state.isBuiltin
2790
+ ? editor.t("suggestion.current_builtin")
2791
+ : editor.t("suggestion.current"),
2765
2792
  value: state.themeName,
2766
2793
  }]);
2767
2794
  }