@fresh-editor/fresh-editor 0.1.71 → 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.
@@ -314,6 +314,69 @@
314
314
  "btn.save_exit": "[s] Sauvegarder et Quitter",
315
315
  "btn.abort": "[q] Abandonner"
316
316
  },
317
+ "it": {
318
+ "cmd.start": "Merge: Avvia risoluzione",
319
+ "cmd.start_desc": "Avvia la risoluzione dei conflitti di merge a 3 vie per il file corrente",
320
+ "cmd.next": "Merge: Conflitto successivo",
321
+ "cmd.next_desc": "Passa al prossimo conflitto non risolto",
322
+ "cmd.prev": "Merge: Conflitto precedente",
323
+ "cmd.prev_desc": "Passa al conflitto precedente non risolto",
324
+ "cmd.use_ours": "Merge: Usa il nostro",
325
+ "cmd.use_ours_desc": "Accetta la nostra versione per il conflitto corrente",
326
+ "cmd.take_theirs": "Merge: Prendi il loro",
327
+ "cmd.take_theirs_desc": "Accetta la loro versione per il conflitto corrente",
328
+ "cmd.use_both": "Merge: Usa entrambi",
329
+ "cmd.use_both_desc": "Accetta entrambe le versioni per il conflitto corrente",
330
+ "cmd.save_exit": "Merge: Salva ed esci",
331
+ "cmd.save_exit_desc": "Salva il contenuto risolto ed esci dalla modalità merge",
332
+ "cmd.abort": "Merge: Annulla",
333
+ "cmd.abort_desc": "Annulla la risoluzione del merge senza salvare",
334
+ "status.ready": "Plugin Risoluzione conflitti di merge caricato",
335
+ "status.already_active": "Modalità merge già attiva",
336
+ "status.no_file": "Nessun file aperto",
337
+ "status.not_git_repo": "Non in un repository git - la risoluzione dei conflitti richiede git",
338
+ "status.no_unmerged": "Nessuna voce non unita - il file non è in uno stato di conflitto di merge",
339
+ "status.failed_read": "Impossibile leggere il contenuto del file",
340
+ "status.no_markers": "Nessun marcatore di conflitto trovato nel contenuto del file",
341
+ "status.starting": "Avvio risoluzione conflitti di merge...",
342
+ "status.failed_parse": "Impossibile analizzare i marcatori di conflitto",
343
+ "status.progress": "Merge: {remaining} di {total} conflitti rimanenti | Corrente: {current}",
344
+ "status.all_resolved": "Merge: Tutti i {total} conflitti risolti! Premi 's' per salvare",
345
+ "status.no_active_merge": "Nessun merge attivo - usa prima 'Merge: Avvia risoluzione'",
346
+ "status.no_conflicts": "Nessun conflitto da navigare",
347
+ "status.single_refocused": "Conflitto 1 di 1 (ri-focalizzato)",
348
+ "status.conflict_of": "Conflitto {current} di {total}",
349
+ "status.conflict_all_resolved": "Conflitto {current} di {total} (tutti risolti)",
350
+ "status.cannot_save": "Impossibile salvare: {count} conflitti non risolti rimanenti",
351
+ "status.complete": "Merge completato! File aggiornato con il contenuto risolto",
352
+ "status.nothing_to_abort": "Nessun merge attivo - nulla da annullare",
353
+ "status.aborted": "Merge annullato - nessuna modifica apportata",
354
+ "status.help": "Merge: [n/p] Naviga | [u] Nostro [t] Loro [b] Entrambi | [s] Salva [q] Annulla",
355
+ "status.detected": "Conflitti rilevati! Usa 'Merge: Avvia risoluzione' o esegui start_merge_conflict",
356
+ "status.detected_file": "Conflitti di merge rilevati in {path} - Usa 'Merge: Avvia risoluzione'",
357
+ "status.conflicts_to_resolve": "Merge: {remaining} conflitti da risolvere ({auto_resolved} risolti automaticamente)",
358
+ "status.all_auto_resolved": "Merge: Tutti i {total} conflitti risolti automaticamente! Premi 's' per salvare",
359
+ "panel.ours_header": "NOSTRO (Sola lettura) - Modifiche dal tuo branch",
360
+ "panel.theirs_header": "LORO (Sola lettura) - Modifiche in entrata",
361
+ "panel.result_header": "RISULTATO (Modificabile) - Contenuto risolto",
362
+ "panel.git_unavailable": "(Versione Git non disponibile - visualizzazione solo delle regioni di conflitto)",
363
+ "panel.conflict": "Conflitto {index}",
364
+ "panel.resolved": "[RISOLTO]",
365
+ "panel.pending": "[IN ATTESA]",
366
+ "panel.empty": "(vuoto)",
367
+ "panel.remaining": "{count} conflitti rimanenti",
368
+ "panel.all_resolved": "Tutti i conflitti risolti!",
369
+ "panel.resolved_with": "[Risolto: {resolution}]",
370
+ "btn.accept_ours": "[u] Accetta nostro",
371
+ "btn.accept_theirs": "[t] Accetta loro",
372
+ "btn.both": "[b] Entrambi",
373
+ "btn.next": "[n] Succ",
374
+ "btn.prev": "[p] Prec",
375
+ "btn.use_ours": "[u] Usa nostro",
376
+ "btn.take_theirs": "[t] Prendi loro",
377
+ "btn.save_exit": "[s] Salva ed esci",
378
+ "btn.abort": "[q] Annulla"
379
+ },
317
380
  "ja": {
318
381
  "cmd.start": "Merge: 解決を開始",
319
382
  "cmd.start_desc": "現在のファイルの3方向マージ競合解決を開始",
@@ -29,6 +29,12 @@
29
29
  "suggestion.new_file": "%{filename} (nouveau fichier)",
30
30
  "suggestion.new_file_desc": "Le fichier n'existe pas encore"
31
31
  },
