summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSébastien Helleu <flashcode@flashtux.org>2022-11-06 09:07:25 +0100
committerSébastien Helleu <flashcode@flashtux.org>2022-11-06 09:14:18 +0100
commitf18b96bb59eeebdd50b8c2af04265c2ea2b5c820 (patch)
tree2c2eb3ec49dcd449073a4a4bf3f577d072fca3c2
parentb2605902dbb1888f76ccd4c039f5546322661c48 (diff)
downloadweechat-f18b96bb59eeebdd50b8c2af04265c2ea2b5c820.zip
core: update translations
-rw-r--r--doc/de/includes/autogen_user_commands.de.adoc237
-rw-r--r--doc/en/includes/autogen_user_commands.en.adoc59
-rw-r--r--doc/fr/includes/autogen_user_commands.fr.adoc61
-rw-r--r--doc/it/includes/autogen_user_commands.it.adoc59
-rw-r--r--doc/ja/includes/autogen_user_commands.ja.adoc59
-rw-r--r--doc/pl/includes/autogen_user_commands.pl.adoc59
-rw-r--r--doc/sr/includes/autogen_user_commands.sr.adoc153
-rw-r--r--po/cs.po70
-rw-r--r--po/de.po224
-rw-r--r--po/es.po70
-rw-r--r--po/fr.po137
-rw-r--r--po/hu.po70
-rw-r--r--po/it.po70
-rw-r--r--po/ja.po70
-rw-r--r--po/pl.po70
-rw-r--r--po/pt.po70
-rw-r--r--po/pt_BR.po70
-rw-r--r--po/ru.po70
-rw-r--r--po/sr.po224
-rw-r--r--po/tr.po224
-rw-r--r--po/weechat.pot70
21 files changed, 1369 insertions, 827 deletions
diff --git a/doc/de/includes/autogen_user_commands.de.adoc b/doc/de/includes/autogen_user_commands.de.adoc
index 83d06bf40..b73eae4fe 100644
--- a/doc/de/includes/autogen_user_commands.de.adoc
+++ b/doc/de/includes/autogen_user_commands.de.adoc
@@ -1373,130 +1373,133 @@ infolists: zeigt Information über die Infolists an
/eval [-n|-s] [-d] <expression>
[-n] [-d [-d]] -c <expression1> <operator> <expression2>
- -n: gibt das Ergebnis aus, ohne dass dieses in den Buffer gesendet wird (debug Modus)
- -s: teilt Ausdrücke, bevor sie evaluiert werden (mehrere Befehle können durch Semikolon getrennt werden)
- -d: eine Debug-Ausgabe nach Auswertung anzeigen (Nutzung von zwei -d: ausführliche Debug-Ausgabe)
- -c: Auswertung als Bedingung: nutzt Operatoren und runde Klammern, Rückgabewert als Boolean-Wert ("0" oder "1")
-expression: Ausdruck welcher verarbeitet werden soll. Variablen im Format ${variable} werden ersetzt (siehe unten); mehrere Befehle werden durch ein Semikolon voneinander getrennt
- operator: ein logischer oder vergleichender Operand:
- - logische Operanden:
- && boolean "und"
- || boolean "oder"
- - vergleichende Operanden:
- == gleich
- != ungleich
- <= kleiner oder gleich
- < kleiner
- >= größer oder gleich
- > größer
- =~ stimmt mit regulärem POSIX Ausdruck überein
- !~ stimmt NICHT mit regulärem POSIX Ausdruck überein
- ==* stimmt mit Maske überein (Platzhalter "*" ist erlaubt)
- !!* stimmt mit Maske NICHT überein (Platzhalter "*" ist erlaubt)
- =* stimmt mit Maske überein, Groß- und Kleinschreibung wird nicht beachtet (Platzhalter "*" ist erlaubt)
- !* stimmt mit Maske NICHT überein, Groß- und Kleinschreibung wird nicht beachtet (Platzhalter "*" ist erlaubt)
- ==- ist enthalten, Groß- und Kleinschreibung wird beachtet
- !!- ist NICHT enthalten, Groß- und Kleinschreibung wird beachtet
- =- ist enthalten, Groß- und Kleinschreibung wird nicht beachtet
- !- ist NICHT enthalten, Groß- und Kleinschreibung wird nicht beachtet
-
-Ein Ausdruck gilt als "wahr" sofern das Ergebnis weder NULL, nicht leer und von "0" abweichend ist.
-Für einen Vergleich werden Fließkommazahlen genutzt, insofern es sich bei beiden Ausdrücken um gültige Zahlen handelt, folgende Formate werden unterstützt:
- - Integer (Beispiele: 5, -7)
- - Fließkommazahl (Beispiele: 5.2, -7.5, 2.83e-2)
- - hexadezimale Zahl (Beispiele: 0xA3, -0xA3)
-Um einen Vergleich zwischen zwei Zeichenketten zu erzwingen, müssen die Ausdrücke in Anführungszeichen gesetzt werden, zum Beispiel:
+ -n: display result without sending it to buffer (debug mode)
+ -s: split expression before evaluating it (many commands can be separated by semicolons)
+ -d: display debug output after evaluation (with two -d: more verbose debug)
+ -c: evaluate as condition: use operators and parentheses, return a boolean value ("0" or "1")
+expression: expression to evaluate, variables with format ${variable} are replaced (see below); many commands can be separated by semicolons
+ operator: a logical or comparison operator:
+ - logical operators:
+ && boolean "and"
+ || boolean "or"
+ - comparison operators:
+ == equal
+ != not equal
+ <= less or equal
+ < less
+ >= greater or equal
+ > greater
+ =~ is matching POSIX extended regex
+ !~ is NOT matching POSIX extended regex
+ ==* is matching mask, case sensitive (wildcard "*" is allowed)
+ !!* is NOT matching mask, case sensitive (wildcard "*" is allowed)
+ =* is matching mask, case insensitive (wildcard "*" is allowed)
+ !* is NOT matching mask, case insensitive (wildcard "*" is allowed)
+ ==- is included, case sensitive
+ !!- is NOT included, case sensitive
+ =- is included, case insensitive
+ !- is NOT included, case insensitive
+
+An expression is considered as "true" if it is not NULL, not empty, and different from "0".
+The comparison is made using floating point numbers if the two expressions are valid numbers, with one of the following formats:
+ - integer (examples: 5, -7)
+ - floating point number (examples: 5.2, -7.5, 2.83e-2)
+ - hexadecimal number (examples: 0xA3, -0xA3)
+To force a string comparison, you can add double quotes around each expression, for example:
50 > 100 ==> 0
"50" > "100" ==> 1
-Einige Variablen werden im Ausdruck mittels der Formatierung ${variable} ersetzt. Mögliche Variablen sind, nach Reihenfolge ihrer Priorität:
- 1. die Zeichenfolge selbst ohne Auswertung (Format: "raw:xxx")
- 2. eine benutzerdefinierte Variable (Format: "name")
- 3. eine evaluierte Teilzeichenkette (Format: "eval:xxx")
- 4. eine evaluierte Bedingung (Format: "eval_cond:xxx")
- 5. eine Zeichenkette mit Escapesequenzen (Format: "esc:xxx" oder "\xxx")
- 6. eine Zeichenfolge, die in Kleinbuchstaben umgewandelt wird (Format: "lower:xxx")
- 7. eine Zeichenfolge, die in Großbuchstaben umgewandelt wird (Format: "upper:xxx")
- 8. Zeichen, die in einer Zeichenkette nicht dargestellt werden sollen (Format: "hide:Zeichen,Zeichenkette")
- 9. eine Zeichenkette mit einer maximalen Anzahl an Zeichen (Format: "cut:max,suffix,string" oder "cut:+max,suffix,string")
- oder maximale Anzahl an Zeichen die auf dem Bildschirm angezeigt werden sollen (Format: "cutscr:Max,Suffix,Zeichenkette oder "cutscr:+Max,Suffix,Zeichenkette")
- 10. eine Zeichenkette umkehren (Format: "rev:xxx" oder "revscr:xxx")
- 11. eine Zeichenkette wiederholen (Format: "repeat:Anzahl,Zeichenkette")
- 12. Länge einer Zeichenkette (Format: "length:xxx" oder "lengthscr:xxx")
- 13. Aufteilen einer Zeichenkette (Format: "split:Anzahl,Trennzeichen,Flags,xxx")
- 14. Aufteilen von Shell-Argumenten (Format: "split_shell:Anzahl,xxx")
- 15. eine Farbe (Format: "color:xxx", siehe "Anleitung für API Erweiterung", Funktion "color")
- 16. zum modifizieren (Format: "modifier:name,data,string")
- 17. eine Info (Format: "Info:Name,Argumente", Argumente sind optional)
- 18. eine Basis 16/32/64 kodierte / dekodierte Zeichenfolge (Format: "base_encode:base,xxx" oder "base_decode:base,xxx")
- 19. aktuelles Datum/Uhrzeit (Format: "date" oder "date:format")
- 20. eine Umgebungsvariable (Format: "env:XXX")
- 21. ein Dreifachoperand (Format: "if:Bedingung?Wert_falls_wahr:Wert_falls_unwahr")
- 22. Ergebnis eines Ausdrucks mit Klammern und Operatoren + - * / // % ** (Format: "calc:xxx")
- 23. eine zufällige ganze Zahl (Format: "random:min,max")
- 24. eine übersetzte Zeichenkette (Format: "translate:xxx")
- 25. eine Benutzervariable definieren (Format: "define:Name,Wert")
- 26. eine Option (Format: "file.section.option")
- 27. eine lokale Variable eines Buffers
- 28. ein(e) hdata - Name/Variable (der Wert wird automatisch in eine Zeichenkette konvertiert), standardmäßig wird für "window" und "buffer" das aktuelle Fenster/Buffer verwendet.
-Das Format für hdata kann wie folgt aufgebaut sein:
- hdata.var1.var2...: startet mit hdata (der Pointer muss bekannt sein) und fragt eine Variable nach der anderen ab (weitere hdata können folgen)
- hdata[list].var1.var2...: startet hdata mittels einer Liste, zum Beispiel:
- ${buffer[gui_buffers].full_name}: der vollständige Name des ersten Buffers, in der verknüpften Liste aller Buffer
- ${plugin[weechat_plugins].name}: Name der ersten Erweiterung, in der verknüpften Liste aller Erweiterungen
- hdata[pointer].var1.var2...: startet hdata mittels einem Pointer, zum Beispiel:
- ${buffer[0x1234abcd].full_name}: vollständiger Name eines Buffers und des dazugehörigen Pointers (kann in triggern benutzt werden)
- ${buffer[my_pointer].full_name}: vollständiger Name des Buffers mit dem entsprechenden Pointernamen (kann in Triggern verwendet werden)
-Die vorhandenen Namen für hdata und Variablen sind in der "Anleitung für API Erweiterung", Bereich "weechat_hdata_get". beschrieben
-
-Beispiele (einfache Zeichenketten):
- /eval -n ${raw:${info:version}} ==> ${info:version}
- /eval -n ${eval_cond:${window.win_width}>100} ==> 1
- /eval -n ${info:version} ==> 0.4.3
- /eval -n ${env:HOME} ==> /home/user
- /eval -n ${weechat.look.scroll_amount} ==> 3
- /eval -n ${sec.data.password} ==> geheim
- /eval -n ${window} ==> 0x2549aa0
- /eval -n ${window.buffer} ==> 0x2549320
- /eval -n ${window.buffer.full_name} ==> core.weechat
- /eval -n ${window.buffer.number} ==> 1
- /eval -n ${\t} ==> <tab>
+Some variables are replaced in expression, using the format ${variable}, variable can be, by order of priority:
+ - the string itself without evaluation (format: "raw:xxx")
+ - a user-defined variable (format: "name")
+ - an evaluated sub-string (format: "eval:xxx")
+ - an evaluated condition (format: "eval_cond:xxx")
+ - a string with escaped chars (format: "esc:xxx" or "\xxx")
+ - a string with a range of chars (format: "chars:xxx" or "chars:c1-c2" where "xxx" is one of: "digit", "xdigit", "lower", "upper", "alpha", "alnum")
+ - a string converted to lower case (format: "lower:xxx")
+ - a string converted to upper case (format: "upper:xxx")
+ - a string with chars to hide (format: "hide:char,string")
+ - a string with max chars (format: "cut:max,suffix,string" or "cut:+max,suffix,string")
+ or max chars displayed on screen (format: "cutscr:max,suffix,string" or "cutscr:+max,suffix,string")
+ - a reversed string (format: "rev:xxx" or "revscr:xxx")
+ - a repeated string (format: "repeat:count,string")
+ - length of a string (format: "length:xxx" or "lengthscr:xxx")
+ - split of a string (format: "split:number,separators,flags,xxx")
+ - split of shell argmuents (format: "split_shell:number,xxx")
+ - a color (format: "color:xxx", see "Plugin API reference", function "color")
+ - a modifier (format: "modifier:name,data,string")
+ - an info (format: "info:name,arguments", arguments are optional)
+ - a base 16/32/64 encoded/decoded string (format: "base_encode:base,xxx" or "base_decode:base,xxx")
+ - current date/time (format: "date" or "date:format")
+ - an environment variable (format: "env:XXX")
+ - a ternary operator (format: "if:condition?value_if_true:value_if_false")
+ - result of an expression with parentheses and operators + - * / // % ** (format: "calc:xxx")
+ - a random integer number (format: "random:min,max")
+ - a translated string (format: "translate:xxx")
+ - define a user variable (format: "define:name,value")
+ - an option (format: "file.section.option")
+ - a local variable in buffer
+ - a hdata name/variable (the value is automatically converted to string), by default "window" and "buffer" point to current window/buffer.
+Format for hdata can be one of following:
+ hdata.var1.var2...: start with a hdata (pointer must be known), and ask variables one after one (other hdata can be followed)
+ hdata[list].var1.var2...: start with a hdata using a list/pointer/pointer name, for example:
+ ${buffer[gui_buffers].full_name}: full name of first buffer in linked list of buffers
+ ${plugin[weechat_plugins].name}: name of first plugin in linked list of plugins
+ hdata[pointer].var1.var2...: start with a hdata using a pointer, for example:
+ ${buffer[0x1234abcd].full_name}: full name of the buffer with this pointer (can be used in triggers)
+ ${buffer[my_pointer].full_name}: full name of the buffer with this pointer name (can be used in triggers)
+For name of hdata and variables, please look at "Plugin API reference", function "weechat_hdata_get".
+
+Examples (simple strings):
+ /eval -n ${raw:${info:version}} ==> ${info:version}
+ /eval -n ${eval_cond:${window.win_width}>100} ==> 1
+ /eval -n ${info:version} ==> 0.4.3
+ /eval -n ${env:HOME} ==> /home/user
+ /eval -n ${weechat.look.scroll_amount} ==> 3
+ /eval -n ${sec.data.password} ==> secret
+ /eval -n ${window} ==> 0x2549aa0
+ /eval -n ${window.buffer} ==> 0x2549320
+ /eval -n ${window.buffer.full_name} ==> core.weechat
+ /eval -n ${window.buffer.number} ==> 1
+ /eval -n ${\t} ==> <tab>
+ /eval -n ${chars:digit} ==> 0123456789
+ /eval -n ${chars:J-T} ==> JKLMNOPQRST
/eval -n ${lower:TEST} ==> test
/eval -n ${upper:test} ==> TEST
- /eval -n ${hide:-,${relay.network.password}} ==> --------
- /eval -n ${cut:3,+,test} ==> tes+
- /eval -n ${cut:+3,+,test} ==> te+
- /eval -n ${date:%H:%M:%S} ==> 07:46:40
- /eval -n ${if:${info:term_width}>80?big:small} ==> big
- /eval -n ${rev:Hello} ==> olleH
- /eval -n ${repeat:5,-} ==> -----
- /eval -n ${length:test} ==> 4
- /eval -n ${split:1,,,abc,def,ghi} ==> abc
- /eval -n ${split:-1,,,abc,def,ghi} ==> ghi
- /eval -n ${split:count,,,abc,def,ghi} ==> 3
- /eval -n ${split:random,,,abc,def,ghi} ==> def
- /eval -n ${split_shell:1,"arg 1" arg2} ==> arg 1
- /eval -n ${split_shell:-1,"arg 1" arg2} ==> arg2
- /eval -n ${split_shell:count,"arg 1" arg2} ==> 2
- /eval -n ${split_shell:random,"arg 1" arg2} ==> arg2
- /eval -n ${calc:(5+2)*3} ==> 21
- /eval -n ${random:0,10} ==> 3
- /eval -n ${base_encode:64,test} ==> dGVzdA==
- /eval -n ${base_decode:64,dGVzdA==} ==> test
- /eval -n ${translate:Plugin} ==> Erweiterung
+ /eval -n ${hide:-,${relay.network.password}} ==> --------
+ /eval -n ${cut:3,+,test} ==> tes+
+ /eval -n ${cut:+3,+,test} ==> te+
+ /eval -n ${date:%H:%M:%S} ==> 07:46:40
+ /eval -n ${if:${info:term_width}>80?big:small} ==> big
+ /eval -n ${rev:Hello} ==> olleH
+ /eval -n ${repeat:5,-} ==> -----
+ /eval -n ${length:test} ==> 4
+ /eval -n ${split:1,,,abc,def,ghi} ==> abc
+ /eval -n ${split:-1,,,abc,def,ghi} ==> ghi
+ /eval -n ${split:count,,,abc,def,ghi} ==> 3
+ /eval -n ${split:random,,,abc,def,ghi} ==> def
+ /eval -n ${split_shell:1,"arg 1" arg2} ==> arg 1
+ /eval -n ${split_shell:-1,"arg 1" arg2} ==> arg2
+ /eval -n ${split_shell:count,"arg 1" arg2} ==> 2
+ /eval -n ${split_shell:random,"arg 1" arg2} ==> arg2
+ /eval -n ${calc:(5+2)*3} ==> 21
+ /eval -n ${random:0,10} ==> 3
+ /eval -n ${base_encode:64,test} ==> dGVzdA==
+ /eval -n ${base_decode:64,dGVzdA==} ==> test
+ /eval -n ${translate:Plugin} ==> Extension
/eval -n ${define:len,${calc:5+3}}${len}x${len} ==> 8x8
-Beispiele (Bedingungen):
- /eval -n -c ${window.buffer.number} > 2 ==> 0
- /eval -n -c ${window.win_width} > 100 ==> 1
- /eval -n -c (8 > 12) || (5 > 2) ==> 1
- /eval -n -c (8 > 12) && (5 > 2) ==> 0
- /eval -n -c abcd =~ ^ABC ==> 1
- /eval -n -c abcd =~ (?-i)^ABC ==> 0
- /eval -n -c abcd =~ (?-i)^abc ==> 1
- /eval -n -c abcd !~ abc ==> 0
- /eval -n -c abcd =* a*d ==> 1
- /eval -n -c abcd =- bc ==> 1
+Examples (conditions):
+ /eval -n -c ${window.buffer.number} > 2 ==> 0
+ /eval -n -c ${window.win_width} > 100 ==> 1
+ /eval -n -c (8 > 12) || (5 > 2) ==> 1
+ /eval -n -c (8 > 12) && (5 > 2) ==> 0
+ /eval -n -c abcd =~ ^ABC ==> 1
+ /eval -n -c abcd =~ (?-i)^ABC ==> 0
+ /eval -n -c abcd =~ (?-i)^abc ==> 1
+ /eval -n -c abcd !~ abc ==> 0
+ /eval -n -c abcd =* a*d ==> 1
+ /eval -n -c abcd =- bc ==> 1
----
[[command_weechat_filter]]
diff --git a/doc/en/includes/autogen_user_commands.en.adoc b/doc/en/includes/autogen_user_commands.en.adoc
index a62bd4ffa..b12fad0da 100644
--- a/doc/en/includes/autogen_user_commands.en.adoc
+++ b/doc/en/includes/autogen_user_commands.en.adoc
@@ -1410,35 +1410,36 @@ To force a string comparison, you can add double quotes around each expression,
"50" > "100" ==> 1
Some variables are replaced in expression, using the format ${variable}, variable can be, by order of priority:
- 1. the string itself without evaluation (format: "raw:xxx")
- 2. a user-defined variable (format: "name")
- 3. an evaluated sub-string (format: "eval:xxx")
- 4. an evaluated condition (format: "eval_cond:xxx")
- 5. a string with escaped chars (format: "esc:xxx" or "\xxx")
- 6. a string converted to lower case (format: "lower:xxx")
- 7. a string converted to upper case (format: "upper:xxx")
- 8. a string with chars to hide (format: "hide:char,string")
- 9. a string with max chars (format: "cut:max,suffix,string" or "cut:+max,suffix,string")
+ - the string itself without evaluation (format: "raw:xxx")
+ - a user-defined variable (format: "name")
+ - an evaluated sub-string (format: "eval:xxx")
+ - an evaluated condition (format: "eval_cond:xxx")
+ - a string with escaped chars (format: "esc:xxx" or "\xxx")
+ - a string with a range of chars (format: "chars:xxx" or "chars:c1-c2" where "xxx" is one of: "digit", "xdigit", "lower", "upper", "alpha", "alnum")
+ - a string converted to lower case (format: "lower:xxx")
+ - a string converted to upper case (format: "upper:xxx")
+ - a string with chars to hide (format: "hide:char,string")
+ - a string with max chars (format: "cut:max,suffix,string" or "cut:+max,suffix,string")
or max chars displayed on screen (format: "cutscr:max,suffix,string" or "cutscr:+max,suffix,string")
- 10. a reversed string (format: "rev:xxx" or "revscr:xxx")
- 11. a repeated string (format: "repeat:count,string")
- 12. length of a string (format: "length:xxx" or "lengthscr:xxx")
- 13. split of a string (format: "split:number,separators,flags,xxx")
- 14. split of shell argmuents (format: "split_shell:number,xxx")
- 15. a color (format: "color:xxx", see "Plugin API reference", function "color")
- 16. a modifier (format: "modifier:name,data,string")
- 17. an info (format: "info:name,arguments", arguments are optional)
- 18. a base 16/32/64 encoded/decoded string (format: "base_encode:base,xxx" or "base_decode:base,xxx")
- 19. current date/time (format: "date" or "date:format")
- 20. an environment variable (format: "env:XXX")
- 21. a ternary operator (format: "if:condition?value_if_true:value_if_false")
- 22. result of an expression with parentheses and operators + - * / // % ** (format: "calc:xxx")
- 23. a random integer number (format: "random:min,max")
- 24. a translated string (format: "translate:xxx")
- 25. define a user variable (format: "define:name,value")
- 26. an option (format: "file.section.option")
- 27. a local variable in buffer
- 28. a hdata name/variable (the value is automatically converted to string), by default "window" and "buffer" point to current window/buffer.
+ - a reversed string (format: "rev:xxx" or "revscr:xxx")
+ - a repeated string (format: "repeat:count,string")
+ - length of a string (format: "length:xxx" or "lengthscr:xxx")
+ - split of a string (format: "split:number,separators,flags,xxx")
+ - split of shell argmuents (format: "split_shell:number,xxx")
+ - a color (format: "color:xxx", see "Plugin API reference", function "color")
+ - a modifier (format: "modifier:name,data,string")
+ - an info (format: "info:name,arguments", arguments are optional)
+ - a base 16/32/64 encoded/decoded string (format: "base_encode:base,xxx" or "base_decode:base,xxx")
+ - current date/time (format: "date" or "date:format")
+ - an environment variable (format: "env:XXX")
+ - a ternary operator (format: "if:condition?value_if_true:value_if_false")
+ - result of an expression with parentheses and operators + - * / // % ** (format: "calc:xxx")
+ - a random integer number (format: "random:min,max")
+ - a translated string (format: "translate:xxx")
+ - define a user variable (format: "define:name,value")
+ - an option (format: "file.section.option")
+ - a local variable in buffer
+ - a hdata name/variable (the value is automatically converted to string), by default "window" and "buffer" point to current window/buffer.
Format for hdata can be one of following:
hdata.var1.var2...: start with a hdata (pointer must be known), and ask variables one after one (other hdata can be followed)
hdata[list].var1.var2...: start with a hdata using a list/pointer/pointer name, for example:
@@ -1461,6 +1462,8 @@ Examples (simple strings):
/eval -n ${window.buffer.full_name} ==> core.weechat
/eval -n ${window.buffer.number} ==> 1
/eval -n ${\t} ==> <tab>
+ /eval -n ${chars:digit} ==> 0123456789
+ /eval -n ${chars:J-T} ==> JKLMNOPQRST
/eval -n ${lower:TEST} ==> test
/eval -n ${upper:test} ==> TEST
/eval -n ${hide:-,${relay.network.password}} ==> --------
diff --git a/doc/fr/includes/autogen_user_commands.fr.adoc b/doc/fr/includes/autogen_user_commands.fr.adoc
index 80a20b74b..b120795e5 100644
--- a/doc/fr/includes/autogen_user_commands.fr.adoc
+++ b/doc/fr/includes/autogen_user_commands.fr.adoc
@@ -1410,35 +1410,36 @@ Pour forcer une comparaison de chaînes, vous pouvez ajouter des guillemets auto
"50" > "100" ==> 1
Des variables sont remplacées dans l'expression, en utilisant le format ${variable}, la variable pouvant être, par ordre de priorité :
- 1. la chaîne elle-même sans évaluation (format : "raw:xxx")
- 2. une variable définie par l'utilisateur (format : "nom")
- 3. une sous-chaîne évaluée (format : "eval:xxx")
- 4. une condition évaluée (format : "eval_cond:xxx")
- 5. une chaîne avec les caractères échappés (format : "esc:xxx" ou "\xxx")
- 6. une chaîne convertie en minuscules (format : "lower:xxx")
- 7. une chaîne convertie en majuscules (format : "upper:xxx")
- 8. une chaîne avec des caractères à cacher (format : "hide:caractère,chaîne")
- 9. une chaîne avec un maximum de caractères (format : "cut:max,suffixe,chaîne" ou "cut:+max,suffixe,chaîne")
- ou un maximum de caractères affichés à l'écran (format : "cutscr:max,suffixe,chaîne" ou "cutscr:+max,suffixe,chaîne")
- 10. une chaîne inversée (format : "rev:xxx" ou "revscr:xxx")
- 11. une chaîne répétée (format : "repeat:nombre,chaîne")
- 12. longueur d'une chaîne (format : "length:xxx" ou "lengthscr:xxx")
- 13. découpage d'une chaîne (format : "split:nombre,séparateurs,flags,xxx")
- 14. découpage de paramètres shell (format : "split_shell:nombre,xxx")
- 15. une couleur (format : "color:xxx", voir la "Référence API extension", fonction "color")
- 16. un modificateur (format : "modifier:nom,données,chaîne")
- 17. une info (format : "info:nom,paramètres", les paramètres sont optionnels)
- 18. une chaîne encodée/decodée en base 16, 32 ou 64 (format : "base_encode:base,xxx" ou "base_decode:base,xxx")
- 19. la date/heure courante (format : "date" ou "date:format")
- 20. une variable d'environnement (format : "env:XXX")
- 21. un opérateur ternaire (format : "if:condition?valeur_si_vrai:valeur_si_faux")
- 22. le résultat d'une expression avec parenthèses et les opérateurs + - * / // % ** (format : "calc:xxx")
- 23. un nombre entier aléatoire (format : "random:min,max")
- 24. une chaîne traduite (format : "translate:xxx")
- 25. déclaration d'une variable utilisateur (format : "define:nom,valeur")
- 26. une option (format : "fichier.section.option")
- 27. une variable locale du tampon
- 28. un hdata/variable (la valeur est automatiquement convertie en chaîne), par défaut "window" et "buffer" pointent vers la fenêtre et le tampon courants.
+ - la chaîne elle-même sans évaluation (format : "raw:xxx")
+ - une variable définie par l'utilisateur (format : "nom")
+ - une sous-chaîne évaluée (format : "eval:xxx")
+ - une condition évaluée (format : "eval_cond:xxx")
+ - une chaîne avec les caractères échappés (format : "esc:xxx" ou "\xxx")
+ - une chaîne avec un intervalle de caractères (format : "chars:xxx" ou "chars:c1-c2")
+ - une chaîne convertie en minuscules (format : "lower:xxx")
+ - une chaîne convertie en majuscules (format : "upper:xxx")
+ - une chaîne avec des caractères à cacher (format : "hide:caractère,chaîne")
+ - une chaîne avec un maximum de caractères (format : "cut:max,suffixe,chaîne" ou "cut:+max,suffixe,chaîne")
+ ou un maximum de caractères affichés à l'écran (format : "cutscr:max,suffixe,chaîne" ou "cutscr:+max,suffixe,chaîne")
+ - une chaîne inversée (format : "rev:xxx" ou "revscr:xxx")
+ - une chaîne répétée (format : "repeat:nombre,chaîne")
+ - longueur d'une chaîne (format : "length:xxx" ou "lengthscr:xxx")
+ - découpage d'une chaîne (format : "split:nombre,séparateurs,flags,xxx")
+ - découpage de paramètres shell (format : "split_shell:nombre,xxx")
+ - une couleur (format : "color:xxx", voir la "Référence API extension", fonction "color")
+ - un modificateur (format : "modifier:nom,données,chaîne")
+ - une info (format : "info:nom,paramètres", les paramètres sont optionnels)
+ - une chaîne encodée/decodée en base 16, 32 ou 64 (format : "base_encode:base,xxx" ou "base_decode:base,xxx")
+ - la date/heure courante (format : "date" ou "date:format")
+ - une variable d'environnement (format : "env:XXX")
+ - un opérateur ternaire (format : "if:condition?valeur_si_vrai:valeur_si_faux")
+ - le résultat d'une expression avec parenthèses et les opérateurs + - * / // % ** (format : "calc:xxx")
+ - un nombre entier aléatoire (format : "random:min,max")
+ - une chaîne traduite (format : "translate:xxx")
+ - déclaration d'une variable utilisateur (format : "define:nom,valeur")
+ - une option (format : "fichier.section.option")
+ - une variable locale du tampon
+ - un hdata/variable (la valeur est automatiquement convertie en chaîne), par défaut "window" et "buffer" pointent vers la fenêtre et le tampon courants.
Le format du hdata peut être le suivant :
hdata.var1.var2... : démarrer avec un hdata (le pointeur doit être connu), et demander les variables l'une après l'autre (d'autres hdata peuvent être suivis)
hdata[liste].var1.var2... : démarrer avec un hdata en utilisant une liste/pointeur/nom de pointeur, par exemple :
@@ -1461,6 +1462,8 @@ Exemples (chaînes simples) :
/eval -n ${window.buffer.full_name} ==> core.weechat
/eval -n ${window.buffer.number} ==> 1
/eval -n ${\t} ==> <tab>
+ /eval -n ${chars:digit} ==> 0123456789
+ /eval -n ${chars:J-T} ==> JKLMNOPQRST
/eval -n ${lower:TEST} ==> test
/eval -n ${upper:test} ==> TEST
/eval -n ${hide:-,${relay.network.password}} ==> --------
diff --git a/doc/it/includes/autogen_user_commands.it.adoc b/doc/it/includes/autogen_user_commands.it.adoc
index 69a9152bc..cee8775a3 100644
--- a/doc/it/includes/autogen_user_commands.it.adoc
+++ b/doc/it/includes/autogen_user_commands.it.adoc
@@ -1410,35 +1410,36 @@ To force a string comparison, you can add double quotes around each expression,
"50" > "100" ==> 1
Some variables are replaced in expression, using the format ${variable}, variable can be, by order of priority:
- 1. the string itself without evaluation (format: "raw:xxx")
- 2. a user-defined variable (format: "name")
- 3. an evaluated sub-string (format: "eval:xxx")
- 4. an evaluated condition (format: "eval_cond:xxx")
- 5. a string with escaped chars (format: "esc:xxx" or "\xxx")
- 6. a string converted to lower case (format: "lower:xxx")
- 7. a string converted to upper case (format: "upper:xxx")
- 8. a string with chars to hide (format: "hide:char,string")
- 9. a string with max chars (format: "cut:max,suffix,string" or "cut:+max,suffix,string")
+ - the string itself without evaluation (format: "raw:xxx")
+ - a user-defined variable (format: "name")
+ - an evaluated sub-string (format: "eval:xxx")
+ - an evaluated condition (format: "eval_cond:xxx")
+ - a string with escaped chars (format: "esc:xxx" or "\xxx")
+ - a string with a range of chars (format: "chars:xxx" or "chars:c1-c2" where "xxx" is one of: "digit", "xdigit", "lower", "upper", "alpha", "alnum")
+ - a string converted to lower case (format: "lower:xxx")
+ - a string converted to upper case (format: "upper:xxx")
+ - a string with chars to hide (format: "hide:char,string")
+ - a string with max chars (format: "cut:max,suffix,string" or "cut:+max,suffix,string")
or max chars displayed on screen (format: "cutscr:max,suffix,string" or "cutscr:+max,suffix,string")
- 10. a reversed string (format: "rev:xxx" or "revscr:xxx")
- 11. a repeated string (format: "repeat:count,string")
- 12. length of a string (format: "length:xxx" or "lengthscr:xxx")
- 13. split of a string (format: "split:number,separators,flags,xxx")
- 14. split of shell argmuents (format: "split_shell:number,xxx")
- 15. a color (format: "color:xxx", see "Plugin API reference", function "color")
- 16. a modifier (format: "modifier:name,data,string")
- 17. an info (format: "info:name,arguments", arguments are optional)
- 18. a base 16/32/64 encoded/decoded string (format: "base_encode:base,xxx" or "base_decode:base,xxx")
- 19. current date/time (format: "date" or "date:format")
- 20. an environment variable (format: "env:XXX")
- 21. a ternary operator (format: "if:condition?value_if_true:value_if_false")
- 22. result of an expression with parentheses and operators + - * / // % ** (format: "calc:xxx")
- 23. a random integer number (format: "random:min,max")
- 24. a translated string (format: "translate:xxx")
- 25. define a user variable (format: "define:name,value")
- 26. an option (format: "file.section.option")
- 27. a local variable in buffer
- 28. a hdata name/variable (the value is automatically converted to string), by default "window" and "buffer" point to current window/buffer.
+ - a reversed string (format: "rev:xxx" or "revscr:xxx")
+ - a repeated string (format: "repeat:count,string")
+ - length of a string (format: "length:xxx" or "lengthscr:xxx")
+ - split of a string (format: "split:number,separators,flags,xxx")
+ - split of shell argmuents (format: "split_shell:number,xxx")
+ - a color (format: "color:xxx", see "Plugin API reference", function "color")
+ - a modifier (format: "modifier:name,data,string")
+ - an info (format: "info:name,arguments", arguments are optional)
+ - a base 16/32/64 encoded/decoded string (format: "base_encode:base,xxx" or "base_decode:base,xxx")
+ - current date/time (format: "date" or "date:format")
+ - an environment variable (format: "env:XXX")
+ - a ternary operator (format: "if:condition?value_if_true:value_if_false")
+ - result of an expression with parentheses and operators + - * / // % ** (format: "calc:xxx")
+ - a random integer number (format: "random:min,max")
+ - a translated string (format: "translate:xxx")
+ - define a user variable (format: "define:name,value")
+ - an option (format: "file.section.option")
+ - a local variable in buffer
+ - a hdata name/variable (the value is automatically converted to string), by default "window" and "buffer" point to current window/buffer.
Format for hdata can be one of following:
hdata.var1.var2...: start with a hdata (pointer must be known), and ask variables one after one (other hdata can be followed)
hdata[list].var1.var2...: start with a hdata using a list/pointer/pointer name, for example:
@@ -1461,6 +1462,8 @@ Examples (simple strings):
/eval -n ${window.buffer.full_name} ==> core.weechat
/eval -n ${window.buffer.number} ==> 1
/eval -n ${\t} ==> <tab>
+ /eval -n ${chars:digit} ==> 0123456789
+ /eval -n ${chars:J-T} ==> JKLMNOPQRST
/eval -n ${lower:TEST} ==> test
/eval -n ${upper:test} ==> TEST
/eval -n ${hide:-,${relay.network.password}} ==> --------
diff --git a/doc/ja/includes/autogen_user_commands.ja.adoc b/doc/ja/includes/autogen_user_commands.ja.adoc
index d9251f8f0..b5add3232 100644
--- a/doc/ja/includes/autogen_user_commands.ja.adoc
+++ b/doc/ja/includes/autogen_user_commands.ja.adoc
@@ -1410,35 +1410,36 @@ To force a string comparison, you can add double quotes around each expression,
"50" > "100" ==> 1
Some variables are replaced in expression, using the format ${variable}, variable can be, by order of priority:
- 1. the string itself without evaluation (format: "raw:xxx")
- 2. a user-defined variable (format: "name")
- 3. an evaluated sub-string (format: "eval:xxx")
- 4. an evaluated condition (format: "eval_cond:xxx")
- 5. a string with escaped chars (format: "esc:xxx" or "\xxx")
- 6. a string converted to lower case (format: "lower:xxx")
- 7. a string converted to upper case (format: "upper:xxx")
- 8. a string with chars to hide (format: "hide:char,string")
- 9. a string with max chars (format: "cut:max,suffix,string" or "cut:+max,suffix,string")
+ - the string itself without evaluation (format: "raw:xxx")
+ - a user-defined variable (format: "name")
+ - an evaluated sub-string (format: "eval:xxx")
+ - an evaluated condition (format: "eval_cond:xxx")
+ - a string with escaped chars (format: "esc:xxx" or "\xxx")
+ - a string with a range of chars (format: "chars:xxx" or "chars:c1-c2" where "xxx" is one of: "digit", "xdigit", "lower", "upper", "alpha", "alnum")
+ - a string converted to lower case (format: "lower:xxx")
+ - a string converted to upper case (format: "upper:xxx")
+ - a string with chars to hide (format: "hide:char,string")
+ - a string with max chars (format: "cut:max,suffix,string" or "cut:+max,suffix,string")
or max chars displayed on screen (format: "cutscr:max,suffix,string" or "cutscr:+max,suffix,string")
- 10. a reversed string (format: "rev:xxx" or "revscr:xxx")
- 11. a repeated string (format: "repeat:count,string")
- 12. length of a string (format: "length:xxx" or "lengthscr:xxx")
- 13. split of a string (format: "split:number,separators,flags,xxx")
- 14. split of shell argmuents (format: "split_shell:number,xxx")
- 15. a color (format: "color:xxx", see "Plugin API reference", function "color")
- 16. a modifier (format: "modifier:name,data,string")
- 17. an info (format: "info:name,arguments", arguments are optional)
- 18. a base 16/32/64 encoded/decoded string (format: "base_encode:base,xxx" or "base_decode:base,xxx")
- 19. current date/time (format: "date" or "date:format")
- 20. an environment variable (format: "env:XXX")
- 21. a ternary operator (format: "if:condition?value_if_true:value_if_false")
- 22. result of an expression with parentheses and operators + - * / // % ** (format: "calc:xxx")
- 23. a random integer number (format: "random:min,max")
- 24. a translated string (format: "translate:xxx")
- 25. define a user variable (format: "define:name,value")
- 26. an option (format: "file.section.option")
- 27. a local variable in buffer
- 28. a hdata name/variable (the value is automatically converted to string), by default "window" and "buffer" point to current window/buffer.
+ - a reversed string (format: "rev:xxx" or "revscr:xxx")
+ - a repeated string (format: "repeat:count,string")
+ - length of a string (format: "length:xxx" or "lengthscr:xxx")
+ - split of a string (format: "split:number,separators,flags,xxx")
+ - split of shell argmuents (format: "split_shell:number,xxx")
+ - a color (format: "color:xxx", see "Plugin API reference", function "color")
+ - a modifier (format: "modifier:name,data,string")
+ - an info (format: "info:name,arguments", arguments are optional)
+ - a base 16/32/64 encoded/decoded string (format: "base_encode:base,xxx" or "base_decode:base,xxx")
+ - current date/time (format: "date" or "date:format")
+ - an environment variable (format: "env:XXX")
+ - a ternary operator (format: "if:condition?value_if_true:value_if_false")
+ - result of an expression with parentheses and operators + - * / // % ** (format: "calc:xxx")
+ - a random integer number (format: "random:min,max")
+ - a translated string (format: "translate:xxx")
+ - define a user variable (format: "define:name,value")
+ - an option (format: "file.section.option")
+ - a local variable in buffer
+ - a hdata name/variable (the value is automatically converted to string), by default "window" and "buffer" point to current window/buffer.
Format for hdata can be one of following:
hdata.var1.var2...: start with a hdata (pointer must be known), and ask variables one after one (other hdata can be followed)
hdata[list].var1.var2...: start with a hdata using a list/pointer/pointer name, for example:
@@ -1461,6 +1462,8 @@ Examples (simple strings):
/eval -n ${window.buffer.full_name} ==> core.weechat
/eval -n ${window.buffer.number} ==> 1
/eval -n ${\t} ==> <tab>
+ /eval -n ${chars:digit} ==> 0123456789
+ /eval -n ${chars:J-T} ==> JKLMNOPQRST
/eval -n ${lower:TEST} ==> test
/eval -n ${upper:test} ==> TEST
/eval -n ${hide:-,${relay.network.password}} ==> --------
diff --git a/doc/pl/includes/autogen_user_commands.pl.adoc b/doc/pl/includes/autogen_user_commands.pl.adoc
index b3c2da237..b3b4d8602 100644
--- a/doc/pl/includes/autogen_user_commands.pl.adoc
+++ b/doc/pl/includes/autogen_user_commands.pl.adoc
@@ -1409,35 +1409,36 @@ To force a string comparison, you can add double quotes around each expression,
"50" > "100" ==> 1
Some variables are replaced in expression, using the format ${variable}, variable can be, by order of priority:
- 1. the string itself without evaluation (format: "raw:xxx")
- 2. a user-defined variable (format: "name")
- 3. an evaluated sub-string (format: "eval:xxx")
- 4. an evaluated condition (format: "eval_cond:xxx")
- 5. a string with escaped chars (format: "esc:xxx" or "\xxx")
- 6. a string converted to lower case (format: "lower:xxx")
- 7. a string converted to upper case (format: "upper:xxx")
- 8. a string with chars to hide (format: "hide:char,string")
- 9. a string with max chars (format: "cut:max,suffix,string" or "cut:+max,suffix,string")
+ - the string itself without evaluation (format: "raw:xxx")
+ - a user-defined variable (format: "name")
+ - an evaluated sub-string (format: "eval:xxx")
+ - an evaluated condition (format: "eval_cond:xxx")
+ - a string with escaped chars (format: "esc:xxx" or "\xxx")
+ - a string with a range of chars (format: "chars:xxx" or "chars:c1-c2" where "xxx" is one of: "digit", "xdigit", "lower", "upper", "alpha", "alnum")
+ - a string converted to lower case (format: "lower:xxx")
+ - a string converted to upper case (format: "upper:xxx")
+ - a string with chars to hide (format: "hide:char,string")
+ - a string with max chars (format: "cut:max,suffix,string" or "cut:+max,suffix,string")
or max chars displayed on screen (format: "cutscr:max,suffix,string" or "cutscr:+max,suffix,string")
- 10. a reversed string (format: "rev:xxx" or "revscr:xxx")
- 11. a repeated string (format: "repeat:count,string")
- 12. length of a string (format: "length:xxx" or "lengthscr:xxx")
- 13. split of a string (format: "split:number,separators,flags,xxx")
- 14. split of shell argmuents (format: "split_shell:number,xxx")
- 15. a color (format: "color:xxx", see "Plugin API reference", function "color")
- 16. a modifier (format: "modifier:name,data,string")
- 17. an info (format: "info:name,arguments", arguments are optional)
- 18. a base 16/32/64 encoded/decoded string (format: "base_encode:base,xxx" or "base_decode:base,xxx")
- 19. current date/time (format: "date" or "date:format")
- 20. an environment variable (format: "env:XXX")
- 21. a ternary operator (format: "if:condition?value_if_true:value_if_false")
- 22. result of an expression with parentheses and operators + - * / // % ** (format: "calc:xxx")
- 23. a random integer number (format: "random:min,max")
- 24. a translated string (format: "translate:xxx")
- 25. define a user variable (format: "define:name,value")
- 26. an option (format: "file.section.option")
- 27. a local variable in buffer
- 28. a hdata name/variable (the value is automatically converted to string), by default "window" and "buffer" point to current window/buffer.
+ - a reversed string (format: "rev:xxx" or "revscr:xxx")
+ - a repeated string (format: "repeat:count,string")
+ - length of a string (format: "length:xxx" or "lengthscr:xxx")
+ - split of a string (format: "split:number,separators,flags,xxx")
+ - split of shell argmuents (format: "split_shell:number,xxx")
+ - a color (format: "color:xxx", see "Plugin API reference", function "color")
+ - a modifier (format: "modifier:name,data,string")
+ - an info (format: "info:name,arguments", arguments are optional)
+ - a base 16/32/64 encoded/decoded string (format: "base_encode:base,xxx" or "base_decode:base,xxx")
+ - current date/time (format: "date" or "date:format")
+ - an environment variable (format: "env:XXX")
+ - a ternary operator (format: "if:condition?value_if_true:value_if_false")
+ - result of an expression with parentheses and operators + - * / // % ** (format: "calc:xxx")
+ - a random integer number (format: "random:min,max")
+ - a translated string (format: "translate:xxx")
+ - define a user variable (format: "define:name,value")
+ - an option (format: "file.section.option")
+ - a local variable in buffer
+ - a hdata name/variable (the value is automatically converted to string), by default "window" and "buffer" point to current window/buffer.
Format for hdata can be one of following:
hdata.var1.var2...: start with a hdata (pointer must be known), and ask variables one after one (other hdata can be followed)
hdata[list].var1.var2...: start with a hdata using a list/pointer/pointer name, for example:
@@ -1460,6 +1461,8 @@ Examples (simple strings):
/eval -n ${window.buffer.full_name} ==> core.weechat
/eval -n ${window.buffer.number} ==> 1
/eval -n ${\t} ==> <tab>
+ /eval -n ${chars:digit} ==> 0123456789
+ /eval -n ${chars:J-T} ==> JKLMNOPQRST
/eval -n ${lower:TEST} ==> test
/eval -n ${upper:test} ==> TEST
/eval -n ${hide:-,${relay.network.password}} ==> --------
diff --git a/doc/sr/includes/autogen_user_commands.sr.adoc b/doc/sr/includes/autogen_user_commands.sr.adoc
index 038a4554e..2bcf146d1 100644
--- a/doc/sr/includes/autogen_user_commands.sr.adoc
+++ b/doc/sr/includes/autogen_user_commands.sr.adoc
@@ -1373,83 +1373,84 @@ infolists: исписује инфо о инфолистама
/eval [-n|-s] [-d] <израз>
[-n] [-d [-d]] -c <израз1> <оператор> <израз2>
- -n: приказује резултат и не шаље га у бафер (дибаг режим)
- -s: дели израз пре израчунавања (многе команде могу да се раздвоје са тачка зарезима)
- -d: приказује дибаг излаз након израчунавања (са два -d: детаљнији дибаг)
- -c: израчунава као услов: користе се оператори и заграде, враћа логичку вредност („0” или „1”)
- израз: израз који се израчунава, променљиве у формату ${променљива} се замењују (погледајте испод); више команди може да се раздвоји са тачка зарезима
- оператор: логички или оператор поређења:
- - логички оператори:
- && логичко „и”
- || логичко „или”
- - оператори поређења:
- == једнако
- != није једнако
- <= мање или једнако
- < мање
- >= веће или једнако
- > веће
- =~ подудара се са POSIX проширеним регуларним изразом
- !~ НЕ подудара се са POSIX проширеним регуларним изразом
- ==* је маска подударања, разликује величину слова (дозвољен је џокер „*”)
- !!* НИЈЕ маска подударања, разликује величину слова (дозвољен је џокер „*”)
- =* је маска подударања, не разликује величину слова (дозвољен је џокер „*”)
- !* НИЈЕ маска подударања, не разликује величину слова (дозвољен је џокер „*”)
- ==- је укључено, разликује величину слова
- !!- НИЈЕ укључено, разликује величину слова
- =- је укључено, не разликује величину слова
- !- НИЈЕ укључено, не разликује величину слова
-
-Сматра се да је израз „true” ако није NULL, није празан и различит је од „0”.
-Поређење се врши употребом бројева у покретном зарезу ако су два израза важећи бројеви, у једном од следећих формата:
- - целобројни (примери: 5, -7)
- - број у покретном зарезу (примери: 5.2, -7.5, 2.83e-2)
- - хексадецимални број (примери: 0xA3, -0xA3)
-Ако желите да форсирате поређење стрингова, можете да додате знаке навода око сваког израза, на пример:
+ -n: display result without sending it to buffer (debug mode)
+ -s: split expression before evaluating it (many commands can be separated by semicolons)
+ -d: display debug output after evaluation (with two -d: more verbose debug)
+ -c: evaluate as condition: use operators and parentheses, return a boolean value ("0" or "1")
+expression: expression to evaluate, variables with format ${variable} are replaced (see below); many commands can be separated by semicolons
+ operator: a logical or comparison operator:
+ - logical operators:
+ && boolean "and"
+ || boolean "or"
+ - comparison operators:
+ == equal
+ != not equal
+ <= less or equal
+ < less
+ >= greater or equal
+ > greater
+ =~ is matching POSIX extended regex
+ !~ is NOT matching POSIX extended regex
+ ==* is matching mask, case sensitive (wildcard "*" is allowed)
+ !!* is NOT matching mask, case sensitive (wildcard "*" is allowed)
+ =* is matching mask, case insensitive (wildcard "*" is allowed)
+ !* is NOT matching mask, case insensitive (wildcard "*" is allowed)
+ ==- is included, case sensitive
+ !!- is NOT included, case sensitive
+ =- is included, case insensitive
+ !- is NOT included, case insensitive
+
+An expression is considered as "true" if it is not NULL, not empty, and different from "0".
+The comparison is made using floating point numbers if the two expressions are valid numbers, with one of the following formats:
+ - integer (examples: 5, -7)
+ - floating point number (examples: 5.2, -7.5, 2.83e-2)
+ - hexadecimal number (examples: 0xA3, -0xA3)
+To force a string comparison, you can add double quotes around each expression, for example:
50 > 100 ==> 0
"50" > "100" ==> 1
-У изразима се замењују неке променљиве, користећи формат ${променљива}, променљива може да буде, према редоследу приоритета:
- 1. сам стринг без израчунавања (формат: „raw:xxx”)
- 2. кориснички дефинисана променљива (формат: „име”)
- 3. израчунати под-стринг (формат: „eval:xxx”)
- 4. израчунати услов (формат: „eval_cond:xxx”)
- 5. стринг са означеним карактерима (формат: „esc:xxx” или „\xxx”)
- 6. стринг конвертован у мала слова (формат: "lower:xxx")
- 7. стринг конвертован у велика слова (формат: "upper:xxx")
- 8. стринг са карактерима за сакривање (формат: „hide:кар,стринг”)
- 9. стринг са највише карактера (формат: „cut:макс,суфикс,стринг” или „cut:+макс,суфикс,стринг")
- или макс број карактера који се приказује на екрану (формат: „cutscr:макс,суфикс,стринг” или „cutscr:+макс,суфикс,стринг”)
- 10. обрнути стринг (формат: „rev:xxx” или „revscr:xxx”)
- 11. поновљени стринг (формат: „repeat:број,стринг”)
- 12. дужина стринга (формат: „length:xxx” или „lengthscr:xxx”)
- 13. подела стринга (формат: „split:број,сепаратори,заставице,xxx”)
- 14. подела аргумената љуске (формат: „split_shell:број,xxx”)
- 15. боја (формат: „color:xxx”, погледајте „Референтни приручник API додатака”, функција „color”)
- 16. модификатор (формат: „modifier:име,подаци,стринг”)
- 17. инфо (формат: „info:име,аргументи”, аргументи нису обавезни)
- 18. base 16/32/64 шифриран/дешифрован стринг (формат: „base_encode:основа, xxx” или „base_decode:основа,xxx”)
- 19. текући датум/време (формат: „date” или „date:формат”)
- 20. променљива окружења (формат: „env:XXX”)
- 21. тернарни оператор (формат: „if:услов?вредност_ако_је_тачно:вредност_ако_је_нетачно”)
- 22. резултат израза са заградама и операторима + - * / // % ** (формат: „calc:xxx”)
- 23. случајни целобројни број (формат: „random:мин,макс”)
- 24. преведени стринг (формат: „translate:xxx”)
- 25. дефиниција корисничке промонљиве (формат: „define:име,вредност”)
- 26. опција (формат: „фајл.секција.опција”)
- 27. локална променљива у баферу
- 28. hdata име/променљива (вредност се аутоматски конвертује у стринг), „window” и „buffer” подразумевано показују на текући прозор/бафер.
-Формат за hdata може да буде једно од следећег:
- hdata.пром1.пром2...: почиње са hdata (показивач мора да буде познат), и пита променљиве једну за другом (могу да следе и остала hdata)
- hdata[листа].пром1.пром2...: почиње са hdata користећи листу/показивач/име показивача, на пример:
- ${buffer[gui_buffers].full_name}: пуно име првог бафера у увезаној листи бафера
- ${plugin[weechat_plugins].name}: име првог бафера у увезаној листи додатака
- hdata[показивач].пром1.пром2...: почиње са hdata користећи показивач, на пример:
- ${buffer[0x1234abcd].full_name}: пуно име бафера са овим показивачем (може да се користи у окидачима)
- ${buffer[my_pointer].full_name}: пуно име бафера са овим именом показивача (може да се користи у окидачима)
-У вези имена hdata и променљивих, молим вас да погледате „Референтни приручник API додатака”, функцију „weechat_hdata_get”.
-
-Примери (једноставни стрингови):
+Some variables are replaced in expression, using the format ${variable}, variable can be, by order of priority:
+ - the string itself without evaluation (format: "raw:xxx")
+ - a user-defined variable (format: "name")
+ - an evaluated sub-string (format: "eval:xxx")
+ - an evaluated condition (format: "eval_cond:xxx")
+ - a string with escaped chars (format: "esc:xxx" or "\xxx")
+ - a string with a range of chars (format: "chars:xxx" or "chars:c1-c2" where "xxx" is one of: "digit", "xdigit", "lower", "upper", "alpha", "alnum")
+ - a string converted to lower case (format: "lower:xxx")
+ - a string converted to upper case (format: "upper:xxx")
+ - a string with chars to hide (format: "hide:char,string")
+ - a string with max chars (format: "cut:max,suffix,string" or "cut:+max,suffix,string")
+ or max chars displayed on screen (format: "cutscr:max,suffix,string" or "cutscr:+max,suffix,string")
+ - a reversed string (format: "rev:xxx" or "revscr:xxx")
+ - a repeated string (format: "repeat:count,string")
+ - length of a string (format: "length:xxx" or "lengthscr:xxx")
+ - split of a string (format: "split:number,separators,flags,xxx")
+ - split of shell argmuents (format: "split_shell:number,xxx")
+ - a color (format: "color:xxx", see "Plugin API reference", function "color")
+ - a modifier (format: "modifier:name,data,string")
+ - an info (format: "info:name,arguments", arguments are optional)
+ - a base 16/32/64 encoded/decoded string (format: "base_encode:base,xxx" or "base_decode:base,xxx")
+ - current date/time (format: "date" or "date:format")
+ - an environment variable (format: "env:XXX")
+ - a ternary operator (format: "if:condition?value_if_true:value_if_false")
+ - result of an expression with parentheses and operators + - * / // % ** (format: "calc:xxx")
+ - a random integer number (format: "random:min,max")
+ - a translated string (format: "translate:xxx")
+ - define a user variable (format: "define:name,value")
+ - an option (format: "file.section.option")
+ - a local variable in buffer
+ - a hdata name/variable (the value is automatically converted to string), by default "window" and "buffer" point to current window/buffer.
+Format for hdata can be one of following:
+ hdata.var1.var2...: start with a hdata (pointer must be known), and ask variables one after one (other hdata can be followed)
+ hdata[list].var1.var2...: start with a hdata using a list/pointer/pointer name, for example:
+ ${buffer[gui_buffers].full_name}: full name of first buffer in linked list of buffers
+ ${plugin[weechat_plugins].name}: name of first plugin in linked list of plugins
+ hdata[pointer].var1.var2...: start with a hdata using a pointer, for example:
+ ${buffer[0x1234abcd].full_name}: full name of the buffer with this pointer (can be used in triggers)
+ ${buffer[my_pointer].full_name}: full name of the buffer with this pointer name (can be used in triggers)
+For name of hdata and variables, please look at "Plugin API reference", function "weechat_hdata_get".
+
+Examples (simple strings):
/eval -n ${raw:${info:version}} ==> ${info:version}
/eval -n ${eval_cond:${window.win_width}>100} ==> 1
/eval -n ${info:version} ==> 0.4.3
@@ -1461,6 +1462,8 @@ infolists: исписује инфо о инфолистама
/eval -n ${window.buffer.full_name} ==> core.weechat
/eval -n ${window.buffer.number} ==> 1
/eval -n ${\t} ==> <tab>
+ /eval -n ${chars:digit} ==> 0123456789
+ /eval -n ${chars:J-T} ==> JKLMNOPQRST
/eval -n ${lower:TEST} ==> test
/eval -n ${upper:test} ==> TEST
/eval -n ${hide:-,${relay.network.password}} ==> --------
@@ -1486,7 +1489,7 @@ infolists: исписује инфо о инфолистама
/eval -n ${translate:Plugin} ==> Extension
/eval -n ${define:len,${calc:5+3}}${len}x${len} ==> 8x8
-Примери (услови):
+Examples (conditions):
/eval -n -c ${window.buffer.number} > 2 ==> 0
/eval -n -c ${window.win_width} > 100 ==> 1
/eval -n -c (8 > 12) || (5 > 2) ==> 1
diff --git a/po/cs.po b/po/cs.po
index 482dcee70..c645427b4 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2022-10-15 22:42+0200\n"
+"POT-Creation-Date: 2022-11-06 09:02+0100\n"
"PO-Revision-Date: 2022-10-15 22:51+0200\n"
"Last-Translator: Ondřej Súkup <mimi.vx@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -1572,43 +1572,45 @@ msgid ""
"\n"
"Some variables are replaced in expression, using the format ${variable}, "
"variable can be, by order of priority:\n"
-" 1. the string itself without evaluation (format: \"raw:xxx\")\n"
-" 2. a user-defined variable (format: \"name\")\n"
-" 3. an evaluated sub-string (format: \"eval:xxx\")\n"
-" 4. an evaluated condition (format: \"eval_cond:xxx\")\n"
-" 5. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
-" 6. a string converted to lower case (format: \"lower:xxx\")\n"
-" 7. a string converted to upper case (format: \"upper:xxx\")\n"
-" 8. a string with chars to hide (format: \"hide:char,string\")\n"
-" 9. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:"
-"+max,suffix,string\")\n"
+" - the string itself without evaluation (format: \"raw:xxx\")\n"
+" - a user-defined variable (format: \"name\")\n"
+" - an evaluated sub-string (format: \"eval:xxx\")\n"
+" - an evaluated condition (format: \"eval_cond:xxx\")\n"
+" - a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
+" - a string with a range of chars (format: \"chars:xxx\" or \"chars:c1-c2\" "
+"where \"xxx\" is one of: \"digit\", \"xdigit\", \"lower\", \"upper\", "
+"\"alpha\", \"alnum\")\n"
+" - a string converted to lower case (format: \"lower:xxx\")\n"
+" - a string converted to upper case (format: \"upper:xxx\")\n"
+" - a string with chars to hide (format: \"hide:char,string\")\n"
+" - a string with max chars (format: \"cut:max,suffix,string\" or \"cut:+max,"
+"suffix,string\")\n"
" or max chars displayed on screen (format: \"cutscr:max,suffix,string\" "
"or \"cutscr:+max,suffix,string\")\n"
-" 10. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
-" 11. a repeated string (format: \"repeat:count,string\")\n"
-" 12. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
-" 13. split of a string (format: \"split:number,separators,flags,xxx\")\n"
-" 14. split of shell argmuents (format: \"split_shell:number,xxx\")\n"
-" 15. a color (format: \"color:xxx\", see \"Plugin API reference\", function "
+" - a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
+" - a repeated string (format: \"repeat:count,string\")\n"
+" - length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
+" - split of a string (format: \"split:number,separators,flags,xxx\")\n"
+" - split of shell argmuents (format: \"split_shell:number,xxx\")\n"
+" - a color (format: \"color:xxx\", see \"Plugin API reference\", function "
"\"color\")\n"
-" 16. a modifier (format: \"modifier:name,data,string\")\n"
-" 17. an info (format: \"info:name,arguments\", arguments are optional)\n"
-" 18. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,"
-"xxx\" or \"base_decode:base,xxx\")\n"
-" 19. current date/time (format: \"date\" or \"date:format\")\n"
-" 20. an environment variable (format: \"env:XXX\")\n"
-" 21. a ternary operator (format: \"if:condition?value_if_true:"
+" - a modifier (format: \"modifier:name,data,string\")\n"
+" - an info (format: \"info:name,arguments\", arguments are optional)\n"
+" - a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx\" "
+"or \"base_decode:base,xxx\")\n"
+" - current date/time (format: \"date\" or \"date:format\")\n"
+" - an environment variable (format: \"env:XXX\")\n"
+" - a ternary operator (format: \"if:condition?value_if_true:"
"value_if_false\")\n"
-" 22. result of an expression with parentheses and operators + - * / // % ** "
+" - result of an expression with parentheses and operators + - * / // % ** "
"(format: \"calc:xxx\")\n"
-" 23. a random integer number (format: \"random:min,max\")\n"
-" 24. a translated string (format: \"translate:xxx\")\n"
-" 25. define a user variable (format: \"define:name,value\")\n"
-" 26. an option (format: \"file.section.option\")\n"
-" 27. a local variable in buffer\n"
-" 28. a hdata name/variable (the value is automatically converted to "
-"string), by default \"window\" and \"buffer\" point to current window/"
-"buffer.\n"
+" - a random integer number (format: \"random:min,max\")\n"
+" - a translated string (format: \"translate:xxx\")\n"
+" - define a user variable (format: \"define:name,value\")\n"
+" - an option (format: \"file.section.option\")\n"
+" - a local variable in buffer\n"
+" - a hdata name/variable (the value is automatically converted to string), "
+"by default \"window\" and \"buffer\" point to current window/buffer.\n"
"Format for hdata can be one of following:\n"
" hdata.var1.var2...: start with a hdata (pointer must be known), and ask "
"variables one after one (other hdata can be followed)\n"
@@ -1639,6 +1641,8 @@ msgid ""
" /eval -n ${window.buffer.full_name} ==> core.weechat\n"
" /eval -n ${window.buffer.number} ==> 1\n"
" /eval -n ${\\t} ==> <tab>\n"
+" /eval -n ${chars:digit} ==> 0123456789\n"
+" /eval -n ${chars:J-T} ==> JKLMNOPQRST\n"
" /eval -n ${lower:TEST} ==> test\n"
" /eval -n ${upper:test} ==> TEST\n"
" /eval -n ${hide:-,${relay.network.password}} ==> --------\n"
diff --git a/po/de.po b/po/de.po
index 4b5527c57..9cabbe1b2 100644
--- a/po/de.po
+++ b/po/de.po
@@ -25,7 +25,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2022-10-15 22:42+0200\n"
+"POT-Creation-Date: 2022-11-06 09:02+0100\n"
"PO-Revision-Date: 2022-10-15 22:51+0200\n"
"Last-Translator: Nils Görs <weechatter@arcor.de>\n"
"Language-Team: German <kde-i18n-de@kde.org>\n"
@@ -1657,6 +1657,160 @@ msgstr ""
"[-n|-s] [-d] <expression> || [-n] [-d [-d]] -c <expression1> <operator> "
"<expression2>"
+#, fuzzy
+#| msgid ""
+#| " -n: display result without sending it to buffer (debug mode)\n"
+#| " -s: split expression before evaluating it (many commands can be "
+#| "separated by semicolons)\n"
+#| " -d: display debug output after evaluation (with two -d: more "
+#| "verbose debug)\n"
+#| " -c: evaluate as condition: use operators and parentheses, return "
+#| "a boolean value (\"0\" or \"1\")\n"
+#| "expression: expression to evaluate, variables with format ${variable} are "
+#| "replaced (see below); many commands can be separated by semicolons\n"
+#| " operator: a logical or comparison operator:\n"
+#| " - logical operators:\n"
+#| " && boolean \"and\"\n"
+#| " || boolean \"or\"\n"
+#| " - comparison operators:\n"
+#| " == equal\n"
+#| " != not equal\n"
+#| " <= less or equal\n"
+#| " < less\n"
+#| " >= greater or equal\n"
+#| " > greater\n"
+#| " =~ is matching POSIX extended regex\n"
+#| " !~ is NOT matching POSIX extended regex\n"
+#| " ==* is matching mask, case sensitive (wildcard \"*\" is "
+#| "allowed)\n"
+#| " !!* is NOT matching mask, case sensitive (wildcard \"*\" "
+#| "is allowed)\n"
+#| " =* is matching mask, case insensitive (wildcard \"*\" "
+#| "is allowed)\n"
+#| " !* is NOT matching mask, case insensitive (wildcard "
+#| "\"*\" is allowed)\n"
+#| " ==- is included, case sensitive\n"
+#| " !!- is NOT included, case sensitive\n"
+#| " =- is included, case insensitive\n"
+#| " !- is NOT included, case insensitive\n"
+#| "\n"
+#| "An expression is considered as \"true\" if it is not NULL, not empty, and "
+#| "different from \"0\".\n"
+#| "The comparison is made using floating point numbers if the two "
+#| "expressions are valid numbers, with one of the following formats:\n"
+#| " - integer (examples: 5, -7)\n"
+#| " - floating point number (examples: 5.2, -7.5, 2.83e-2)\n"
+#| " - hexadecimal number (examples: 0xA3, -0xA3)\n"
+#| "To force a string comparison, you can add double quotes around each "
+#| "expression, for example:\n"
+#| " 50 > 100 ==> 0\n"
+#| " \"50\" > \"100\" ==> 1\n"
+#| "\n"
+#| "Some variables are replaced in expression, using the format ${variable}, "
+#| "variable can be, by order of priority:\n"
+#| " 1. the string itself without evaluation (format: \"raw:xxx\")\n"
+#| " 2. a user-defined variable (format: \"name\")\n"
+#| " 3. an evaluated sub-string (format: \"eval:xxx\")\n"
+#| " 4. an evaluated condition (format: \"eval_cond:xxx\")\n"
+#| " 5. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
+#| " 6. a string converted to lower case (format: \"lower:xxx\")\n"
+#| " 7. a string converted to upper case (format: \"upper:xxx\")\n"
+#| " 8. a string with chars to hide (format: \"hide:char,string\")\n"
+#| " 9. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:"
+#| "+max,suffix,string\")\n"
+#| " or max chars displayed on screen (format: \"cutscr:max,suffix,"
+#| "string\" or \"cutscr:+max,suffix,string\")\n"
+#| " 10. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
+#| " 11. a repeated string (format: \"repeat:count,string\")\n"
+#| " 12. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
+#| " 13. split of a string (format: \"split:number,separators,flags,xxx\")\n"
+#| " 14. split of shell argmuents (format: \"split_shell:number,xxx\")\n"
+#| " 15. a color (format: \"color:xxx\", see \"Plugin API reference\", "
+#| "function \"color\")\n"
+#| " 16. a modifier (format: \"modifier:name,data,string\")\n"
+#| " 17. an info (format: \"info:name,arguments\", arguments are optional)\n"
+#| " 18. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,"
+#| "xxx\" or \"base_decode:base,xxx\")\n"
+#| " 19. current date/time (format: \"date\" or \"date:format\")\n"
+#| " 20. an environment variable (format: \"env:XXX\")\n"
+#| " 21. a ternary operator (format: \"if:condition?value_if_true:"
+#| "value_if_false\")\n"
+#| " 22. result of an expression with parentheses and operators + - * / // % "
+#| "** (format: \"calc:xxx\")\n"
+#| " 23. a random integer number (format: \"random:min,max\")\n"
+#| " 24. a translated string (format: \"translate:xxx\")\n"
+#| " 25. define a user variable (format: \"define:name,value\")\n"
+#| " 26. an option (format: \"file.section.option\")\n"
+#| " 27. a local variable in buffer\n"
+#| " 28. a hdata name/variable (the value is automatically converted to "
+#| "string), by default \"window\" and \"buffer\" point to current window/"
+#| "buffer.\n"
+#| "Format for hdata can be one of following:\n"
+#| " hdata.var1.var2...: start with a hdata (pointer must be known), and ask "
+#| "variables one after one (other hdata can be followed)\n"
+#| " hdata[list].var1.var2...: start with a hdata using a list/pointer/"
+#| "pointer name, for example:\n"
+#| " ${buffer[gui_buffers].full_name}: full name of first buffer in linked "
+#| "list of buffers\n"
+#| " ${plugin[weechat_plugins].name}: name of first plugin in linked list "
+#| "of plugins\n"
+#| " hdata[pointer].var1.var2...: start with a hdata using a pointer, for "
+#| "example:\n"
+#| " ${buffer[0x1234abcd].full_name}: full name of the buffer with this "
+#| "pointer (can be used in triggers)\n"
+#| " ${buffer[my_pointer].full_name}: full name of the buffer with this "
+#| "pointer name (can be used in triggers)\n"
+#| "For name of hdata and variables, please look at \"Plugin API reference\", "
+#| "function \"weechat_hdata_get\".\n"
+#| "\n"
+#| "Examples (simple strings):\n"
+#| " /eval -n ${raw:${info:version}} ==> ${info:version}\n"
+#| " /eval -n ${eval_cond:${window.win_width}>100} ==> 1\n"
+#| " /eval -n ${info:version} ==> 0.4.3\n"
+#| " /eval -n ${env:HOME} ==> /home/user\n"
+#| " /eval -n ${weechat.look.scroll_amount} ==> 3\n"
+#| " /eval -n ${sec.data.password} ==> secret\n"
+#| " /eval -n ${window} ==> 0x2549aa0\n"
+#| " /eval -n ${window.buffer} ==> 0x2549320\n"
+#| " /eval -n ${window.buffer.full_name} ==> core.weechat\n"
+#| " /eval -n ${window.buffer.number} ==> 1\n"
+#| " /eval -n ${\\t} ==> <tab>\n"
+#| " /eval -n ${lower:TEST} ==> test\n"
+#| " /eval -n ${upper:test} ==> TEST\n"
+#| " /eval -n ${hide:-,${relay.network.password}} ==> --------\n"
+#| " /eval -n ${cut:3,+,test} ==> tes+\n"
+#| " /eval -n ${cut:+3,+,test} ==> te+\n"
+#| " /eval -n ${date:%H:%M:%S} ==> 07:46:40\n"
+#| " /eval -n ${if:${info:term_width}>80?big:small} ==> big\n"
+#| " /eval -n ${rev:Hello} ==> olleH\n"
+#| " /eval -n ${repeat:5,-} ==> -----\n"
+#| " /eval -n ${length:test} ==> 4\n"
+#| " /eval -n ${split:1,,,abc,def,ghi} ==> abc\n"
+#| " /eval -n ${split:-1,,,abc,def,ghi} ==> ghi\n"
+#| " /eval -n ${split:count,,,abc,def,ghi} ==> 3\n"
+#| " /eval -n ${split:random,,,abc,def,ghi} ==> def\n"
+#| " /eval -n ${split_shell:1,\"arg 1\" arg2} ==> arg 1\n"
+#| " /eval -n ${split_shell:-1,\"arg 1\" arg2} ==> arg2\n"
+#| " /eval -n ${split_shell:count,\"arg 1\" arg2} ==> 2\n"
+#| " /eval -n ${split_shell:random,\"arg 1\" arg2} ==> arg2\n"
+#| " /eval -n ${calc:(5+2)*3} ==> 21\n"
+#| " /eval -n ${random:0,10} ==> 3\n"
+#| " /eval -n ${base_encode:64,test} ==> dGVzdA==\n"
+#| " /eval -n ${base_decode:64,dGVzdA==} ==> test\n"
+#| " /eval -n ${translate:Plugin} ==> Extension\n"
+#| " /eval -n ${define:len,${calc:5+3}}${len}x${len} ==> 8x8\n"
+#| "\n"
+#| "Examples (conditions):\n"
+#| " /eval -n -c ${window.buffer.number} > 2 ==> 0\n"
+#| " /eval -n -c ${window.win_width} > 100 ==> 1\n"
+#| " /eval -n -c (8 > 12) || (5 > 2) ==> 1\n"
+#| " /eval -n -c (8 > 12) && (5 > 2) ==> 0\n"
+#| " /eval -n -c abcd =~ ^ABC ==> 1\n"
+#| " /eval -n -c abcd =~ (?-i)^ABC ==> 0\n"
+#| " /eval -n -c abcd =~ (?-i)^abc ==> 1\n"
+#| " /eval -n -c abcd !~ abc ==> 0\n"
+#| " /eval -n -c abcd =* a*d ==> 1\n"
+#| " /eval -n -c abcd =- bc ==> 1"
msgid ""
" -n: display result without sending it to buffer (debug mode)\n"
" -s: split expression before evaluating it (many commands can be "
@@ -1707,43 +1861,45 @@ msgid ""
"\n"
"Some variables are replaced in expression, using the format ${variable}, "
"variable can be, by order of priority:\n"
-" 1. the string itself without evaluation (format: \"raw:xxx\")\n"
-" 2. a user-defined variable (format: \"name\")\n"
-" 3. an evaluated sub-string (format: \"eval:xxx\")\n"
-" 4. an evaluated condition (format: \"eval_cond:xxx\")\n"
-" 5. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
-" 6. a string converted to lower case (format: \"lower:xxx\")\n"
-" 7. a string converted to upper case (format: \"upper:xxx\")\n"
-" 8. a string with chars to hide (format: \"hide:char,string\")\n"
-" 9. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:"
-"+max,suffix,string\")\n"
+" - the string itself without evaluation (format: \"raw:xxx\")\n"
+" - a user-defined variable (format: \"name\")\n"
+" - an evaluated sub-string (format: \"eval:xxx\")\n"
+" - an evaluated condition (format: \"eval_cond:xxx\")\n"
+" - a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
+" - a string with a range of chars (format: \"chars:xxx\" or \"chars:c1-c2\" "
+"where \"xxx\" is one of: \"digit\", \"xdigit\", \"lower\", \"upper\", "
+"\"alpha\", \"alnum\")\n"
+" - a string converted to lower case (format: \"lower:xxx\")\n"
+" - a string converted to upper case (format: \"upper:xxx\")\n"
+" - a string with chars to hide (format: \"hide:char,string\")\n"
+" - a string with max chars (format: \"cut:max,suffix,string\" or \"cut:+max,"
+"suffix,string\")\n"
" or max chars displayed on screen (format: \"cutscr:max,suffix,string\" "
"or \"cutscr:+max,suffix,string\")\n"
-" 10. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
-" 11. a repeated string (format: \"repeat:count,string\")\n"
-" 12. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
-" 13. split of a string (format: \"split:number,separators,flags,xxx\")\n"
-" 14. split of shell argmuents (format: \"split_shell:number,xxx\")\n"
-" 15. a color (format: \"color:xxx\", see \"Plugin API reference\", function "
+" - a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
+" - a repeated string (format: \"repeat:count,string\")\n"
+" - length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
+" - split of a string (format: \"split:number,separators,flags,xxx\")\n"
+" - split of shell argmuents (format: \"split_shell:number,xxx\")\n"
+" - a color (format: \"color:xxx\", see \"Plugin API reference\", function "
"\"color\")\n"
-" 16. a modifier (format: \"modifier:name,data,string\")\n"
-" 17. an info (format: \"info:name,arguments\", arguments are optional)\n"
-" 18. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,"
-"xxx\" or \"base_decode:base,xxx\")\n"
-" 19. current date/time (format: \"date\" or \"date:format\")\n"
-" 20. an environment variable (format: \"env:XXX\")\n"
-" 21. a ternary operator (format: \"if:condition?value_if_true:"
+" - a modifier (format: \"modifier:name,data,string\")\n"
+" - an info (format: \"info:name,arguments\", arguments are optional)\n"
+" - a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx\" "
+"or \"base_decode:base,xxx\")\n"
+" - current date/time (format: \"date\" or \"date:format\")\n"
+" - an environment variable (format: \"env:XXX\")\n"
+" - a ternary operator (format: \"if:condition?value_if_true:"
"value_if_false\")\n"
-" 22. result of an expression with parentheses and operators + - * / // % ** "
+" - result of an expression with parentheses and operators + - * / // % ** "
"(format: \"calc:xxx\")\n"
-" 23. a random integer number (format: \"random:min,max\")\n"
-" 24. a translated string (format: \"translate:xxx\")\n"
-" 25. define a user variable (format: \"define:name,value\")\n"
-" 26. an option (format: \"file.section.option\")\n"
-" 27. a local variable in buffer\n"
-" 28. a hdata name/variable (the value is automatically converted to "
-"string), by default \"window\" and \"buffer\" point to current window/"
-"buffer.\n"
+" - a random integer number (format: \"random:min,max\")\n"
+" - a translated string (format: \"translate:xxx\")\n"
+" - define a user variable (format: \"define:name,value\")\n"
+" - an option (format: \"file.section.option\")\n"
+" - a local variable in buffer\n"
+" - a hdata name/variable (the value is automatically converted to string), "
+"by default \"window\" and \"buffer\" point to current window/buffer.\n"
"Format for hdata can be one of following:\n"
" hdata.var1.var2...: start with a hdata (pointer must be known), and ask "
"variables one after one (other hdata can be followed)\n"
@@ -1774,6 +1930,8 @@ msgid ""
" /eval -n ${window.buffer.full_name} ==> core.weechat\n"
" /eval -n ${window.buffer.number} ==> 1\n"
" /eval -n ${\\t} ==> <tab>\n"
+" /eval -n ${chars:digit} ==> 0123456789\n"
+" /eval -n ${chars:J-T} ==> JKLMNOPQRST\n"
" /eval -n ${lower:TEST} ==> test\n"
" /eval -n ${upper:test} ==> TEST\n"
" /eval -n ${hide:-,${relay.network.password}} ==> --------\n"
diff --git a/po/es.po b/po/es.po
index 0938a4b24..911cfcef8 100644
--- a/po/es.po
+++ b/po/es.po
@@ -22,7 +22,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2022-10-15 22:42+0200\n"
+"POT-Creation-Date: 2022-11-06 09:02+0100\n"
"PO-Revision-Date: 2022-10-15 22:51+0200\n"
"Last-Translator: Santiago Forero <santiago@forero.xyz>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -1815,43 +1815,45 @@ msgid ""
"\n"
"Some variables are replaced in expression, using the format ${variable}, "
"variable can be, by order of priority:\n"
-" 1. the string itself without evaluation (format: \"raw:xxx\")\n"
-" 2. a user-defined variable (format: \"name\")\n"
-" 3. an evaluated sub-string (format: \"eval:xxx\")\n"
-" 4. an evaluated condition (format: \"eval_cond:xxx\")\n"
-" 5. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
-" 6. a string converted to lower case (format: \"lower:xxx\")\n"
-" 7. a string converted to upper case (format: \"upper:xxx\")\n"
-" 8. a string with chars to hide (format: \"hide:char,string\")\n"
-" 9. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:"
-"+max,suffix,string\")\n"
+" - the string itself without evaluation (format: \"raw:xxx\")\n"
+" - a user-defined variable (format: \"name\")\n"
+" - an evaluated sub-string (format: \"eval:xxx\")\n"
+" - an evaluated condition (format: \"eval_cond:xxx\")\n"
+" - a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
+" - a string with a range of chars (format: \"chars:xxx\" or \"chars:c1-c2\" "
+"where \"xxx\" is one of: \"digit\", \"xdigit\", \"lower\", \"upper\", "
+"\"alpha\", \"alnum\")\n"
+" - a string converted to lower case (format: \"lower:xxx\")\n"
+" - a string converted to upper case (format: \"upper:xxx\")\n"
+" - a string with chars to hide (format: \"hide:char,string\")\n"
+" - a string with max chars (format: \"cut:max,suffix,string\" or \"cut:+max,"
+"suffix,string\")\n"
" or max chars displayed on screen (format: \"cutscr:max,suffix,string\" "
"or \"cutscr:+max,suffix,string\")\n"
-" 10. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
-" 11. a repeated string (format: \"repeat:count,string\")\n"
-" 12. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
-" 13. split of a string (format: \"split:number,separators,flags,xxx\")\n"
-" 14. split of shell argmuents (format: \"split_shell:number,xxx\")\n"
-" 15. a color (format: \"color:xxx\", see \"Plugin API reference\", function "
+" - a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
+" - a repeated string (format: \"repeat:count,string\")\n"
+" - length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
+" - split of a string (format: \"split:number,separators,flags,xxx\")\n"
+" - split of shell argmuents (format: \"split_shell:number,xxx\")\n"
+" - a color (format: \"color:xxx\", see \"Plugin API reference\", function "
"\"color\")\n"
-" 16. a modifier (format: \"modifier:name,data,string\")\n"
-" 17. an info (format: \"info:name,arguments\", arguments are optional)\n"
-" 18. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,"
-"xxx\" or \"base_decode:base,xxx\")\n"
-" 19. current date/time (format: \"date\" or \"date:format\")\n"
-" 20. an environment variable (format: \"env:XXX\")\n"
-" 21. a ternary operator (format: \"if:condition?value_if_true:"
+" - a modifier (format: \"modifier:name,data,string\")\n"
+" - an info (format: \"info:name,arguments\", arguments are optional)\n"
+" - a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx\" "
+"or \"base_decode:base,xxx\")\n"
+" - current date/time (format: \"date\" or \"date:format\")\n"
+" - an environment variable (format: \"env:XXX\")\n"
+" - a ternary operator (format: \"if:condition?value_if_true:"
"value_if_false\")\n"
-" 22. result of an expression with parentheses and operators + - * / // % ** "
+" - result of an expression with parentheses and operators + - * / // % ** "
"(format: \"calc:xxx\")\n"
-" 23. a random integer number (format: \"random:min,max\")\n"
-" 24. a translated string (format: \"translate:xxx\")\n"
-" 25. define a user variable (format: \"define:name,value\")\n"
-" 26. an option (format: \"file.section.option\")\n"
-" 27. a local variable in buffer\n"
-" 28. a hdata name/variable (the value is automatically converted to "
-"string), by default \"window\" and \"buffer\" point to current window/"
-"buffer.\n"
+" - a random integer number (format: \"random:min,max\")\n"
+" - a translated string (format: \"translate:xxx\")\n"
+" - define a user variable (format: \"define:name,value\")\n"
+" - an option (format: \"file.section.option\")\n"
+" - a local variable in buffer\n"
+" - a hdata name/variable (the value is automatically converted to string), "
+"by default \"window\" and \"buffer\" point to current window/buffer.\n"
"Format for hdata can be one of following:\n"
" hdata.var1.var2...: start with a hdata (pointer must be known), and ask "
"variables one after one (other hdata can be followed)\n"
@@ -1882,6 +1884,8 @@ msgid ""
" /eval -n ${window.buffer.full_name} ==> core.weechat\n"
" /eval -n ${window.buffer.number} ==> 1\n"
" /eval -n ${\\t} ==> <tab>\n"
+" /eval -n ${chars:digit} ==> 0123456789\n"
+" /eval -n ${chars:J-T} ==> JKLMNOPQRST\n"
" /eval -n ${lower:TEST} ==> test\n"
" /eval -n ${upper:test} ==> TEST\n"
" /eval -n ${hide:-,${relay.network.password}} ==> --------\n"
diff --git a/po/fr.po b/po/fr.po
index 38345a3be..aa39918f9 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -21,8 +21,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2022-10-15 22:42+0200\n"
-"PO-Revision-Date: 2022-10-15 22:51+0200\n"
+"POT-Creation-Date: 2022-11-06 09:02+0100\n"
+"PO-Revision-Date: 2022-11-06 09:06+0100\n"
"Last-Translator: Sébastien Helleu <flashcode@flashtux.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: fr\n"
@@ -1676,43 +1676,45 @@ msgid ""
"\n"
"Some variables are replaced in expression, using the format ${variable}, "
"variable can be, by order of priority:\n"
-" 1. the string itself without evaluation (format: \"raw:xxx\")\n"
-" 2. a user-defined variable (format: \"name\")\n"
-" 3. an evaluated sub-string (format: \"eval:xxx\")\n"
-" 4. an evaluated condition (format: \"eval_cond:xxx\")\n"
-" 5. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
-" 6. a string converted to lower case (format: \"lower:xxx\")\n"
-" 7. a string converted to upper case (format: \"upper:xxx\")\n"
-" 8. a string with chars to hide (format: \"hide:char,string\")\n"
-" 9. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:"
-"+max,suffix,string\")\n"
+" - the string itself without evaluation (format: \"raw:xxx\")\n"
+" - a user-defined variable (format: \"name\")\n"
+" - an evaluated sub-string (format: \"eval:xxx\")\n"
+" - an evaluated condition (format: \"eval_cond:xxx\")\n"
+" - a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
+" - a string with a range of chars (format: \"chars:xxx\" or \"chars:c1-c2\" "
+"where \"xxx\" is one of: \"digit\", \"xdigit\", \"lower\", \"upper\", "
+"\"alpha\", \"alnum\")\n"
+" - a string converted to lower case (format: \"lower:xxx\")\n"
+" - a string converted to upper case (format: \"upper:xxx\")\n"
+" - a string with chars to hide (format: \"hide:char,string\")\n"
+" - a string with max chars (format: \"cut:max,suffix,string\" or \"cut:+max,"
+"suffix,string\")\n"
" or max chars displayed on screen (format: \"cutscr:max,suffix,string\" "
"or \"cutscr:+max,suffix,string\")\n"
-" 10. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
-" 11. a repeated string (format: \"repeat:count,string\")\n"
-" 12. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
-" 13. split of a string (format: \"split:number,separators,flags,xxx\")\n"
-" 14. split of shell argmuents (format: \"split_shell:number,xxx\")\n"
-" 15. a color (format: \"color:xxx\", see \"Plugin API reference\", function "
+" - a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
+" - a repeated string (format: \"repeat:count,string\")\n"
+" - length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
+" - split of a string (format: \"split:number,separators,flags,xxx\")\n"
+" - split of shell argmuents (format: \"split_shell:number,xxx\")\n"
+" - a color (format: \"color:xxx\", see \"Plugin API reference\", function "
"\"color\")\n"
-" 16. a modifier (format: \"modifier:name,data,string\")\n"
-" 17. an info (format: \"info:name,arguments\", arguments are optional)\n"
-" 18. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,"
-"xxx\" or \"base_decode:base,xxx\")\n"
-" 19. current date/time (format: \"date\" or \"date:format\")\n"
-" 20. an environment variable (format: \"env:XXX\")\n"
-" 21. a ternary operator (format: \"if:condition?value_if_true:"
+" - a modifier (format: \"modifier:name,data,string\")\n"
+" - an info (format: \"info:name,arguments\", arguments are optional)\n"
+" - a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx\" "
+"or \"base_decode:base,xxx\")\n"
+" - current date/time (format: \"date\" or \"date:format\")\n"
+" - an environment variable (format: \"env:XXX\")\n"
+" - a ternary operator (format: \"if:condition?value_if_true:"
"value_if_false\")\n"
-" 22. result of an expression with parentheses and operators + - * / // % ** "
+" - result of an expression with parentheses and operators + - * / // % ** "
"(format: \"calc:xxx\")\n"
-" 23. a random integer number (format: \"random:min,max\")\n"
-" 24. a translated string (format: \"translate:xxx\")\n"
-" 25. define a user variable (format: \"define:name,value\")\n"
-" 26. an option (format: \"file.section.option\")\n"
-" 27. a local variable in buffer\n"
-" 28. a hdata name/variable (the value is automatically converted to "
-"string), by default \"window\" and \"buffer\" point to current window/"
-"buffer.\n"
+" - a random integer number (format: \"random:min,max\")\n"
+" - a translated string (format: \"translate:xxx\")\n"
+" - define a user variable (format: \"define:name,value\")\n"
+" - an option (format: \"file.section.option\")\n"
+" - a local variable in buffer\n"
+" - a hdata name/variable (the value is automatically converted to string), "
+"by default \"window\" and \"buffer\" point to current window/buffer.\n"
"Format for hdata can be one of following:\n"
" hdata.var1.var2...: start with a hdata (pointer must be known), and ask "
"variables one after one (other hdata can be followed)\n"
@@ -1743,6 +1745,8 @@ msgid ""
" /eval -n ${window.buffer.full_name} ==> core.weechat\n"
" /eval -n ${window.buffer.number} ==> 1\n"
" /eval -n ${\\t} ==> <tab>\n"
+" /eval -n ${chars:digit} ==> 0123456789\n"
+" /eval -n ${chars:J-T} ==> JKLMNOPQRST\n"
" /eval -n ${lower:TEST} ==> test\n"
" /eval -n ${upper:test} ==> TEST\n"
" /eval -n ${hide:-,${relay.network.password}} ==> --------\n"
@@ -1831,46 +1835,47 @@ msgstr ""
"\n"
"Des variables sont remplacées dans l'expression, en utilisant le format "
"${variable}, la variable pouvant être, par ordre de priorité :\n"
-" 1. la chaîne elle-même sans évaluation (format : \"raw:xxx\")\n"
-" 2. une variable définie par l'utilisateur (format : \"nom\")\n"
-" 3. une sous-chaîne évaluée (format : \"eval:xxx\")\n"
-" 4. une condition évaluée (format : \"eval_cond:xxx\")\n"
-" 5. une chaîne avec les caractères échappés (format : \"esc:xxx\" ou "
+" - la chaîne elle-même sans évaluation (format : \"raw:xxx\")\n"
+" - une variable définie par l'utilisateur (format : \"nom\")\n"
+" - une sous-chaîne évaluée (format : \"eval:xxx\")\n"
+" - une condition évaluée (format : \"eval_cond:xxx\")\n"
+" - une chaîne avec les caractères échappés (format : \"esc:xxx\" ou "
"\"\\xxx\")\n"
-" 6. une chaîne convertie en minuscules (format : \"lower:xxx\")\n"
-" 7. une chaîne convertie en majuscules (format : \"upper:xxx\")\n"
-" 8. une chaîne avec des caractères à cacher (format : \"hide:caractère,"
+" - une chaîne avec un intervalle de caractères (format : \"chars:xxx\" ou "
+"\"chars:c1-c2\")\n"
+" - une chaîne convertie en minuscules (format : \"lower:xxx\")\n"
+" - une chaîne convertie en majuscules (format : \"upper:xxx\")\n"
+" - une chaîne avec des caractères à cacher (format : \"hide:caractère,"
"chaîne\")\n"
-" 9. une chaîne avec un maximum de caractères (format : \"cut:max,suffixe,"
+" - une chaîne avec un maximum de caractères (format : \"cut:max,suffixe,"
"chaîne\" ou \"cut:+max,suffixe,chaîne\")\n"
-" ou un maximum de caractères affichés à l'écran (format : \"cutscr:max,"
+" ou un maximum de caractères affichés à l'écran (format : \"cutscr:max,"
"suffixe,chaîne\" ou \"cutscr:+max,suffixe,chaîne\")\n"
-" 10. une chaîne inversée (format : \"rev:xxx\" ou \"revscr:xxx\")\n"
-" 11. une chaîne répétée (format : \"repeat:nombre,chaîne\")\n"
-" 12. longueur d'une chaîne (format : \"length:xxx\" ou \"lengthscr:xxx\")\n"
-" 13. découpage d'une chaîne (format : \"split:nombre,séparateurs,flags,"
+" - une chaîne inversée (format : \"rev:xxx\" ou \"revscr:xxx\")\n"
+" - une chaîne répétée (format : \"repeat:nombre,chaîne\")\n"
+" - longueur d'une chaîne (format : \"length:xxx\" ou \"lengthscr:xxx\")\n"
+" - découpage d'une chaîne (format : \"split:nombre,séparateurs,flags,"
"xxx\")\n"
-" 14. découpage de paramètres shell (format : \"split_shell:nombre,xxx\")\n"
-" 15. une couleur (format : \"color:xxx\", voir la \"Référence API "
+" - découpage de paramètres shell (format : \"split_shell:nombre,xxx\")\n"
+" - une couleur (format : \"color:xxx\", voir la \"Référence API "
"extension\", fonction \"color\")\n"
-" 16. un modificateur (format : \"modifier:nom,données,chaîne\")\n"
-" 17. une info (format : \"info:nom,paramètres\", les paramètres sont "
+" - un modificateur (format : \"modifier:nom,données,chaîne\")\n"
+" - une info (format : \"info:nom,paramètres\", les paramètres sont "
"optionnels)\n"
-" 18. une chaîne encodée/decodée en base 16, 32 ou 64 (format : "
-"\"base_encode:base,xxx\" ou \"base_decode:base,xxx\")\n"
-" 19. la date/heure courante (format : \"date\" ou \"date:format\")\n"
-" 20. une variable d'environnement (format : \"env:XXX\")\n"
-" 21. un opérateur ternaire (format : \"if:condition?valeur_si_vrai:"
+" - une chaîne encodée/decodée en base 16, 32 ou 64 (format : \"base_encode:"
+"base,xxx\" ou \"base_decode:base,xxx\")\n"
+" - la date/heure courante (format : \"date\" ou \"date:format\")\n"
+" - une variable d'environnement (format : \"env:XXX\")\n"
+" - un opérateur ternaire (format : \"if:condition?valeur_si_vrai:"
"valeur_si_faux\")\n"
-" 22. le résultat d'une expression avec parenthèses et les opérateurs + - "
+" - le résultat d'une expression avec parenthèses et les opérateurs + - "
"* / // % ** (format : \"calc:xxx\")\n"
-" 23. un nombre entier aléatoire (format : \"random:min,max\")\n"
-" 24. une chaîne traduite (format : \"translate:xxx\")\n"
-" 25. déclaration d'une variable utilisateur (format : \"define:nom,"
-"valeur\")\n"
-" 26. une option (format : \"fichier.section.option\")\n"
-" 27. une variable locale du tampon\n"
-" 28. un hdata/variable (la valeur est automatiquement convertie en chaîne), "
+" - un nombre entier aléatoire (format : \"random:min,max\")\n"
+" - une chaîne traduite (format : \"translate:xxx\")\n"
+" - déclaration d'une variable utilisateur (format : \"define:nom,valeur\")\n"
+" - une option (format : \"fichier.section.option\")\n"
+" - une variable locale du tampon\n"
+" - un hdata/variable (la valeur est automatiquement convertie en chaîne), "
"par défaut \"window\" et \"buffer\" pointent vers la fenêtre et le tampon "
"courants.\n"
"Le format du hdata peut être le suivant :\n"
@@ -1904,6 +1909,8 @@ msgstr ""
" /eval -n ${window.buffer.full_name} ==> core.weechat\n"
" /eval -n ${window.buffer.number} ==> 1\n"
" /eval -n ${\\t} ==> <tab>\n"
+" /eval -n ${chars:digit} ==> 0123456789\n"
+" /eval -n ${chars:J-T} ==> JKLMNOPQRST\n"
" /eval -n ${lower:TEST} ==> test\n"
" /eval -n ${upper:test} ==> TEST\n"
" /eval -n ${hide:-,${relay.network.password}} ==> --------\n"
diff --git a/po/hu.po b/po/hu.po
index 216d88bb6..04cbed9bb 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2022-10-15 22:42+0200\n"
+"POT-Creation-Date: 2022-11-06 09:02+0100\n"
"PO-Revision-Date: 2022-10-15 22:51+0200\n"
"Last-Translator: Andras Voroskoi <voroskoi@frugalware.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -1464,43 +1464,45 @@ msgid ""
"\n"
"Some variables are replaced in expression, using the format ${variable}, "
"variable can be, by order of priority:\n"
-" 1. the string itself without evaluation (format: \"raw:xxx\")\n"
-" 2. a user-defined variable (format: \"name\")\n"
-" 3. an evaluated sub-string (format: \"eval:xxx\")\n"
-" 4. an evaluated condition (format: \"eval_cond:xxx\")\n"
-" 5. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
-" 6. a string converted to lower case (format: \"lower:xxx\")\n"
-" 7. a string converted to upper case (format: \"upper:xxx\")\n"
-" 8. a string with chars to hide (format: \"hide:char,string\")\n"
-" 9. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:"
-"+max,suffix,string\")\n"
+" - the string itself without evaluation (format: \"raw:xxx\")\n"
+" - a user-defined variable (format: \"name\")\n"
+" - an evaluated sub-string (format: \"eval:xxx\")\n"
+" - an evaluated condition (format: \"eval_cond:xxx\")\n"
+" - a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
+" - a string with a range of chars (format: \"chars:xxx\" or \"chars:c1-c2\" "
+"where \"xxx\" is one of: \"digit\", \"xdigit\", \"lower\", \"upper\", "
+"\"alpha\", \"alnum\")\n"
+" - a string converted to lower case (format: \"lower:xxx\")\n"
+" - a string converted to upper case (format: \"upper:xxx\")\n"
+" - a string with chars to hide (format: \"hide:char,string\")\n"
+" - a string with max chars (format: \"cut:max,suffix,string\" or \"cut:+max,"
+"suffix,string\")\n"
" or max chars displayed on screen (format: \"cutscr:max,suffix,string\" "
"or \"cutscr:+max,suffix,string\")\n"
-" 10. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
-" 11. a repeated string (format: \"repeat:count,string\")\n"
-" 12. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
-" 13. split of a string (format: \"split:number,separators,flags,xxx\")\n"
-" 14. split of shell argmuents (format: \"split_shell:number,xxx\")\n"
-" 15. a color (format: \"color:xxx\", see \"Plugin API reference\", function "
+" - a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
+" - a repeated string (format: \"repeat:count,string\")\n"
+" - length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
+" - split of a string (format: \"split:number,separators,flags,xxx\")\n"
+" - split of shell argmuents (format: \"split_shell:number,xxx\")\n"
+" - a color (format: \"color:xxx\", see \"Plugin API reference\", function "
"\"color\")\n"
-" 16. a modifier (format: \"modifier:name,data,string\")\n"
-" 17. an info (format: \"info:name,arguments\", arguments are optional)\n"
-" 18. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,"
-"xxx\" or \"base_decode:base,xxx\")\n"
-" 19. current date/time (format: \"date\" or \"date:format\")\n"
-" 20. an environment variable (format: \"env:XXX\")\n"
-" 21. a ternary operator (format: \"if:condition?value_if_true:"
+" - a modifier (format: \"modifier:name,data,string\")\n"
+" - an info (format: \"info:name,arguments\", arguments are optional)\n"
+" - a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx\" "
+"or \"base_decode:base,xxx\")\n"
+" - current date/time (format: \"date\" or \"date:format\")\n"
+" - an environment variable (format: \"env:XXX\")\n"
+" - a ternary operator (format: \"if:condition?value_if_true:"
"value_if_false\")\n"
-" 22. result of an expression with parentheses and operators + - * / // % ** "
+" - result of an expression with parentheses and operators + - * / // % ** "
"(format: \"calc:xxx\")\n"
-" 23. a random integer number (format: \"random:min,max\")\n"
-" 24. a translated string (format: \"translate:xxx\")\n"
-" 25. define a user variable (format: \"define:name,value\")\n"
-" 26. an option (format: \"file.section.option\")\n"
-" 27. a local variable in buffer\n"
-" 28. a hdata name/variable (the value is automatically converted to "
-"string), by default \"window\" and \"buffer\" point to current window/"
-"buffer.\n"
+" - a random integer number (format: \"random:min,max\")\n"
+" - a translated string (format: \"translate:xxx\")\n"
+" - define a user variable (format: \"define:name,value\")\n"
+" - an option (format: \"file.section.option\")\n"
+" - a local variable in buffer\n"
+" - a hdata name/variable (the value is automatically converted to string), "
+"by default \"window\" and \"buffer\" point to current window/buffer.\n"
"Format for hdata can be one of following:\n"
" hdata.var1.var2...: start with a hdata (pointer must be known), and ask "
"variables one after one (other hdata can be followed)\n"
@@ -1531,6 +1533,8 @@ msgid ""
" /eval -n ${window.buffer.full_name} ==> core.weechat\n"
" /eval -n ${window.buffer.number} ==> 1\n"
" /eval -n ${\\t} ==> <tab>\n"
+" /eval -n ${chars:digit} ==> 0123456789\n"
+" /eval -n ${chars:J-T} ==> JKLMNOPQRST\n"
" /eval -n ${lower:TEST} ==> test\n"
" /eval -n ${upper:test} ==> TEST\n"
" /eval -n ${hide:-,${relay.network.password}} ==> --------\n"
diff --git a/po/it.po b/po/it.po
index 2c3dc5644..310f53872 100644
--- a/po/it.po
+++ b/po/it.po
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2022-10-15 22:42+0200\n"
+"POT-Creation-Date: 2022-11-06 09:02+0100\n"
"PO-Revision-Date: 2022-10-15 22:51+0200\n"
"Last-Translator: Esteban I. Ruiz Moreno <exio4.com@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -1584,43 +1584,45 @@ msgid ""
"\n"
"Some variables are replaced in expression, using the format ${variable}, "
"variable can be, by order of priority:\n"
-" 1. the string itself without evaluation (format: \"raw:xxx\")\n"
-" 2. a user-defined variable (format: \"name\")\n"
-" 3. an evaluated sub-string (format: \"eval:xxx\")\n"
-" 4. an evaluated condition (format: \"eval_cond:xxx\")\n"
-" 5. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
-" 6. a string converted to lower case (format: \"lower:xxx\")\n"
-" 7. a string converted to upper case (format: \"upper:xxx\")\n"
-" 8. a string with chars to hide (format: \"hide:char,string\")\n"
-" 9. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:"
-"+max,suffix,string\")\n"
+" - the string itself without evaluation (format: \"raw:xxx\")\n"
+" - a user-defined variable (format: \"name\")\n"
+" - an evaluated sub-string (format: \"eval:xxx\")\n"
+" - an evaluated condition (format: \"eval_cond:xxx\")\n"
+" - a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
+" - a string with a range of chars (format: \"chars:xxx\" or \"chars:c1-c2\" "
+"where \"xxx\" is one of: \"digit\", \"xdigit\", \"lower\", \"upper\", "
+"\"alpha\", \"alnum\")\n"
+" - a string converted to lower case (format: \"lower:xxx\")\n"
+" - a string converted to upper case (format: \"upper:xxx\")\n"
+" - a string with chars to hide (format: \"hide:char,string\")\n"
+" - a string with max chars (format: \"cut:max,suffix,string\" or \"cut:+max,"
+"suffix,string\")\n"
" or max chars displayed on screen (format: \"cutscr:max,suffix,string\" "
"or \"cutscr:+max,suffix,string\")\n"
-" 10. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
-" 11. a repeated string (format: \"repeat:count,string\")\n"
-" 12. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
-" 13. split of a string (format: \"split:number,separators,flags,xxx\")\n"
-" 14. split of shell argmuents (format: \"split_shell:number,xxx\")\n"
-" 15. a color (format: \"color:xxx\", see \"Plugin API reference\", function "
+" - a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
+" - a repeated string (format: \"repeat:count,string\")\n"
+" - length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
+" - split of a string (format: \"split:number,separators,flags,xxx\")\n"
+" - split of shell argmuents (format: \"split_shell:number,xxx\")\n"
+" - a color (format: \"color:xxx\", see \"Plugin API reference\", function "
"\"color\")\n"
-" 16. a modifier (format: \"modifier:name,data,string\")\n"
-" 17. an info (format: \"info:name,arguments\", arguments are optional)\n"
-" 18. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,"
-"xxx\" or \"base_decode:base,xxx\")\n"
-" 19. current date/time (format: \"date\" or \"date:format\")\n"
-" 20. an environment variable (format: \"env:XXX\")\n"
-" 21. a ternary operator (format: \"if:condition?value_if_true:"
+" - a modifier (format: \"modifier:name,data,string\")\n"
+" - an info (format: \"info:name,arguments\", arguments are optional)\n"
+" - a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx\" "
+"or \"base_decode:base,xxx\")\n"
+" - current date/time (format: \"date\" or \"date:format\")\n"
+" - an environment variable (format: \"env:XXX\")\n"
+" - a ternary operator (format: \"if:condition?value_if_true:"
"value_if_false\")\n"
-" 22. result of an expression with parentheses and operators + - * / // % ** "
+" - result of an expression with parentheses and operators + - * / // % ** "
"(format: \"calc:xxx\")\n"
-" 23. a random integer number (format: \"random:min,max\")\n"
-" 24. a translated string (format: \"translate:xxx\")\n"
-" 25. define a user variable (format: \"define:name,value\")\n"
-" 26. an option (format: \"file.section.option\")\n"
-" 27. a local variable in buffer\n"
-" 28. a hdata name/variable (the value is automatically converted to "
-"string), by default \"window\" and \"buffer\" point to current window/"
-"buffer.\n"
+" - a random integer number (format: \"random:min,max\")\n"
+" - a translated string (format: \"translate:xxx\")\n"
+" - define a user variable (format: \"define:name,value\")\n"
+" - an option (format: \"file.section.option\")\n"
+" - a local variable in buffer\n"
+" - a hdata name/variable (the value is automatically converted to string), "
+"by default \"window\" and \"buffer\" point to current window/buffer.\n"
"Format for hdata can be one of following:\n"
" hdata.var1.var2...: start with a hdata (pointer must be known), and ask "
"variables one after one (other hdata can be followed)\n"
@@ -1651,6 +1653,8 @@ msgid ""
" /eval -n ${window.buffer.full_name} ==> core.weechat\n"
" /eval -n ${window.buffer.number} ==> 1\n"
" /eval -n ${\\t} ==> <tab>\n"
+" /eval -n ${chars:digit} ==> 0123456789\n"
+" /eval -n ${chars:J-T} ==> JKLMNOPQRST\n"
" /eval -n ${lower:TEST} ==> test\n"
" /eval -n ${upper:test} ==> TEST\n"
" /eval -n ${hide:-,${relay.network.password}} ==> --------\n"
diff --git a/po/ja.po b/po/ja.po
index 49fbc9fd3..323bb5d18 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2022-10-15 22:42+0200\n"
+"POT-Creation-Date: 2022-11-06 09:02+0100\n"
"PO-Revision-Date: 2022-10-15 22:51+0200\n"
"Last-Translator: AYANOKOUZI, Ryuunosuke <i38w7i3@yahoo.co.jp>\n"
"Language-Team: Japanese <https://github.com/l/weechat/tree/master/"
@@ -1670,43 +1670,45 @@ msgid ""
"\n"
"Some variables are replaced in expression, using the format ${variable}, "
"variable can be, by order of priority:\n"
-" 1. the string itself without evaluation (format: \"raw:xxx\")\n"
-" 2. a user-defined variable (format: \"name\")\n"
-" 3. an evaluated sub-string (format: \"eval:xxx\")\n"
-" 4. an evaluated condition (format: \"eval_cond:xxx\")\n"
-" 5. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
-" 6. a string converted to lower case (format: \"lower:xxx\")\n"
-" 7. a string converted to upper case (format: \"upper:xxx\")\n"
-" 8. a string with chars to hide (format: \"hide:char,string\")\n"
-" 9. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:"
-"+max,suffix,string\")\n"
+" - the string itself without evaluation (format: \"raw:xxx\")\n"
+" - a user-defined variable (format: \"name\")\n"
+" - an evaluated sub-string (format: \"eval:xxx\")\n"
+" - an evaluated condition (format: \"eval_cond:xxx\")\n"
+" - a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
+" - a string with a range of chars (format: \"chars:xxx\" or \"chars:c1-c2\" "
+"where \"xxx\" is one of: \"digit\", \"xdigit\", \"lower\", \"upper\", "
+"\"alpha\", \"alnum\")\n"
+" - a string converted to lower case (format: \"lower:xxx\")\n"
+" - a string converted to upper case (format: \"upper:xxx\")\n"
+" - a string with chars to hide (format: \"hide:char,string\")\n"
+" - a string with max chars (format: \"cut:max,suffix,string\" or \"cut:+max,"
+"suffix,string\")\n"
" or max chars displayed on screen (format: \"cutscr:max,suffix,string\" "
"or \"cutscr:+max,suffix,string\")\n"
-" 10. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
-" 11. a repeated string (format: \"repeat:count,string\")\n"
-" 12. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
-" 13. split of a string (format: \"split:number,separators,flags,xxx\")\n"
-" 14. split of shell argmuents (format: \"split_shell:number,xxx\")\n"
-" 15. a color (format: \"color:xxx\", see \"Plugin API reference\", function "
+" - a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
+" - a repeated string (format: \"repeat:count,string\")\n"
+" - length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
+" - split of a string (format: \"split:number,separators,flags,xxx\")\n"
+" - split of shell argmuents (format: \"split_shell:number,xxx\")\n"
+" - a color (format: \"color:xxx\", see \"Plugin API reference\", function "
"\"color\")\n"
-" 16. a modifier (format: \"modifier:name,data,string\")\n"
-" 17. an info (format: \"info:name,arguments\", arguments are optional)\n"
-" 18. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,"
-"xxx\" or \"base_decode:base,xxx\")\n"
-" 19. current date/time (format: \"date\" or \"date:format\")\n"
-" 20. an environment variable (format: \"env:XXX\")\n"
-" 21. a ternary operator (format: \"if:condition?value_if_true:"
+" - a modifier (format: \"modifier:name,data,string\")\n"
+" - an info (format: \"info:name,arguments\", arguments are optional)\n"
+" - a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx\" "
+"or \"base_decode:base,xxx\")\n"
+" - current date/time (format: \"date\" or \"date:format\")\n"
+" - an environment variable (format: \"env:XXX\")\n"
+" - a ternary operator (format: \"if:condition?value_if_true:"
"value_if_false\")\n"
-" 22. result of an expression with parentheses and operators + - * / // % ** "
+" - result of an expression with parentheses and operators + - * / // % ** "
"(format: \"calc:xxx\")\n"
-" 23. a random integer number (format: \"random:min,max\")\n"
-" 24. a translated string (format: \"translate:xxx\")\n"
-" 25. define a user variable (format: \"define:name,value\")\n"
-" 26. an option (format: \"file.section.option\")\n"
-" 27. a local variable in buffer\n"
-" 28. a hdata name/variable (the value is automatically converted to "
-"string), by default \"window\" and \"buffer\" point to current window/"
-"buffer.\n"
+" - a random integer number (format: \"random:min,max\")\n"
+" - a translated string (format: \"translate:xxx\")\n"
+" - define a user variable (format: \"define:name,value\")\n"
+" - an option (format: \"file.section.option\")\n"
+" - a local variable in buffer\n"
+" - a hdata name/variable (the value is automatically converted to string), "
+"by default \"window\" and \"buffer\" point to current window/buffer.\n"
"Format for hdata can be one of following:\n"
" hdata.var1.var2...: start with a hdata (pointer must be known), and ask "
"variables one after one (other hdata can be followed)\n"
@@ -1737,6 +1739,8 @@ msgid ""
" /eval -n ${window.buffer.full_name} ==> core.weechat\n"
" /eval -n ${window.buffer.number} ==> 1\n"
" /eval -n ${\\t} ==> <tab>\n"
+" /eval -n ${chars:digit} ==> 0123456789\n"
+" /eval -n ${chars:J-T} ==> JKLMNOPQRST\n"
" /eval -n ${lower:TEST} ==> test\n"
" /eval -n ${upper:test} ==> TEST\n"
" /eval -n ${hide:-,${relay.network.password}} ==> --------\n"
diff --git a/po/pl.po b/po/pl.po
index eed301386..fc99ba3d1 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -22,7 +22,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2022-10-15 22:42+0200\n"
+"POT-Creation-Date: 2022-11-06 09:02+0100\n"
"PO-Revision-Date: 2022-10-15 22:51+0200\n"
"Last-Translator: Krzysztof Korościk <soltys@soltys.info>\n"
"Language-Team: Polish <kde-i18n-doc@kde.org>\n"
@@ -1836,43 +1836,45 @@ msgid ""
"\n"
"Some variables are replaced in expression, using the format ${variable}, "
"variable can be, by order of priority:\n"
-" 1. the string itself without evaluation (format: \"raw:xxx\")\n"
-" 2. a user-defined variable (format: \"name\")\n"
-" 3. an evaluated sub-string (format: \"eval:xxx\")\n"
-" 4. an evaluated condition (format: \"eval_cond:xxx\")\n"
-" 5. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
-" 6. a string converted to lower case (format: \"lower:xxx\")\n"
-" 7. a string converted to upper case (format: \"upper:xxx\")\n"
-" 8. a string with chars to hide (format: \"hide:char,string\")\n"
-" 9. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:"
-"+max,suffix,string\")\n"
+" - the string itself without evaluation (format: \"raw:xxx\")\n"
+" - a user-defined variable (format: \"name\")\n"
+" - an evaluated sub-string (format: \"eval:xxx\")\n"
+" - an evaluated condition (format: \"eval_cond:xxx\")\n"
+" - a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
+" - a string with a range of chars (format: \"chars:xxx\" or \"chars:c1-c2\" "
+"where \"xxx\" is one of: \"digit\", \"xdigit\", \"lower\", \"upper\", "
+"\"alpha\", \"alnum\")\n"
+" - a string converted to lower case (format: \"lower:xxx\")\n"
+" - a string converted to upper case (format: \"upper:xxx\")\n"
+" - a string with chars to hide (format: \"hide:char,string\")\n"
+" - a string with max chars (format: \"cut:max,suffix,string\" or \"cut:+max,"
+"suffix,string\")\n"
" or max chars displayed on screen (format: \"cutscr:max,suffix,string\" "
"or \"cutscr:+max,suffix,string\")\n"
-" 10. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
-" 11. a repeated string (format: \"repeat:count,string\")\n"
-" 12. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
-" 13. split of a string (format: \"split:number,separators,flags,xxx\")\n"
-" 14. split of shell argmuents (format: \"split_shell:number,xxx\")\n"
-" 15. a color (format: \"color:xxx\", see \"Plugin API reference\", function "
+" - a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
+" - a repeated string (format: \"repeat:count,string\")\n"
+" - length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
+" - split of a string (format: \"split:number,separators,flags,xxx\")\n"
+" - split of shell argmuents (format: \"split_shell:number,xxx\")\n"
+" - a color (format: \"color:xxx\", see \"Plugin API reference\", function "
"\"color\")\n"
-" 16. a modifier (format: \"modifier:name,data,string\")\n"
-" 17. an info (format: \"info:name,arguments\", arguments are optional)\n"
-" 18. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,"
-"xxx\" or \"base_decode:base,xxx\")\n"
-" 19. current date/time (format: \"date\" or \"date:format\")\n"
-" 20. an environment variable (format: \"env:XXX\")\n"
-" 21. a ternary operator (format: \"if:condition?value_if_true:"
+" - a modifier (format: \"modifier:name,data,string\")\n"
+" - an info (format: \"info:name,arguments\", arguments are optional)\n"
+" - a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx\" "
+"or \"base_decode:base,xxx\")\n"
+" - current date/time (format: \"date\" or \"date:format\")\n"
+" - an environment variable (format: \"env:XXX\")\n"
+" - a ternary operator (format: \"if:condition?value_if_true:"
"value_if_false\")\n"
-" 22. result of an expression with parentheses and operators + - * / // % ** "
+" - result of an expression with parentheses and operators + - * / // % ** "
"(format: \"calc:xxx\")\n"
-" 23. a random integer number (format: \"random:min,max\")\n"
-" 24. a translated string (format: \"translate:xxx\")\n"
-" 25. define a user variable (format: \"define:name,value\")\n"
-" 26. an option (format: \"file.section.option\")\n"
-" 27. a local variable in buffer\n"
-" 28. a hdata name/variable (the value is automatically converted to "
-"string), by default \"window\" and \"buffer\" point to current window/"
-"buffer.\n"
+" - a random integer number (format: \"random:min,max\")\n"
+" - a translated string (format: \"translate:xxx\")\n"
+" - define a user variable (format: \"define:name,value\")\n"
+" - an option (format: \"file.section.option\")\n"
+" - a local variable in buffer\n"
+" - a hdata name/variable (the value is automatically converted to string), "
+"by default \"window\" and \"buffer\" point to current window/buffer.\n"
"Format for hdata can be one of following:\n"
" hdata.var1.var2...: start with a hdata (pointer must be known), and ask "
"variables one after one (other hdata can be followed)\n"
@@ -1903,6 +1905,8 @@ msgid ""
" /eval -n ${window.buffer.full_name} ==> core.weechat\n"
" /eval -n ${window.buffer.number} ==> 1\n"
" /eval -n ${\\t} ==> <tab>\n"
+" /eval -n ${chars:digit} ==> 0123456789\n"
+" /eval -n ${chars:J-T} ==> JKLMNOPQRST\n"
" /eval -n ${lower:TEST} ==> test\n"
" /eval -n ${upper:test} ==> TEST\n"
" /eval -n ${hide:-,${relay.network.password}} ==> --------\n"
diff --git a/po/pt.po b/po/pt.po
index 7df192bde..0b0d52133 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2022-10-15 22:42+0200\n"
+"POT-Creation-Date: 2022-11-06 09:02+0100\n"
"PO-Revision-Date: 2022-10-15 22:51+0200\n"
"Last-Translator: Vasco Almeida <vascomalmeida@sapo.pt>\n"
"Language-Team: Portuguese <>\n"
@@ -1672,43 +1672,45 @@ msgid ""
"\n"
"Some variables are replaced in expression, using the format ${variable}, "
"variable can be, by order of priority:\n"
-" 1. the string itself without evaluation (format: \"raw:xxx\")\n"
-" 2. a user-defined variable (format: \"name\")\n"
-" 3. an evaluated sub-string (format: \"eval:xxx\")\n"
-" 4. an evaluated condition (format: \"eval_cond:xxx\")\n"
-" 5. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
-" 6. a string converted to lower case (format: \"lower:xxx\")\n"
-" 7. a string converted to upper case (format: \"upper:xxx\")\n"
-" 8. a string with chars to hide (format: \"hide:char,string\")\n"
-" 9. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:"
-"+max,suffix,string\")\n"
+" - the string itself without evaluation (format: \"raw:xxx\")\n"
+" - a user-defined variable (format: \"name\")\n"
+" - an evaluated sub-string (format: \"eval:xxx\")\n"
+" - an evaluated condition (format: \"eval_cond:xxx\")\n"
+" - a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
+" - a string with a range of chars (format: \"chars:xxx\" or \"chars:c1-c2\" "
+"where \"xxx\" is one of: \"digit\", \"xdigit\", \"lower\", \"upper\", "
+"\"alpha\", \"alnum\")\n"
+" - a string converted to lower case (format: \"lower:xxx\")\n"
+" - a string converted to upper case (format: \"upper:xxx\")\n"
+" - a string with chars to hide (format: \"hide:char,string\")\n"
+" - a string with max chars (format: \"cut:max,suffix,string\" or \"cut:+max,"
+"suffix,string\")\n"
" or max chars displayed on screen (format: \"cutscr:max,suffix,string\" "
"or \"cutscr:+max,suffix,string\")\n"
-" 10. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
-" 11. a repeated string (format: \"repeat:count,string\")\n"
-" 12. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
-" 13. split of a string (format: \"split:number,separators,flags,xxx\")\n"
-" 14. split of shell argmuents (format: \"split_shell:number,xxx\")\n"
-" 15. a color (format: \"color:xxx\", see \"Plugin API reference\", function "
+" - a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
+" - a repeated string (format: \"repeat:count,string\")\n"
+" - length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
+" - split of a string (format: \"split:number,separators,flags,xxx\")\n"
+" - split of shell argmuents (format: \"split_shell:number,xxx\")\n"
+" - a color (format: \"color:xxx\", see \"Plugin API reference\", function "
"\"color\")\n"
-" 16. a modifier (format: \"modifier:name,data,string\")\n"
-" 17. an info (format: \"info:name,arguments\", arguments are optional)\n"
-" 18. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,"
-"xxx\" or \"base_decode:base,xxx\")\n"
-" 19. current date/time (format: \"date\" or \"date:format\")\n"
-" 20. an environment variable (format: \"env:XXX\")\n"
-" 21. a ternary operator (format: \"if:condition?value_if_true:"
+" - a modifier (format: \"modifier:name,data,string\")\n"
+" - an info (format: \"info:name,arguments\", arguments are optional)\n"
+" - a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx\" "
+"or \"base_decode:base,xxx\")\n"
+" - current date/time (format: \"date\" or \"date:format\")\n"
+" - an environment variable (format: \"env:XXX\")\n"
+" - a ternary operator (format: \"if:condition?value_if_true:"
"value_if_false\")\n"
-" 22. result of an expression with parentheses and operators + - * / // % ** "
+" - result of an expression with parentheses and operators + - * / // % ** "
"(format: \"calc:xxx\")\n"
-" 23. a random integer number (format: \"random:min,max\")\n"
-" 24. a translated string (format: \"translate:xxx\")\n"
-" 25. define a user variable (format: \"define:name,value\")\n"
-" 26. an option (format: \"file.section.option\")\n"
-" 27. a local variable in buffer\n"
-" 28. a hdata name/variable (the value is automatically converted to "
-"string), by default \"window\" and \"buffer\" point to current window/"
-"buffer.\n"
+" - a random integer number (format: \"random:min,max\")\n"
+" - a translated string (format: \"translate:xxx\")\n"
+" - define a user variable (format: \"define:name,value\")\n"
+" - an option (format: \"file.section.option\")\n"
+" - a local variable in buffer\n"
+" - a hdata name/variable (the value is automatically converted to string), "
+"by default \"window\" and \"buffer\" point to current window/buffer.\n"
"Format for hdata can be one of following:\n"
" hdata.var1.var2...: start with a hdata (pointer must be known), and ask "
"variables one after one (other hdata can be followed)\n"
@@ -1739,6 +1741,8 @@ msgid ""
" /eval -n ${window.buffer.full_name} ==> core.weechat\n"
" /eval -n ${window.buffer.number} ==> 1\n"
" /eval -n ${\\t} ==> <tab>\n"
+" /eval -n ${chars:digit} ==> 0123456789\n"
+" /eval -n ${chars:J-T} ==> JKLMNOPQRST\n"
" /eval -n ${lower:TEST} ==> test\n"
" /eval -n ${upper:test} ==> TEST\n"
" /eval -n ${hide:-,${relay.network.password}} ==> --------\n"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 2023d081e..afffb0917 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2022-10-15 22:42+0200\n"
+"POT-Creation-Date: 2022-11-06 09:02+0100\n"
"PO-Revision-Date: 2022-10-15 22:51+0200\n"
"Last-Translator: Érico Nogueira <ericonr@disroot.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -1645,43 +1645,45 @@ msgid ""
"\n"
"Some variables are replaced in expression, using the format ${variable}, "
"variable can be, by order of priority:\n"
-" 1. the string itself without evaluation (format: \"raw:xxx\")\n"
-" 2. a user-defined variable (format: \"name\")\n"
-" 3. an evaluated sub-string (format: \"eval:xxx\")\n"
-" 4. an evaluated condition (format: \"eval_cond:xxx\")\n"
-" 5. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
-" 6. a string converted to lower case (format: \"lower:xxx\")\n"
-" 7. a string converted to upper case (format: \"upper:xxx\")\n"
-" 8. a string with chars to hide (format: \"hide:char,string\")\n"
-" 9. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:"
-"+max,suffix,string\")\n"
+" - the string itself without evaluation (format: \"raw:xxx\")\n"
+" - a user-defined variable (format: \"name\")\n"
+" - an evaluated sub-string (format: \"eval:xxx\")\n"
+" - an evaluated condition (format: \"eval_cond:xxx\")\n"
+" - a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
+" - a string with a range of chars (format: \"chars:xxx\" or \"chars:c1-c2\" "
+"where \"xxx\" is one of: \"digit\", \"xdigit\", \"lower\", \"upper\", "
+"\"alpha\", \"alnum\")\n"
+" - a string converted to lower case (format: \"lower:xxx\")\n"
+" - a string converted to upper case (format: \"upper:xxx\")\n"
+" - a string with chars to hide (format: \"hide:char,string\")\n"
+" - a string with max chars (format: \"cut:max,suffix,string\" or \"cut:+max,"
+"suffix,string\")\n"
" or max chars displayed on screen (format: \"cutscr:max,suffix,string\" "
"or \"cutscr:+max,suffix,string\")\n"
-" 10. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
-" 11. a repeated string (format: \"repeat:count,string\")\n"
-" 12. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
-" 13. split of a string (format: \"split:number,separators,flags,xxx\")\n"
-" 14. split of shell argmuents (format: \"split_shell:number,xxx\")\n"
-" 15. a color (format: \"color:xxx\", see \"Plugin API reference\", function "
+" - a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
+" - a repeated string (format: \"repeat:count,string\")\n"
+" - length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
+" - split of a string (format: \"split:number,separators,flags,xxx\")\n"
+" - split of shell argmuents (format: \"split_shell:number,xxx\")\n"
+" - a color (format: \"color:xxx\", see \"Plugin API reference\", function "
"\"color\")\n"
-" 16. a modifier (format: \"modifier:name,data,string\")\n"
-" 17. an info (format: \"info:name,arguments\", arguments are optional)\n"
-" 18. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,"
-"xxx\" or \"base_decode:base,xxx\")\n"
-" 19. current date/time (format: \"date\" or \"date:format\")\n"
-" 20. an environment variable (format: \"env:XXX\")\n"
-" 21. a ternary operator (format: \"if:condition?value_if_true:"
+" - a modifier (format: \"modifier:name,data,string\")\n"
+" - an info (format: \"info:name,arguments\", arguments are optional)\n"
+" - a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx\" "
+"or \"base_decode:base,xxx\")\n"
+" - current date/time (format: \"date\" or \"date:format\")\n"
+" - an environment variable (format: \"env:XXX\")\n"
+" - a ternary operator (format: \"if:condition?value_if_true:"
"value_if_false\")\n"
-" 22. result of an expression with parentheses and operators + - * / // % ** "
+" - result of an expression with parentheses and operators + - * / // % ** "
"(format: \"calc:xxx\")\n"
-" 23. a random integer number (format: \"random:min,max\")\n"
-" 24. a translated string (format: \"translate:xxx\")\n"
-" 25. define a user variable (format: \"define:name,value\")\n"
-" 26. an option (format: \"file.section.option\")\n"
-" 27. a local variable in buffer\n"
-" 28. a hdata name/variable (the value is automatically converted to "
-"string), by default \"window\" and \"buffer\" point to current window/"
-"buffer.\n"
+" - a random integer number (format: \"random:min,max\")\n"
+" - a translated string (format: \"translate:xxx\")\n"
+" - define a user variable (format: \"define:name,value\")\n"
+" - an option (format: \"file.section.option\")\n"
+" - a local variable in buffer\n"
+" - a hdata name/variable (the value is automatically converted to string), "
+"by default \"window\" and \"buffer\" point to current window/buffer.\n"
"Format for hdata can be one of following:\n"
" hdata.var1.var2...: start with a hdata (pointer must be known), and ask "
"variables one after one (other hdata can be followed)\n"
@@ -1712,6 +1714,8 @@ msgid ""
" /eval -n ${window.buffer.full_name} ==> core.weechat\n"
" /eval -n ${window.buffer.number} ==> 1\n"
" /eval -n ${\\t} ==> <tab>\n"
+" /eval -n ${chars:digit} ==> 0123456789\n"
+" /eval -n ${chars:J-T} ==> JKLMNOPQRST\n"
" /eval -n ${lower:TEST} ==> test\n"
" /eval -n ${upper:test} ==> TEST\n"
" /eval -n ${hide:-,${relay.network.password}} ==> --------\n"
diff --git a/po/ru.po b/po/ru.po
index 36efa96f5..5271699a4 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2022-10-15 22:42+0200\n"
+"POT-Creation-Date: 2022-11-06 09:02+0100\n"
"PO-Revision-Date: 2022-10-15 22:51+0200\n"
"Last-Translator: Aleksey V Zapparov AKA ixti <ixti@member.fsf.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -1485,43 +1485,45 @@ msgid ""
"\n"
"Some variables are replaced in expression, using the format ${variable}, "
"variable can be, by order of priority:\n"
-" 1. the string itself without evaluation (format: \"raw:xxx\")\n"
-" 2. a user-defined variable (format: \"name\")\n"
-" 3. an evaluated sub-string (format: \"eval:xxx\")\n"
-" 4. an evaluated condition (format: \"eval_cond:xxx\")\n"
-" 5. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
-" 6. a string converted to lower case (format: \"lower:xxx\")\n"
-" 7. a string converted to upper case (format: \"upper:xxx\")\n"
-" 8. a string with chars to hide (format: \"hide:char,string\")\n"
-" 9. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:"
-"+max,suffix,string\")\n"
+" - the string itself without evaluation (format: \"raw:xxx\")\n"
+" - a user-defined variable (format: \"name\")\n"
+" - an evaluated sub-string (format: \"eval:xxx\")\n"
+" - an evaluated condition (format: \"eval_cond:xxx\")\n"
+" - a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
+" - a string with a range of chars (format: \"chars:xxx\" or \"chars:c1-c2\" "
+"where \"xxx\" is one of: \"digit\", \"xdigit\", \"lower\", \"upper\", "
+"\"alpha\", \"alnum\")\n"
+" - a string converted to lower case (format: \"lower:xxx\")\n"
+" - a string converted to upper case (format: \"upper:xxx\")\n"
+" - a string with chars to hide (format: \"hide:char,string\")\n"
+" - a string with max chars (format: \"cut:max,suffix,string\" or \"cut:+max,"
+"suffix,string\")\n"
" or max chars displayed on screen (format: \"cutscr:max,suffix,string\" "
"or \"cutscr:+max,suffix,string\")\n"
-" 10. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
-" 11. a repeated string (format: \"repeat:count,string\")\n"
-" 12. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
-" 13. split of a string (format: \"split:number,separators,flags,xxx\")\n"
-" 14. split of shell argmuents (format: \"split_shell:number,xxx\")\n"
-" 15. a color (format: \"color:xxx\", see \"Plugin API reference\", function "
+" - a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
+" - a repeated string (format: \"repeat:count,string\")\n"
+" - length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
+" - split of a string (format: \"split:number,separators,flags,xxx\")\n"
+" - split of shell argmuents (format: \"split_shell:number,xxx\")\n"
+" - a color (format: \"color:xxx\", see \"Plugin API reference\", function "
"\"color\")\n"
-" 16. a modifier (format: \"modifier:name,data,string\")\n"
-" 17. an info (format: \"info:name,arguments\", arguments are optional)\n"
-" 18. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,"
-"xxx\" or \"base_decode:base,xxx\")\n"
-" 19. current date/time (format: \"date\" or \"date:format\")\n"
-" 20. an environment variable (format: \"env:XXX\")\n"
-" 21. a ternary operator (format: \"if:condition?value_if_true:"
+" - a modifier (format: \"modifier:name,data,string\")\n"
+" - an info (format: \"info:name,arguments\", arguments are optional)\n"
+" - a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx\" "
+"or \"base_decode:base,xxx\")\n"
+" - current date/time (format: \"date\" or \"date:format\")\n"
+" - an environment variable (format: \"env:XXX\")\n"
+" - a ternary operator (format: \"if:condition?value_if_true:"
"value_if_false\")\n"
-" 22. result of an expression with parentheses and operators + - * / // % ** "
+" - result of an expression with parentheses and operators + - * / // % ** "
"(format: \"calc:xxx\")\n"
-" 23. a random integer number (format: \"random:min,max\")\n"
-" 24. a translated string (format: \"translate:xxx\")\n"
-" 25. define a user variable (format: \"define:name,value\")\n"
-" 26. an option (format: \"file.section.option\")\n"
-" 27. a local variable in buffer\n"
-" 28. a hdata name/variable (the value is automatically converted to "
-"string), by default \"window\" and \"buffer\" point to current window/"
-"buffer.\n"
+" - a random integer number (format: \"random:min,max\")\n"
+" - a translated string (format: \"translate:xxx\")\n"
+" - define a user variable (format: \"define:name,value\")\n"
+" - an option (format: \"file.section.option\")\n"
+" - a local variable in buffer\n"
+" - a hdata name/variable (the value is automatically converted to string), "
+"by default \"window\" and \"buffer\" point to current window/buffer.\n"
"Format for hdata can be one of following:\n"
" hdata.var1.var2...: start with a hdata (pointer must be known), and ask "
"variables one after one (other hdata can be followed)\n"
@@ -1552,6 +1554,8 @@ msgid ""
" /eval -n ${window.buffer.full_name} ==> core.weechat\n"
" /eval -n ${window.buffer.number} ==> 1\n"
" /eval -n ${\\t} ==> <tab>\n"
+" /eval -n ${chars:digit} ==> 0123456789\n"
+" /eval -n ${chars:J-T} ==> JKLMNOPQRST\n"
" /eval -n ${lower:TEST} ==> test\n"
" /eval -n ${upper:test} ==> TEST\n"
" /eval -n ${hide:-,${relay.network.password}} ==> --------\n"
diff --git a/po/sr.po b/po/sr.po
index 0ed79243a..620bb67a2 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2022-10-15 22:42+0200\n"
+"POT-Creation-Date: 2022-11-06 09:02+0100\n"
"PO-Revision-Date: 2022-10-15 22:51+0200\n"
"Last-Translator: Ivan Pešić <ivan.pesic@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -1602,6 +1602,160 @@ msgid ""
"<expression2>"
msgstr "[-n|-s] [-d] <израз> || [-n] [-d [-d]] -c <израз1> <оператор> <израз2>"
+#, fuzzy
+#| msgid ""
+#| " -n: display result without sending it to buffer (debug mode)\n"
+#| " -s: split expression before evaluating it (many commands can be "
+#| "separated by semicolons)\n"
+#| " -d: display debug output after evaluation (with two -d: more "
+#| "verbose debug)\n"
+#| " -c: evaluate as condition: use operators and parentheses, return "
+#| "a boolean value (\"0\" or \"1\")\n"
+#| "expression: expression to evaluate, variables with format ${variable} are "
+#| "replaced (see below); many commands can be separated by semicolons\n"
+#| " operator: a logical or comparison operator:\n"
+#| " - logical operators:\n"
+#| " && boolean \"and\"\n"
+#| " || boolean \"or\"\n"
+#| " - comparison operators:\n"
+#| " == equal\n"
+#| " != not equal\n"
+#| " <= less or equal\n"
+#| " < less\n"
+#| " >= greater or equal\n"
+#| " > greater\n"
+#| " =~ is matching POSIX extended regex\n"
+#| " !~ is NOT matching POSIX extended regex\n"
+#| " ==* is matching mask, case sensitive (wildcard \"*\" is "
+#| "allowed)\n"
+#| " !!* is NOT matching mask, case sensitive (wildcard \"*\" "
+#| "is allowed)\n"
+#| " =* is matching mask, case insensitive (wildcard \"*\" "
+#| "is allowed)\n"
+#| " !* is NOT matching mask, case insensitive (wildcard "
+#| "\"*\" is allowed)\n"
+#| " ==- is included, case sensitive\n"
+#| " !!- is NOT included, case sensitive\n"
+#| " =- is included, case insensitive\n"
+#| " !- is NOT included, case insensitive\n"
+#| "\n"
+#| "An expression is considered as \"true\" if it is not NULL, not empty, and "
+#| "different from \"0\".\n"
+#| "The comparison is made using floating point numbers if the two "
+#| "expressions are valid numbers, with one of the following formats:\n"
+#| " - integer (examples: 5, -7)\n"
+#| " - floating point number (examples: 5.2, -7.5, 2.83e-2)\n"
+#| " - hexadecimal number (examples: 0xA3, -0xA3)\n"
+#| "To force a string comparison, you can add double quotes around each "
+#| "expression, for example:\n"
+#| " 50 > 100 ==> 0\n"
+#| " \"50\" > \"100\" ==> 1\n"
+#| "\n"
+#| "Some variables are replaced in expression, using the format ${variable}, "
+#| "variable can be, by order of priority:\n"
+#| " 1. the string itself without evaluation (format: \"raw:xxx\")\n"
+#| " 2. a user-defined variable (format: \"name\")\n"
+#| " 3. an evaluated sub-string (format: \"eval:xxx\")\n"
+#| " 4. an evaluated condition (format: \"eval_cond:xxx\")\n"
+#| " 5. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
+#| " 6. a string converted to lower case (format: \"lower:xxx\")\n"
+#| " 7. a string converted to upper case (format: \"upper:xxx\")\n"
+#| " 8. a string with chars to hide (format: \"hide:char,string\")\n"
+#| " 9. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:"
+#| "+max,suffix,string\")\n"
+#| " or max chars displayed on screen (format: \"cutscr:max,suffix,"
+#| "string\" or \"cutscr:+max,suffix,string\")\n"
+#| " 10. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
+#| " 11. a repeated string (format: \"repeat:count,string\")\n"
+#| " 12. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
+#| " 13. split of a string (format: \"split:number,separators,flags,xxx\")\n"
+#| " 14. split of shell argmuents (format: \"split_shell:number,xxx\")\n"
+#| " 15. a color (format: \"color:xxx\", see \"Plugin API reference\", "
+#| "function \"color\")\n"
+#| " 16. a modifier (format: \"modifier:name,data,string\")\n"
+#| " 17. an info (format: \"info:name,arguments\", arguments are optional)\n"
+#| " 18. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,"
+#| "xxx\" or \"base_decode:base,xxx\")\n"
+#| " 19. current date/time (format: \"date\" or \"date:format\")\n"
+#| " 20. an environment variable (format: \"env:XXX\")\n"
+#| " 21. a ternary operator (format: \"if:condition?value_if_true:"
+#| "value_if_false\")\n"
+#| " 22. result of an expression with parentheses and operators + - * / // % "
+#| "** (format: \"calc:xxx\")\n"
+#| " 23. a random integer number (format: \"random:min,max\")\n"
+#| " 24. a translated string (format: \"translate:xxx\")\n"
+#| " 25. define a user variable (format: \"define:name,value\")\n"
+#| " 26. an option (format: \"file.section.option\")\n"
+#| " 27. a local variable in buffer\n"
+#| " 28. a hdata name/variable (the value is automatically converted to "
+#| "string), by default \"window\" and \"buffer\" point to current window/"
+#| "buffer.\n"
+#| "Format for hdata can be one of following:\n"
+#| " hdata.var1.var2...: start with a hdata (pointer must be known), and ask "
+#| "variables one after one (other hdata can be followed)\n"
+#| " hdata[list].var1.var2...: start with a hdata using a list/pointer/"
+#| "pointer name, for example:\n"
+#| " ${buffer[gui_buffers].full_name}: full name of first buffer in linked "
+#| "list of buffers\n"
+#| " ${plugin[weechat_plugins].name}: name of first plugin in linked list "
+#| "of plugins\n"
+#| " hdata[pointer].var1.var2...: start with a hdata using a pointer, for "
+#| "example:\n"
+#| " ${buffer[0x1234abcd].full_name}: full name of the buffer with this "
+#| "pointer (can be used in triggers)\n"
+#| " ${buffer[my_pointer].full_name}: full name of the buffer with this "
+#| "pointer name (can be used in triggers)\n"
+#| "For name of hdata and variables, please look at \"Plugin API reference\", "
+#| "function \"weechat_hdata_get\".\n"
+#| "\n"
+#| "Examples (simple strings):\n"
+#| " /eval -n ${raw:${info:version}} ==> ${info:version}\n"
+#| " /eval -n ${eval_cond:${window.win_width}>100} ==> 1\n"
+#| " /eval -n ${info:version} ==> 0.4.3\n"
+#| " /eval -n ${env:HOME} ==> /home/user\n"
+#| " /eval -n ${weechat.look.scroll_amount} ==> 3\n"
+#| " /eval -n ${sec.data.password} ==> secret\n"
+#| " /eval -n ${window} ==> 0x2549aa0\n"
+#| " /eval -n ${window.buffer} ==> 0x2549320\n"
+#| " /eval -n ${window.buffer.full_name} ==> core.weechat\n"
+#| " /eval -n ${window.buffer.number} ==> 1\n"
+#| " /eval -n ${\\t} ==> <tab>\n"
+#| " /eval -n ${lower:TEST} ==> test\n"
+#| " /eval -n ${upper:test} ==> TEST\n"
+#| " /eval -n ${hide:-,${relay.network.password}} ==> --------\n"
+#| " /eval -n ${cut:3,+,test} ==> tes+\n"
+#| " /eval -n ${cut:+3,+,test} ==> te+\n"
+#| " /eval -n ${date:%H:%M:%S} ==> 07:46:40\n"
+#| " /eval -n ${if:${info:term_width}>80?big:small} ==> big\n"
+#| " /eval -n ${rev:Hello} ==> olleH\n"
+#| " /eval -n ${repeat:5,-} ==> -----\n"
+#| " /eval -n ${length:test} ==> 4\n"
+#| " /eval -n ${split:1,,,abc,def,ghi} ==> abc\n"
+#| " /eval -n ${split:-1,,,abc,def,ghi} ==> ghi\n"
+#| " /eval -n ${split:count,,,abc,def,ghi} ==> 3\n"
+#| " /eval -n ${split:random,,,abc,def,ghi} ==> def\n"
+#| " /eval -n ${split_shell:1,\"arg 1\" arg2} ==> arg 1\n"
+#| " /eval -n ${split_shell:-1,\"arg 1\" arg2} ==> arg2\n"
+#| " /eval -n ${split_shell:count,\"arg 1\" arg2} ==> 2\n"
+#| " /eval -n ${split_shell:random,\"arg 1\" arg2} ==> arg2\n"
+#| " /eval -n ${calc:(5+2)*3} ==> 21\n"
+#| " /eval -n ${random:0,10} ==> 3\n"
+#| " /eval -n ${base_encode:64,test} ==> dGVzdA==\n"
+#| " /eval -n ${base_decode:64,dGVzdA==} ==> test\n"
+#| " /eval -n ${translate:Plugin} ==> Extension\n"
+#| " /eval -n ${define:len,${calc:5+3}}${len}x${len} ==> 8x8\n"
+#| "\n"
+#| "Examples (conditions):\n"
+#| " /eval -n -c ${window.buffer.number} > 2 ==> 0\n"
+#| " /eval -n -c ${window.win_width} > 100 ==> 1\n"
+#| " /eval -n -c (8 > 12) || (5 > 2) ==> 1\n"
+#| " /eval -n -c (8 > 12) && (5 > 2) ==> 0\n"
+#| " /eval -n -c abcd =~ ^ABC ==> 1\n"
+#| " /eval -n -c abcd =~ (?-i)^ABC ==> 0\n"
+#| " /eval -n -c abcd =~ (?-i)^abc ==> 1\n"
+#| " /eval -n -c abcd !~ abc ==> 0\n"
+#| " /eval -n -c abcd =* a*d ==> 1\n"
+#| " /eval -n -c abcd =- bc ==> 1"
msgid ""
" -n: display result without sending it to buffer (debug mode)\n"
" -s: split expression before evaluating it (many commands can be "
@@ -1652,43 +1806,45 @@ msgid ""
"\n"
"Some variables are replaced in expression, using the format ${variable}, "
"variable can be, by order of priority:\n"
-" 1. the string itself without evaluation (format: \"raw:xxx\")\n"
-" 2. a user-defined variable (format: \"name\")\n"
-" 3. an evaluated sub-string (format: \"eval:xxx\")\n"
-" 4. an evaluated condition (format: \"eval_cond:xxx\")\n"
-" 5. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
-" 6. a string converted to lower case (format: \"lower:xxx\")\n"
-" 7. a string converted to upper case (format: \"upper:xxx\")\n"
-" 8. a string with chars to hide (format: \"hide:char,string\")\n"
-" 9. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:"
-"+max,suffix,string\")\n"
+" - the string itself without evaluation (format: \"raw:xxx\")\n"
+" - a user-defined variable (format: \"name\")\n"
+" - an evaluated sub-string (format: \"eval:xxx\")\n"
+" - an evaluated condition (format: \"eval_cond:xxx\")\n"
+" - a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
+" - a string with a range of chars (format: \"chars:xxx\" or \"chars:c1-c2\" "
+"where \"xxx\" is one of: \"digit\", \"xdigit\", \"lower\", \"upper\", "
+"\"alpha\", \"alnum\")\n"
+" - a string converted to lower case (format: \"lower:xxx\")\n"
+" - a string converted to upper case (format: \"upper:xxx\")\n"
+" - a string with chars to hide (format: \"hide:char,string\")\n"
+" - a string with max chars (format: \"cut:max,suffix,string\" or \"cut:+max,"
+"suffix,string\")\n"
" or max chars displayed on screen (format: \"cutscr:max,suffix,string\" "
"or \"cutscr:+max,suffix,string\")\n"
-" 10. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
-" 11. a repeated string (format: \"repeat:count,string\")\n"
-" 12. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
-" 13. split of a string (format: \"split:number,separators,flags,xxx\")\n"
-" 14. split of shell argmuents (format: \"split_shell:number,xxx\")\n"
-" 15. a color (format: \"color:xxx\", see \"Plugin API reference\", function "
+" - a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
+" - a repeated string (format: \"repeat:count,string\")\n"
+" - length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
+" - split of a string (format: \"split:number,separators,flags,xxx\")\n"
+" - split of shell argmuents (format: \"split_shell:number,xxx\")\n"
+" - a color (format: \"color:xxx\", see \"Plugin API reference\", function "
"\"color\")\n"
-" 16. a modifier (format: \"modifier:name,data,string\")\n"
-" 17. an info (format: \"info:name,arguments\", arguments are optional)\n"
-" 18. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,"
-"xxx\" or \"base_decode:base,xxx\")\n"
-" 19. current date/time (format: \"date\" or \"date:format\")\n"
-" 20. an environment variable (format: \"env:XXX\")\n"
-" 21. a ternary operator (format: \"if:condition?value_if_true:"
+" - a modifier (format: \"modifier:name,data,string\")\n"
+" - an info (format: \"info:name,arguments\", arguments are optional)\n"
+" - a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx\" "
+"or \"base_decode:base,xxx\")\n"
+" - current date/time (format: \"date\" or \"date:format\")\n"
+" - an environment variable (format: \"env:XXX\")\n"
+" - a ternary operator (format: \"if:condition?value_if_true:"
"value_if_false\")\n"
-" 22. result of an expression with parentheses and operators + - * / // % ** "
+" - result of an expression with parentheses and operators + - * / // % ** "
"(format: \"calc:xxx\")\n"
-" 23. a random integer number (format: \"random:min,max\")\n"
-" 24. a translated string (format: \"translate:xxx\")\n"
-" 25. define a user variable (format: \"define:name,value\")\n"
-" 26. an option (format: \"file.section.option\")\n"
-" 27. a local variable in buffer\n"
-" 28. a hdata name/variable (the value is automatically converted to "
-"string), by default \"window\" and \"buffer\" point to current window/"
-"buffer.\n"
+" - a random integer number (format: \"random:min,max\")\n"
+" - a translated string (format: \"translate:xxx\")\n"
+" - define a user variable (format: \"define:name,value\")\n"
+" - an option (format: \"file.section.option\")\n"
+" - a local variable in buffer\n"
+" - a hdata name/variable (the value is automatically converted to string), "
+"by default \"window\" and \"buffer\" point to current window/buffer.\n"
"Format for hdata can be one of following:\n"
" hdata.var1.var2...: start with a hdata (pointer must be known), and ask "
"variables one after one (other hdata can be followed)\n"
@@ -1719,6 +1875,8 @@ msgid ""
" /eval -n ${window.buffer.full_name} ==> core.weechat\n"
" /eval -n ${window.buffer.number} ==> 1\n"
" /eval -n ${\\t} ==> <tab>\n"
+" /eval -n ${chars:digit} ==> 0123456789\n"
+" /eval -n ${chars:J-T} ==> JKLMNOPQRST\n"
" /eval -n ${lower:TEST} ==> test\n"
" /eval -n ${upper:test} ==> TEST\n"
" /eval -n ${hide:-,${relay.network.password}} ==> --------\n"
diff --git a/po/tr.po b/po/tr.po
index d5bcc0422..1fdac094f 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2022-10-15 22:42+0200\n"
+"POT-Creation-Date: 2022-11-06 09:02+0100\n"
"PO-Revision-Date: 2022-10-15 22:51+0200\n"
"Last-Translator: Emir SARI <emir_sari@icloud.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -1593,6 +1593,160 @@ msgid ""
"<expression2>"
msgstr "[-n|-s] [-d] <ifade> || [-n] [-d] -c <ifade1> <işleç> <ifade2>"
+#, fuzzy
+#| msgid ""
+#| " -n: display result without sending it to buffer (debug mode)\n"
+#| " -s: split expression before evaluating it (many commands can be "
+#| "separated by semicolons)\n"
+#| " -d: display debug output after evaluation (with two -d: more "
+#| "verbose debug)\n"
+#| " -c: evaluate as condition: use operators and parentheses, return "
+#| "a boolean value (\"0\" or \"1\")\n"
+#| "expression: expression to evaluate, variables with format ${variable} are "
+#| "replaced (see below); many commands can be separated by semicolons\n"
+#| " operator: a logical or comparison operator:\n"
+#| " - logical operators:\n"
+#| " && boolean \"and\"\n"
+#| " || boolean \"or\"\n"
+#| " - comparison operators:\n"
+#| " == equal\n"
+#| " != not equal\n"
+#| " <= less or equal\n"
+#| " < less\n"
+#| " >= greater or equal\n"
+#| " > greater\n"
+#| " =~ is matching POSIX extended regex\n"
+#| " !~ is NOT matching POSIX extended regex\n"
+#| " ==* is matching mask, case sensitive (wildcard \"*\" is "
+#| "allowed)\n"
+#| " !!* is NOT matching mask, case sensitive (wildcard \"*\" "
+#| "is allowed)\n"
+#| " =* is matching mask, case insensitive (wildcard \"*\" "
+#| "is allowed)\n"
+#| " !* is NOT matching mask, case insensitive (wildcard "
+#| "\"*\" is allowed)\n"
+#| " ==- is included, case sensitive\n"
+#| " !!- is NOT included, case sensitive\n"
+#| " =- is included, case insensitive\n"
+#| " !- is NOT included, case insensitive\n"
+#| "\n"
+#| "An expression is considered as \"true\" if it is not NULL, not empty, and "
+#| "different from \"0\".\n"
+#| "The comparison is made using floating point numbers if the two "
+#| "expressions are valid numbers, with one of the following formats:\n"
+#| " - integer (examples: 5, -7)\n"
+#| " - floating point number (examples: 5.2, -7.5, 2.83e-2)\n"
+#| " - hexadecimal number (examples: 0xA3, -0xA3)\n"
+#| "To force a string comparison, you can add double quotes around each "
+#| "expression, for example:\n"
+#| " 50 > 100 ==> 0\n"
+#| " \"50\" > \"100\" ==> 1\n"
+#| "\n"
+#| "Some variables are replaced in expression, using the format ${variable}, "
+#| "variable can be, by order of priority:\n"
+#| " 1. the string itself without evaluation (format: \"raw:xxx\")\n"
+#| " 2. a user-defined variable (format: \"name\")\n"
+#| " 3. an evaluated sub-string (format: \"eval:xxx\")\n"
+#| " 4. an evaluated condition (format: \"eval_cond:xxx\")\n"
+#| " 5. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
+#| " 6. a string converted to lower case (format: \"lower:xxx\")\n"
+#| " 7. a string converted to upper case (format: \"upper:xxx\")\n"
+#| " 8. a string with chars to hide (format: \"hide:char,string\")\n"
+#| " 9. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:"
+#| "+max,suffix,string\")\n"
+#| " or max chars displayed on screen (format: \"cutscr:max,suffix,"
+#| "string\" or \"cutscr:+max,suffix,string\")\n"
+#| " 10. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
+#| " 11. a repeated string (format: \"repeat:count,string\")\n"
+#| " 12. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
+#| " 13. split of a string (format: \"split:number,separators,flags,xxx\")\n"
+#| " 14. split of shell argmuents (format: \"split_shell:number,xxx\")\n"
+#| " 15. a color (format: \"color:xxx\", see \"Plugin API reference\", "
+#| "function \"color\")\n"
+#| " 16. a modifier (format: \"modifier:name,data,string\")\n"
+#| " 17. an info (format: \"info:name,arguments\", arguments are optional)\n"
+#| " 18. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,"
+#| "xxx\" or \"base_decode:base,xxx\")\n"
+#| " 19. current date/time (format: \"date\" or \"date:format\")\n"
+#| " 20. an environment variable (format: \"env:XXX\")\n"
+#| " 21. a ternary operator (format: \"if:condition?value_if_true:"
+#| "value_if_false\")\n"
+#| " 22. result of an expression with parentheses and operators + - * / // % "
+#| "** (format: \"calc:xxx\")\n"
+#| " 23. a random integer number (format: \"random:min,max\")\n"
+#| " 24. a translated string (format: \"translate:xxx\")\n"
+#| " 25. define a user variable (format: \"define:name,value\")\n"
+#| " 26. an option (format: \"file.section.option\")\n"
+#| " 27. a local variable in buffer\n"
+#| " 28. a hdata name/variable (the value is automatically converted to "
+#| "string), by default \"window\" and \"buffer\" point to current window/"
+#| "buffer.\n"
+#| "Format for hdata can be one of following:\n"
+#| " hdata.var1.var2...: start with a hdata (pointer must be known), and ask "
+#| "variables one after one (other hdata can be followed)\n"
+#| " hdata[list].var1.var2...: start with a hdata using a list/pointer/"
+#| "pointer name, for example:\n"
+#| " ${buffer[gui_buffers].full_name}: full name of first buffer in linked "
+#| "list of buffers\n"
+#| " ${plugin[weechat_plugins].name}: name of first plugin in linked list "
+#| "of plugins\n"
+#| " hdata[pointer].var1.var2...: start with a hdata using a pointer, for "
+#| "example:\n"
+#| " ${buffer[0x1234abcd].full_name}: full name of the buffer with this "
+#| "pointer (can be used in triggers)\n"
+#| " ${buffer[my_pointer].full_name}: full name of the buffer with this "
+#| "pointer name (can be used in triggers)\n"
+#| "For name of hdata and variables, please look at \"Plugin API reference\", "
+#| "function \"weechat_hdata_get\".\n"
+#| "\n"
+#| "Examples (simple strings):\n"
+#| " /eval -n ${raw:${info:version}} ==> ${info:version}\n"
+#| " /eval -n ${eval_cond:${window.win_width}>100} ==> 1\n"
+#| " /eval -n ${info:version} ==> 0.4.3\n"
+#| " /eval -n ${env:HOME} ==> /home/user\n"
+#| " /eval -n ${weechat.look.scroll_amount} ==> 3\n"
+#| " /eval -n ${sec.data.password} ==> secret\n"
+#| " /eval -n ${window} ==> 0x2549aa0\n"
+#| " /eval -n ${window.buffer} ==> 0x2549320\n"
+#| " /eval -n ${window.buffer.full_name} ==> core.weechat\n"
+#| " /eval -n ${window.buffer.number} ==> 1\n"
+#| " /eval -n ${\\t} ==> <tab>\n"
+#| " /eval -n ${lower:TEST} ==> test\n"
+#| " /eval -n ${upper:test} ==> TEST\n"
+#| " /eval -n ${hide:-,${relay.network.password}} ==> --------\n"
+#| " /eval -n ${cut:3,+,test} ==> tes+\n"
+#| " /eval -n ${cut:+3,+,test} ==> te+\n"
+#| " /eval -n ${date:%H:%M:%S} ==> 07:46:40\n"
+#| " /eval -n ${if:${info:term_width}>80?big:small} ==> big\n"
+#| " /eval -n ${rev:Hello} ==> olleH\n"
+#| " /eval -n ${repeat:5,-} ==> -----\n"
+#| " /eval -n ${length:test} ==> 4\n"
+#| " /eval -n ${split:1,,,abc,def,ghi} ==> abc\n"
+#| " /eval -n ${split:-1,,,abc,def,ghi} ==> ghi\n"
+#| " /eval -n ${split:count,,,abc,def,ghi} ==> 3\n"
+#| " /eval -n ${split:random,,,abc,def,ghi} ==> def\n"
+#| " /eval -n ${split_shell:1,\"arg 1\" arg2} ==> arg 1\n"
+#| " /eval -n ${split_shell:-1,\"arg 1\" arg2} ==> arg2\n"
+#| " /eval -n ${split_shell:count,\"arg 1\" arg2} ==> 2\n"
+#| " /eval -n ${split_shell:random,\"arg 1\" arg2} ==> arg2\n"
+#| " /eval -n ${calc:(5+2)*3} ==> 21\n"
+#| " /eval -n ${random:0,10} ==> 3\n"
+#| " /eval -n ${base_encode:64,test} ==> dGVzdA==\n"
+#| " /eval -n ${base_decode:64,dGVzdA==} ==> test\n"
+#| " /eval -n ${translate:Plugin} ==> Extension\n"
+#| " /eval -n ${define:len,${calc:5+3}}${len}x${len} ==> 8x8\n"
+#| "\n"
+#| "Examples (conditions):\n"
+#| " /eval -n -c ${window.buffer.number} > 2 ==> 0\n"
+#| " /eval -n -c ${window.win_width} > 100 ==> 1\n"
+#| " /eval -n -c (8 > 12) || (5 > 2) ==> 1\n"
+#| " /eval -n -c (8 > 12) && (5 > 2) ==> 0\n"
+#| " /eval -n -c abcd =~ ^ABC ==> 1\n"
+#| " /eval -n -c abcd =~ (?-i)^ABC ==> 0\n"
+#| " /eval -n -c abcd =~ (?-i)^abc ==> 1\n"
+#| " /eval -n -c abcd !~ abc ==> 0\n"
+#| " /eval -n -c abcd =* a*d ==> 1\n"
+#| " /eval -n -c abcd =- bc ==> 1"
msgid ""
" -n: display result without sending it to buffer (debug mode)\n"
" -s: split expression before evaluating it (many commands can be "
@@ -1643,43 +1797,45 @@ msgid ""
"\n"
"Some variables are replaced in expression, using the format ${variable}, "
"variable can be, by order of priority:\n"
-" 1. the string itself without evaluation (format: \"raw:xxx\")\n"
-" 2. a user-defined variable (format: \"name\")\n"
-" 3. an evaluated sub-string (format: \"eval:xxx\")\n"
-" 4. an evaluated condition (format: \"eval_cond:xxx\")\n"
-" 5. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
-" 6. a string converted to lower case (format: \"lower:xxx\")\n"
-" 7. a string converted to upper case (format: \"upper:xxx\")\n"
-" 8. a string with chars to hide (format: \"hide:char,string\")\n"
-" 9. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:"
-"+max,suffix,string\")\n"
+" - the string itself without evaluation (format: \"raw:xxx\")\n"
+" - a user-defined variable (format: \"name\")\n"
+" - an evaluated sub-string (format: \"eval:xxx\")\n"
+" - an evaluated condition (format: \"eval_cond:xxx\")\n"
+" - a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
+" - a string with a range of chars (format: \"chars:xxx\" or \"chars:c1-c2\" "
+"where \"xxx\" is one of: \"digit\", \"xdigit\", \"lower\", \"upper\", "
+"\"alpha\", \"alnum\")\n"
+" - a string converted to lower case (format: \"lower:xxx\")\n"
+" - a string converted to upper case (format: \"upper:xxx\")\n"
+" - a string with chars to hide (format: \"hide:char,string\")\n"
+" - a string with max chars (format: \"cut:max,suffix,string\" or \"cut:+max,"
+"suffix,string\")\n"
" or max chars displayed on screen (format: \"cutscr:max,suffix,string\" "
"or \"cutscr:+max,suffix,string\")\n"
-" 10. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
-" 11. a repeated string (format: \"repeat:count,string\")\n"
-" 12. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
-" 13. split of a string (format: \"split:number,separators,flags,xxx\")\n"
-" 14. split of shell argmuents (format: \"split_shell:number,xxx\")\n"
-" 15. a color (format: \"color:xxx\", see \"Plugin API reference\", function "
+" - a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
+" - a repeated string (format: \"repeat:count,string\")\n"
+" - length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
+" - split of a string (format: \"split:number,separators,flags,xxx\")\n"
+" - split of shell argmuents (format: \"split_shell:number,xxx\")\n"
+" - a color (format: \"color:xxx\", see \"Plugin API reference\", function "
"\"color\")\n"
-" 16. a modifier (format: \"modifier:name,data,string\")\n"
-" 17. an info (format: \"info:name,arguments\", arguments are optional)\n"
-" 18. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,"
-"xxx\" or \"base_decode:base,xxx\")\n"
-" 19. current date/time (format: \"date\" or \"date:format\")\n"
-" 20. an environment variable (format: \"env:XXX\")\n"
-" 21. a ternary operator (format: \"if:condition?value_if_true:"
+" - a modifier (format: \"modifier:name,data,string\")\n"
+" - an info (format: \"info:name,arguments\", arguments are optional)\n"
+" - a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx\" "
+"or \"base_decode:base,xxx\")\n"
+" - current date/time (format: \"date\" or \"date:format\")\n"
+" - an environment variable (format: \"env:XXX\")\n"
+" - a ternary operator (format: \"if:condition?value_if_true:"
"value_if_false\")\n"
-" 22. result of an expression with parentheses and operators + - * / // % ** "
+" - result of an expression with parentheses and operators + - * / // % ** "
"(format: \"calc:xxx\")\n"
-" 23. a random integer number (format: \"random:min,max\")\n"
-" 24. a translated string (format: \"translate:xxx\")\n"
-" 25. define a user variable (format: \"define:name,value\")\n"
-" 26. an option (format: \"file.section.option\")\n"
-" 27. a local variable in buffer\n"
-" 28. a hdata name/variable (the value is automatically converted to "
-"string), by default \"window\" and \"buffer\" point to current window/"
-"buffer.\n"
+" - a random integer number (format: \"random:min,max\")\n"
+" - a translated string (format: \"translate:xxx\")\n"
+" - define a user variable (format: \"define:name,value\")\n"
+" - an option (format: \"file.section.option\")\n"
+" - a local variable in buffer\n"
+" - a hdata name/variable (the value is automatically converted to string), "
+"by default \"window\" and \"buffer\" point to current window/buffer.\n"
"Format for hdata can be one of following:\n"
" hdata.var1.var2...: start with a hdata (pointer must be known), and ask "
"variables one after one (other hdata can be followed)\n"
@@ -1710,6 +1866,8 @@ msgid ""
" /eval -n ${window.buffer.full_name} ==> core.weechat\n"
" /eval -n ${window.buffer.number} ==> 1\n"
" /eval -n ${\\t} ==> <tab>\n"
+" /eval -n ${chars:digit} ==> 0123456789\n"
+" /eval -n ${chars:J-T} ==> JKLMNOPQRST\n"
" /eval -n ${lower:TEST} ==> test\n"
" /eval -n ${upper:test} ==> TEST\n"
" /eval -n ${hide:-,${relay.network.password}} ==> --------\n"
diff --git a/po/weechat.pot b/po/weechat.pot
index cc3b341ba..50bff51ac 100644
--- a/po/weechat.pot
+++ b/po/weechat.pot
@@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2022-10-15 22:42+0200\n"
+"POT-Creation-Date: 2022-11-06 09:02+0100\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"
@@ -1330,43 +1330,45 @@ msgid ""
"\n"
"Some variables are replaced in expression, using the format ${variable}, "
"variable can be, by order of priority:\n"
-" 1. the string itself without evaluation (format: \"raw:xxx\")\n"
-" 2. a user-defined variable (format: \"name\")\n"
-" 3. an evaluated sub-string (format: \"eval:xxx\")\n"
-" 4. an evaluated condition (format: \"eval_cond:xxx\")\n"
-" 5. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
-" 6. a string converted to lower case (format: \"lower:xxx\")\n"
-" 7. a string converted to upper case (format: \"upper:xxx\")\n"
-" 8. a string with chars to hide (format: \"hide:char,string\")\n"
-" 9. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:"
-"+max,suffix,string\")\n"
+" - the string itself without evaluation (format: \"raw:xxx\")\n"
+" - a user-defined variable (format: \"name\")\n"
+" - an evaluated sub-string (format: \"eval:xxx\")\n"
+" - an evaluated condition (format: \"eval_cond:xxx\")\n"
+" - a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n"
+" - a string with a range of chars (format: \"chars:xxx\" or \"chars:c1-c2\" "
+"where \"xxx\" is one of: \"digit\", \"xdigit\", \"lower\", \"upper\", "
+"\"alpha\", \"alnum\")\n"
+" - a string converted to lower case (format: \"lower:xxx\")\n"
+" - a string converted to upper case (format: \"upper:xxx\")\n"
+" - a string with chars to hide (format: \"hide:char,string\")\n"
+" - a string with max chars (format: \"cut:max,suffix,string\" or \"cut:+max,"
+"suffix,string\")\n"
" or max chars displayed on screen (format: \"cutscr:max,suffix,string\" "
"or \"cutscr:+max,suffix,string\")\n"
-" 10. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
-" 11. a repeated string (format: \"repeat:count,string\")\n"
-" 12. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
-" 13. split of a string (format: \"split:number,separators,flags,xxx\")\n"
-" 14. split of shell argmuents (format: \"split_shell:number,xxx\")\n"
-" 15. a color (format: \"color:xxx\", see \"Plugin API reference\", function "
+" - a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n"
+" - a repeated string (format: \"repeat:count,string\")\n"
+" - length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n"
+" - split of a string (format: \"split:number,separators,flags,xxx\")\n"
+" - split of shell argmuents (format: \"split_shell:number,xxx\")\n"
+" - a color (format: \"color:xxx\", see \"Plugin API reference\", function "
"\"color\")\n"
-" 16. a modifier (format: \"modifier:name,data,string\")\n"
-" 17. an info (format: \"info:name,arguments\", arguments are optional)\n"
-" 18. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,"
-"xxx\" or \"base_decode:base,xxx\")\n"
-" 19. current date/time (format: \"date\" or \"date:format\")\n"
-" 20. an environment variable (format: \"env:XXX\")\n"
-" 21. a ternary operator (format: \"if:condition?value_if_true:"
+" - a modifier (format: \"modifier:name,data,string\")\n"
+" - an info (format: \"info:name,arguments\", arguments are optional)\n"
+" - a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx\" "
+"or \"base_decode:base,xxx\")\n"
+" - current date/time (format: \"date\" or \"date:format\")\n"
+" - an environment variable (format: \"env:XXX\")\n"
+" - a ternary operator (format: \"if:condition?value_if_true:"
"value_if_false\")\n"
-" 22. result of an expression with parentheses and operators + - * / // % ** "
+" - result of an expression with parentheses and operators + - * / // % ** "
"(format: \"calc:xxx\")\n"
-" 23. a random integer number (format: \"random:min,max\")\n"
-" 24. a translated string (format: \"translate:xxx\")\n"
-" 25. define a user variable (format: \"define:name,value\")\n"
-" 26. an option (format: \"file.section.option\")\n"
-" 27. a local variable in buffer\n"
-" 28. a hdata name/variable (the value is automatically converted to "
-"string), by default \"window\" and \"buffer\" point to current window/"
-"buffer.\n"
+" - a random integer number (format: \"random:min,max\")\n"
+" - a translated string (format: \"translate:xxx\")\n"
+" - define a user variable (format: \"define:name,value\")\n"
+" - an option (format: \"file.section.option\")\n"
+" - a local variable in buffer\n"
+" - a hdata name/variable (the value is automatically converted to string), "
+"by default \"window\" and \"buffer\" point to current window/buffer.\n"
"Format for hdata can be one of following:\n"
" hdata.var1.var2...: start with a hdata (pointer must be known), and ask "
"variables one after one (other hdata can be followed)\n"
@@ -1397,6 +1399,8 @@ msgid ""
" /eval -n ${window.buffer.full_name} ==> core.weechat\n"
" /eval -n ${window.buffer.number} ==> 1\n"
" /eval -n ${\\t} ==> <tab>\n"
+" /eval -n ${chars:digit} ==> 0123456789\n"
+" /eval -n ${chars:J-T} ==> JKLMNOPQRST\n"
" /eval -n ${lower:TEST} ==> test\n"
" /eval -n ${upper:test} ==> TEST\n"
" /eval -n ${hide:-,${relay.network.password}} ==> --------\n"