mirror of
https://github.com/weechat/weechat.git
synced 2026-07-05 01:03:14 +02:00
core: always write all options in theme files
Theme files saved with /theme save and automatic backups now always contain every themable option (full snapshot), so a theme file is self-contained and round-trips exactly regardless of the current configuration. The diff-only mode and the "-full" argument of /theme save are removed.
This commit is contained in:
@@ -2271,13 +2271,9 @@ Save the current themable options as a new user theme file:
|
||||
/theme save mytheme
|
||||
----
|
||||
|
||||
By default only options whose value differs from their hardcoded
|
||||
default are written, keeping the file small and focused. To capture
|
||||
every themable option:
|
||||
|
||||
----
|
||||
/theme save mytheme -full
|
||||
----
|
||||
Every themable option is written, so the file is self-contained and
|
||||
applies the exact same look on any WeeChat, regardless of its current
|
||||
configuration.
|
||||
|
||||
Reserved names (built-in theme names like `+light+` and any name
|
||||
starting with `+backup-+`) are refused. Files live at
|
||||
|
||||
@@ -2258,13 +2258,9 @@ Save the current themable options as a new user theme file:
|
||||
/theme save mytheme
|
||||
----
|
||||
|
||||
By default only options whose value differs from their hardcoded
|
||||
default are written, keeping the file small and focused. To capture
|
||||
every themable option:
|
||||
|
||||
----
|
||||
/theme save mytheme -full
|
||||
----
|
||||
Every themable option is written, so the file is self-contained and
|
||||
applies the exact same look on any WeeChat, regardless of its current
|
||||
configuration.
|
||||
|
||||
Reserved names (built-in theme names like `+light+` and any name
|
||||
starting with `+backup-+`) are refused. Files live at
|
||||
|
||||
@@ -2307,13 +2307,9 @@ thème utilisateur :
|
||||
/theme save monTheme
|
||||
----
|
||||
|
||||
Par défaut, seules les options dont la valeur diffère de la valeur par
|
||||
défaut codée en dur sont écrites, ce qui garde le fichier compact et
|
||||
ciblé. Pour capturer toutes les options modifiables :
|
||||
|
||||
----
|
||||
/theme save monTheme -full
|
||||
----
|
||||
Toutes les options modifiables sont écrites, donc le fichier est
|
||||
autonome et applique exactement le même aspect sur n'importe quel
|
||||
WeeChat, quelle que soit sa configuration actuelle.
|
||||
|
||||
Les noms réservés (noms de thèmes intégrés comme `+light+` et tout nom
|
||||
commençant par `+backup-+`) sont refusés. Les fichiers sont placés
|
||||
|
||||
@@ -2513,13 +2513,9 @@ Save the current themable options as a new user theme file:
|
||||
/theme save mytheme
|
||||
----
|
||||
|
||||
By default only options whose value differs from their hardcoded
|
||||
default are written, keeping the file small and focused. To capture
|
||||
every themable option:
|
||||
|
||||
----
|
||||
/theme save mytheme -full
|
||||
----
|
||||
Every themable option is written, so the file is self-contained and
|
||||
applies the exact same look on any WeeChat, regardless of its current
|
||||
configuration.
|
||||
|
||||
Reserved names (built-in theme names like `+light+` and any name
|
||||
starting with `+backup-+`) are refused. Files live at
|
||||
|
||||
@@ -2449,13 +2449,9 @@ Save the current themable options as a new user theme file:
|
||||
/theme save mytheme
|
||||
----
|
||||
|
||||
By default only options whose value differs from their hardcoded
|
||||
default are written, keeping the file small and focused. To capture
|
||||
every themable option:
|
||||
|
||||
----
|
||||
/theme save mytheme -full
|
||||
----
|
||||
Every themable option is written, so the file is self-contained and
|
||||
applies the exact same look on any WeeChat, regardless of its current
|
||||
configuration.
|
||||
|
||||
Reserved names (built-in theme names like `+light+` and any name
|
||||
starting with `+backup-+`) are refused. Files live at
|
||||
|
||||
@@ -2265,13 +2265,9 @@ Save the current themable options as a new user theme file:
|
||||
/theme save mytheme
|
||||
----
|
||||
|
||||
By default only options whose value differs from their hardcoded
|
||||
default are written, keeping the file small and focused. To capture
|
||||
every themable option:
|
||||
|
||||
----
|
||||
/theme save mytheme -full
|
||||
----
|
||||
Every themable option is written, so the file is self-contained and
|
||||
applies the exact same look on any WeeChat, regardless of its current
|
||||
configuration.
|
||||
|
||||
Reserved names (built-in theme names like `+light+` and any name
|
||||
starting with `+backup-+`) are refused. Files live at
|
||||
|
||||
@@ -2167,13 +2167,9 @@ Save the current themable options as a new user theme file:
|
||||
/theme save mytheme
|
||||
----
|
||||
|
||||
By default only options whose value differs from their hardcoded
|
||||
default are written, keeping the file small and focused. To capture
|
||||
every themable option:
|
||||
|
||||
----
|
||||
/theme save mytheme -full
|
||||
----
|
||||
Every themable option is written, so the file is self-contained and
|
||||
applies the exact same look on any WeeChat, regardless of its current
|
||||
configuration.
|
||||
|
||||
Reserved names (built-in theme names like `+light+` and any name
|
||||
starting with `+backup-+`) are refused. Files live at
|
||||
|
||||
@@ -23,7 +23,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-07-04 21:42+0200\n"
|
||||
"POT-Creation-Date: 2026-07-04 21:47+0200\n"
|
||||
"PO-Revision-Date: 2026-05-30 14:01+0200\n"
|
||||
"Last-Translator: Ondřej Súkup <mimi.vx@gmail.com>\n"
|
||||
"Language-Team: Czech <weechat-dev@nongnu.org>\n"
|
||||
@@ -3714,8 +3714,8 @@ msgstr "seznam položek polí"
|
||||
|
||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||
msgid ""
|
||||
"[list [-backups]] || apply <name> || reset || save <name> [-full] || rename "
|
||||
"<old> <new> || del <name> || info <name>"
|
||||
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||
"<new> || del <name> || info <name>"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
@@ -3742,9 +3742,8 @@ msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||
"\"themes\"; by default only options whose value differs from their default "
|
||||
"are written, use \"-full\" to write every themable option; the name must not "
|
||||
"match a built-in theme or start with \"backup-\""
|
||||
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||
"the name must not match a built-in theme or start with \"backup-\""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
|
||||
@@ -26,7 +26,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-07-04 21:42+0200\n"
|
||||
"POT-Creation-Date: 2026-07-04 21:47+0200\n"
|
||||
"PO-Revision-Date: 2026-06-28 08:28+0200\n"
|
||||
"Last-Translator: Nils Görs <weechatter@arcor.de>\n"
|
||||
"Language-Team: German <weechatter@arcor.de>\n"
|
||||
@@ -4106,8 +4106,8 @@ msgstr "Verwalten von benutzerdefinierten Bar-Items"
|
||||
|
||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||
msgid ""
|
||||
"[list [-backups]] || apply <name> || reset || save <name> [-full] || rename "
|
||||
"<old> <new> || del <name> || info <name>"
|
||||
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||
"<new> || del <name> || info <name>"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
@@ -4141,9 +4141,8 @@ msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||
"\"themes\"; by default only options whose value differs from their default "
|
||||
"are written, use \"-full\" to write every themable option; the name must not "
|
||||
"match a built-in theme or start with \"backup-\""
|
||||
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||
"the name must not match a built-in theme or start with \"backup-\""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
|
||||
@@ -24,7 +24,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-07-04 21:42+0200\n"
|
||||
"POT-Creation-Date: 2026-07-04 21:47+0200\n"
|
||||
"PO-Revision-Date: 2026-06-28 08:46+0200\n"
|
||||
"Last-Translator: Santiago Forero <santiago@forero.xyz>\n"
|
||||
"Language-Team: Spanish <weechat-dev@nongnu.org>\n"
|
||||
@@ -3806,8 +3806,8 @@ msgstr "lista de elementos de barra"
|
||||
|
||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||
msgid ""
|
||||
"[list [-backups]] || apply <name> || reset || save <name> [-full] || rename "
|
||||
"<old> <new> || del <name> || info <name>"
|
||||
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||
"<new> || del <name> || info <name>"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
@@ -3834,9 +3834,8 @@ msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||
"\"themes\"; by default only options whose value differs from their default "
|
||||
"are written, use \"-full\" to write every themable option; the name must not "
|
||||
"match a built-in theme or start with \"backup-\""
|
||||
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||
"the name must not match a built-in theme or start with \"backup-\""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
|
||||
@@ -23,8 +23,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-07-04 21:42+0200\n"
|
||||
"PO-Revision-Date: 2026-07-04 21:42+0200\n"
|
||||
"POT-Creation-Date: 2026-07-04 21:47+0200\n"
|
||||
"PO-Revision-Date: 2026-07-04 21:52+0200\n"
|
||||
"Last-Translator: Sébastien Helleu <flashcode@flashtux.org>\n"
|
||||
"Language-Team: French <flashcode@flashtux.org>\n"
|
||||
"Language: fr\n"
|
||||
@@ -4031,11 +4031,11 @@ msgstr "gestion des thèmes de couleurs"
|
||||
|
||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||
msgid ""
|
||||
"[list [-backups]] || apply <name> || reset || save <name> [-full] || rename "
|
||||
"<old> <new> || del <name> || info <name>"
|
||||
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||
"<new> || del <name> || info <name>"
|
||||
msgstr ""
|
||||
"[list [-backups]] || apply <nom> || reset || save <nom> [-full] || rename "
|
||||
"<ancien> <nouveau> || del <nom> || info <nom>"
|
||||
"[list [-backups]] || apply <nom> || reset || save <nom> || rename <ancien> "
|
||||
"<nouveau> || del <nom> || info <nom>"
|
||||
|
||||
msgid ""
|
||||
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||
@@ -4067,14 +4067,12 @@ msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||
"\"themes\"; by default only options whose value differs from their default "
|
||||
"are written, use \"-full\" to write every themable option; the name must not "
|
||||
"match a built-in theme or start with \"backup-\""
|
||||
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||
"the name must not match a built-in theme or start with \"backup-\""
|
||||
msgstr ""
|
||||
"raw[save] : sauvegarder les options de thème dans un fichier <nom>.theme "
|
||||
"dans le répertoire \"themes\" ; par défaut seulement les options dont la "
|
||||
"valeur diffère de leur valeur par défaut sont écrites, utilisez \"-full\" "
|
||||
"pour écrire toutes les options ; le nom ne doit pas correspondre à un thème "
|
||||
"dans le répertoire \"themes\" ; toutes les options de thème sont écrites, le "
|
||||
"fichier est donc autonome ; le nom ne doit pas correspondre à un thème "
|
||||
"intégré ou démarrer par \"backup-\""
|
||||
|
||||
msgid "raw[rename]: rename a user theme file"
|
||||
|
||||
@@ -22,7 +22,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-07-04 21:42+0200\n"
|
||||
"POT-Creation-Date: 2026-07-04 21:47+0200\n"
|
||||
"PO-Revision-Date: 2026-03-08 08:59+0100\n"
|
||||
"Last-Translator: Andras Voroskoi <voroskoi@frugalware.org>\n"
|
||||
"Language-Team: Hungarian <weechat-dev@nongnu.org>\n"
|
||||
@@ -3559,8 +3559,8 @@ msgstr "Aliaszok listája:\n"
|
||||
|
||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||
msgid ""
|
||||
"[list [-backups]] || apply <name> || reset || save <name> [-full] || rename "
|
||||
"<old> <new> || del <name> || info <name>"
|
||||
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||
"<new> || del <name> || info <name>"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
@@ -3586,9 +3586,8 @@ msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||
"\"themes\"; by default only options whose value differs from their default "
|
||||
"are written, use \"-full\" to write every themable option; the name must not "
|
||||
"match a built-in theme or start with \"backup-\""
|
||||
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||
"the name must not match a built-in theme or start with \"backup-\""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
|
||||
@@ -22,7 +22,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-07-04 21:42+0200\n"
|
||||
"POT-Creation-Date: 2026-07-04 21:47+0200\n"
|
||||
"PO-Revision-Date: 2026-05-30 14:02+0200\n"
|
||||
"Last-Translator: Esteban I. Ruiz Moreno <exio4.com@gmail.com>\n"
|
||||
"Language-Team: Italian <weechat-dev@nongnu.org>\n"
|
||||
@@ -3737,8 +3737,8 @@ msgstr "elenco degli elementi barra"
|
||||
|
||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||
msgid ""
|
||||
"[list [-backups]] || apply <name> || reset || save <name> [-full] || rename "
|
||||
"<old> <new> || del <name> || info <name>"
|
||||
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||
"<new> || del <name> || info <name>"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
@@ -3765,9 +3765,8 @@ msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||
"\"themes\"; by default only options whose value differs from their default "
|
||||
"are written, use \"-full\" to write every themable option; the name must not "
|
||||
"match a built-in theme or start with \"backup-\""
|
||||
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||
"the name must not match a built-in theme or start with \"backup-\""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
|
||||
@@ -22,7 +22,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-07-04 21:42+0200\n"
|
||||
"POT-Creation-Date: 2026-07-04 21:47+0200\n"
|
||||
"PO-Revision-Date: 2026-05-30 14:02+0200\n"
|
||||
"Last-Translator: AYANOKOUZI, Ryuunosuke <i38w7i3@yahoo.co.jp>\n"
|
||||
"Language-Team: Japanese <weechat-dev@nongnu.org>\n"
|
||||
@@ -3822,8 +3822,8 @@ msgstr "バー要素のリスト"
|
||||
|
||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||
msgid ""
|
||||
"[list [-backups]] || apply <name> || reset || save <name> [-full] || rename "
|
||||
"<old> <new> || del <name> || info <name>"
|
||||
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||
"<new> || del <name> || info <name>"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
@@ -3850,9 +3850,8 @@ msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||
"\"themes\"; by default only options whose value differs from their default "
|
||||
"are written, use \"-full\" to write every themable option; the name must not "
|
||||
"match a built-in theme or start with \"backup-\""
|
||||
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||
"the name must not match a built-in theme or start with \"backup-\""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
|
||||
@@ -23,7 +23,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-07-04 21:42+0200\n"
|
||||
"POT-Creation-Date: 2026-07-04 21:47+0200\n"
|
||||
"PO-Revision-Date: 2026-06-28 08:55+0200\n"
|
||||
"Last-Translator: Krzysztof Korościk <soltys@soltys.info>\n"
|
||||
"Language-Team: Polish <soltys@soltys.info>\n"
|
||||
@@ -3932,8 +3932,8 @@ msgstr "zarządza niestandardowymi elementami pasków"
|
||||
|
||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||
msgid ""
|
||||
"[list [-backups]] || apply <name> || reset || save <name> [-full] || rename "
|
||||
"<old> <new> || del <name> || info <name>"
|
||||
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||
"<new> || del <name> || info <name>"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
@@ -3966,9 +3966,8 @@ msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||
"\"themes\"; by default only options whose value differs from their default "
|
||||
"are written, use \"-full\" to write every themable option; the name must not "
|
||||
"match a built-in theme or start with \"backup-\""
|
||||
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||
"the name must not match a built-in theme or start with \"backup-\""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
|
||||
@@ -22,7 +22,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-07-04 21:42+0200\n"
|
||||
"POT-Creation-Date: 2026-07-04 21:47+0200\n"
|
||||
"PO-Revision-Date: 2026-06-28 08:48+0200\n"
|
||||
"Last-Translator: Vasco Almeida <vascomalmeida@sapo.pt>\n"
|
||||
"Language-Team: Portuguese <weechat-dev@nongnu.org>\n"
|
||||
@@ -3831,8 +3831,8 @@ msgstr "lista de itens da barra"
|
||||
|
||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||
msgid ""
|
||||
"[list [-backups]] || apply <name> || reset || save <name> [-full] || rename "
|
||||
"<old> <new> || del <name> || info <name>"
|
||||
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||
"<new> || del <name> || info <name>"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
@@ -3859,9 +3859,8 @@ msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||
"\"themes\"; by default only options whose value differs from their default "
|
||||
"are written, use \"-full\" to write every themable option; the name must not "
|
||||
"match a built-in theme or start with \"backup-\""
|
||||
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||
"the name must not match a built-in theme or start with \"backup-\""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
|
||||
+5
-6
@@ -46,7 +46,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-07-04 21:42+0200\n"
|
||||
"POT-Creation-Date: 2026-07-04 21:47+0200\n"
|
||||
"PO-Revision-Date: 2026-06-28 08:49+0200\n"
|
||||
"Last-Translator: Érico Nogueira <ericonr@disroot.org>\n"
|
||||
"Language-Team: Portuguese (Brazil) <weechat-dev@nongnu.org>\n"
|
||||
@@ -3751,8 +3751,8 @@ msgstr "lista de itens da barra"
|
||||
|
||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||
msgid ""
|
||||
"[list [-backups]] || apply <name> || reset || save <name> [-full] || rename "
|
||||
"<old> <new> || del <name> || info <name>"
|
||||
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||
"<new> || del <name> || info <name>"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
@@ -3779,9 +3779,8 @@ msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||
"\"themes\"; by default only options whose value differs from their default "
|
||||
"are written, use \"-full\" to write every themable option; the name must not "
|
||||
"match a built-in theme or start with \"backup-\""
|
||||
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||
"the name must not match a built-in theme or start with \"backup-\""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
|
||||
@@ -23,7 +23,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-07-04 21:42+0200\n"
|
||||
"POT-Creation-Date: 2026-07-04 21:47+0200\n"
|
||||
"PO-Revision-Date: 2026-03-08 08:59+0100\n"
|
||||
"Last-Translator: Aleksey V Zapparov AKA ixti <ixti@member.fsf.org>\n"
|
||||
"Language-Team: Russian <weechat-dev@nongnu.org>\n"
|
||||
@@ -3583,8 +3583,8 @@ msgstr "Список сокращений:\n"
|
||||
|
||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||
msgid ""
|
||||
"[list [-backups]] || apply <name> || reset || save <name> [-full] || rename "
|
||||
"<old> <new> || del <name> || info <name>"
|
||||
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||
"<new> || del <name> || info <name>"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
@@ -3610,9 +3610,8 @@ msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||
"\"themes\"; by default only options whose value differs from their default "
|
||||
"are written, use \"-full\" to write every themable option; the name must not "
|
||||
"match a built-in theme or start with \"backup-\""
|
||||
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||
"the name must not match a built-in theme or start with \"backup-\""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
|
||||
@@ -22,7 +22,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-07-04 21:42+0200\n"
|
||||
"POT-Creation-Date: 2026-07-04 21:47+0200\n"
|
||||
"PO-Revision-Date: 2026-06-28 08:52+0200\n"
|
||||
"Last-Translator: Ivan Pešić <ivan.pesic@gmail.com>\n"
|
||||
"Language-Team: Serbian <ivan.pesic@gmail.com>\n"
|
||||
@@ -3909,8 +3909,8 @@ msgstr "управљање прилагођеним ставкама траке"
|
||||
|
||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||
msgid ""
|
||||
"[list [-backups]] || apply <name> || reset || save <name> [-full] || rename "
|
||||
"<old> <new> || del <name> || info <name>"
|
||||
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||
"<new> || del <name> || info <name>"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
@@ -3943,9 +3943,8 @@ msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||
"\"themes\"; by default only options whose value differs from their default "
|
||||
"are written, use \"-full\" to write every themable option; the name must not "
|
||||
"match a built-in theme or start with \"backup-\""
|
||||
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||
"the name must not match a built-in theme or start with \"backup-\""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
|
||||
@@ -23,7 +23,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-07-04 21:42+0200\n"
|
||||
"POT-Creation-Date: 2026-07-04 21:47+0200\n"
|
||||
"PO-Revision-Date: 2026-06-28 08:53+0200\n"
|
||||
"Last-Translator: Emir SARI <emir_sari@icloud.com>\n"
|
||||
"Language-Team: Turkish <emir_sari@icloud.com>\n"
|
||||
@@ -3768,8 +3768,8 @@ msgstr "özel çubuk ögelerini yönet"
|
||||
|
||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||
msgid ""
|
||||
"[list [-backups]] || apply <name> || reset || save <name> [-full] || rename "
|
||||
"<old> <new> || del <name> || info <name>"
|
||||
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||
"<new> || del <name> || info <name>"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
@@ -3798,9 +3798,8 @@ msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||
"\"themes\"; by default only options whose value differs from their default "
|
||||
"are written, use \"-full\" to write every themable option; the name must not "
|
||||
"match a built-in theme or start with \"backup-\""
|
||||
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||
"the name must not match a built-in theme or start with \"backup-\""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
|
||||
+5
-6
@@ -23,7 +23,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-07-04 21:42+0200\n"
|
||||
"POT-Creation-Date: 2026-07-04 21:47+0200\n"
|
||||
"PO-Revision-Date: 2014-08-16 10:27+0200\n"
|
||||
"Last-Translator: Sébastien Helleu <flashcode@flashtux.org>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
@@ -3351,8 +3351,8 @@ msgstr ""
|
||||
|
||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||
msgid ""
|
||||
"[list [-backups]] || apply <name> || reset || save <name> [-full] || rename "
|
||||
"<old> <new> || del <name> || info <name>"
|
||||
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||
"<new> || del <name> || info <name>"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
@@ -3377,9 +3377,8 @@ msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||
"\"themes\"; by default only options whose value differs from their default "
|
||||
"are written, use \"-full\" to write every themable option; the name must not "
|
||||
"match a built-in theme or start with \"backup-\""
|
||||
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||
"the name must not match a built-in theme or start with \"backup-\""
|
||||
msgstr ""
|
||||
|
||||
msgid "raw[rename]: rename a user theme file"
|
||||
|
||||
+7
-11
@@ -7345,14 +7345,11 @@ COMMAND_CALLBACK(theme)
|
||||
return theme_reset ();
|
||||
}
|
||||
|
||||
/* "/theme save <name> [-full]": write a user theme file */
|
||||
/* "/theme save <name>": write a user theme file */
|
||||
if (string_strcmp (argv[1], "save") == 0)
|
||||
{
|
||||
COMMAND_MIN_ARGS(3, "save");
|
||||
return theme_save (argv[2],
|
||||
((argc >= 4)
|
||||
&& (string_strcmp (argv[3], "-full") == 0))
|
||||
? 1 : 0);
|
||||
return theme_save (argv[2]);
|
||||
}
|
||||
|
||||
/* "/theme rename <old> <new>": rename a user theme file */
|
||||
@@ -10093,7 +10090,7 @@ command_init (void)
|
||||
N_("[list [-backups]]"
|
||||
" || apply <name>"
|
||||
" || reset"
|
||||
" || save <name> [-full]"
|
||||
" || save <name>"
|
||||
" || rename <old> <new>"
|
||||
" || del <name>"
|
||||
" || info <name>"),
|
||||
@@ -10109,10 +10106,9 @@ command_init (void)
|
||||
N_("raw[reset]: reset every themable option to its default "
|
||||
"value (restores the original look shipped with WeeChat)"),
|
||||
N_("raw[save]: save current themable options to a file "
|
||||
"<name>.theme in directory \"themes\"; by default only "
|
||||
"options whose value differs from their default are "
|
||||
"written, use \"-full\" to write every themable option; "
|
||||
"the name must not match a built-in theme or start with "
|
||||
"<name>.theme in directory \"themes\"; every themable "
|
||||
"option is written, so the file is self-contained; the "
|
||||
"name must not match a built-in theme or start with "
|
||||
"\"backup-\""),
|
||||
N_("raw[rename]: rename a user theme file"),
|
||||
N_("raw[del]: delete a user theme file"),
|
||||
@@ -10133,7 +10129,7 @@ command_init (void)
|
||||
"list -backups"
|
||||
" || apply %(theme_themes_all)"
|
||||
" || reset"
|
||||
" || save %(theme_themes_user) -full"
|
||||
" || save %(theme_themes_user)"
|
||||
" || rename %(theme_themes_files)"
|
||||
" || del %(theme_themes_user)"
|
||||
" || info %(theme_themes_all)",
|
||||
|
||||
+12
-18
@@ -543,13 +543,12 @@ theme_make_backup_name (void)
|
||||
* Write a snapshot of themable options to a .theme file at
|
||||
* "<weechat_config_dir>/themes/<name>.theme".
|
||||
*
|
||||
* The themes directory is created if missing. The file contains an
|
||||
* [info] section (name, description, date, weechat version) followed by
|
||||
* an [options] section.
|
||||
* The themes directory is created if missing.
|
||||
*
|
||||
* If "diff_only" is non-zero, only options whose value differs from
|
||||
* their default (config_file_option_has_changed) are written. If zero,
|
||||
* every themable option is written (full snapshot).
|
||||
* The file contains an [info] section (name, description, date, weechat version)
|
||||
* followed by an [options] section. Every themable option is always
|
||||
* written (full snapshot), so a theme file is self-contained and round-trips
|
||||
* exactly, regardless of the current configuration.
|
||||
*
|
||||
* Return path to saved file on success, NULL on error.
|
||||
*
|
||||
@@ -557,7 +556,7 @@ theme_make_backup_name (void)
|
||||
*/
|
||||
|
||||
char *
|
||||
theme_write_file (const char *name, const char *description, int diff_only)
|
||||
theme_write_file (const char *name, const char *description)
|
||||
{
|
||||
char *path, *dir, *value, *now;
|
||||
FILE *file;
|
||||
@@ -608,8 +607,6 @@ theme_write_file (const char *name, const char *description, int diff_only)
|
||||
{
|
||||
if (!ptr_option->themable)
|
||||
continue;
|
||||
if (diff_only && !config_file_option_has_changed (ptr_option))
|
||||
continue;
|
||||
value = config_file_option_value_to_string (
|
||||
ptr_option, 0, 0, 1);
|
||||
fprintf (file, "%s.%s.%s = %s\n",
|
||||
@@ -641,10 +638,7 @@ theme_make_backup (void)
|
||||
name = theme_make_backup_name ();
|
||||
if (!name)
|
||||
return NULL;
|
||||
path = theme_write_file (
|
||||
name,
|
||||
_("Automatic backup"),
|
||||
0); /* full snapshot: backups must round-trip exactly */
|
||||
path = theme_write_file (name, _("Automatic backup"));
|
||||
if (!path)
|
||||
{
|
||||
free (name);
|
||||
@@ -1122,16 +1116,16 @@ theme_reset (void)
|
||||
* Save the current themable options to a user theme file.
|
||||
*
|
||||
* Refuse names that match a built-in theme (registered via API) or
|
||||
* that start with "backup-" (reserved for automatic backups). If
|
||||
* "full" is non-zero, every themable option is written; otherwise
|
||||
* only options whose value differs from their default are written.
|
||||
* that start with "backup-" (reserved for automatic backups). Every
|
||||
* themable option is written (full snapshot), so the file is
|
||||
* self-contained and round-trips exactly.
|
||||
*
|
||||
* Return WEECHAT_RC_OK on success, WEECHAT_RC_ERROR on validation or
|
||||
* I/O failure.
|
||||
*/
|
||||
|
||||
int
|
||||
theme_save (const char *name, int full)
|
||||
theme_save (const char *name)
|
||||
{
|
||||
char *path;
|
||||
|
||||
@@ -1158,7 +1152,7 @@ theme_save (const char *name, int full)
|
||||
return WEECHAT_RC_ERROR;
|
||||
}
|
||||
|
||||
path = theme_write_file (name, NULL, (full) ? 0 : 1);
|
||||
path = theme_write_file (name, NULL);
|
||||
if (!path)
|
||||
{
|
||||
gui_chat_printf (NULL,
|
||||
|
||||
@@ -70,7 +70,7 @@ extern const char *theme_get_override (struct t_theme *theme,
|
||||
extern struct t_arraylist *theme_list (void);
|
||||
extern int theme_apply (const char *name);
|
||||
extern int theme_reset (void);
|
||||
extern int theme_save (const char *name, int full);
|
||||
extern int theme_save (const char *name);
|
||||
extern int theme_rename (const char *old_name, const char *new_name);
|
||||
extern int theme_delete (const char *name);
|
||||
extern char *theme_make_backup (void);
|
||||
|
||||
@@ -48,8 +48,7 @@ extern struct t_theme *theme_alloc (const char *name);
|
||||
extern void theme_free (struct t_theme *theme);
|
||||
extern char *theme_user_file_path (const char *name);
|
||||
extern char *theme_make_backup_name (void);
|
||||
extern char *theme_write_file (const char *name, const char *description,
|
||||
int diff_only);
|
||||
extern char *theme_write_file (const char *name, const char *description);
|
||||
extern char *theme_file_strip_quotes (char *value);
|
||||
extern struct t_theme *theme_file_parse (const char *path);
|
||||
}
|
||||
@@ -341,20 +340,19 @@ TEST(CoreTheme, WriteFile)
|
||||
char *path, *expected_path, line[8192];
|
||||
FILE *file;
|
||||
int saw_info, saw_name, saw_description, saw_date, saw_weechat;
|
||||
int saw_options_section, saw_an_option;
|
||||
int saw_options_section, saw_an_option, full_options;
|
||||
int saw_color_code, saw_string_option, string_option_quoted;
|
||||
int full_options, diff_options;
|
||||
|
||||
/* refuse empty/NULL */
|
||||
POINTERS_EQUAL(NULL, theme_write_file (NULL, NULL, 0));
|
||||
POINTERS_EQUAL(NULL, theme_write_file ("", NULL, 0));
|
||||
POINTERS_EQUAL(NULL, theme_write_file (NULL, NULL));
|
||||
POINTERS_EQUAL(NULL, theme_write_file ("", NULL));
|
||||
|
||||
/* full snapshot: every themable option is written; the returned
|
||||
path matches the expected theme file path */
|
||||
expected_path = theme_user_file_path ("test_wrt");
|
||||
CHECK(expected_path != NULL);
|
||||
|
||||
path = theme_write_file ("test_wrt", "a description", 0);
|
||||
path = theme_write_file ("test_wrt", "a description");
|
||||
CHECK(path != NULL);
|
||||
STRCMP_EQUAL(expected_path, path);
|
||||
free (path);
|
||||
@@ -418,34 +416,6 @@ TEST(CoreTheme, WriteFile)
|
||||
LONGS_EQUAL(1, string_option_quoted);
|
||||
CHECK(full_options > 10); /* core has many themable options */
|
||||
|
||||
unlink (path);
|
||||
|
||||
/* diff-only snapshot in a freshly initialized config writes very
|
||||
few (typically zero) [options] entries — never more than the
|
||||
full snapshot */
|
||||
path = theme_write_file ("test_wrt", NULL, 1);
|
||||
CHECK(path != NULL);
|
||||
STRCMP_EQUAL(expected_path, path);
|
||||
free (path);
|
||||
|
||||
path = expected_path;
|
||||
|
||||
file = fopen (path, "r");
|
||||
CHECK(file != NULL);
|
||||
diff_options = 0;
|
||||
saw_options_section = 0;
|
||||
while (fgets (line, sizeof (line) - 1, file))
|
||||
{
|
||||
if (strncmp (line, "[options]", 9) == 0)
|
||||
saw_options_section = 1;
|
||||
else if (saw_options_section
|
||||
&& (strchr (line, '=') != NULL)
|
||||
&& (strchr (line, '.') != NULL))
|
||||
diff_options++;
|
||||
}
|
||||
fclose (file);
|
||||
CHECK(diff_options < full_options);
|
||||
|
||||
unlink (path);
|
||||
free (path);
|
||||
}
|
||||
@@ -627,7 +597,7 @@ TEST(CoreTheme, ApplyFileShadowsBuiltin)
|
||||
hashtable_free (overrides);
|
||||
|
||||
/* drop a same-named user file with a DIFFERENT value */
|
||||
LONGS_EQUAL(WEECHAT_RC_OK, theme_save ("user_throwaway", 0)); /* ensures themes dir exists */
|
||||
LONGS_EQUAL(WEECHAT_RC_OK, theme_save ("user_throwaway")); /* ensures themes dir exists */
|
||||
path = theme_user_file_path ("shadow_test");
|
||||
CHECK(path != NULL);
|
||||
f = fopen (path, "w");
|
||||
@@ -912,28 +882,18 @@ TEST(CoreTheme, Save)
|
||||
struct stat st;
|
||||
|
||||
/* NULL / empty => error, no file */
|
||||
LONGS_EQUAL(WEECHAT_RC_ERROR, theme_save (NULL, 0));
|
||||
LONGS_EQUAL(WEECHAT_RC_ERROR, theme_save ("", 0));
|
||||
LONGS_EQUAL(WEECHAT_RC_ERROR, theme_save (NULL));
|
||||
LONGS_EQUAL(WEECHAT_RC_ERROR, theme_save (""));
|
||||
|
||||
/* reserved "backup-" prefix => error */
|
||||
LONGS_EQUAL(WEECHAT_RC_ERROR, theme_save ("backup-anything", 0));
|
||||
LONGS_EQUAL(WEECHAT_RC_ERROR, theme_save ("backup-anything", 1));
|
||||
LONGS_EQUAL(WEECHAT_RC_ERROR, theme_save ("backup-anything"));
|
||||
|
||||
/* name colliding with a built-in is refused */
|
||||
theme_register (NULL, NULL, "dark", NULL);
|
||||
LONGS_EQUAL(WEECHAT_RC_ERROR, theme_save ("dark", 0));
|
||||
LONGS_EQUAL(WEECHAT_RC_ERROR, theme_save ("dark", 1));
|
||||
LONGS_EQUAL(WEECHAT_RC_ERROR, theme_save ("dark"));
|
||||
|
||||
/* happy path: sparse save => file exists */
|
||||
LONGS_EQUAL(WEECHAT_RC_OK, theme_save ("save_test", 0));
|
||||
path = theme_user_file_path ("save_test");
|
||||
CHECK(path != NULL);
|
||||
LONGS_EQUAL(0, stat (path, &st));
|
||||
unlink (path);
|
||||
free (path);
|
||||
|
||||
/* happy path: full snapshot => file exists, bigger than sparse */
|
||||
LONGS_EQUAL(WEECHAT_RC_OK, theme_save ("save_test", 1));
|
||||
/* happy path: full snapshot => file exists, with options written */
|
||||
LONGS_EQUAL(WEECHAT_RC_OK, theme_save ("save_test"));
|
||||
path = theme_user_file_path ("save_test");
|
||||
CHECK(path != NULL);
|
||||
LONGS_EQUAL(0, stat (path, &st));
|
||||
@@ -965,7 +925,7 @@ TEST(CoreTheme, Delete)
|
||||
|
||||
/* happy path: write a file via theme_save (also ensures the themes
|
||||
directory exists), delete it, confirm it is gone */
|
||||
LONGS_EQUAL(WEECHAT_RC_OK, theme_save ("del_test", 0));
|
||||
LONGS_EQUAL(WEECHAT_RC_OK, theme_save ("del_test"));
|
||||
path = theme_user_file_path ("del_test");
|
||||
CHECK(path != NULL);
|
||||
LONGS_EQUAL(0, stat (path, &st));
|
||||
@@ -999,7 +959,7 @@ TEST(CoreTheme, Rename)
|
||||
LONGS_EQUAL(WEECHAT_RC_ERROR, theme_rename ("dark", "renamed"));
|
||||
|
||||
/* refuses target == reserved "backup-" prefix */
|
||||
LONGS_EQUAL(WEECHAT_RC_OK, theme_save ("rn_src", 0));
|
||||
LONGS_EQUAL(WEECHAT_RC_OK, theme_save ("rn_src"));
|
||||
LONGS_EQUAL(WEECHAT_RC_ERROR, theme_rename ("rn_src", "backup-foo"));
|
||||
|
||||
/* refuses target == built-in name */
|
||||
@@ -1012,7 +972,7 @@ TEST(CoreTheme, Rename)
|
||||
LONGS_EQUAL(WEECHAT_RC_ERROR, theme_rename ("does_not_exist", "rn_dst"));
|
||||
|
||||
/* refuses target that already exists */
|
||||
LONGS_EQUAL(WEECHAT_RC_OK, theme_save ("rn_dst", 0));
|
||||
LONGS_EQUAL(WEECHAT_RC_OK, theme_save ("rn_dst"));
|
||||
LONGS_EQUAL(WEECHAT_RC_ERROR, theme_rename ("rn_src", "rn_dst"));
|
||||
LONGS_EQUAL(WEECHAT_RC_OK, theme_delete ("rn_dst"));
|
||||
|
||||
@@ -1038,7 +998,7 @@ TEST(CoreTheme, Rename)
|
||||
CHECK(strstr (buf, "name = \"rn_src\"") == NULL);
|
||||
|
||||
/* if weechat.look.theme pointed at the old name, the label moves too */
|
||||
LONGS_EQUAL(WEECHAT_RC_OK, theme_save ("rn_active", 0));
|
||||
LONGS_EQUAL(WEECHAT_RC_OK, theme_save ("rn_active"));
|
||||
config_file_option_set (config_look_theme, "rn_active", 1);
|
||||
LONGS_EQUAL(WEECHAT_RC_OK, theme_rename ("rn_active", "rn_moved"));
|
||||
STRCMP_EQUAL("rn_moved", CONFIG_STRING(config_look_theme));
|
||||
|
||||
Reference in New Issue
Block a user