32
+ "it": {
33
+ "status.loaded": "Plugin completamento percorsi caricato con successo",
34
+ "suggestion.directory": "directory",
35
+ "suggestion.new_file": "%{filename} (nuovo file)",
36
+ "suggestion.new_file_desc": "Il file non esiste ancora"
37
+ },
32
38
  "ja": {
33
39
  "status.loaded": "パス補完プラグインを正常に読み込みました",
34
40
  "suggestion.directory": "ディレクトリ",
@@ -154,6 +154,37 @@
154
154
  "panel.selected": "({selected} selectionnes)",
155
155
  "panel.help": "[ESP] basculer [a] tous [n] aucun [r] REMPLACER [RET] apercu [q] fermer"
156
156
  },
157
+ "it": {
158
+ "cmd.search_replace": "Cerca e sostituisci nel progetto",
159
+ "cmd.search_replace_desc": "Cerca e sostituisci testo in tutti i file tracciati da git",
160
+ "status.ready": "Plugin Cerca e Sostituisci pronto",
161
+ "status.enter_pattern": "Inserisci il modello di ricerca...",
162
+ "status.no_matches": "Nessuna corrispondenza trovata per \"{pattern}\"",
163
+ "status.found_matches": "Trovate {count} corrispondenze",
164
+ "status.search_error": "Errore di ricerca: {error}",
165
+ "status.cancelled_empty": "Ricerca annullata - modello vuoto",
166
+ "status.cancelled": "Cerca/Sostituisci annullato",
167
+ "status.no_selected": "Nessun elemento selezionato per la sostituzione",
168
+ "status.no_items_selected": "Nessun elemento selezionato",
169
+ "status.selected_count": "{selected}/{total} selezionati",
170
+ "status.replacing": "Sostituzione di {count} occorrenze...",
171
+ "status.replaced_with_errors": "Sostituito in {files} file ({errors} errori)",
172
+ "status.replaced": "Sostituite {count} occorrenze in {files} file",
173
+ "status.closed": "Cerca/Sostituisci chiuso",
174
+ "status.failed_open_panel": "Impossibile aprire il pannello cerca/sostituisci",
175
+ "status.preview": "Anteprima: {file}:{line}",
176
+ "prompt.search": "Cerca (nel progetto): ",
177
+ "prompt.replace": "Sostituisci con: ",
178
+ "panel.header": "Cerca e Sostituisci",
179
+ "panel.search_label": "Cerca:",
180
+ "panel.replace_label": "Sostituisci:",
181
+ "panel.regex": "(regex)",
182
+ "panel.no_matches": "Nessuna corrispondenza trovata",
183
+ "panel.results": "Risultati: {count}",
184
+ "panel.limited": "(limitati a {max})",
185
+ "panel.selected": "({selected} selezionati)",
186
+ "panel.help": "[SPZ] alterna [a] tutti [n] nessuno [r] SOSTITUISCI [RET] anteprima [q] chiudi"
187
+ },
157
188
  "ja": {
158
189
  "cmd.search_replace": "プロジェクト内で検索と置換",
159
190
  "cmd.search_replace_desc": "git追跡されているすべてのファイルでテキストを検索して置換",
@@ -24,6 +24,11 @@
24
24
  "cmd.test_desc": "Une commande pour tester la localisation des plugins",
25
25
  "msg.hello": "Bonjour, %{name} ! Votre langue est %{locale}."
26
26
  },
27
+ "it": {
28
+ "cmd.test": "Comando di test localizzato",
29
+ "cmd.test_desc": "Un comando per testare la localizzazione dei plugin",
30
+ "msg.hello": "Ciao, %{name}! La tua lingua è %{locale}."
31
+ },
27
32
  "ja": {
28
33
  "cmd.test": "ローカライズテストコマンド",
29
34
  "cmd.test_desc": "プラグインのローカライズをテストするコマンド",
@@ -3454,5 +3454,293 @@
3454
3454
  "field.tab_drop_zone_bg_desc": "Tab drop zone background during drag",
3455
3455
  "field.tab_drop_zone_border": "Tab Drop Zone Border",
3456
3456
  "field.tab_drop_zone_border_desc": "Tab drop zone border during drag"
3457
+ },
3458
+ "it": {
3459
+ "cmd.edit_theme": "Modifica tema",
3460
+ "cmd.edit_theme_desc": "Apri l editor dei colori del tema",
3461
+ "cmd.close_editor": "Tema: Chiudi editor",
3462
+ "cmd.close_editor_desc": "Chiudi l editor dei temi",
3463
+ "cmd.edit_color": "Tema: Modifica colore",
3464
+ "cmd.edit_color_desc": "Modifica il colore selezionato",
3465
+ "cmd.toggle_section": "Tema: Alterna sezione",
3466
+ "cmd.toggle_section_desc": "Espandi o comprimi la sezione",
3467
+ "cmd.open_theme": "Tema: Apri tema",
3468
+ "cmd.open_theme_desc": "Apri un tema (integrato o utente) per la modifica",
3469
+ "cmd.save": "Tema: Salva",
3470
+ "cmd.save_desc": "Salva il tema",
3471
+ "cmd.save_as": "Tema: Salva come",
3472
+ "cmd.save_as_desc": "Salva il tema con un nuovo nome",
3473
+ "cmd.set_default": "Tema: Imposta come predefinito",
3474
+ "cmd.set_default_desc": "Imposta un tema come predefinito",
3475
+ "cmd.reload": "Tema: Ricarica",
3476
+ "cmd.reload_desc": "Ricarica il tema dal file",
3477
+ "cmd.show_help": "Tema: Mostra aiuto",
3478
+ "cmd.show_help_desc": "Mostra l aiuto dell editor dei temi",
3479
+ "status.already_open": "L editor dei temi è già aperto",
3480
+ "status.loading": "Caricamento editor dei temi...",
3481
+ "status.ready": "Editor dei temi | c: copia da integrato | s: salva | d: imposta come predefinito | q: esci",
3482
+ "status.open_failed": "Impossibile aprire l editor dei temi",
3483
+ "status.unsaved_discarded": "Attenzione: Modifiche non salvate scartate",
3484
+ "status.closed": "Editor dei temi chiuso",
3485
+ "status.no_field": "Nessun campo selezionato",
3486
+ "status.not_section": "Non è una sezione",
3487
+ "status.no_changes": "Nessuna modifica da salvare",
3488
+ "status.updated": "%{path} aggiornato",
3489
+ "status.autocompleted": "Completato automaticamente a: %{value}",
3490
+ "status.invalid_color": "Formato colore non valido. Usa #RRGGBB, [r,g,b] o un nome di colore.",
3491
+ "status.name_set": "Nome del tema impostato a: %{name}",
3492
+ "status.copied": "Copiato da %{theme}. Modifica e salva come nuovo tema.",
3493
+ "status.load_failed": "Impossibile caricare il tema: %{name}",
3494
+ "status.mkdir_failed": "Impossibile creare la directory dei temi: %{error}",
3495
+ "status.saved": "Tema salvato in %{path}",
3496
+ "status.saved_and_applied": "Tema \"%{name}\" salvato e applicato.",
3497
+ "status.save_failed": "Impossibile salvare il tema: %{error}",
3498
+ "status.apply_failed": "Impossibile applicare il tema: %{error}",
3499
+ "status.reloaded": "Tema ricaricato dal file",
3500
+ "status.reset": "Tema ripristinato ai valori predefiniti",
3501
+ "status.cancelled": "Annullato",
3502
+ "status.help": "Tasti: su/giù naviga | RET/SPC modifica | TAB espandi | c copia | n nome | s salva | S salva-come | d predefinito | q esci",
3503
+ "status.plugin_loaded": "Plugin Editor dei temi caricato",
3504
+ "status.at_first_field": "Al primo campo",
3505
+ "status.at_last_field": "All ultimo campo",
3506
+ "status.no_user_themes": "Nessun tema utente trovato. Usa o per aprire un tema integrato, quindi salva.",
3507
+ "status.loaded": "Tema caricato: %{name}",
3508
+ "status.opened_builtin": "Aperto tema integrato: %{name} (usa Salva come per creare il tuo)",
3509
+ "status.builtin_requires_save_as": "I temi integrati non possono essere modificati sul posto. Usa Salva come.",
3510
+ "panel.title": "Editor dei temi: %{name}",
3511
+ "panel.modified": "[modificato]",
3512
+ "panel.file": "File: %{path}",
3513
+ "panel.new_theme": "Nuovo tema (non ancora salvato)",
3514
+ "panel.nav_hint": "su/giù: naviga | RET/SPC: modifica colore | TAB: espandi/comprimi",
3515
+ "panel.action_hint": "%{open}: apri | %{save}: salva | %{save_as}: salva come | %{delete}: elimina | %{close}: esci | %{help}: aiuto",
3516
+ "prompt.open_theme": "Apri tema: ",
3517
+ "prompt.select_theme_to_edit": "Seleziona tema da modificare: ",
3518
+ "prompt.theme_name": "Nome del tema: ",
3519
+ "prompt.save_as": "Salva tema come: ",
3520
+ "prompt.color_input": "%{field} (#RRGGBB o nome): ",
3521
+ "prompt.discard_confirm": "Hai modifiche non salvate: ",
3522
+ "prompt.discard_yes": "Scarta le modifiche e chiudi",
3523
+ "prompt.discard_no": "Continua a modificare",
3524
+ "prompt.overwrite_confirm": "Il tema %{name} esiste già: ",
3525
+ "prompt.overwrite_yes": "Sovrascrivi tema esistente",
3526
+ "prompt.overwrite_no": "Annulla",
3527
+ "suggestion.current": "(corrente)",
3528
+ "suggestion.builtin_theme": "Tema integrato",
3529
+ "suggestion.builtin_theme_current": "Tema integrato (corrente)",
3530
+ "suggestion.user_theme": "Tema utente",
3531
+ "suggestion.user_theme_current": "Tema utente (corrente)",
3532
+ "suggestion.builtin": "Integrato",
3533
+ "suggestion.terminal_native": "Usa il colore nativo del terminale",
3534
+ "section.editor": "Editor",
3535
+ "section.editor_desc": "Colori dell area principale dell editor",
3536
+ "section.ui": "Elementi UI",
3537
+ "section.ui_desc": "Colori dell interfaccia utente (schede, menu, barra di stato, ecc.)",
3538
+ "section.search": "Ricerca",
3539
+ "section.search_desc": "Colori di evidenziazione dei risultati di ricerca",
3540
+ "section.diagnostic": "Diagnostica",
3541
+ "section.diagnostic_desc": "Colori della diagnostica LSP (errori, avvisi, ecc.)",
3542
+ "section.syntax": "Evidenziazione sintassi",
3543
+ "section.syntax_desc": "Colori dell evidenziazione della sintassi del codice",
3544
+ "field.bg": "Sfondo",
3545
+ "field.bg_desc": "Colore di sfondo dell editor",
3546
+ "field.fg": "Primo piano",
3547
+ "field.fg_desc": "Colore del testo predefinito",
3548
+ "field.cursor": "Cursore",
3549
+ "field.cursor_desc": "Colore del cursore",
3550
+ "field.inactive_cursor": "Cursore inattivo",
3551
+ "field.inactive_cursor_desc": "Colore del cursore nei pannelli non focalizzati",
3552
+ "field.selection_bg": "Sfondo selezione",
3553
+ "field.selection_bg_desc": "Sfondo del testo selezionato",
3554
+ "field.current_line_bg": "Sfondo riga corrente",
3555
+ "field.current_line_bg_desc": "Sfondo della riga contenente il cursore",
3556
+ "field.line_number_fg": "Primo piano numero riga",
3557
+ "field.line_number_fg_desc": "Colore del testo del numero di riga",
3558
+ "field.line_number_bg": "Sfondo numero riga",
3559
+ "field.line_number_bg_desc": "Sfondo del margine dei numeri di riga",
3560
+ "field.diff_add_bg": "Sfondo Diff Aggiunta",
3561
+ "field.diff_add_bg_desc": "Sfondo della riga aggiunta nel diff",
3562
+ "field.diff_remove_bg": "Sfondo Diff Rimozione",
3563
+ "field.diff_remove_bg_desc": "Sfondo della riga rimossa nel diff",
3564
+ "field.diff_modify_bg": "Sfondo Diff Modifica",
3565
+ "field.diff_modify_bg_desc": "Sfondo della riga modificata nel diff",
3566
+ "field.tab_active_fg": "Primo piano scheda attiva",
3567
+ "field.tab_active_fg_desc": "Colore del testo della scheda attiva",
3568
+ "field.tab_active_bg": "Sfondo scheda attiva",
3569
+ "field.tab_active_bg_desc": "Colore di sfondo della scheda attiva",
3570
+ "field.tab_inactive_fg": "Primo piano scheda inattiva",
3571
+ "field.tab_inactive_fg_desc": "Colore del testo della scheda inattiva",
3572
+ "field.tab_inactive_bg": "Sfondo scheda inattiva",
3573
+ "field.tab_inactive_bg_desc": "Colore di sfondo della scheda inattiva",
3574
+ "field.tab_separator_bg": "Separatore schede",
3575
+ "field.tab_separator_bg_desc": "Colore del separatore della barra delle schede",
3576
+ "field.tab_close_hover_fg": "Hover chiusura scheda",
3577
+ "field.tab_close_hover_fg_desc": "Colore del pulsante di chiusura scheda al passaggio del mouse",
3578
+ "field.tab_hover_bg": "Hover sfondo scheda",
3579
+ "field.tab_hover_bg_desc": "Colore di sfondo al passaggio del mouse sulla scheda",
3580
+ "field.menu_bg": "Sfondo menu",
3581
+ "field.menu_bg_desc": "Sfondo della barra dei menu",
3582
+ "field.menu_fg": "Primo piano menu",
3583
+ "field.menu_fg_desc": "Colore del testo della barra dei menu",
3584
+ "field.menu_active_bg": "Sfondo menu attivo",
3585
+ "field.menu_active_bg_desc": "Sfondo della voce di menu attiva",
3586
+ "field.menu_active_fg": "Primo piano menu attivo",
3587
+ "field.menu_active_fg_desc": "Colore del testo della voce di menu attiva",
3588
+ "field.menu_dropdown_bg": "Sfondo menu a discesa",
3589
+ "field.menu_dropdown_bg_desc": "Sfondo del menu a discesa",
3590
+ "field.menu_dropdown_fg": "Primo piano menu a discesa",
3591
+ "field.menu_dropdown_fg_desc": "Colore del testo del menu a discesa",
3592
+ "field.menu_highlight_bg": "Sfondo menu evidenziato",
3593
+ "field.menu_highlight_bg_desc": "Sfondo della voce di menu evidenziata",
3594
+ "field.menu_highlight_fg": "Primo piano menu evidenziato",
3595
+ "field.menu_highlight_fg_desc": "Colore del testo della voce di menu evidenziata",
3596
+ "field.menu_border_fg": "Bordo menu",
3597
+ "field.menu_border_fg_desc": "Colore del bordo del menu",
3598
+ "field.menu_separator_fg": "Separatore menu",
3599
+ "field.menu_separator_fg_desc": "Colore della linea di separazione del menu",
3600
+ "field.menu_hover_bg": "Hover sfondo menu",
3601
+ "field.menu_hover_bg_desc": "Sfondo della voce di menu al passaggio del mouse",
3602
+ "field.menu_hover_fg": "Hover primo piano menu",
3603
+ "field.menu_hover_fg_desc": "Colore del testo della voce di menu al passaggio del mouse",
3604
+ "field.menu_disabled_fg": "Primo piano menu disabilitato",
3605
+ "field.menu_disabled_fg_desc": "Colore del testo della voce di menu disabilitata",
3606
+ "field.menu_disabled_bg": "Sfondo menu disabilitato",
3607
+ "field.menu_disabled_bg_desc": "Sfondo della voce di menu disabilitata",
3608
+ "field.status_bar_fg": "Primo piano barra di stato",
3609
+ "field.status_bar_fg_desc": "Colore del testo della barra di stato",
3610
+ "field.status_bar_bg": "Sfondo barra di stato",
3611
+ "field.status_bar_bg_desc": "Colore di sfondo della barra di stato",
3612
+ "field.prompt_fg": "Primo piano prompt",
3613
+ "field.prompt_fg_desc": "Colore del testo del prompt dei comandi",
3614
+ "field.prompt_bg": "Sfondo prompt",
3615
+ "field.prompt_bg_desc": "Sfondo del prompt dei comandi",
3616
+ "field.prompt_selection_fg": "Primo piano selezione prompt",
3617
+ "field.prompt_selection_fg_desc": "Colore del testo selezionato nel prompt",
3618
+ "field.prompt_selection_bg": "Sfondo selezione prompt",
3619
+ "field.prompt_selection_bg_desc": "Sfondo della selezione nel prompt",
3620
+ "field.popup_border_fg": "Bordo popup",
3621
+ "field.popup_border_fg_desc": "Colore del bordo della finestra popup",
3622
+ "field.popup_bg": "Sfondo popup",
3623
+ "field.popup_bg_desc": "Sfondo della finestra popup",
3624
+ "field.popup_selection_bg": "Sfondo selezione popup",
3625
+ "field.popup_selection_bg_desc": "Sfondo dell elemento selezionato nel popup",
3626
+ "field.popup_text_fg": "Primo piano testo popup",
3627
+ "field.popup_text_fg_desc": "Colore del testo della finestra popup",
3628
+ "field.suggestion_bg": "Sfondo suggerimento",
3629
+ "field.suggestion_bg_desc": "Sfondo del suggerimento di completamento automatico",
3630
+ "field.suggestion_selected_bg": "Sfondo suggerimento selezionato",
3631
+ "field.suggestion_selected_bg_desc": "Sfondo del suggerimento selezionato",
3632
+ "field.help_bg": "Sfondo aiuto",
3633
+ "field.help_bg_desc": "Sfondo del pannello di aiuto",
3634
+ "field.help_fg": "Primo piano aiuto",
3635
+ "field.help_fg_desc": "Colore del testo del pannello di aiuto",
3636
+ "field.help_key_fg": "Primo piano tasto aiuto",
3637
+ "field.help_key_fg_desc": "Colore del testo delle scorciatoie da tastiera",
3638
+ "field.help_separator_fg": "Separatore aiuto",
3639
+ "field.help_separator_fg_desc": "Colore del separatore del pannello di aiuto",
3640
+ "field.help_indicator_fg": "Primo piano indicatore aiuto",
3641
+ "field.help_indicator_fg_desc": "Colore del testo dell indicatore di aiuto",
3642
+ "field.help_indicator_bg": "Sfondo indicatore aiuto",
3643
+ "field.help_indicator_bg_desc": "Sfondo dell indicatore di aiuto",
3644
+ "field.inline_code_bg": "Sfondo codice inline",
3645
+ "field.inline_code_bg_desc": "Sfondo del blocco di codice inline",
3646
+ "field.split_separator_fg": "Separatore split",
3647
+ "field.split_separator_fg_desc": "Colore del separatore dei pannelli split",
3648
+ "field.split_separator_hover_fg": "Hover separatore split",
3649
+ "field.split_separator_hover_fg_desc": "Colore del separatore split al passaggio del mouse",
3650
+ "field.scrollbar_track_fg": "Traccia barra di scorrimento",
3651
+ "field.scrollbar_track_fg_desc": "Colore della traccia della barra di scorrimento",
3652
+ "field.scrollbar_thumb_fg": "Cursore barra di scorrimento",
3653
+ "field.scrollbar_thumb_fg_desc": "Colore del cursore della barra di scorrimento",
3654
+ "field.scrollbar_track_hover_fg": "Hover traccia barra di scorrimento",
3655
+ "field.scrollbar_track_hover_fg_desc": "Colore della traccia al passaggio del mouse",
3656
+ "field.scrollbar_thumb_hover_fg": "Hover cursore barra di scorrimento",
3657
+ "field.scrollbar_thumb_hover_fg_desc": "Colore del cursore al passaggio del mouse",
3658
+ "field.compose_margin_bg": "Sfondo margine composizione",
3659
+ "field.compose_margin_bg_desc": "Sfondo del margine in modalità composizione",
3660
+ "field.semantic_highlight_bg": "Sfondo evidenziazione semantica",
3661
+ "field.semantic_highlight_bg_desc": "Evidenziazione della parola sotto il cursore",
3662
+ "field.terminal_bg": "Sfondo terminale",
3663
+ "field.terminal_bg_desc": "Sfondo del terminale integrato (usa Default per la trasparenza)",
3664
+ "field.terminal_fg": "Primo piano terminale",
3665
+ "field.terminal_fg_desc": "Colore del testo predefinito del terminale integrato",
3666
+ "field.match_bg": "Sfondo corrispondenza",
3667
+ "field.match_bg_desc": "Colore di sfondo della corrispondenza di ricerca",
3668
+ "field.match_fg": "Primo piano corrispondenza",
3669
+ "field.match_fg_desc": "Colore del testo della corrispondenza di ricerca",
3670
+ "field.error_fg": "Primo piano errore",
3671
+ "field.error_fg_desc": "Colore del testo del messaggio di errore",
3672
+ "field.error_bg": "Sfondo errore",
3673
+ "field.error_bg_desc": "Sfondo dell evidenziazione dell errore",
3674
+ "field.warning_fg": "Primo piano avviso",
3675
+ "field.warning_fg_desc": "Colore del testo del messaggio di avviso",
3676
+ "field.warning_bg": "Sfondo avviso",
3677
+ "field.warning_bg_desc": "Sfondo dell evidenziazione dell avviso",
3678
+ "field.info_fg": "Primo piano info",
3679
+ "field.info_fg_desc": "Colore del testo del messaggio informativo",
3680
+ "field.info_bg": "Sfondo info",
3681
+ "field.info_bg_desc": "Sfondo dell evidenziazione informativa",
3682
+ "field.hint_fg": "Primo piano suggerimento",
3683
+ "field.hint_fg_desc": "Colore del testo del messaggio di suggerimento",
3684
+ "field.hint_bg": "Sfondo suggerimento",
3685
+ "field.hint_bg_desc": "Sfondo dell evidenziazione del suggerimento",
3686
+ "field.keyword": "Parola chiave",
3687
+ "field.keyword_desc": "Parole chiave del linguaggio (if, for, fn, ecc.)",
3688
+ "field.string": "Stringa",
3689
+ "field.string_desc": "Letterali stringa",
3690
+ "field.comment": "Commento",
3691
+ "field.comment_desc": "Commenti del codice",
3692
+ "field.function": "Funzione",
3693
+ "field.function_desc": "Nomi di funzioni",
3694
+ "field.type": "Tipo",
3695
+ "field.type_desc": "Nomi di tipi",
3696
+ "field.variable": "Variabile",
3697
+ "field.variable_desc": "Nomi di variabili",
3698
+ "field.constant": "Costante",
3699
+ "field.constant_desc": "Costanti e letterali",
3700
+ "field.operator": "Operatore",
3701
+ "field.operator_desc": "Operatori (+, -, =, ecc.)",
3702
+ "cmd.delete_theme": "Tema: Elimina",
3703
+ "cmd.delete_theme_desc": "Elimina il tema utente corrente",
3704
+ "cmd.nav_up": "Tema: Naviga su",
3705
+ "cmd.nav_up_desc": "Sposta al campo o sezione precedente",
3706
+ "cmd.nav_down": "Tema: Naviga giù",
3707
+ "cmd.nav_down_desc": "Sposta al campo o sezione successiva",
3708
+ "cmd.nav_next": "Tema: Naviga successivo (Tab)",
3709
+ "cmd.nav_next_desc": "Sposta al campo o sezione successiva con wrapping",
3710
+ "cmd.nav_prev": "Tema: Naviga precedente (Shift+Tab)",
3711
+ "cmd.nav_prev_desc": "Sposta al campo o sezione precedente con wrapping",
3712
+ "cmd.set_name": "Tema: Imposta nome",
3713
+ "cmd.set_name_desc": "Imposta il nome del tema",
3714
+ "error.color_empty": "Inserisci un valore di colore",
3715
+ "error.color_hex_length": "Il colore esadecimale deve essere di 6 caratteri: #RRGGBB (es. #FF0000)",
3716
+ "error.color_hex_invalid": "Caratteri esadecimali non validi in %{input}: usa solo 0-9 e A-F",
3717
+ "error.color_rgb_range": "I valori RGB devono essere 0-255. Trovati valori non validi in %{input}",
3718
+ "error.color_unknown": "Formato colore sconosciuto %{input}. Usa #RRGGBB, [r,g,b] o un nome di colore",
3719
+ "status.cannot_delete_unsaved": "Impossibile eliminare: tema non ancora salvato",
3720
+ "status.deleted": "Tema %{name} eliminato",
3721
+ "status.delete_failed": "Eliminazione tema fallita: %{error}",
3722
+ "prompt.delete_confirm": "Eliminare il tema %{name}? ",
3723
+ "prompt.delete_yes": "Elimina permanentemente",
3724
+ "prompt.delete_no": "Annulla",
3725
+ "field.status_warning_indicator_bg": "Sfondo indicatore avviso",
3726
+ "field.status_warning_indicator_bg_desc": "Sfondo dell indicatore di avviso nella barra di stato",
3727
+ "field.status_warning_indicator_fg": "Primo piano indicatore avviso",
3728
+ "field.status_warning_indicator_fg_desc": "Colore del testo dell indicatore di avviso nella barra di stato",
3729
+ "field.status_error_indicator_bg": "Sfondo indicatore errore",
3730
+ "field.status_error_indicator_bg_desc": "Sfondo dell indicatore di errore nella barra di stato",
3731
+ "field.status_error_indicator_fg": "Primo piano indicatore errore",
3732
+ "field.status_error_indicator_fg_desc": "Colore del testo dell indicatore di errore nella barra di stato",
3733
+ "field.status_warning_indicator_hover_bg": "Hover sfondo indicatore avviso",
3734
+ "field.status_warning_indicator_hover_bg_desc": "Sfondo dell indicatore di avviso al passaggio del mouse",
3735
+ "field.status_warning_indicator_hover_fg": "Hover primo piano indicatore avviso",
3736
+ "field.status_warning_indicator_hover_fg_desc": "Colore del testo dell indicatore di avviso al passaggio del mouse",
3737
+ "field.status_error_indicator_hover_bg": "Hover sfondo indicatore errore",
3738
+ "field.status_error_indicator_hover_bg_desc": "Sfondo dell indicatore di errore al passaggio del mouse",
3739
+ "field.status_error_indicator_hover_fg": "Hover primo piano indicatore errore",
3740
+ "field.status_error_indicator_hover_fg_desc": "Colore del testo dell indicatore di errore al passaggio del mouse",
3741
+ "field.tab_drop_zone_bg": "Sfondo zona rilascio scheda",
3742
+ "field.tab_drop_zone_bg_desc": "Sfondo della zona di rilascio scheda durante il trascinamento",
3743
+ "field.tab_drop_zone_border": "Bordo zona rilascio scheda",
3744
+ "field.tab_drop_zone_border_desc": "Bordo della zona di rilascio scheda durante il trascinamento"
3457
3745
  }
3458
- }
3746
+ }
@@ -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 entries = editor.readDir(themesDir);
461
- return entries
462
- .filter(e => e.is_file && e.name.endsWith(".json"))
463
- .map(e => e.name.replace(".json", ""));
464
- } catch {
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 directory
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 content = await editor.readFile(themePath);
478
- return JSON.parse(content);
479
- } catch {
480
- editor.debug(`Failed to load theme: ${name}`);
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
  }
@@ -515,9 +537,15 @@ function listUserThemes(): string[] {
515
537
 
516
538
  /**
517
539
  * Get user themes directory
518
- * Uses XDG_CONFIG_HOME if set, otherwise falls back to $HOME/.config
540
+ * Uses the API to get the correct path
519
541
  */
520
542
  function getUserThemesDir(): string {
543
+ // Use the API if available (new method)
544
+ if (typeof editor.getThemesDir === "function") {
545
+ return editor.getThemesDir();
546
+ }
547
+
548
+ // Fallback for older versions (deprecated)
521
549
  // Check XDG_CONFIG_HOME first (standard on Linux)
522
550
  const xdgConfig = editor.getEnv("XDG_CONFIG_HOME");
523
551
  if (xdgConfig) {
@@ -1395,7 +1423,6 @@ globalThis.onThemeEditorBufferClosed = function(data: {
1395
1423
  }): void {
1396
1424
  if (state.bufferId !== null && data.buffer_id === state.bufferId) {
1397
1425
  // Reset state when our buffer is closed
1398
- state.isOpen = false;
1399
1426
  state.bufferId = null;
1400
1427
  state.splitId = null;
1401
1428
  state.themeData = {};
@@ -1611,7 +1638,9 @@ globalThis.theme_editor_nav_prev_section = function(): void {
1611
1638
  * Open the theme editor - prompts user to select theme first
1612
1639
  */
1613
1640
  globalThis.open_theme_editor = async function(): Promise<void> {
1614
- if (state.isOpen) {
1641
+ if (isThemeEditorOpen()) {
1642
+ // Focus the existing theme editor buffer
1643
+ editor.focusBuffer(state.bufferId!);
1615
1644
  editor.setStatus(editor.t("status.already_open"));
1616
1645
  return;
1617
1646
  }
@@ -1684,7 +1713,6 @@ async function doOpenThemeEditor(): Promise<void> {
1684
1713
  });
1685
1714
 
1686
1715
  if (bufferId !== null) {
1687
- state.isOpen = true;
1688
1716
  state.bufferId = bufferId;
1689
1717
  state.splitId = null;
1690
1718
 
@@ -1699,7 +1727,7 @@ async function doOpenThemeEditor(): Promise<void> {
1699
1727
  * Close the theme editor
1700
1728
  */
1701
1729
  globalThis.theme_editor_close = function(): void {
1702
- if (!state.isOpen) return;
1730
+ if (!isThemeEditorOpen()) return;
1703
1731
 
1704
1732
  if (state.hasChanges) {
1705
1733
  // Show confirmation prompt before closing with unsaved changes
@@ -1725,7 +1753,6 @@ function doCloseEditor(): void {
1725
1753
  }
1726
1754
 
1727
1755
  // Reset state
1728
- state.isOpen = false;
1729
1756
  state.bufferId = null;
1730
1757
  state.splitId = null;
1731
1758
  state.themeData = {};
@@ -1974,10 +2001,10 @@ globalThis.onThemeDeletePromptConfirmed = async function(args: {
1974
2001
 
1975
2002
  const value = args.input.trim();
1976
2003
  if (value === "delete" || value === editor.t("prompt.delete_yes")) {
1977
- if (state.themePath) {
2004
+ if (state.themeName) {
1978
2005
  try {
1979
- // Delete the theme file
1980
- await editor.deleteFile(state.themePath);
2006
+ // Delete the theme file by name
2007
+ await editor.deleteTheme(state.themeName);
1981
2008
  const deletedName = state.themeName;
1982
2009
 
1983
2010
  // Reset to default theme
@@ -69,6 +69,20 @@
69
69
  "status.loaded": "Plugin Surligneur TODO charge (TypeScript)",
70
70
  "status.keywords": "Mots-cles TODO: %{keywords}"
71
71
  },
72
+ "it": {
73
+ "cmd.enable": "Evidenziatore TODO: Attiva",
74
+ "cmd.enable_desc": "Attiva l'evidenziazione delle parole chiave TODO",
75
+ "cmd.disable": "Evidenziatore TODO: Disattiva",
76
+ "cmd.disable_desc": "Disattiva l'evidenziazione delle parole chiave TODO",
77
+ "cmd.toggle": "Evidenziatore TODO: Alterna",
78
+ "cmd.toggle_desc": "Alterna l'evidenziazione delle parole chiave TODO",
79
+ "cmd.show_keywords": "Evidenziatore TODO: Mostra parole chiave",
80
+ "cmd.show_keywords_desc": "Mostra le parole chiave attualmente monitorate",
81
+ "status.enabled": "Evidenziatore TODO: Attivato",
82
+ "status.disabled": "Evidenziatore TODO: Disattivato",
83
+ "status.loaded": "Plugin Evidenziatore TODO caricato (TypeScript)",
84
+ "status.keywords": "Parole chiave TODO: %{keywords}"
85
+ },
72
86
  "ja": {
73
87
  "cmd.enable": "TODOハイライター: 有効化",
74
88
  "cmd.enable_desc": "TODOキーワードのハイライトを有効化",