mirror of
https://github.com/weechat/weechat.git
synced 2026-07-05 01:03:14 +02:00
Compare commits
100 Commits
3aeaa70e64
..
theme2
| Author | SHA1 | Date | |
|---|---|---|---|
| f8cebd9d82 | |||
| cbc147b0a5 | |||
| 4cb55ce0af | |||
| 8275745b8c | |||
| 3fd5c321da | |||
| 1dc651742b | |||
| 867625b65a | |||
| 887108463c | |||
| 27426e4f25 | |||
| 94ad3ca5fd | |||
| ea02f83389 | |||
| 051c8a839f | |||
| 34263a2e6e | |||
| ce4fb15c8b | |||
| 1d9b8e8109 | |||
| 0ea5e61207 | |||
| d54a2d8ca3 | |||
| 4b67c9133f | |||
| 0ae0b4c217 | |||
| 368aafe679 | |||
| 4cf111153b | |||
| efdcb6f2dd | |||
| 3a5f177a28 | |||
| daaca6dee6 | |||
| 4c352f5c38 | |||
| 0ed1b03b36 | |||
| 266d05ac66 | |||
| 9e7903c601 | |||
| 0e245e8e0c | |||
| 9a86f1327b | |||
| 4d8588116e | |||
| afd2728255 | |||
| 3e0c5ff556 | |||
| d8433eaf55 | |||
| 68d5004e12 | |||
| 5a341c69f5 | |||
| 825f05015f | |||
| 055642b9df | |||
| 5a2c412ded | |||
| f3e14829ab | |||
| 376ea3cc9e | |||
| df6b994d3b | |||
| 1f9c3784c7 | |||
| a217e9f72f | |||
| 8858d4b6b4 | |||
| e9d998a9bf | |||
| bfb34faa97 | |||
| a4b8d7aedd | |||
| 75b364cd89 | |||
| 914d3df639 | |||
| a5404172c8 | |||
| 1dd423cb23 | |||
| 8f33a72c99 | |||
| f4564a1cb0 | |||
| c4dfb16df0 | |||
| 6facd390fe | |||
| 2aada3d0ca | |||
| 791c39cc84 | |||
| ce6a214ce1 | |||
| 3c302e078d | |||
| 90761d6350 | |||
| 4eba4f9a47 | |||
| fcbb508cd7 | |||
| b49eac6f2d | |||
| 9b418b4dc2 | |||
| 08b173f9b7 | |||
| 42b91aa91d | |||
| 4ac2f6c2ad | |||
| 3d804810a0 | |||
| 987b03da39 | |||
| a1f1443fd8 | |||
| ca8312a48c | |||
| 971f7b1660 | |||
| 643f2fab5b | |||
| 5f36c52935 | |||
| 92219ba132 | |||
| 905a68739e | |||
| 3200a05c00 | |||
| 861f589fc2 | |||
| c40261aed1 | |||
| 770e733303 | |||
| 9bd2aaa25d | |||
| 4e206ee3ae | |||
| 7ff71d2b0e | |||
| 203fdca3e8 | |||
| e3ba25df19 | |||
| 64566629c5 | |||
| 7e3afaf46d | |||
| cf702d541f | |||
| a8067751eb | |||
| a696a100d8 | |||
| e60786d059 | |||
| d78105ddf5 | |||
| 2a8c86242b | |||
| dd9ef2f4d9 | |||
| 4c6c55befe | |||
| de878b2303 | |||
| 80a47b6731 | |||
| 551c12e049 | |||
| 12016c4c05 |
+25
-16
@@ -115,10 +115,13 @@ jobs:
|
||||
|
||||
checks:
|
||||
|
||||
env:
|
||||
POEXAM_VERSION: "0.0.12"
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
os:
|
||||
- ubuntu-24.04
|
||||
- ubuntu-26.04
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
@@ -130,13 +133,20 @@ jobs:
|
||||
run: |
|
||||
sudo apt-get update -qq
|
||||
sudo apt-get --yes --no-install-recommends install ${{ env.CHECK_DEPS_UBUNTU }}
|
||||
pipx install msgcheck ruff
|
||||
cargo install --version 0.0.11 poexam
|
||||
pipx install ruff
|
||||
|
||||
- name: Check gettext files (msgcheck)
|
||||
run: msgcheck po/*.po
|
||||
- name: Cache poexam
|
||||
id: cache-poexam
|
||||
uses: actions/cache@v6
|
||||
with:
|
||||
path: ~/.cargo/bin/poexam
|
||||
key: poexam-${{ env.POEXAM_VERSION }}-${{ runner.os }}
|
||||
|
||||
- name: Check gettext files (poexam)
|
||||
- name: Install poexam
|
||||
if: steps.cache-poexam.outputs.cache-hit != 'true'
|
||||
run: cargo install --version "$POEXAM_VERSION" poexam
|
||||
|
||||
- name: Check gettext files
|
||||
run: poexam check --file-stats --rule-stats
|
||||
|
||||
- name: Check shell and Python scripts
|
||||
@@ -153,7 +163,7 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
os:
|
||||
- ubuntu-24.04
|
||||
- ubuntu-26.04
|
||||
config:
|
||||
- name: "gcc"
|
||||
cc: "gcc"
|
||||
@@ -194,6 +204,8 @@ jobs:
|
||||
|
||||
name: "install (${{ matrix.os }}, ${{ matrix.config.name }})"
|
||||
runs-on: ${{ matrix.os }}
|
||||
env:
|
||||
PHP_INI_SCAN_DIR: /tmp/php-noscan # embed PHP loads no add-on extensions (see #2009)
|
||||
|
||||
steps:
|
||||
|
||||
@@ -203,8 +215,7 @@ jobs:
|
||||
run: |
|
||||
sudo apt-get update -qq
|
||||
sudo apt-get --yes --no-install-recommends install ${{ env.WEECHAT_DEPS_UBUNTU }}
|
||||
# uninstall php imagick as is causes a crash when loading php plugin (see #2009)
|
||||
sudo apt-get --yes purge php8.3-imagick
|
||||
mkdir -p /tmp/php-noscan
|
||||
pipx install schemathesis
|
||||
|
||||
- name: Build and run tests
|
||||
@@ -258,7 +269,7 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
os:
|
||||
- ubuntu-24.04
|
||||
- ubuntu-26.04
|
||||
config:
|
||||
- name: "gcc"
|
||||
cc: "gcc"
|
||||
@@ -304,7 +315,7 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
os:
|
||||
- ubuntu-24.04
|
||||
- ubuntu-26.04
|
||||
config:
|
||||
- name: "gcc"
|
||||
cc: "gcc"
|
||||
@@ -355,7 +366,7 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
os:
|
||||
- ubuntu-24.04
|
||||
- ubuntu-26.04
|
||||
config:
|
||||
# - name: "gcc"
|
||||
# cc: "gcc"
|
||||
@@ -450,7 +461,7 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
os:
|
||||
- ubuntu-24.04
|
||||
- ubuntu-26.04
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
@@ -487,7 +498,7 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
os:
|
||||
- ubuntu-24.04
|
||||
- ubuntu-26.04
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
@@ -505,8 +516,6 @@ jobs:
|
||||
run: |
|
||||
sudo apt-get update -qq
|
||||
sudo apt-get --yes --no-install-recommends install ${{ env.WEECHAT_DEPS_UBUNTU }}
|
||||
# uninstall php imagick as is causes a crash when loading php plugin (see #2009)
|
||||
sudo apt-get --yes purge php8.3-imagick
|
||||
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v3
|
||||
|
||||
@@ -235,6 +235,7 @@ sys
|
||||
tThe
|
||||
tcl
|
||||
tg
|
||||
themable
|
||||
tls
|
||||
tlscertkey
|
||||
toggleautoload
|
||||
|
||||
@@ -69,6 +69,9 @@ autorejoin
|
||||
away
|
||||
away-notify
|
||||
backspace
|
||||
backup
|
||||
backup-
|
||||
backups
|
||||
bare
|
||||
bash
|
||||
beep
|
||||
@@ -529,6 +532,9 @@ tcl
|
||||
term
|
||||
text
|
||||
tg
|
||||
themable
|
||||
theme
|
||||
themes
|
||||
time
|
||||
timeout
|
||||
timer
|
||||
|
||||
+21
-6
@@ -12,28 +12,43 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- core: add condition on connected relay api clients in default value of option weechat.look.hotlist_add_conditions
|
||||
- core: add `/mute` in default command for key `Alt`+`=` (toggle filters)
|
||||
- api: change type of parameter "pos_option_name" to "const char **" in function config_search_with_string
|
||||
- relay/api: add field "last_read_line_id" in GET /api/buffers
|
||||
|
||||
### Added
|
||||
|
||||
- core: add command `/theme`
|
||||
- core: add built-in "light" theme
|
||||
- core: add `themable` flag on configuration options
|
||||
- core: add options weechat.look.theme and weechat.look.theme_backup
|
||||
- api: add function theme_register
|
||||
- fset: add filter `t:themable`
|
||||
- relay/api: add resource `GET /api/scripts`
|
||||
- relay: add option relay.network.unix_socket_permissions ([#2317](https://github.com/weechat/weechat/issues/2317))
|
||||
- script: add info "script_languages"
|
||||
|
||||
### Fixed
|
||||
|
||||
- core: fix option weechat.look.color_real_white not applied when color is "white" on 16+ colors terminals ([#1742](https://github.com/weechat/weechat/issues/1742))
|
||||
- core: fix buffer overflow in connection to SOCKS5 proxy ([#2325](https://github.com/weechat/weechat/issues/2325))
|
||||
- api: fix infinite loop in function string_replace when the search string is empty
|
||||
- irc: fix tag in message with list of names when joining a channel
|
||||
- fset: remove error displayed in core buffer when clicking with the mouse below the last option displayed
|
||||
- guile, lua, perl, python, ruby, tcl: fix conversion of dates in the API functions
|
||||
- irc: limit size of data received from the server to prevent memory exhaustion
|
||||
- irc: fix out-of-bounds read on incoming DCC command with a quoted filename ending the message ([#2322](https://github.com/weechat/weechat/issues/2322))
|
||||
- relay: limit size of decompressed websocket frame with permessage-deflate to prevent memory exhaustion ([GHSA-v2v4-45wm-5cr3](https://github.com/weechat/weechat/security/advisories/GHSA-v2v4-45wm-5cr3))
|
||||
- irc: fix conversion of dates in received messages
|
||||
- relay: limit size of decompressed websocket frame with permessage-deflate to prevent memory exhaustion ([GHSA-v2v4-45wm-5cr3](https://github.com/weechat/weechat/security/advisories/GHSA-v2v4-45wm-5cr3), [CVE-2026-53524](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-53524))
|
||||
- relay: limit size of received websocket frame and HTTP body to prevent memory exhaustion
|
||||
- relay: limit size of partial message received while reading an HTTP request to prevent memory exhaustion
|
||||
- relay: fix timing attack on password authentication ([GHSA-vhv8-g2r9-cwcc](https://github.com/weechat/weechat/security/advisories/GHSA-vhv8-g2r9-cwcc))
|
||||
- relay: fix timing attack on password authentication ([GHSA-vhv8-g2r9-cwcc](https://github.com/weechat/weechat/security/advisories/GHSA-vhv8-g2r9-cwcc), [CVE-2026-53525](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-53525))
|
||||
- relay: fix out-of-bounds read in dump of data ([#2324](https://github.com/weechat/weechat/issues/2324))
|
||||
- api, relay: fix timing attack on TOTP validation ([GHSA-vhv8-g2r9-cwcc](https://github.com/weechat/weechat/security/advisories/GHSA-vhv8-g2r9-cwcc))
|
||||
- relay/api: fix memory leak in resources "handshake", "input" and "completion"
|
||||
- relay: fix read of uncompressed websocket frame ([#2331](https://github.com/weechat/weechat/issues/2331))
|
||||
- api, relay: fix timing attack on TOTP validation ([GHSA-vhv8-g2r9-cwcc](https://github.com/weechat/weechat/security/advisories/GHSA-vhv8-g2r9-cwcc), [CVE-2026-53525](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-53525))
|
||||
- xfer: replace directory separator in remote nick by underscore in download filename to prevent writing the file outside the download directory ([#2321](https://github.com/weechat/weechat/issues/2321))
|
||||
- xfer: fix out-of-bounds read when receiving empty line in DCC chat ([#2323](https://github.com/weechat/weechat/issues/2323))
|
||||
- xfer: fix out-of-bounds write in xfer file transfer resume ([#2326](https://github.com/weechat/weechat/issues/2326))
|
||||
|
||||
## Version 4.9.2 (2026-06-07)
|
||||
|
||||
@@ -54,9 +69,9 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- core: fix option weechat.look.color_real_white not applied when color is "white" on 16+ colors terminals ([#1742](https://github.com/weechat/weechat/issues/1742))
|
||||
- irc: fix tag in message with list of names when joining a channel
|
||||
- relay: limit size of decompressed websocket frame with permessage-deflate to prevent memory exhaustion ([GHSA-v2v4-45wm-5cr3](https://github.com/weechat/weechat/security/advisories/GHSA-v2v4-45wm-5cr3))
|
||||
- relay: fix timing attack on password authentication ([GHSA-vhv8-g2r9-cwcc](https://github.com/weechat/weechat/security/advisories/GHSA-vhv8-g2r9-cwcc))
|
||||
- api, relay: fix timing attack on TOTP validation ([GHSA-vhv8-g2r9-cwcc](https://github.com/weechat/weechat/security/advisories/GHSA-vhv8-g2r9-cwcc))
|
||||
- relay: limit size of decompressed websocket frame with permessage-deflate to prevent memory exhaustion ([GHSA-v2v4-45wm-5cr3](https://github.com/weechat/weechat/security/advisories/GHSA-v2v4-45wm-5cr3), [CVE-2026-53524](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-53524))
|
||||
- relay: fix timing attack on password authentication ([GHSA-vhv8-g2r9-cwcc](https://github.com/weechat/weechat/security/advisories/GHSA-vhv8-g2r9-cwcc), [CVE-2026-53525](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-53525))
|
||||
- api, relay: fix timing attack on TOTP validation ([GHSA-vhv8-g2r9-cwcc](https://github.com/weechat/weechat/security/advisories/GHSA-vhv8-g2r9-cwcc), [CVE-2026-53525](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-53525))
|
||||
|
||||
## Version 4.9.0 (2026-03-29)
|
||||
|
||||
|
||||
@@ -2197,6 +2197,152 @@ Um der Vordergrundfarbe des Terminals das Attribut "fett" zuzuordnen:
|
||||
/set weechat.color.status_time *99999
|
||||
----
|
||||
|
||||
// TRANSLATION MISSING
|
||||
[[themes]]
|
||||
=== Themen
|
||||
|
||||
A theme is a named bundle of option overrides that can be applied with
|
||||
the <<command_weechat_theme,/theme>> command. WeeChat ships a built-in
|
||||
`"light"` theme tuned for light-background terminals and supports
|
||||
user-defined themes loaded transiently from files.
|
||||
|
||||
[[themes_themable_options]]
|
||||
==== Themable options
|
||||
|
||||
Themes can only set options marked as _themable_. All `*.color.*`
|
||||
options are themable by default; a few string options that hold format
|
||||
expressions with `+${color:...}+` references (such as
|
||||
`+weechat.color.chat_nick_colors+`, `+weechat.look.prefix_error+` or the
|
||||
`+buflist.format.*+` formats) are explicitly opted in.
|
||||
|
||||
You can list the full themable surface area from the
|
||||
<<command_fset_fset,/fset>> buffer with the `+t:themable+` filter.
|
||||
|
||||
[[themes_apply]]
|
||||
==== Applying a theme
|
||||
|
||||
To switch to the built-in light-background theme:
|
||||
|
||||
----
|
||||
/theme apply light
|
||||
----
|
||||
|
||||
The current state of every themable option is saved beforehand to a
|
||||
backup theme file named like `+backup-YYYYMMDD-HHMMSS-uuuuuu+` in
|
||||
directory `+themes+` inside the WeeChat configuration directory, so the
|
||||
previous look can be restored at any time with:
|
||||
|
||||
----
|
||||
/theme apply backup-YYYYMMDD-HHMMSS-uuuuuu
|
||||
----
|
||||
|
||||
Backup creation can be disabled (not recommended):
|
||||
|
||||
----
|
||||
/set weechat.look.theme_backup off
|
||||
----
|
||||
|
||||
If backup is enabled and the backup file cannot be written, the apply
|
||||
is aborted before any option is changed.
|
||||
|
||||
The name of the last applied theme is stored in
|
||||
`+weechat.look.theme+` (informational only; not re-applied at startup).
|
||||
|
||||
[[themes_reset]]
|
||||
==== Resetting to defaults
|
||||
|
||||
To restore the look shipped with WeeChat, reset every themable option
|
||||
to its default value:
|
||||
|
||||
----
|
||||
/theme reset
|
||||
----
|
||||
|
||||
A backup is written first (same gate as `+/theme apply+`); on backup
|
||||
failure the reset is aborted before any option is changed.
|
||||
`+weechat.look.theme+` is cleared too.
|
||||
|
||||
[[themes_save_delete]]
|
||||
==== Saving and deleting user themes
|
||||
|
||||
Save the current themable options as a new user theme file:
|
||||
|
||||
----
|
||||
/theme save mytheme
|
||||
----
|
||||
|
||||
Every themable option is written, so the file is self-contained and
|
||||
applies the exact same look on any WeeChat, regardless of its current
|
||||
configuration.
|
||||
|
||||
Reserved names (built-in theme names like `+light+` and any name
|
||||
starting with `+backup-+`) are refused. Files live at
|
||||
`+${weechat_config_dir}/themes/<name>.theme+`.
|
||||
|
||||
Rename a user theme (typical use: keep a useful automatic backup
|
||||
under a meaningful name):
|
||||
|
||||
----
|
||||
/theme rename backup-20260525-094210-123456 mybackup
|
||||
----
|
||||
|
||||
Built-in themes have no file and cannot be renamed; the target name
|
||||
cannot match a built-in name or start with `+backup-+`, and the
|
||||
target file must not already exist. The `+[info]+` `+name+` field
|
||||
inside the file is rewritten so `/theme info` reports the new name
|
||||
consistently.
|
||||
|
||||
Delete a user theme:
|
||||
|
||||
----
|
||||
/theme del mytheme
|
||||
----
|
||||
|
||||
This removes the file on disk; built-in themes cannot be deleted.
|
||||
|
||||
[[themes_file_format]]
|
||||
==== Theme file format
|
||||
|
||||
A theme file is INI-like with two sections:
|
||||
|
||||
----
|
||||
[info]
|
||||
name = "solarized_light"
|
||||
description = "Light-background theme inspired by Solarized"
|
||||
date = "2026-05-25 09:42:10"
|
||||
weechat = "4.10.0-dev"
|
||||
|
||||
[options]
|
||||
weechat.color.chat = "darkgray"
|
||||
weechat.color.separator = "blue"
|
||||
irc.color.input_nick = "magenta"
|
||||
buflist.format.number = "${color:28}${number}${if:${number_displayed}?.: }"
|
||||
----
|
||||
|
||||
`+[info]+` is informational metadata shown by `/theme info`. `+[options]+`
|
||||
holds the actual overrides; keys are the full option names that would
|
||||
appear in `/set`. String values can be enclosed in double or single
|
||||
quotes; quotes are stripped at parse time. Non-themable options listed
|
||||
in a theme file are refused at apply time and logged to the core
|
||||
buffer (so a `.theme` file imported from an untrusted source cannot
|
||||
overwrite passwords, autoload lists, or startup commands).
|
||||
|
||||
User theme files are never cached: on every `/theme apply <name>` the
|
||||
file is parsed, applied, and freed.
|
||||
|
||||
[[themes_resolution]]
|
||||
==== Resolution order
|
||||
|
||||
When `+/theme apply <name>+` is run:
|
||||
|
||||
* If `+${weechat_config_dir}/themes/<name>.theme+` exists, the file
|
||||
is parsed and used (it shadows any built-in with the same name).
|
||||
* Otherwise the built-in theme registry is consulted; built-ins are
|
||||
registered programmatically by core, plugins and scripts (see the
|
||||
plugin and scripting documentation for `+weechat_theme_register+`).
|
||||
|
||||
If neither source provides the name, the apply is refused.
|
||||
|
||||
[[charset]]
|
||||
=== Charset
|
||||
|
||||
|
||||
@@ -4348,7 +4348,7 @@ Prototype:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_mkdir_home (char *directory, int mode);
|
||||
int weechat_mkdir_home (const char *directory, int mode);
|
||||
----
|
||||
|
||||
Arguments:
|
||||
@@ -4395,7 +4395,7 @@ Prototype:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_mkdir (char *directory, int mode);
|
||||
int weechat_mkdir (const char *directory, int mode);
|
||||
----
|
||||
|
||||
Arguments:
|
||||
@@ -4436,7 +4436,7 @@ Prototype:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_mkdir_parents (char *directory, int mode);
|
||||
int weechat_mkdir_parents (const char *directory, int mode);
|
||||
----
|
||||
|
||||
Arguments:
|
||||
@@ -7367,7 +7367,7 @@ section = weechat.config_search_section(config_file, "section")
|
||||
|
||||
==== config_new_option
|
||||
|
||||
_Updated in 1.5, 4.1.0._
|
||||
_Updated in 1.5, 4.1.0, 4.10.0._
|
||||
|
||||
Create a new option in a section of a configuration file.
|
||||
|
||||
@@ -7413,7 +7413,9 @@ Arguments:
|
||||
option name (the value of parent option will be displayed in `/set` command
|
||||
output if this option is "null"), the syntax is then:
|
||||
"name << file.section.option"
|
||||
* _type_: type of option:
|
||||
* _type_: type of option; any type can be suffixed with `+|themable+` to mark
|
||||
the option as themable, so that it can be set by the `/theme` command
|
||||
(options of type _color_ are always themable) _(WeeChat ≥ 4.10.0)_:
|
||||
** _boolean_: boolean value (on/off)
|
||||
** _integer_: integer value
|
||||
** _string_: string value
|
||||
@@ -7499,7 +7501,7 @@ struct t_config_option *option_int =
|
||||
|
||||
/* string */
|
||||
struct t_config_option *option_str =
|
||||
weechat_config_new_option (config_file, section, "option_str", "string",
|
||||
weechat_config_new_option (config_file, section, "option_str", "string|themable",
|
||||
"My option, type string",
|
||||
NULL,
|
||||
0, 0,
|
||||
@@ -7575,7 +7577,7 @@ option_int = weechat.config_new_option(config_file, section, "option_int", "inte
|
||||
"", "",
|
||||
"", "")
|
||||
|
||||
option_str = weechat.config_new_option(config_file, section, "option_str", "string",
|
||||
option_str = weechat.config_new_option(config_file, section, "option_str", "string|themable",
|
||||
"My option, type string",
|
||||
"", 0, 0, "test", "test", 1,
|
||||
"option_str_check_value_cb", "",
|
||||
@@ -7709,7 +7711,7 @@ void weechat_config_search_with_string (const char *option_name,
|
||||
struct t_config_file **config_file,
|
||||
struct t_config_section **section,
|
||||
struct t_config_option **option,
|
||||
char **pos_option_name);
|
||||
const char **pos_option_name);
|
||||
----
|
||||
|
||||
Arguments:
|
||||
@@ -7731,7 +7733,7 @@ C example:
|
||||
struct t_config_file *ptr_config_file;
|
||||
struct t_config_section *ptr_section;
|
||||
struct t_config_option *ptr_option;
|
||||
char *option_name;
|
||||
const char *option_name;
|
||||
|
||||
weechat_config_search_with_string ("file.section.option",
|
||||
&ptr_config_file,
|
||||
@@ -9627,6 +9629,89 @@ elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_ERROR:
|
||||
# ...
|
||||
----
|
||||
|
||||
[[themes]]
|
||||
=== Themes
|
||||
|
||||
Functions to contribute color (and other themable option) overrides to
|
||||
built-in themes. See the
|
||||
link:weechat_user.en.html#themes[user's guide / Themes] section for the
|
||||
end-user side and the `+/theme+` command.
|
||||
|
||||
==== theme_register
|
||||
|
||||
_WeeChat ≥ 4.10.0._
|
||||
|
||||
Register a contribution of option overrides under a named theme. The
|
||||
caller's plugin is the owner of the contribution; subsequent calls
|
||||
with the same theme name from the same plugin merge into the existing
|
||||
contribution (later keys win for duplicates).
|
||||
|
||||
When the calling plugin is unloaded, all its contributions are
|
||||
automatically dropped from every theme.
|
||||
|
||||
Prototype:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
struct t_theme *weechat_theme_register (const char *name,
|
||||
struct t_hashtable *overrides);
|
||||
----
|
||||
|
||||
Arguments:
|
||||
|
||||
* _name_: theme name (for example `+light+` or a custom name)
|
||||
* _overrides_: hashtable mapping full option names
|
||||
(e.g. `+irc.color.input_nick+`) to their string values; the caller
|
||||
retains ownership and may free the hashtable right after the call
|
||||
|
||||
Return value:
|
||||
|
||||
* pointer to the registered theme (existing or newly created), NULL on
|
||||
error
|
||||
|
||||
C example:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
struct t_hashtable *overrides = weechat_hashtable_new (
|
||||
8,
|
||||
WEECHAT_HASHTABLE_STRING,
|
||||
WEECHAT_HASHTABLE_STRING,
|
||||
NULL, NULL);
|
||||
if (overrides)
|
||||
{
|
||||
weechat_hashtable_set (overrides, "irc.color.input_nick", "cyan");
|
||||
weechat_hashtable_set (overrides, "irc.color.topic_old", "darkgray");
|
||||
weechat_theme_register ("light", overrides);
|
||||
weechat_hashtable_free (overrides);
|
||||
}
|
||||
----
|
||||
|
||||
Script (Python):
|
||||
|
||||
[source,python]
|
||||
----
|
||||
# prototype
|
||||
def theme_register(name: str, overrides: Dict[str, str]) -> str: ...
|
||||
|
||||
# example
|
||||
weechat.theme_register("light", {
|
||||
"irc.color.input_nick": "cyan",
|
||||
"irc.color.topic_old": "darkgray",
|
||||
})
|
||||
----
|
||||
|
||||
[NOTE]
|
||||
Only options that have the _themable_ flag will be set by `/theme apply`.
|
||||
All `*.color.*` options are themable by default; string options that
|
||||
hold `+${color:...}+` references are explicitly opted in. Entries
|
||||
targeting non-themable options are silently skipped at apply-time with
|
||||
a warning logged to the _core_ buffer.
|
||||
|
||||
[NOTE]
|
||||
When called from a script, the contribution is automatically dropped
|
||||
when the script unloads (no manual cleanup is needed).
|
||||
|
||||
[[key_bindings]]
|
||||
=== Key bindings
|
||||
|
||||
|
||||
@@ -1034,6 +1034,13 @@ Path parameters:
|
||||
confused with the buffer number, which is different)
|
||||
* `buffer_name` (string, **required**): buffer name
|
||||
|
||||
Query parameters:
|
||||
|
||||
* `colors` (string, optional, default: `ansi`): how to return strings with color codes:
|
||||
** `ansi`: return ANSI color codes
|
||||
** `weechat`: return WeeChat internal color codes
|
||||
** `strip`: strip colors
|
||||
|
||||
Request example: get nicks of a buffer:
|
||||
|
||||
[source,shell]
|
||||
@@ -1179,6 +1186,51 @@ HTTP/1.1 200 OK
|
||||
]
|
||||
----
|
||||
|
||||
[[resource_scripts]]
|
||||
=== Scripts
|
||||
|
||||
Return loaded scripts (all languages).
|
||||
|
||||
Endpoint:
|
||||
|
||||
----
|
||||
GET /api/scripts
|
||||
----
|
||||
|
||||
Request example:
|
||||
|
||||
[source,shell]
|
||||
----
|
||||
curl -L -u 'plain:secret_password' 'https://localhost:9000/api/scripts'
|
||||
----
|
||||
|
||||
Response:
|
||||
|
||||
[source,http]
|
||||
----
|
||||
HTTP/1.1 200 OK
|
||||
----
|
||||
|
||||
[source,json]
|
||||
----
|
||||
[
|
||||
{
|
||||
"name": "highmon.pl",
|
||||
"version": "2.7",
|
||||
"description": "Highlight Monitor",
|
||||
"author": "KenjiE20",
|
||||
"license": "GPL3"
|
||||
},
|
||||
{
|
||||
"name": "go.py",
|
||||
"version": "3.1.1",
|
||||
"description": "Quick jump to buffers",
|
||||
"author": "Sébastien Helleu <flashcode@flashtux.org>",
|
||||
"license": "GPL3"
|
||||
}
|
||||
]
|
||||
----
|
||||
|
||||
[[resource_input]]
|
||||
=== Input
|
||||
|
||||
@@ -1510,6 +1562,7 @@ Body types that can be returned:
|
||||
* `nick_group` (object)
|
||||
* `nick` (object)
|
||||
* `hotlist` (object)
|
||||
* `scripts` (array)
|
||||
* `ping` (object)
|
||||
|
||||
[TIP]
|
||||
|
||||
@@ -2185,6 +2185,151 @@ Example of bold with terminal foreground color:
|
||||
/set weechat.color.status_time *99999
|
||||
----
|
||||
|
||||
[[themes]]
|
||||
=== Themes
|
||||
|
||||
A theme is a named bundle of option overrides that can be applied with
|
||||
the <<command_weechat_theme,/theme>> command. WeeChat ships a built-in
|
||||
`"light"` theme tuned for light-background terminals and supports
|
||||
user-defined themes loaded transiently from files.
|
||||
|
||||
[[themes_themable_options]]
|
||||
==== Themable options
|
||||
|
||||
Themes can only set options marked as _themable_. All `*.color.*`
|
||||
options are themable by default; a few string options that hold format
|
||||
expressions with `+${color:...}+` references (such as
|
||||
`+weechat.color.chat_nick_colors+`, `+weechat.look.prefix_error+` or the
|
||||
`+buflist.format.*+` formats) are explicitly opted in.
|
||||
|
||||
You can list the full themable surface area from the
|
||||
<<command_fset_fset,/fset>> buffer with the `+t:themable+` filter.
|
||||
|
||||
[[themes_apply]]
|
||||
==== Applying a theme
|
||||
|
||||
To switch to the built-in light-background theme:
|
||||
|
||||
----
|
||||
/theme apply light
|
||||
----
|
||||
|
||||
The current state of every themable option is saved beforehand to a
|
||||
backup theme file named like `+backup-YYYYMMDD-HHMMSS-uuuuuu+` in
|
||||
directory `+themes+` inside the WeeChat configuration directory, so the
|
||||
previous look can be restored at any time with:
|
||||
|
||||
----
|
||||
/theme apply backup-YYYYMMDD-HHMMSS-uuuuuu
|
||||
----
|
||||
|
||||
Backup creation can be disabled (not recommended):
|
||||
|
||||
----
|
||||
/set weechat.look.theme_backup off
|
||||
----
|
||||
|
||||
If backup is enabled and the backup file cannot be written, the apply
|
||||
is aborted before any option is changed.
|
||||
|
||||
The name of the last applied theme is stored in
|
||||
`+weechat.look.theme+` (informational only; not re-applied at startup).
|
||||
|
||||
[[themes_reset]]
|
||||
==== Resetting to defaults
|
||||
|
||||
To restore the look shipped with WeeChat, reset every themable option
|
||||
to its default value:
|
||||
|
||||
----
|
||||
/theme reset
|
||||
----
|
||||
|
||||
A backup is written first (same gate as `+/theme apply+`); on backup
|
||||
failure the reset is aborted before any option is changed.
|
||||
`+weechat.look.theme+` is cleared too.
|
||||
|
||||
[[themes_save_delete]]
|
||||
==== Saving and deleting user themes
|
||||
|
||||
Save the current themable options as a new user theme file:
|
||||
|
||||
----
|
||||
/theme save mytheme
|
||||
----
|
||||
|
||||
Every themable option is written, so the file is self-contained and
|
||||
applies the exact same look on any WeeChat, regardless of its current
|
||||
configuration.
|
||||
|
||||
Reserved names (built-in theme names like `+light+` and any name
|
||||
starting with `+backup-+`) are refused. Files live at
|
||||
`+${weechat_config_dir}/themes/<name>.theme+`.
|
||||
|
||||
Rename a user theme (typical use: keep a useful automatic backup
|
||||
under a meaningful name):
|
||||
|
||||
----
|
||||
/theme rename backup-20260525-094210-123456 mybackup
|
||||
----
|
||||
|
||||
Built-in themes have no file and cannot be renamed; the target name
|
||||
cannot match a built-in name or start with `+backup-+`, and the
|
||||
target file must not already exist. The `+[info]+` `+name+` field
|
||||
inside the file is rewritten so `/theme info` reports the new name
|
||||
consistently.
|
||||
|
||||
Delete a user theme:
|
||||
|
||||
----
|
||||
/theme del mytheme
|
||||
----
|
||||
|
||||
This removes the file on disk; built-in themes cannot be deleted.
|
||||
|
||||
[[themes_file_format]]
|
||||
==== Theme file format
|
||||
|
||||
A theme file is INI-like with two sections:
|
||||
|
||||
----
|
||||
[info]
|
||||
name = "solarized_light"
|
||||
description = "Light-background theme inspired by Solarized"
|
||||
date = "2026-05-25 09:42:10"
|
||||
weechat = "4.10.0-dev"
|
||||
|
||||
[options]
|
||||
weechat.color.chat = "darkgray"
|
||||
weechat.color.separator = "blue"
|
||||
irc.color.input_nick = "magenta"
|
||||
buflist.format.number = "${color:28}${number}${if:${number_displayed}?.: }"
|
||||
----
|
||||
|
||||
`+[info]+` is informational metadata shown by `/theme info`. `+[options]+`
|
||||
holds the actual overrides; keys are the full option names that would
|
||||
appear in `/set`. String values can be enclosed in double or single
|
||||
quotes; quotes are stripped at parse time. Non-themable options listed
|
||||
in a theme file are refused at apply time and logged to the core
|
||||
buffer (so a `.theme` file imported from an untrusted source cannot
|
||||
overwrite passwords, autoload lists, or startup commands).
|
||||
|
||||
User theme files are never cached: on every `/theme apply <name>` the
|
||||
file is parsed, applied, and freed.
|
||||
|
||||
[[themes_resolution]]
|
||||
==== Resolution order
|
||||
|
||||
When `+/theme apply <name>+` is run:
|
||||
|
||||
* If `+${weechat_config_dir}/themes/<name>.theme+` exists, the file
|
||||
is parsed and used (it shadows any built-in with the same name).
|
||||
* Otherwise the built-in theme registry is consulted; built-ins are
|
||||
registered programmatically by core, plugins and scripts (see the
|
||||
plugin and scripting documentation for `+weechat_theme_register+`).
|
||||
|
||||
If neither source provides the name, the apply is refused.
|
||||
|
||||
[[charset]]
|
||||
=== Charset
|
||||
|
||||
|
||||
@@ -4424,7 +4424,7 @@ Prototype :
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_mkdir_home (char *directory, int mode);
|
||||
int weechat_mkdir_home (const char *directory, int mode);
|
||||
----
|
||||
|
||||
Paramètres :
|
||||
@@ -4471,7 +4471,7 @@ Prototype :
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_mkdir (char *directory, int mode);
|
||||
int weechat_mkdir (const char *directory, int mode);
|
||||
----
|
||||
|
||||
Paramètres :
|
||||
@@ -4512,7 +4512,7 @@ Prototype :
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_mkdir_parents (char *directory, int mode);
|
||||
int weechat_mkdir_parents (const char *directory, int mode);
|
||||
----
|
||||
|
||||
Paramètres :
|
||||
@@ -7488,7 +7488,7 @@ section = weechat.config_search_section(config_file, "section")
|
||||
|
||||
==== config_new_option
|
||||
|
||||
_Mis à jour dans la 1.5, 4.1.0._
|
||||
_Mis à jour dans la 1.5, 4.1.0, 4.10.0._
|
||||
|
||||
Créer une nouvelle option dans une section d'un fichier de configuration.
|
||||
|
||||
@@ -7534,7 +7534,10 @@ Paramètres :
|
||||
d'une option parente (la valeur de l'option parente sera affichée dans la
|
||||
sortie de `/set` si cette option est "null"), la syntaxe est alors :
|
||||
"name << file.section.option"
|
||||
* _type_ : type de l'option :
|
||||
* _type_ : type de l'option ; n'importe quel type peut être suffixé par
|
||||
`+|themable+` pour rendre l'option modifiable par un thème, afin qu'elle
|
||||
puisse être définie par la commande `/theme` (les options de type _color_
|
||||
sont toujours modifiables par un thème) _(WeeChat ≥ 4.10.0)_ :
|
||||
** _boolean_ : valeur booléenne (on/off)
|
||||
** _integer_ : valeur entière
|
||||
** _string_ : une chaîne de caractères
|
||||
@@ -7625,7 +7628,7 @@ struct t_config_option *option_int =
|
||||
|
||||
/* chaîne */
|
||||
struct t_config_option *option_str =
|
||||
weechat_config_new_option (config_file, section, "option_str", "string",
|
||||
weechat_config_new_option (config_file, section, "option_str", "string|themable",
|
||||
"Mon option, type chaîne",
|
||||
NULL,
|
||||
0, 0,
|
||||
@@ -7701,7 +7704,7 @@ option_int = weechat.config_new_option(config_file, section, "option_int", "inte
|
||||
"", "",
|
||||
"", "")
|
||||
|
||||
option_str = weechat.config_new_option(config_file, section, "option_str", "string",
|
||||
option_str = weechat.config_new_option(config_file, section, "option_str", "string|themable",
|
||||
"Mon option, type chaîne",
|
||||
"", 0, 0, "test", "test", 1,
|
||||
"option_str_check_value_cb", "",
|
||||
@@ -7838,7 +7841,7 @@ void weechat_config_search_with_string (const char *option_name,
|
||||
struct t_config_file **config_file,
|
||||
struct t_config_section **section,
|
||||
struct t_config_option **option,
|
||||
char **pos_option_name);
|
||||
const char **pos_option_name);
|
||||
----
|
||||
|
||||
Paramètres :
|
||||
@@ -7861,7 +7864,7 @@ Exemple en C :
|
||||
struct t_config_file *ptr_config_file;
|
||||
struct t_config_section *ptr_section;
|
||||
struct t_config_option *ptr_option;
|
||||
char *option_name;
|
||||
const char *option_name;
|
||||
|
||||
weechat_config_search_with_string ("fichier.section.option",
|
||||
&ptr_config_file,
|
||||
@@ -9771,6 +9774,95 @@ elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_ERROR:
|
||||
# ...
|
||||
----
|
||||
|
||||
[[themes]]
|
||||
=== Thèmes
|
||||
|
||||
Fonctions permettant de contribuer des surcharges d'options de couleur
|
||||
(et autres options modifiables par un thème) à des thèmes intégrés.
|
||||
Voir la section
|
||||
link:weechat_user.fr.html#themes[guide utilisateur / Thèmes] pour le
|
||||
côté utilisateur final et la commande `+/theme+`.
|
||||
|
||||
==== theme_register
|
||||
|
||||
_WeeChat ≥ 4.10.0._
|
||||
|
||||
Enregistrer une contribution de surcharges d'options sous un thème
|
||||
nommé. L'extension appelante est le propriétaire de la contribution ;
|
||||
les appels suivants avec le même nom de thème depuis la même extension
|
||||
sont fusionnés dans la contribution existante (en cas de doublons, les
|
||||
dernières clés gagnent).
|
||||
|
||||
Lorsque l'extension appelante est déchargée, toutes ses contributions
|
||||
sont automatiquement retirées de tous les thèmes.
|
||||
|
||||
Prototype :
|
||||
|
||||
[source,c]
|
||||
----
|
||||
struct t_theme *weechat_theme_register (const char *name,
|
||||
struct t_hashtable *overrides);
|
||||
----
|
||||
|
||||
Paramètres :
|
||||
|
||||
* _name_ : nom du thème (par exemple `+light+` ou un nom personnalisé)
|
||||
* _overrides_ : table de hachage associant des noms d'options complets
|
||||
(par exemple `+irc.color.input_nick+`) à leurs valeurs chaîne ;
|
||||
l'appelant en conserve la propriété et peut la libérer juste après
|
||||
l'appel
|
||||
|
||||
Valeur de retour :
|
||||
|
||||
* pointeur vers le thème enregistré (existant ou nouvellement créé),
|
||||
NULL en cas d'erreur
|
||||
|
||||
Exemple en C :
|
||||
|
||||
[source,c]
|
||||
----
|
||||
struct t_hashtable *overrides = weechat_hashtable_new (
|
||||
8,
|
||||
WEECHAT_HASHTABLE_STRING,
|
||||
WEECHAT_HASHTABLE_STRING,
|
||||
NULL, NULL);
|
||||
if (overrides)
|
||||
{
|
||||
weechat_hashtable_set (overrides, "irc.color.input_nick", "cyan");
|
||||
weechat_hashtable_set (overrides, "irc.color.topic_old", "darkgray");
|
||||
weechat_theme_register ("light", overrides);
|
||||
weechat_hashtable_free (overrides);
|
||||
}
|
||||
----
|
||||
|
||||
Script (Python) :
|
||||
|
||||
[source,python]
|
||||
----
|
||||
# prototype
|
||||
def theme_register(name: str, overrides: Dict[str, str]) -> str: ...
|
||||
|
||||
# exemple
|
||||
weechat.theme_register("light", {
|
||||
"irc.color.input_nick": "cyan",
|
||||
"irc.color.topic_old": "darkgray",
|
||||
})
|
||||
----
|
||||
|
||||
[NOTE]
|
||||
Seules les options possédant le flag _themable_ seront modifiées par
|
||||
`/theme apply`. Toutes les options `*.color.*` sont modifiables par
|
||||
défaut ; les options de type chaîne contenant des références
|
||||
`+${color:...}+` sont explicitement déclarées comme modifiables. Les
|
||||
entrées ciblant des options non modifiables sont silencieusement
|
||||
ignorées au moment de l'application avec un avertissement écrit sur
|
||||
le tampon _core_.
|
||||
|
||||
[NOTE]
|
||||
Lorsqu'elle est appelée depuis un script, la contribution est
|
||||
automatiquement retirée lorsque le script est déchargé (aucun nettoyage
|
||||
manuel n'est nécessaire).
|
||||
|
||||
[[key_bindings]]
|
||||
=== Associations de touches
|
||||
|
||||
|
||||
@@ -1046,6 +1046,14 @@ Paramètres de chemin :
|
||||
confondre avec le numéro du tampon, qui est différent)
|
||||
* `buffer_name` (chaîne, **obligatoire**) : nom du tampon
|
||||
|
||||
Paramètres de requête :
|
||||
|
||||
* `colors` (chaîne, facultatif, par défaut : `ansi`) : comment les chaînes avec
|
||||
des couleurs sont retournées :
|
||||
** `ansi` : retourner les codes couleur ANSI
|
||||
** `weechat` : retourner les codes couleur internes WeeChat
|
||||
** `strip` : supprimer les couleurs
|
||||
|
||||
Exemple de requête : obtenir les pseudos d'un tampon :
|
||||
|
||||
[source,shell]
|
||||
@@ -1191,6 +1199,51 @@ HTTP/1.1 200 OK
|
||||
]
|
||||
----
|
||||
|
||||
[[resource_scripts]]
|
||||
=== Scripts
|
||||
|
||||
Retourner la liste des scripts chargés (tous les langages).
|
||||
|
||||
Point de terminaison :
|
||||
|
||||
----
|
||||
GET /api/scripts
|
||||
----
|
||||
|
||||
Exemple de requête :
|
||||
|
||||
[source,shell]
|
||||
----
|
||||
curl -L -u 'plain:secret_password' 'https://localhost:9000/api/scripts'
|
||||
----
|
||||
|
||||
Réponse :
|
||||
|
||||
[source,http]
|
||||
----
|
||||
HTTP/1.1 200 OK
|
||||
----
|
||||
|
||||
[source,json]
|
||||
----
|
||||
[
|
||||
{
|
||||
"name": "highmon.pl",
|
||||
"version": "2.7",
|
||||
"description": "Highlight Monitor",
|
||||
"author": "KenjiE20",
|
||||
"license": "GPL3"
|
||||
},
|
||||
{
|
||||
"name": "go.py",
|
||||
"version": "3.1.1",
|
||||
"description": "Quick jump to buffers",
|
||||
"author": "Sébastien Helleu <flashcode@flashtux.org>",
|
||||
"license": "GPL3"
|
||||
}
|
||||
]
|
||||
----
|
||||
|
||||
[[resource_input]]
|
||||
=== Entrée
|
||||
|
||||
@@ -1530,6 +1583,7 @@ Les types de corps qui peuvent être retournés :
|
||||
* `nick_group` (objet)
|
||||
* `nick` (objet)
|
||||
* `hotlist` (objet)
|
||||
* `scripts` (tableau)
|
||||
* `ping` (objet)
|
||||
|
||||
[TIP]
|
||||
|
||||
@@ -2227,6 +2227,166 @@ Exemple de gras avec la couleur de texte du terminal :
|
||||
/set weechat.color.status_time *99999
|
||||
----
|
||||
|
||||
[[themes]]
|
||||
=== Thèmes
|
||||
|
||||
Un thème est un ensemble nommé de surcharges d'options qui peut être
|
||||
appliqué par la commande <<command_weechat_theme,/theme>>. WeeChat est
|
||||
livré avec un thème intégré `"light"` adapté aux terminaux à fond clair
|
||||
et permet de charger temporairement des thèmes utilisateur depuis des
|
||||
fichiers.
|
||||
|
||||
[[themes_themable_options]]
|
||||
==== Options modifiables par un thème
|
||||
|
||||
Les thèmes ne peuvent modifier que les options marquées comme
|
||||
_themable_ (modifiables par un thème). Toutes les options `*.color.*`
|
||||
le sont par défaut ; certaines options de type chaîne contenant des
|
||||
références `+${color:...}+` (par exemple
|
||||
`+weechat.color.chat_nick_colors+`, `+weechat.look.prefix_error+` ou les
|
||||
formats `+buflist.format.*+`) sont explicitement déclarées comme
|
||||
modifiables.
|
||||
|
||||
La liste complète des options modifiables peut être affichée depuis le
|
||||
tampon <<command_fset_fset,/fset>> avec le filtre `+t:themable+`.
|
||||
|
||||
[[themes_apply]]
|
||||
==== Appliquer un thème
|
||||
|
||||
Pour basculer vers le thème intégré pour fond clair :
|
||||
|
||||
----
|
||||
/theme apply light
|
||||
----
|
||||
|
||||
L'état actuel de toutes les options modifiables est sauvegardé au
|
||||
préalable dans un fichier de sauvegarde nommé
|
||||
`+backup-AAAAMMJJ-HHMMSS-uuuuuu+` dans le répertoire `+themes+` du
|
||||
répertoire de configuration de WeeChat. L'apparence précédente peut
|
||||
ainsi être restaurée à tout moment avec :
|
||||
|
||||
----
|
||||
/theme apply backup-AAAAMMJJ-HHMMSS-uuuuuu
|
||||
----
|
||||
|
||||
La création de la sauvegarde peut être désactivée (déconseillé) :
|
||||
|
||||
----
|
||||
/set weechat.look.theme_backup off
|
||||
----
|
||||
|
||||
Si la sauvegarde est activée et que le fichier ne peut pas être écrit,
|
||||
l'application est annulée avant qu'aucune option ne soit modifiée.
|
||||
|
||||
Le nom du dernier thème appliqué est conservé dans
|
||||
`+weechat.look.theme+` (à titre informatif uniquement ; il n'est pas
|
||||
ré-appliqué au démarrage).
|
||||
|
||||
[[themes_reset]]
|
||||
==== Réinitialiser aux valeurs par défaut
|
||||
|
||||
Pour rétablir l'apparence d'origine livrée avec WeeChat, réinitialiser
|
||||
toutes les options modifiables à leur valeur par défaut :
|
||||
|
||||
----
|
||||
/theme reset
|
||||
----
|
||||
|
||||
Une sauvegarde est écrite au préalable (même garde-fou que
|
||||
`+/theme apply+`) ; si la sauvegarde échoue, la réinitialisation est
|
||||
annulée avant qu'aucune option ne soit modifiée. L'option
|
||||
`+weechat.look.theme+` est également remise à vide.
|
||||
|
||||
[[themes_save_delete]]
|
||||
==== Sauvegarder et supprimer des thèmes utilisateur
|
||||
|
||||
Sauvegarder l'état actuel des options modifiables en tant que nouveau
|
||||
thème utilisateur :
|
||||
|
||||
----
|
||||
/theme save monTheme
|
||||
----
|
||||
|
||||
Toutes les options modifiables sont écrites, donc le fichier est
|
||||
autonome et applique exactement le même aspect sur n'importe quel
|
||||
WeeChat, quelle que soit sa configuration actuelle.
|
||||
|
||||
Les noms réservés (noms de thèmes intégrés comme `+light+` et tout nom
|
||||
commençant par `+backup-+`) sont refusés. Les fichiers sont placés
|
||||
dans `+${weechat_config_dir}/themes/<nom>.theme+`.
|
||||
|
||||
Renommer un thème utilisateur (usage typique : conserver une
|
||||
sauvegarde automatique utile sous un nom plus parlant) :
|
||||
|
||||
----
|
||||
/theme rename backup-20260525-094210-123456 maSauvegarde
|
||||
----
|
||||
|
||||
Les thèmes intégrés n'ont pas de fichier et ne peuvent pas être
|
||||
renommés ; le nom cible ne peut pas correspondre à un nom intégré ni
|
||||
commencer par `+backup-+`, et le fichier cible ne doit pas déjà
|
||||
exister. Le champ `+name+` de la section `+[info]+` à l'intérieur du
|
||||
fichier est réécrit afin que `/theme info` affiche le nouveau nom de
|
||||
manière cohérente.
|
||||
|
||||
Supprimer un thème utilisateur :
|
||||
|
||||
----
|
||||
/theme del monTheme
|
||||
----
|
||||
|
||||
Cela supprime le fichier sur le disque ; les thèmes intégrés ne
|
||||
peuvent pas être supprimés.
|
||||
|
||||
[[themes_file_format]]
|
||||
==== Format du fichier de thème
|
||||
|
||||
Un fichier de thème est de type INI avec deux sections :
|
||||
|
||||
----
|
||||
[info]
|
||||
name = "solarized_light"
|
||||
description = "Thème fond clair inspiré de Solarized"
|
||||
date = "2026-05-25 09:42:10"
|
||||
weechat = "4.10.0-dev"
|
||||
|
||||
[options]
|
||||
weechat.color.chat = "darkgray"
|
||||
weechat.color.separator = "blue"
|
||||
irc.color.input_nick = "magenta"
|
||||
buflist.format.number = "${color:28}${number}${if:${number_displayed}?.: }"
|
||||
----
|
||||
|
||||
`+[info]+` est une section de métadonnées informatives affichées par
|
||||
`/theme info`. `+[options]+` contient les surcharges réelles ; les clés
|
||||
sont les noms complets d'options tels qu'affichés par `/set`. Les
|
||||
valeurs de type chaîne peuvent être encadrées par des guillemets
|
||||
simples ou doubles ; les guillemets sont retirés à l'analyse. Les
|
||||
options non modifiables par un thème listées dans un fichier sont
|
||||
refusées au moment de l'application et signalées sur le tampon _core_
|
||||
(ainsi, un fichier `.theme` importé depuis une source non fiable ne
|
||||
peut pas écraser des mots de passe, des listes d'auto-chargement ou
|
||||
des commandes de démarrage).
|
||||
|
||||
Les fichiers de thème utilisateur ne sont jamais mis en cache : à
|
||||
chaque `/theme apply <nom>`, le fichier est analysé, appliqué, puis
|
||||
libéré.
|
||||
|
||||
[[themes_resolution]]
|
||||
==== Ordre de résolution
|
||||
|
||||
Lors de l'exécution de `+/theme apply <nom>+` :
|
||||
|
||||
* Si `+${weechat_config_dir}/themes/<nom>.theme+` existe, le fichier
|
||||
est analysé et utilisé (il masque tout thème intégré du même nom).
|
||||
* Sinon, le registre des thèmes intégrés est consulté ; les thèmes
|
||||
intégrés sont enregistrés par programmation par le cœur, les
|
||||
extensions et les scripts (voir la documentation des extensions et
|
||||
des scripts pour `+weechat_theme_register+`).
|
||||
|
||||
Si aucune des deux sources ne fournit le nom, l'application est
|
||||
refusée.
|
||||
|
||||
[[charset]]
|
||||
=== Charset
|
||||
|
||||
|
||||
@@ -4549,7 +4549,7 @@ Prototipo:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_mkdir_home (char *directory, int mode);
|
||||
int weechat_mkdir_home (const char *directory, int mode);
|
||||
----
|
||||
|
||||
Argomenti:
|
||||
@@ -4597,7 +4597,7 @@ Prototipo:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_mkdir (char *directory, int mode);
|
||||
int weechat_mkdir (const char *directory, int mode);
|
||||
----
|
||||
|
||||
Argomenti:
|
||||
@@ -4638,7 +4638,7 @@ Prototipo:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_mkdir_parents (char *directory, int mode);
|
||||
int weechat_mkdir_parents (const char *directory, int mode);
|
||||
----
|
||||
|
||||
Argomenti:
|
||||
@@ -7661,7 +7661,7 @@ section = weechat.config_search_section(config_file, "section")
|
||||
==== config_new_option
|
||||
|
||||
// TRANSLATION MISSING
|
||||
_Updated in 1.5, 4.1.0._
|
||||
_Updated in 1.5, 4.1.0, 4.10.0._
|
||||
|
||||
Crea una nuova opzione nella sezione di un file di configurazione.
|
||||
|
||||
@@ -7708,7 +7708,10 @@ Argomenti:
|
||||
option name (the value of parent option will be displayed in `/set` command
|
||||
output if this option is "null"), the syntax is then:
|
||||
"name << file.section.option"
|
||||
* _type_: tipo dell'opzione:
|
||||
// TRANSLATION MISSING
|
||||
* _type_: type of option; any type can be suffixed with `+|themable+` to mark
|
||||
the option as themable, so that it can be set by the `/theme` command
|
||||
(options of type _color_ are always themable) _(WeeChat ≥ 4.10.0)_:
|
||||
** _boolean_: valore booleano (on/off)
|
||||
** _integer_: valore intero
|
||||
** _string_: valore stringa
|
||||
@@ -7799,7 +7802,7 @@ struct t_config_option *option_int =
|
||||
|
||||
/* stringa */
|
||||
struct t_config_option *option_str =
|
||||
weechat_config_new_option (config_file, section, "option_str", "string",
|
||||
weechat_config_new_option (config_file, section, "option_str", "string|themable",
|
||||
"My option, type string",
|
||||
NULL,
|
||||
0, 0,
|
||||
@@ -7875,7 +7878,7 @@ option_int = weechat.config_new_option(config_file, section, "option_int", "inte
|
||||
"", "",
|
||||
"", "")
|
||||
|
||||
option_str = weechat.config_new_option(config_file, section, "option_str", "string",
|
||||
option_str = weechat.config_new_option(config_file, section, "option_str", "string|themable",
|
||||
"My option, type string",
|
||||
"", 0, 0, "test", "test", 1,
|
||||
"option_str_check_value_cb", "",
|
||||
@@ -8011,7 +8014,7 @@ void weechat_config_search_with_string (const char *option_name,
|
||||
struct t_config_file **config_file,
|
||||
struct t_config_section **section,
|
||||
struct t_config_option **option,
|
||||
char **pos_option_name);
|
||||
const char **pos_option_name);
|
||||
----
|
||||
|
||||
Argomenti:
|
||||
@@ -8034,7 +8037,7 @@ Esempio in C:
|
||||
struct t_config_file *ptr_config_file;
|
||||
struct t_config_section *ptr_section;
|
||||
struct t_config_option *ptr_option;
|
||||
char *option_name;
|
||||
const char *option_name;
|
||||
|
||||
weechat_config_search_with_string ("file.section.option",
|
||||
&ptr_config_file,
|
||||
@@ -9967,6 +9970,90 @@ elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_ERROR:
|
||||
# ...
|
||||
----
|
||||
|
||||
// TRANSLATION MISSING
|
||||
[[themes]]
|
||||
=== Themes
|
||||
|
||||
Functions to contribute color (and other themable option) overrides to
|
||||
built-in themes. See the
|
||||
link:weechat_user.it.html#themes[user's guide / Themes] section for the
|
||||
end-user side and the `+/theme+` command.
|
||||
|
||||
==== theme_register
|
||||
|
||||
_WeeChat ≥ 4.10.0._
|
||||
|
||||
Register a contribution of option overrides under a named theme. The
|
||||
caller's plugin is the owner of the contribution; subsequent calls
|
||||
with the same theme name from the same plugin merge into the existing
|
||||
contribution (later keys win for duplicates).
|
||||
|
||||
When the calling plugin is unloaded, all its contributions are
|
||||
automatically dropped from every theme.
|
||||
|
||||
Prototype:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
struct t_theme *weechat_theme_register (const char *name,
|
||||
struct t_hashtable *overrides);
|
||||
----
|
||||
|
||||
Arguments:
|
||||
|
||||
* _name_: theme name (for example `+light+` or a custom name)
|
||||
* _overrides_: hashtable mapping full option names
|
||||
(e.g. `+irc.color.input_nick+`) to their string values; the caller
|
||||
retains ownership and may free the hashtable right after the call
|
||||
|
||||
Return value:
|
||||
|
||||
* pointer to the registered theme (existing or newly created), NULL on
|
||||
error
|
||||
|
||||
C example:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
struct t_hashtable *overrides = weechat_hashtable_new (
|
||||
8,
|
||||
WEECHAT_HASHTABLE_STRING,
|
||||
WEECHAT_HASHTABLE_STRING,
|
||||
NULL, NULL);
|
||||
if (overrides)
|
||||
{
|
||||
weechat_hashtable_set (overrides, "irc.color.input_nick", "cyan");
|
||||
weechat_hashtable_set (overrides, "irc.color.topic_old", "darkgray");
|
||||
weechat_theme_register ("light", overrides);
|
||||
weechat_hashtable_free (overrides);
|
||||
}
|
||||
----
|
||||
|
||||
Script (Python):
|
||||
|
||||
[source,python]
|
||||
----
|
||||
# prototype
|
||||
def theme_register(name: str, overrides: Dict[str, str]) -> str: ...
|
||||
|
||||
# example
|
||||
weechat.theme_register("light", {
|
||||
"irc.color.input_nick": "cyan",
|
||||
"irc.color.topic_old": "darkgray",
|
||||
})
|
||||
----
|
||||
|
||||
[NOTE]
|
||||
Only options that have the _themable_ flag will be set by `/theme apply`.
|
||||
All `*.color.*` options are themable by default; string options that
|
||||
hold `+${color:...}+` references are explicitly opted in. Entries
|
||||
targeting non-themable options are silently skipped at apply-time with
|
||||
a warning logged to the _core_ buffer.
|
||||
|
||||
[NOTE]
|
||||
When called from a script, the contribution is automatically dropped
|
||||
when the script unloads (no manual cleanup is needed).
|
||||
|
||||
[[key_bindings]]
|
||||
=== Combinazione tasti
|
||||
|
||||
|
||||
@@ -2439,6 +2439,152 @@ Esempio di grassetto con il colore di primo piano del terminale:
|
||||
/set weechat.color.status_time *99999
|
||||
----
|
||||
|
||||
// TRANSLATION MISSING
|
||||
[[themes]]
|
||||
=== Themes
|
||||
|
||||
A theme is a named bundle of option overrides that can be applied with
|
||||
the <<command_weechat_theme,/theme>> command. WeeChat ships a built-in
|
||||
`"light"` theme tuned for light-background terminals and supports
|
||||
user-defined themes loaded transiently from files.
|
||||
|
||||
[[themes_themable_options]]
|
||||
==== Themable options
|
||||
|
||||
Themes can only set options marked as _themable_. All `*.color.*`
|
||||
options are themable by default; a few string options that hold format
|
||||
expressions with `+${color:...}+` references (such as
|
||||
`+weechat.color.chat_nick_colors+`, `+weechat.look.prefix_error+` or the
|
||||
`+buflist.format.*+` formats) are explicitly opted in.
|
||||
|
||||
You can list the full themable surface area from the
|
||||
<<command_fset_fset,/fset>> buffer with the `+t:themable+` filter.
|
||||
|
||||
[[themes_apply]]
|
||||
==== Applying a theme
|
||||
|
||||
To switch to the built-in light-background theme:
|
||||
|
||||
----
|
||||
/theme apply light
|
||||
----
|
||||
|
||||
The current state of every themable option is saved beforehand to a
|
||||
backup theme file named like `+backup-YYYYMMDD-HHMMSS-uuuuuu+` in
|
||||
directory `+themes+` inside the WeeChat configuration directory, so the
|
||||
previous look can be restored at any time with:
|
||||
|
||||
----
|
||||
/theme apply backup-YYYYMMDD-HHMMSS-uuuuuu
|
||||
----
|
||||
|
||||
Backup creation can be disabled (not recommended):
|
||||
|
||||
----
|
||||
/set weechat.look.theme_backup off
|
||||
----
|
||||
|
||||
If backup is enabled and the backup file cannot be written, the apply
|
||||
is aborted before any option is changed.
|
||||
|
||||
The name of the last applied theme is stored in
|
||||
`+weechat.look.theme+` (informational only; not re-applied at startup).
|
||||
|
||||
[[themes_reset]]
|
||||
==== Resetting to defaults
|
||||
|
||||
To restore the look shipped with WeeChat, reset every themable option
|
||||
to its default value:
|
||||
|
||||
----
|
||||
/theme reset
|
||||
----
|
||||
|
||||
A backup is written first (same gate as `+/theme apply+`); on backup
|
||||
failure the reset is aborted before any option is changed.
|
||||
`+weechat.look.theme+` is cleared too.
|
||||
|
||||
[[themes_save_delete]]
|
||||
==== Saving and deleting user themes
|
||||
|
||||
Save the current themable options as a new user theme file:
|
||||
|
||||
----
|
||||
/theme save mytheme
|
||||
----
|
||||
|
||||
Every themable option is written, so the file is self-contained and
|
||||
applies the exact same look on any WeeChat, regardless of its current
|
||||
configuration.
|
||||
|
||||
Reserved names (built-in theme names like `+light+` and any name
|
||||
starting with `+backup-+`) are refused. Files live at
|
||||
`+${weechat_config_dir}/themes/<name>.theme+`.
|
||||
|
||||
Rename a user theme (typical use: keep a useful automatic backup
|
||||
under a meaningful name):
|
||||
|
||||
----
|
||||
/theme rename backup-20260525-094210-123456 mybackup
|
||||
----
|
||||
|
||||
Built-in themes have no file and cannot be renamed; the target name
|
||||
cannot match a built-in name or start with `+backup-+`, and the
|
||||
target file must not already exist. The `+[info]+` `+name+` field
|
||||
inside the file is rewritten so `/theme info` reports the new name
|
||||
consistently.
|
||||
|
||||
Delete a user theme:
|
||||
|
||||
----
|
||||
/theme del mytheme
|
||||
----
|
||||
|
||||
This removes the file on disk; built-in themes cannot be deleted.
|
||||
|
||||
[[themes_file_format]]
|
||||
==== Theme file format
|
||||
|
||||
A theme file is INI-like with two sections:
|
||||
|
||||
----
|
||||
[info]
|
||||
name = "solarized_light"
|
||||
description = "Light-background theme inspired by Solarized"
|
||||
date = "2026-05-25 09:42:10"
|
||||
weechat = "4.10.0-dev"
|
||||
|
||||
[options]
|
||||
weechat.color.chat = "darkgray"
|
||||
weechat.color.separator = "blue"
|
||||
irc.color.input_nick = "magenta"
|
||||
buflist.format.number = "${color:28}${number}${if:${number_displayed}?.: }"
|
||||
----
|
||||
|
||||
`+[info]+` is informational metadata shown by `/theme info`. `+[options]+`
|
||||
holds the actual overrides; keys are the full option names that would
|
||||
appear in `/set`. String values can be enclosed in double or single
|
||||
quotes; quotes are stripped at parse time. Non-themable options listed
|
||||
in a theme file are refused at apply time and logged to the core
|
||||
buffer (so a `.theme` file imported from an untrusted source cannot
|
||||
overwrite passwords, autoload lists, or startup commands).
|
||||
|
||||
User theme files are never cached: on every `/theme apply <name>` the
|
||||
file is parsed, applied, and freed.
|
||||
|
||||
[[themes_resolution]]
|
||||
==== Resolution order
|
||||
|
||||
When `+/theme apply <name>+` is run:
|
||||
|
||||
* If `+${weechat_config_dir}/themes/<name>.theme+` exists, the file
|
||||
is parsed and used (it shadows any built-in with the same name).
|
||||
* Otherwise the built-in theme registry is consulted; built-ins are
|
||||
registered programmatically by core, plugins and scripts (see the
|
||||
plugin and scripting documentation for `+weechat_theme_register+`).
|
||||
|
||||
If neither source provides the name, the apply is refused.
|
||||
|
||||
[[charset]]
|
||||
=== Charset
|
||||
|
||||
|
||||
@@ -4477,7 +4477,7 @@ WeeChat ホームディレクトリの下にディレクトリを作成。
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_mkdir_home (char *directory, int mode);
|
||||
int weechat_mkdir_home (const char *directory, int mode);
|
||||
----
|
||||
|
||||
引数:
|
||||
@@ -4525,7 +4525,7 @@ weechat.mkdir_home("${weechat_cache_dir}/temp", 0755)
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_mkdir (char *directory, int mode);
|
||||
int weechat_mkdir (const char *directory, int mode);
|
||||
----
|
||||
|
||||
引数:
|
||||
@@ -4566,7 +4566,7 @@ weechat.mkdir("/tmp/mydir", 0755)
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_mkdir_parents (char *directory, int mode);
|
||||
int weechat_mkdir_parents (const char *directory, int mode);
|
||||
----
|
||||
|
||||
引数:
|
||||
@@ -7472,7 +7472,7 @@ section = weechat.config_search_section(config_file, "section")
|
||||
==== config_new_option
|
||||
|
||||
// TRANSLATION MISSING
|
||||
_Updated in 1.5, 4.1.0._
|
||||
_Updated in 1.5, 4.1.0, 4.10.0._
|
||||
|
||||
設定ファイルのあるセクションに新しいオプションを作成。
|
||||
|
||||
@@ -7518,7 +7518,10 @@ struct t_config_option *weechat_config_new_option (
|
||||
(このオプションが "null" の場合、親オプションの値が `/set`
|
||||
コマンドの出力に表示されます)。以下の構文を使ってください:
|
||||
"name << file.section.option"
|
||||
* _type_: オプションの型:
|
||||
// TRANSLATION MISSING
|
||||
* _type_: type of option; any type can be suffixed with `+|themable+` to mark
|
||||
the option as themable, so that it can be set by the `/theme` command
|
||||
(options of type _color_ are always themable) _(WeeChat ≥ 4.10.0)_:
|
||||
** _boolean_: ブール値 (on/off)
|
||||
** _integer_: 整数値
|
||||
** _string_: 文字列
|
||||
@@ -7606,7 +7609,7 @@ struct t_config_option *option_int =
|
||||
|
||||
/* string */
|
||||
struct t_config_option *option_str =
|
||||
weechat_config_new_option (config_file, section, "option_str", "string",
|
||||
weechat_config_new_option (config_file, section, "option_str", "string|themable",
|
||||
"My option, type string",
|
||||
NULL,
|
||||
0, 0,
|
||||
@@ -7682,7 +7685,7 @@ option_int = weechat.config_new_option(config_file, section, "option_int", "inte
|
||||
"", "",
|
||||
"", "")
|
||||
|
||||
option_str = weechat.config_new_option(config_file, section, "option_str", "string",
|
||||
option_str = weechat.config_new_option(config_file, section, "option_str", "string|themable",
|
||||
"My option, type string",
|
||||
"", 0, 0, "test", "test", 1,
|
||||
"option_str_check_value_cb", "",
|
||||
@@ -7816,7 +7819,7 @@ void weechat_config_search_with_string (const char *option_name,
|
||||
struct t_config_file **config_file,
|
||||
struct t_config_section **section,
|
||||
struct t_config_option **option,
|
||||
char **pos_option_name);
|
||||
const char **pos_option_name);
|
||||
----
|
||||
|
||||
引数:
|
||||
@@ -7838,7 +7841,7 @@ C 言語での使用例:
|
||||
struct t_config_file *ptr_config_file;
|
||||
struct t_config_section *ptr_section;
|
||||
struct t_config_option *ptr_option;
|
||||
char *option_name;
|
||||
const char *option_name;
|
||||
|
||||
weechat_config_search_with_string ("file.section.option",
|
||||
&ptr_config_file,
|
||||
@@ -9746,6 +9749,90 @@ elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_ERROR:
|
||||
# ...
|
||||
----
|
||||
|
||||
// TRANSLATION MISSING
|
||||
[[themes]]
|
||||
=== Themes
|
||||
|
||||
Functions to contribute color (and other themable option) overrides to
|
||||
built-in themes. See the
|
||||
link:weechat_user.ja.html#themes[user's guide / Themes] section for the
|
||||
end-user side and the `+/theme+` command.
|
||||
|
||||
==== theme_register
|
||||
|
||||
_WeeChat ≥ 4.10.0._
|
||||
|
||||
Register a contribution of option overrides under a named theme. The
|
||||
caller's plugin is the owner of the contribution; subsequent calls
|
||||
with the same theme name from the same plugin merge into the existing
|
||||
contribution (later keys win for duplicates).
|
||||
|
||||
When the calling plugin is unloaded, all its contributions are
|
||||
automatically dropped from every theme.
|
||||
|
||||
Prototype:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
struct t_theme *weechat_theme_register (const char *name,
|
||||
struct t_hashtable *overrides);
|
||||
----
|
||||
|
||||
Arguments:
|
||||
|
||||
* _name_: theme name (for example `+light+` or a custom name)
|
||||
* _overrides_: hashtable mapping full option names
|
||||
(e.g. `+irc.color.input_nick+`) to their string values; the caller
|
||||
retains ownership and may free the hashtable right after the call
|
||||
|
||||
Return value:
|
||||
|
||||
* pointer to the registered theme (existing or newly created), NULL on
|
||||
error
|
||||
|
||||
C example:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
struct t_hashtable *overrides = weechat_hashtable_new (
|
||||
8,
|
||||
WEECHAT_HASHTABLE_STRING,
|
||||
WEECHAT_HASHTABLE_STRING,
|
||||
NULL, NULL);
|
||||
if (overrides)
|
||||
{
|
||||
weechat_hashtable_set (overrides, "irc.color.input_nick", "cyan");
|
||||
weechat_hashtable_set (overrides, "irc.color.topic_old", "darkgray");
|
||||
weechat_theme_register ("light", overrides);
|
||||
weechat_hashtable_free (overrides);
|
||||
}
|
||||
----
|
||||
|
||||
Script (Python):
|
||||
|
||||
[source,python]
|
||||
----
|
||||
# prototype
|
||||
def theme_register(name: str, overrides: Dict[str, str]) -> str: ...
|
||||
|
||||
# example
|
||||
weechat.theme_register("light", {
|
||||
"irc.color.input_nick": "cyan",
|
||||
"irc.color.topic_old": "darkgray",
|
||||
})
|
||||
----
|
||||
|
||||
[NOTE]
|
||||
Only options that have the _themable_ flag will be set by `/theme apply`.
|
||||
All `*.color.*` options are themable by default; string options that
|
||||
hold `+${color:...}+` references are explicitly opted in. Entries
|
||||
targeting non-themable options are silently skipped at apply-time with
|
||||
a warning logged to the _core_ buffer.
|
||||
|
||||
[NOTE]
|
||||
When called from a script, the contribution is automatically dropped
|
||||
when the script unloads (no manual cleanup is needed).
|
||||
|
||||
[[key_bindings]]
|
||||
=== キー割り当て
|
||||
|
||||
|
||||
@@ -2375,6 +2375,152 @@ WeeChat は画面に色が表示された時点で色ペアを動的に割り当
|
||||
/set weechat.color.status_time *99999
|
||||
----
|
||||
|
||||
// TRANSLATION MISSING
|
||||
[[themes]]
|
||||
=== Themes
|
||||
|
||||
A theme is a named bundle of option overrides that can be applied with
|
||||
the <<command_weechat_theme,/theme>> command. WeeChat ships a built-in
|
||||
`"light"` theme tuned for light-background terminals and supports
|
||||
user-defined themes loaded transiently from files.
|
||||
|
||||
[[themes_themable_options]]
|
||||
==== Themable options
|
||||
|
||||
Themes can only set options marked as _themable_. All `*.color.*`
|
||||
options are themable by default; a few string options that hold format
|
||||
expressions with `+${color:...}+` references (such as
|
||||
`+weechat.color.chat_nick_colors+`, `+weechat.look.prefix_error+` or the
|
||||
`+buflist.format.*+` formats) are explicitly opted in.
|
||||
|
||||
You can list the full themable surface area from the
|
||||
<<command_fset_fset,/fset>> buffer with the `+t:themable+` filter.
|
||||
|
||||
[[themes_apply]]
|
||||
==== Applying a theme
|
||||
|
||||
To switch to the built-in light-background theme:
|
||||
|
||||
----
|
||||
/theme apply light
|
||||
----
|
||||
|
||||
The current state of every themable option is saved beforehand to a
|
||||
backup theme file named like `+backup-YYYYMMDD-HHMMSS-uuuuuu+` in
|
||||
directory `+themes+` inside the WeeChat configuration directory, so the
|
||||
previous look can be restored at any time with:
|
||||
|
||||
----
|
||||
/theme apply backup-YYYYMMDD-HHMMSS-uuuuuu
|
||||
----
|
||||
|
||||
Backup creation can be disabled (not recommended):
|
||||
|
||||
----
|
||||
/set weechat.look.theme_backup off
|
||||
----
|
||||
|
||||
If backup is enabled and the backup file cannot be written, the apply
|
||||
is aborted before any option is changed.
|
||||
|
||||
The name of the last applied theme is stored in
|
||||
`+weechat.look.theme+` (informational only; not re-applied at startup).
|
||||
|
||||
[[themes_reset]]
|
||||
==== Resetting to defaults
|
||||
|
||||
To restore the look shipped with WeeChat, reset every themable option
|
||||
to its default value:
|
||||
|
||||
----
|
||||
/theme reset
|
||||
----
|
||||
|
||||
A backup is written first (same gate as `+/theme apply+`); on backup
|
||||
failure the reset is aborted before any option is changed.
|
||||
`+weechat.look.theme+` is cleared too.
|
||||
|
||||
[[themes_save_delete]]
|
||||
==== Saving and deleting user themes
|
||||
|
||||
Save the current themable options as a new user theme file:
|
||||
|
||||
----
|
||||
/theme save mytheme
|
||||
----
|
||||
|
||||
Every themable option is written, so the file is self-contained and
|
||||
applies the exact same look on any WeeChat, regardless of its current
|
||||
configuration.
|
||||
|
||||
Reserved names (built-in theme names like `+light+` and any name
|
||||
starting with `+backup-+`) are refused. Files live at
|
||||
`+${weechat_config_dir}/themes/<name>.theme+`.
|
||||
|
||||
Rename a user theme (typical use: keep a useful automatic backup
|
||||
under a meaningful name):
|
||||
|
||||
----
|
||||
/theme rename backup-20260525-094210-123456 mybackup
|
||||
----
|
||||
|
||||
Built-in themes have no file and cannot be renamed; the target name
|
||||
cannot match a built-in name or start with `+backup-+`, and the
|
||||
target file must not already exist. The `+[info]+` `+name+` field
|
||||
inside the file is rewritten so `/theme info` reports the new name
|
||||
consistently.
|
||||
|
||||
Delete a user theme:
|
||||
|
||||
----
|
||||
/theme del mytheme
|
||||
----
|
||||
|
||||
This removes the file on disk; built-in themes cannot be deleted.
|
||||
|
||||
[[themes_file_format]]
|
||||
==== Theme file format
|
||||
|
||||
A theme file is INI-like with two sections:
|
||||
|
||||
----
|
||||
[info]
|
||||
name = "solarized_light"
|
||||
description = "Light-background theme inspired by Solarized"
|
||||
date = "2026-05-25 09:42:10"
|
||||
weechat = "4.10.0-dev"
|
||||
|
||||
[options]
|
||||
weechat.color.chat = "darkgray"
|
||||
weechat.color.separator = "blue"
|
||||
irc.color.input_nick = "magenta"
|
||||
buflist.format.number = "${color:28}${number}${if:${number_displayed}?.: }"
|
||||
----
|
||||
|
||||
`+[info]+` is informational metadata shown by `/theme info`. `+[options]+`
|
||||
holds the actual overrides; keys are the full option names that would
|
||||
appear in `/set`. String values can be enclosed in double or single
|
||||
quotes; quotes are stripped at parse time. Non-themable options listed
|
||||
in a theme file are refused at apply time and logged to the core
|
||||
buffer (so a `.theme` file imported from an untrusted source cannot
|
||||
overwrite passwords, autoload lists, or startup commands).
|
||||
|
||||
User theme files are never cached: on every `/theme apply <name>` the
|
||||
file is parsed, applied, and freed.
|
||||
|
||||
[[themes_resolution]]
|
||||
==== Resolution order
|
||||
|
||||
When `+/theme apply <name>+` is run:
|
||||
|
||||
* If `+${weechat_config_dir}/themes/<name>.theme+` exists, the file
|
||||
is parsed and used (it shadows any built-in with the same name).
|
||||
* Otherwise the built-in theme registry is consulted; built-ins are
|
||||
registered programmatically by core, plugins and scripts (see the
|
||||
plugin and scripting documentation for `+weechat_theme_register+`).
|
||||
|
||||
If neither source provides the name, the apply is refused.
|
||||
|
||||
[[charset]]
|
||||
=== Charset
|
||||
|
||||
|
||||
@@ -2191,6 +2191,152 @@ Przykład pogrubienia z domyślnym kolorem terminala:
|
||||
/set weechat.color.status_time *99999
|
||||
----
|
||||
|
||||
// TRANSLATION MISSING
|
||||
[[themes]]
|
||||
=== Motywy
|
||||
|
||||
A theme is a named bundle of option overrides that can be applied with
|
||||
the <<command_weechat_theme,/theme>> command. WeeChat ships a built-in
|
||||
`"light"` theme tuned for light-background terminals and supports
|
||||
user-defined themes loaded transiently from files.
|
||||
|
||||
[[themes_themable_options]]
|
||||
==== Themable options
|
||||
|
||||
Themes can only set options marked as _themable_. All `*.color.*`
|
||||
options are themable by default; a few string options that hold format
|
||||
expressions with `+${color:...}+` references (such as
|
||||
`+weechat.color.chat_nick_colors+`, `+weechat.look.prefix_error+` or the
|
||||
`+buflist.format.*+` formats) are explicitly opted in.
|
||||
|
||||
You can list the full themable surface area from the
|
||||
<<command_fset_fset,/fset>> buffer with the `+t:themable+` filter.
|
||||
|
||||
[[themes_apply]]
|
||||
==== Applying a theme
|
||||
|
||||
To switch to the built-in light-background theme:
|
||||
|
||||
----
|
||||
/theme apply light
|
||||
----
|
||||
|
||||
The current state of every themable option is saved beforehand to a
|
||||
backup theme file named like `+backup-YYYYMMDD-HHMMSS-uuuuuu+` in
|
||||
directory `+themes+` inside the WeeChat configuration directory, so the
|
||||
previous look can be restored at any time with:
|
||||
|
||||
----
|
||||
/theme apply backup-YYYYMMDD-HHMMSS-uuuuuu
|
||||
----
|
||||
|
||||
Backup creation can be disabled (not recommended):
|
||||
|
||||
----
|
||||
/set weechat.look.theme_backup off
|
||||
----
|
||||
|
||||
If backup is enabled and the backup file cannot be written, the apply
|
||||
is aborted before any option is changed.
|
||||
|
||||
The name of the last applied theme is stored in
|
||||
`+weechat.look.theme+` (informational only; not re-applied at startup).
|
||||
|
||||
[[themes_reset]]
|
||||
==== Resetting to defaults
|
||||
|
||||
To restore the look shipped with WeeChat, reset every themable option
|
||||
to its default value:
|
||||
|
||||
----
|
||||
/theme reset
|
||||
----
|
||||
|
||||
A backup is written first (same gate as `+/theme apply+`); on backup
|
||||
failure the reset is aborted before any option is changed.
|
||||
`+weechat.look.theme+` is cleared too.
|
||||
|
||||
[[themes_save_delete]]
|
||||
==== Saving and deleting user themes
|
||||
|
||||
Save the current themable options as a new user theme file:
|
||||
|
||||
----
|
||||
/theme save mytheme
|
||||
----
|
||||
|
||||
Every themable option is written, so the file is self-contained and
|
||||
applies the exact same look on any WeeChat, regardless of its current
|
||||
configuration.
|
||||
|
||||
Reserved names (built-in theme names like `+light+` and any name
|
||||
starting with `+backup-+`) are refused. Files live at
|
||||
`+${weechat_config_dir}/themes/<name>.theme+`.
|
||||
|
||||
Rename a user theme (typical use: keep a useful automatic backup
|
||||
under a meaningful name):
|
||||
|
||||
----
|
||||
/theme rename backup-20260525-094210-123456 mybackup
|
||||
----
|
||||
|
||||
Built-in themes have no file and cannot be renamed; the target name
|
||||
cannot match a built-in name or start with `+backup-+`, and the
|
||||
target file must not already exist. The `+[info]+` `+name+` field
|
||||
inside the file is rewritten so `/theme info` reports the new name
|
||||
consistently.
|
||||
|
||||
Delete a user theme:
|
||||
|
||||
----
|
||||
/theme del mytheme
|
||||
----
|
||||
|
||||
This removes the file on disk; built-in themes cannot be deleted.
|
||||
|
||||
[[themes_file_format]]
|
||||
==== Theme file format
|
||||
|
||||
A theme file is INI-like with two sections:
|
||||
|
||||
----
|
||||
[info]
|
||||
name = "solarized_light"
|
||||
description = "Light-background theme inspired by Solarized"
|
||||
date = "2026-05-25 09:42:10"
|
||||
weechat = "4.10.0-dev"
|
||||
|
||||
[options]
|
||||
weechat.color.chat = "darkgray"
|
||||
weechat.color.separator = "blue"
|
||||
irc.color.input_nick = "magenta"
|
||||
buflist.format.number = "${color:28}${number}${if:${number_displayed}?.: }"
|
||||
----
|
||||
|
||||
`+[info]+` is informational metadata shown by `/theme info`. `+[options]+`
|
||||
holds the actual overrides; keys are the full option names that would
|
||||
appear in `/set`. String values can be enclosed in double or single
|
||||
quotes; quotes are stripped at parse time. Non-themable options listed
|
||||
in a theme file are refused at apply time and logged to the core
|
||||
buffer (so a `.theme` file imported from an untrusted source cannot
|
||||
overwrite passwords, autoload lists, or startup commands).
|
||||
|
||||
User theme files are never cached: on every `/theme apply <name>` the
|
||||
file is parsed, applied, and freed.
|
||||
|
||||
[[themes_resolution]]
|
||||
==== Resolution order
|
||||
|
||||
When `+/theme apply <name>+` is run:
|
||||
|
||||
* If `+${weechat_config_dir}/themes/<name>.theme+` exists, the file
|
||||
is parsed and used (it shadows any built-in with the same name).
|
||||
* Otherwise the built-in theme registry is consulted; built-ins are
|
||||
registered programmatically by core, plugins and scripts (see the
|
||||
plugin and scripting documentation for `+weechat_theme_register+`).
|
||||
|
||||
If neither source provides the name, the apply is refused.
|
||||
|
||||
[[charset]]
|
||||
=== Charset
|
||||
|
||||
|
||||
@@ -4209,7 +4209,7 @@ _Ажурирано у верзији 3.2._
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_mkdir_home (char *directory, int mode);
|
||||
int weechat_mkdir_home (const char *directory, int mode);
|
||||
----
|
||||
|
||||
Аргументи:
|
||||
@@ -4255,7 +4255,7 @@ weechat.mkdir_home("${weechat_cache_dir}/temp", 0755)
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_mkdir (char *directory, int mode);
|
||||
int weechat_mkdir (const char *directory, int mode);
|
||||
----
|
||||
|
||||
Аргументи:
|
||||
@@ -4296,7 +4296,7 @@ weechat.mkdir("/tmp/mydir", 0755)
|
||||
|
||||
[source,c]
|
||||
----
|
||||
int weechat_mkdir_parents (char *directory, int mode);
|
||||
int weechat_mkdir_parents (const char *directory, int mode);
|
||||
----
|
||||
|
||||
Аргументи:
|
||||
@@ -7171,7 +7171,7 @@ section = weechat.config_search_section(config_file, "section")
|
||||
|
||||
==== config_new_option
|
||||
|
||||
_Ажурирано у верзији 1.5, 4.1.0._
|
||||
_Ажурирано у верзији 1.5, 4.1.0, 4.10.0._
|
||||
|
||||
Креира нову опцију у одељку конфигурационог фајла.
|
||||
|
||||
@@ -7214,7 +7214,10 @@ struct t_config_option *weechat_config_new_option (
|
||||
* _config_file_: показивач на конфигурациони фајл
|
||||
* _section_: показивач на одељак
|
||||
* _name_: име опције; у програм у WeeChat верзије ≥ 1.4, име може да укључи и име родитељске опције (у случају да је ова опција „null”, вредност родитељске опције ће се приказати у излазу команде `/set`), тада је синтакса: „име << фајл.одељак.опција”
|
||||
* _type_: тип опције:
|
||||
// TRANSLATION MISSING
|
||||
* _type_: type of option; any type can be suffixed with `+|themable+` to mark
|
||||
the option as themable, so that it can be set by the `/theme` command
|
||||
(options of type _color_ are always themable) _(WeeChat ≥ 4.10.0)_:
|
||||
** _boolean_: логичка вредност (on/off)
|
||||
** _integer_: целобројна вредност
|
||||
** _string_: стринг вредност
|
||||
@@ -7287,7 +7290,7 @@ struct t_config_option *option_int =
|
||||
|
||||
/* стринг */
|
||||
struct t_config_option *option_str =
|
||||
weechat_config_new_option (config_file, section, "option_str", "string",
|
||||
weechat_config_new_option (config_file, section, "option_str", "string|themable",
|
||||
"My option, type string",
|
||||
NULL,
|
||||
0, 0,
|
||||
@@ -7363,7 +7366,7 @@ option_int = weechat.config_new_option(config_file, section, "option_int", "inte
|
||||
"", "",
|
||||
"", "")
|
||||
|
||||
option_str = weechat.config_new_option(config_file, section, "option_str", "string",
|
||||
option_str = weechat.config_new_option(config_file, section, "option_str", "string|themable",
|
||||
"My option, type string",
|
||||
"", 0, 0, "test", "test", 1,
|
||||
"option_str_check_value_cb", "",
|
||||
@@ -7492,7 +7495,7 @@ void weechat_config_search_with_string (const char *option_name,
|
||||
struct t_config_file **config_file,
|
||||
struct t_config_section **section,
|
||||
struct t_config_option **option,
|
||||
char **pos_option_name);
|
||||
const char **pos_option_name);
|
||||
----
|
||||
|
||||
Аргументи:
|
||||
@@ -7510,7 +7513,7 @@ C пример:
|
||||
struct t_config_file *ptr_config_file;
|
||||
struct t_config_section *ptr_section;
|
||||
struct t_config_option *ptr_option;
|
||||
char *option_name;
|
||||
const char *option_name;
|
||||
|
||||
weechat_config_search_with_string ("file.section.option",
|
||||
&ptr_config_file,
|
||||
@@ -9436,6 +9439,90 @@ elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_ERROR:
|
||||
# ...
|
||||
----
|
||||
|
||||
// TRANSLATION MISSING
|
||||
[[themes]]
|
||||
=== Теме
|
||||
|
||||
Functions to contribute color (and other themable option) overrides to
|
||||
built-in themes. See the
|
||||
link:weechat_user.sr.html#themes[user's guide / Themes] section for the
|
||||
end-user side and the `+/theme+` command.
|
||||
|
||||
==== theme_register
|
||||
|
||||
_WeeChat ≥ 4.10.0._
|
||||
|
||||
Register a contribution of option overrides under a named theme. The
|
||||
caller's plugin is the owner of the contribution; subsequent calls
|
||||
with the same theme name from the same plugin merge into the existing
|
||||
contribution (later keys win for duplicates).
|
||||
|
||||
When the calling plugin is unloaded, all its contributions are
|
||||
automatically dropped from every theme.
|
||||
|
||||
Prototype:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
struct t_theme *weechat_theme_register (const char *name,
|
||||
struct t_hashtable *overrides);
|
||||
----
|
||||
|
||||
Arguments:
|
||||
|
||||
* _name_: theme name (for example `+light+` or a custom name)
|
||||
* _overrides_: hashtable mapping full option names
|
||||
(e.g. `+irc.color.input_nick+`) to their string values; the caller
|
||||
retains ownership and may free the hashtable right after the call
|
||||
|
||||
Return value:
|
||||
|
||||
* pointer to the registered theme (existing or newly created), NULL on
|
||||
error
|
||||
|
||||
C example:
|
||||
|
||||
[source,c]
|
||||
----
|
||||
struct t_hashtable *overrides = weechat_hashtable_new (
|
||||
8,
|
||||
WEECHAT_HASHTABLE_STRING,
|
||||
WEECHAT_HASHTABLE_STRING,
|
||||
NULL, NULL);
|
||||
if (overrides)
|
||||
{
|
||||
weechat_hashtable_set (overrides, "irc.color.input_nick", "cyan");
|
||||
weechat_hashtable_set (overrides, "irc.color.topic_old", "darkgray");
|
||||
weechat_theme_register ("light", overrides);
|
||||
weechat_hashtable_free (overrides);
|
||||
}
|
||||
----
|
||||
|
||||
Script (Python):
|
||||
|
||||
[source,python]
|
||||
----
|
||||
# prototype
|
||||
def theme_register(name: str, overrides: Dict[str, str]) -> str: ...
|
||||
|
||||
# example
|
||||
weechat.theme_register("light", {
|
||||
"irc.color.input_nick": "cyan",
|
||||
"irc.color.topic_old": "darkgray",
|
||||
})
|
||||
----
|
||||
|
||||
[NOTE]
|
||||
Only options that have the _themable_ flag will be set by `/theme apply`.
|
||||
All `*.color.*` options are themable by default; string options that
|
||||
hold `+${color:...}+` references are explicitly opted in. Entries
|
||||
targeting non-themable options are silently skipped at apply-time with
|
||||
a warning logged to the _core_ buffer.
|
||||
|
||||
[NOTE]
|
||||
When called from a script, the contribution is automatically dropped
|
||||
when the script unloads (no manual cleanup is needed).
|
||||
|
||||
[[key_bindings]]
|
||||
=== Тастерске пречице
|
||||
|
||||
|
||||
@@ -1030,12 +1030,19 @@ GET /api/buffers/{id_бафера}/nicks
|
||||
GET /api/buffers/{име_бафера}/nicks
|
||||
----
|
||||
|
||||
Параметри упита:
|
||||
Параметри путање:
|
||||
|
||||
* `id_бафера` (цео број, **обавезно**): јединствени идентификатор бафера (не треба
|
||||
да се помеша са бројем бафера, то је нешто друго)
|
||||
* `име_бафера` (стринг, **обавезно**): име бафера
|
||||
|
||||
Параметри упита:
|
||||
|
||||
* `colors` (стринг, није обавезно, подразумевано: `ansi`): како се враћају стрингови са кодовима боје:
|
||||
** `ansi`: враћају се ANSI кодови боје
|
||||
** `weechat`: враћају се WeeChat интерни кодови боје
|
||||
** `strip`: уклањају се боје
|
||||
|
||||
Пример захтева: врати надимке бафера:
|
||||
|
||||
[source,shell]
|
||||
@@ -1181,6 +1188,51 @@ HTTP/1.1 200 OK
|
||||
]
|
||||
----
|
||||
|
||||
[[resource_scripts]]
|
||||
=== Скрипте
|
||||
|
||||
Враћа учитане скрипте (на свим језицима).
|
||||
|
||||
Крајња тачка:
|
||||
|
||||
----
|
||||
GET /api/scripts
|
||||
----
|
||||
|
||||
Пример захтева:
|
||||
|
||||
[source,shell]
|
||||
----
|
||||
curl -L -u 'plain:secret_password' 'https://localhost:9000/api/scripts'
|
||||
----
|
||||
|
||||
Одговор:
|
||||
|
||||
[source,http]
|
||||
----
|
||||
HTTP/1.1 200 OK
|
||||
----
|
||||
|
||||
[source,json]
|
||||
----
|
||||
[
|
||||
{
|
||||
"name": "highmon.pl",
|
||||
"version": "2.7",
|
||||
"description": "Highlight Monitor",
|
||||
"author": "KenjiE20",
|
||||
"license": "GPL3"
|
||||
},
|
||||
{
|
||||
"name": "go.py",
|
||||
"version": "3.1.1",
|
||||
"description": "Quick jump to buffers",
|
||||
"author": "Sébastien Helleu <flashcode@flashtux.org>",
|
||||
"license": "GPL3"
|
||||
}
|
||||
]
|
||||
----
|
||||
|
||||
[[resource_input]]
|
||||
=== Input
|
||||
|
||||
@@ -1510,6 +1562,7 @@ GUID `258EAFA5-E914-47DA-95CA-C5AB0DC85B11` (SHA-1 се кодира у base64).
|
||||
* `nick_group` (објекат)
|
||||
* `nick` (објекат)
|
||||
* `hotlist` (објекат)
|
||||
* `scripts` (низ)
|
||||
* `ping` (објекат)
|
||||
|
||||
[TIP]
|
||||
|
||||
@@ -2093,6 +2093,152 @@ include::{autogendir}/autogen_user_options.sr.adoc[tag=fset_options]
|
||||
/set weechat.color.status_time *99999
|
||||
----
|
||||
|
||||
// TRANSLATION MISSING
|
||||
[[themes]]
|
||||
=== Теме
|
||||
|
||||
A theme is a named bundle of option overrides that can be applied with
|
||||
the <<command_weechat_theme,/theme>> command. WeeChat ships a built-in
|
||||
`"light"` theme tuned for light-background terminals and supports
|
||||
user-defined themes loaded transiently from files.
|
||||
|
||||
[[themes_themable_options]]
|
||||
==== Themable options
|
||||
|
||||
Themes can only set options marked as _themable_. All `*.color.*`
|
||||
options are themable by default; a few string options that hold format
|
||||
expressions with `+${color:...}+` references (such as
|
||||
`+weechat.color.chat_nick_colors+`, `+weechat.look.prefix_error+` or the
|
||||
`+buflist.format.*+` formats) are explicitly opted in.
|
||||
|
||||
You can list the full themable surface area from the
|
||||
<<command_fset_fset,/fset>> buffer with the `+t:themable+` filter.
|
||||
|
||||
[[themes_apply]]
|
||||
==== Applying a theme
|
||||
|
||||
To switch to the built-in light-background theme:
|
||||
|
||||
----
|
||||
/theme apply light
|
||||
----
|
||||
|
||||
The current state of every themable option is saved beforehand to a
|
||||
backup theme file named like `+backup-YYYYMMDD-HHMMSS-uuuuuu+` in
|
||||
directory `+themes+` inside the WeeChat configuration directory, so the
|
||||
previous look can be restored at any time with:
|
||||
|
||||
----
|
||||
/theme apply backup-YYYYMMDD-HHMMSS-uuuuuu
|
||||
----
|
||||
|
||||
Backup creation can be disabled (not recommended):
|
||||
|
||||
----
|
||||
/set weechat.look.theme_backup off
|
||||
----
|
||||
|
||||
If backup is enabled and the backup file cannot be written, the apply
|
||||
is aborted before any option is changed.
|
||||
|
||||
The name of the last applied theme is stored in
|
||||
`+weechat.look.theme+` (informational only; not re-applied at startup).
|
||||
|
||||
[[themes_reset]]
|
||||
==== Resetting to defaults
|
||||
|
||||
To restore the look shipped with WeeChat, reset every themable option
|
||||
to its default value:
|
||||
|
||||
----
|
||||
/theme reset
|
||||
----
|
||||
|
||||
A backup is written first (same gate as `+/theme apply+`); on backup
|
||||
failure the reset is aborted before any option is changed.
|
||||
`+weechat.look.theme+` is cleared too.
|
||||
|
||||
[[themes_save_delete]]
|
||||
==== Saving and deleting user themes
|
||||
|
||||
Save the current themable options as a new user theme file:
|
||||
|
||||
----
|
||||
/theme save mytheme
|
||||
----
|
||||
|
||||
Every themable option is written, so the file is self-contained and
|
||||
applies the exact same look on any WeeChat, regardless of its current
|
||||
configuration.
|
||||
|
||||
Reserved names (built-in theme names like `+light+` and any name
|
||||
starting with `+backup-+`) are refused. Files live at
|
||||
`+${weechat_config_dir}/themes/<name>.theme+`.
|
||||
|
||||
Rename a user theme (typical use: keep a useful automatic backup
|
||||
under a meaningful name):
|
||||
|
||||
----
|
||||
/theme rename backup-20260525-094210-123456 mybackup
|
||||
----
|
||||
|
||||
Built-in themes have no file and cannot be renamed; the target name
|
||||
cannot match a built-in name or start with `+backup-+`, and the
|
||||
target file must not already exist. The `+[info]+` `+name+` field
|
||||
inside the file is rewritten so `/theme info` reports the new name
|
||||
consistently.
|
||||
|
||||
Delete a user theme:
|
||||
|
||||
----
|
||||
/theme del mytheme
|
||||
----
|
||||
|
||||
This removes the file on disk; built-in themes cannot be deleted.
|
||||
|
||||
[[themes_file_format]]
|
||||
==== Theme file format
|
||||
|
||||
A theme file is INI-like with two sections:
|
||||
|
||||
----
|
||||
[info]
|
||||
name = "solarized_light"
|
||||
description = "Light-background theme inspired by Solarized"
|
||||
date = "2026-05-25 09:42:10"
|
||||
weechat = "4.10.0-dev"
|
||||
|
||||
[options]
|
||||
weechat.color.chat = "darkgray"
|
||||
weechat.color.separator = "blue"
|
||||
irc.color.input_nick = "magenta"
|
||||
buflist.format.number = "${color:28}${number}${if:${number_displayed}?.: }"
|
||||
----
|
||||
|
||||
`+[info]+` is informational metadata shown by `/theme info`. `+[options]+`
|
||||
holds the actual overrides; keys are the full option names that would
|
||||
appear in `/set`. String values can be enclosed in double or single
|
||||
quotes; quotes are stripped at parse time. Non-themable options listed
|
||||
in a theme file are refused at apply time and logged to the core
|
||||
buffer (so a `.theme` file imported from an untrusted source cannot
|
||||
overwrite passwords, autoload lists, or startup commands).
|
||||
|
||||
User theme files are never cached: on every `/theme apply <name>` the
|
||||
file is parsed, applied, and freed.
|
||||
|
||||
[[themes_resolution]]
|
||||
==== Resolution order
|
||||
|
||||
When `+/theme apply <name>+` is run:
|
||||
|
||||
* If `+${weechat_config_dir}/themes/<name>.theme+` exists, the file
|
||||
is parsed and used (it shadows any built-in with the same name).
|
||||
* Otherwise the built-in theme registry is consulted; built-ins are
|
||||
registered programmatically by core, plugins and scripts (see the
|
||||
plugin and scripting documentation for `+weechat_theme_register+`).
|
||||
|
||||
If neither source provides the name, the apply is refused.
|
||||
|
||||
[[charset]]
|
||||
=== Charset
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-05-30 14:00+0200\n"
|
||||
"POT-Creation-Date: 2026-07-04 22:01+0200\n"
|
||||
"PO-Revision-Date: 2026-05-30 14:01+0200\n"
|
||||
"Last-Translator: Ondřej Súkup <mimi.vx@gmail.com>\n"
|
||||
"Language-Team: Czech <weechat-dev@nongnu.org>\n"
|
||||
@@ -1005,6 +1005,55 @@ msgstr "Volba vytvořena: "
|
||||
msgid "%sFunction \"%s\" is not available on this system"
|
||||
msgstr "%s: upozornění: slovník \"%s\" není dostupný ve vašem systému"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "no variable"
|
||||
msgid "No theme available"
|
||||
msgstr "není proměnná"
|
||||
|
||||
msgid "Themes:"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid " %s %s%s%s (file)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sKey \"%s\" not found"
|
||||
msgid "%sTheme \"%s\" not found"
|
||||
msgstr "%sKlávesa \"%s\" nenalezena"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Option \"%s%s%s\":"
|
||||
msgid "Theme \"%s%s%s\":"
|
||||
msgstr "Volba \"%s%s%s\":"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid " file: %s"
|
||||
msgid " source: %s"
|
||||
msgstr " soubor: %s"
|
||||
|
||||
msgid " source: built-in (in-memory)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "description"
|
||||
msgid " description: %s"
|
||||
msgstr "popis"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid " file: %s"
|
||||
msgid " date: %s"
|
||||
msgstr " soubor: %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "WeeChat version"
|
||||
msgid " WeeChat version: %s"
|
||||
msgstr "verze WeeChat"
|
||||
|
||||
#, c-format
|
||||
msgid " overrides: %d"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sFailed to unset option \"%s\""
|
||||
msgstr "%sSelhalo odnastavení volby \"%s\""
|
||||
@@ -3658,6 +3707,78 @@ msgstr ""
|
||||
msgid "number: number of processes to clean"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "list of bar items"
|
||||
msgid "manage color themes"
|
||||
msgstr "seznam položek polí"
|
||||
|
||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||
msgid ""
|
||||
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||
"<new> || del <name> || info <name>"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "list of filters"
|
||||
msgid ""
|
||||
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||
"marked with \"->\""
|
||||
msgstr "seznam filtrů"
|
||||
|
||||
msgid "raw[-backups]: display backup theme files"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||
"shadows any built-in theme of the same name"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[reset]: reset every themable option to its default value (restores the "
|
||||
"original look shipped with WeeChat)"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||
"the name must not match a built-in theme or start with \"backup-\""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "names of filters"
|
||||
msgid "raw[rename]: rename a user theme file"
|
||||
msgstr "jména filtrů"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "get/set channel topic"
|
||||
msgid "raw[del]: delete a user theme file"
|
||||
msgstr "získat/nastavit téma kanálu"
|
||||
|
||||
msgid ""
|
||||
"raw[info]: display details on a theme (name, description, creation date, "
|
||||
"WeeChat version, number of option overrides)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "name: name of a theme"
|
||||
msgstr "zapni podporu myši"
|
||||
|
||||
msgid ""
|
||||
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||
"directory \"themes\" inside the WeeChat configuration directory."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"By default, `/theme apply` command creates a backup of current themable "
|
||||
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||
"backup-<timestamp>`. This is controlled by the option "
|
||||
"weechat.look.theme_backup."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "values for a configuration option"
|
||||
msgid "toggle value of a config option"
|
||||
@@ -4246,6 +4367,15 @@ msgstr ""
|
||||
msgid "names of layouts"
|
||||
msgstr "jména rozvržení"
|
||||
|
||||
msgid "names of themes (built-ins + user files + backups)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of user theme files (without built-ins and backups)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of secured data (file sec.conf, section data)"
|
||||
msgstr "jména chráněných dat (soubor sec.conf, sekce data)"
|
||||
|
||||
@@ -5216,6 +5346,20 @@ msgstr ""
|
||||
msgid "number of spaces used to display tabs in messages"
|
||||
msgstr "prefix pro zprávy akcí"
|
||||
|
||||
msgid ""
|
||||
"name of the last theme applied with command /theme (set automatically, do "
|
||||
"not change manually); informational only, the theme is not re-applied at "
|
||||
"startup"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"create a backup theme file with the current themable options before applying "
|
||||
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||
"is aborted (no option is changed); the backup file is written to directory "
|
||||
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||
"with the command: `/theme apply backup-<timestamp>`"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"time format for dates converted to strings and displayed in messages (see "
|
||||
@@ -6187,6 +6331,111 @@ msgstr "%s: chyba: slovník \"%s\" není ve vašem systému dostupný"
|
||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||
msgstr "Využití paměti (viz \"man mallinfo\" pro nápovědu):"
|
||||
|
||||
msgid "WeeChat default theme for light-background terminals"
|
||||
msgstr ""
|
||||
|
||||
msgid "Automatic backup"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sKey \"%s\" not found"
|
||||
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||
msgstr "%sKlávesa \"%s\" nenalezena"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: script \"%s\" is not installed"
|
||||
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||
msgstr "%s: skript \"%s\" není nainstalován"
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: malformed section header"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sWarning: %s, line %d: unknown section identifier (\"%s\")"
|
||||
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||
msgstr "%sUpozornění: %s, řádek %d: neznámý identifikátor sekce (\"%s\")"
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: missing '=' separator"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||
msgstr "%sUpozornění: %s, řádek %d: neznámý identifikátor sekce (\"%s\")"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to parse file \"%s\""
|
||||
msgid "%sFailed to parse theme file \"%s\""
|
||||
msgstr "%s%s: nemůžu parsovat soubor \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sUnable to create theme backup; aborting apply (disable option "
|
||||
"weechat.look.theme_backup to force)"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sUnable to create theme backup; aborting reset (disable option "
|
||||
"weechat.look.theme_backup to force)"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sName \"%s\" is reserved for automatic backups"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to parse file \"%s\""
|
||||
msgid "%sFailed to save theme \"%s\""
|
||||
msgstr "%s%s: nemůžu parsovat soubor \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Option \"%s%s%s\":"
|
||||
msgid "Theme saved to: %s"
|
||||
msgstr "Volba \"%s%s%s\":"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sCannot rename built-in theme \"%s\""
|
||||
msgstr "%sChyba: nemohu vytvořit soubor \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid "%sNew name is the same as old name"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sTheme \"%s\" already exists"
|
||||
msgstr "%s%s: vzorec přesměrování \"%s\" již existuje"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||
msgstr "%sChyba: nemohu přejmenovat filter \"%s\" na \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "Theme \"%s\" renamed to \"%s\""
|
||||
msgstr "Filtr \"%s\" přejmenován na \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sCannot delete built-in theme \"%s\""
|
||||
msgstr "%sChyba: nemohu vytvořit soubor \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to parse file \"%s\""
|
||||
msgid "%sFailed to delete theme \"%s\""
|
||||
msgstr "%s%s: nemůžu parsovat soubor \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid "Theme deleted: %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||
msgstr "%sChyba aktualizace WeeChat se souborem \"%s\":"
|
||||
@@ -6350,37 +6599,36 @@ msgstr "Konec příkazu '%s', vypršel časový limit (%.1fs)"
|
||||
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||
msgstr "1 pokud se WeeChat aktualizuje (příkaz `/upgrade`)"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Welcome to WeeChat!"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Welcome to WeeChat!\n"
|
||||
"\n"
|
||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||
"main WeeChat concepts.\n"
|
||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||
"\n"
|
||||
"main WeeChat concepts."
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "All WeeChat docs are available at: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Moreover, there is inline help with /help on all commands and options (use "
|
||||
"Tab key to complete the name).\n"
|
||||
"The command /fset can help to customize WeeChat.\n"
|
||||
"\n"
|
||||
"Tab key to complete the name)."
|
||||
msgstr ""
|
||||
|
||||
msgid "The command /fset can help to customize WeeChat."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"You can add and connect to an IRC server with /server and /connect commands "
|
||||
"(see /help server)."
|
||||
msgstr ""
|
||||
"Vítejte v WeeChatu!\n"
|
||||
"\n"
|
||||
"Pokud objevujete WeeChat je doporučeno si prečíst alespoň \"quickstart\" "
|
||||
"průvodce, a pokud máte trochu času tak uživatelskou příručku, oboje vám "
|
||||
"vyvětlí hlavní koncepty WeeChatu.\n"
|
||||
"Veškerá dokumentace WeeChatu je dostupná na adrese: https://weechat.org/"
|
||||
"doc/\n"
|
||||
"\n"
|
||||
"Navíc je zde dostupná integrovaná nápověda /help fungující na všech "
|
||||
"příkazech a nastaveních ( použijte Tab klávesu pro doplňování názvů).\n"
|
||||
"Příkaz /iset (script iset.pl) může pomoci upravit WeeChat\" /script install "
|
||||
"iset.pl\n"
|
||||
"\n"
|
||||
"Můžete přidat IRC server a připojit se k němu pomocí príkazů /server a /"
|
||||
"connect ( podívejte se na /help server)."
|
||||
|
||||
msgid ""
|
||||
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||
"switch back to the default dark theme."
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||
#, c-format
|
||||
@@ -7895,7 +8143,8 @@ msgstr "Neznámý konfigurační soubor \"%s\""
|
||||
|
||||
msgid ""
|
||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||
"string/color/enum)"
|
||||
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||
"options that can be used in themes, regardless of type"
|
||||
msgstr ""
|
||||
|
||||
msgid "> `d`: show only changed options"
|
||||
@@ -16068,6 +16317,10 @@ msgstr "načteny %s skripty:"
|
||||
msgid "script name with extension"
|
||||
msgstr "seznam skriptů"
|
||||
|
||||
#, fuzzy
|
||||
msgid "comma-separated list of plugin:extension with supported languages"
|
||||
msgstr "čárkami oddělený seznam slovníků, které použít pro tento buffer"
|
||||
|
||||
#, fuzzy
|
||||
msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
|
||||
msgstr "jméno serveru (zástupný znak \"*\" je povolen) (volitelné)"
|
||||
@@ -16686,7 +16939,9 @@ msgstr ""
|
||||
msgid "> type `command_run`: command(s) (required)"
|
||||
msgstr ""
|
||||
|
||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
||||
msgid ""
|
||||
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||
"calls"
|
||||
msgstr ""
|
||||
|
||||
msgid "> type `config`: name(s) of option (required)"
|
||||
@@ -17527,3 +17782,35 @@ msgid ""
|
||||
msgstr ""
|
||||
"%s%s: nelze akceptovat obnovení souboru \"%s\" (port: %d, počáteční pozice: "
|
||||
"%llu): xfer nenalezen nebo není připraven pro přenos"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid ""
|
||||
#~ "Welcome to WeeChat!\n"
|
||||
#~ "\n"
|
||||
#~ "If you are discovering WeeChat, it is recommended to read at least the "
|
||||
#~ "quickstart guide, and the user's guide if you have some time; they "
|
||||
#~ "explain main WeeChat concepts.\n"
|
||||
#~ "All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||
#~ "\n"
|
||||
#~ "Moreover, there is inline help with /help on all commands and options "
|
||||
#~ "(use Tab key to complete the name).\n"
|
||||
#~ "The command /fset can help to customize WeeChat.\n"
|
||||
#~ "\n"
|
||||
#~ "You can add and connect to an IRC server with /server and /connect "
|
||||
#~ "commands (see /help server)."
|
||||
#~ msgstr ""
|
||||
#~ "Vítejte v WeeChatu!\n"
|
||||
#~ "\n"
|
||||
#~ "Pokud objevujete WeeChat je doporučeno si prečíst alespoň \"quickstart\" "
|
||||
#~ "průvodce, a pokud máte trochu času tak uživatelskou příručku, oboje vám "
|
||||
#~ "vyvětlí hlavní koncepty WeeChatu.\n"
|
||||
#~ "Veškerá dokumentace WeeChatu je dostupná na adrese: https://weechat.org/"
|
||||
#~ "doc/\n"
|
||||
#~ "\n"
|
||||
#~ "Navíc je zde dostupná integrovaná nápověda /help fungující na všech "
|
||||
#~ "příkazech a nastaveních ( použijte Tab klávesu pro doplňování názvů).\n"
|
||||
#~ "Příkaz /iset (script iset.pl) může pomoci upravit WeeChat\" /script "
|
||||
#~ "install iset.pl\n"
|
||||
#~ "\n"
|
||||
#~ "Můžete přidat IRC server a připojit se k němu pomocí príkazů /server a /"
|
||||
#~ "connect ( podívejte se na /help server)."
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
#
|
||||
# SPDX-FileCopyrightText: 2005 Rudolf Polzer <weechat-te@durchnull.de>
|
||||
# SPDX-FileCopyrightText: 2006-2007 Thomas Schuetz <i18n@internet-villa.de>
|
||||
# SPDX-FileCopyrightText: 2009-2019, 2023, 2024, 2025 Nils Görs <weechatter@arcor.de>
|
||||
# SPDX-FileCopyrightText: 2009-2026 Nils Görs <weechatter@arcor.de>
|
||||
# SPDX-FileCopyrightText: 2018 w8rabbit <w8rabbit@mail.i2p>
|
||||
# SPDX-FileCopyrightText: 2015 Sven Knurr <zeug@tuxproject.de>
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
@@ -21,18 +22,14 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
#
|
||||
# w8rabbit <w8rabbit@mail.i2p>, 2018.
|
||||
# Nils Görs <>, 2022-2026.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-05-30 14:00+0200\n"
|
||||
"PO-Revision-Date: 2026-05-30 14:01+0200\n"
|
||||
"POT-Creation-Date: 2026-07-04 22:01+0200\n"
|
||||
"PO-Revision-Date: 2026-06-28 08:28+0200\n"
|
||||
"Last-Translator: Nils Görs <weechatter@arcor.de>\n"
|
||||
"Language-Team: German - Germany <weechat-dev@nongnu.org>\n"
|
||||
"Language-Team: German <weechatter@arcor.de>\n"
|
||||
"Language: de\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -1006,6 +1003,55 @@ msgstr "Einstellung erstellt: "
|
||||
msgid "%sFunction \"%s\" is not available on this system"
|
||||
msgstr "%sFunktion \"%s\" ist auf dem Rechner nicht verfügbar"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "not available"
|
||||
msgid "No theme available"
|
||||
msgstr "nicht verfügbar"
|
||||
|
||||
msgid "Themes:"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid " %s %s%s%s (file)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sKey \"%s\" not found"
|
||||
msgid "%sTheme \"%s\" not found"
|
||||
msgstr "%sTastenbelegung \"%s\" nicht gefunden"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Option \"%s%s%s\":"
|
||||
msgid "Theme \"%s%s%s\":"
|
||||
msgstr "Einstellung \"%s%s%s\":"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid " file: %s"
|
||||
msgid " source: %s"
|
||||
msgstr " Datei: %s"
|
||||
|
||||
msgid " source: built-in (in-memory)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "description"
|
||||
msgid " description: %s"
|
||||
msgstr "Beschreibung"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid " file: %s"
|
||||
msgid " date: %s"
|
||||
msgstr " Datei: %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "WeeChat version"
|
||||
msgid " WeeChat version: %s"
|
||||
msgstr "WeeChat-Version"
|
||||
|
||||
#, c-format
|
||||
msgid " overrides: %d"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sFailed to unset option \"%s\""
|
||||
msgstr "%sEinstellung \"%s\" konnte nicht zurück gesetzt werden"
|
||||
@@ -4053,6 +4099,86 @@ msgstr ""
|
||||
msgid "number: number of processes to clean"
|
||||
msgstr "Anzahl: Anzahl der zu bereinigenden Prozesse"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "manage custom bar items"
|
||||
msgid "manage color themes"
|
||||
msgstr "Verwalten von benutzerdefinierten Bar-Items"
|
||||
|
||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||
msgid ""
|
||||
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||
"<new> || del <name> || info <name>"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "raw[list]: list remote relay servers (without argument, this list is "
|
||||
#| "displayed)"
|
||||
msgid ""
|
||||
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||
"marked with \"->\""
|
||||
msgstr ""
|
||||
"raw[list]: listet relay-Server auf (ohne Angabe von Argumente wird diese "
|
||||
"Liste standardmäßig ausgegeben)"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "raw[tags]: display tags for lines"
|
||||
msgid "raw[-backups]: display backup theme files"
|
||||
msgstr ""
|
||||
"raw[tags]: schaltet für jede Zeile die dazugehörigen Schlagwörter an / aus"
|
||||
|
||||
msgid ""
|
||||
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||
"shadows any built-in theme of the same name"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[reset]: reset every themable option to its default value (restores the "
|
||||
"original look shipped with WeeChat)"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||
"the name must not match a built-in theme or start with \"backup-\""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "raw[rename]: rename a filter"
|
||||
msgid "raw[rename]: rename a user theme file"
|
||||
msgstr "raw[rename]: benennt einen Filter um"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "raw[del]: delete a server"
|
||||
msgid "raw[del]: delete a user theme file"
|
||||
msgstr "raw[del]: entfernt einen Server"
|
||||
|
||||
msgid ""
|
||||
"raw[info]: display details on a theme (name, description, creation date, "
|
||||
"WeeChat version, number of option overrides)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "name: name of trigger"
|
||||
msgid "name: name of a theme"
|
||||
msgstr "name: Name des Triggers"
|
||||
|
||||
msgid ""
|
||||
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||
"directory \"themes\" inside the WeeChat configuration directory."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"By default, `/theme apply` command creates a backup of current themable "
|
||||
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||
"backup-<timestamp>`. This is controlled by the option "
|
||||
"weechat.look.theme_backup."
|
||||
msgstr ""
|
||||
|
||||
msgid "toggle value of a config option"
|
||||
msgstr "den Wert einer Konfigurationsoption umschalten"
|
||||
|
||||
@@ -4710,6 +4836,15 @@ msgstr ""
|
||||
msgid "names of layouts"
|
||||
msgstr "Namen der Layouts"
|
||||
|
||||
msgid "names of themes (built-ins + user files + backups)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of user theme files (without built-ins and backups)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of secured data (file sec.conf, section data)"
|
||||
msgstr "Namen der geschützten Daten (Datei sec.conf, section data)"
|
||||
|
||||
@@ -5922,6 +6057,20 @@ msgstr ""
|
||||
msgid "number of spaces used to display tabs in messages"
|
||||
msgstr "Anzahl an Leerzeichen um Tabulatoren in Nachrichten darzustellen"
|
||||
|
||||
msgid ""
|
||||
"name of the last theme applied with command /theme (set automatically, do "
|
||||
"not change manually); informational only, the theme is not re-applied at "
|
||||
"startup"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"create a backup theme file with the current themable options before applying "
|
||||
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||
"is aborted (no option is changed); the backup file is written to directory "
|
||||
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||
"with the command: `/theme apply backup-<timestamp>`"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"time format for dates converted to strings and displayed in messages (see "
|
||||
"man strftime for date/time specifiers)"
|
||||
@@ -7020,6 +7169,122 @@ msgstr "Die Systemfunktion „%s“ ist nicht verfügbar"
|
||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||
msgstr "Ressourcennutzung (siehe „man getrusage“ für Hilfe):"
|
||||
|
||||
msgid "WeeChat default theme for light-background terminals"
|
||||
msgstr ""
|
||||
|
||||
msgid "Automatic backup"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sKey \"%s\" not found"
|
||||
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||
msgstr "%sTastenbelegung \"%s\" nicht gefunden"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: script \"%s\" is not installed"
|
||||
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||
msgstr "%s: Skript \"%s\" ist nicht installiert"
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: malformed section header"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sWarning: %s, line %d: ignoring unknown section identifier (\"%s\")"
|
||||
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||
msgstr "%sWarnung: %s, Zeile %d: unbekannte Sektion wird ignoriert (\"%s\")"
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: missing '=' separator"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid ""
|
||||
#| "%sWarning: %s, line %d: ignoring unknown option for section \"%s\": %s"
|
||||
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||
msgstr ""
|
||||
"%sWarnung: %s, Zeile %d: ignoriert unbekannte Einstellung für Sektion "
|
||||
"\"%s\": %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to parse file \"%s\""
|
||||
msgid "%sFailed to parse theme file \"%s\""
|
||||
msgstr "%s%s: Datei \"%s\" Analyse nicht möglich"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sUnable to create theme backup; aborting apply (disable option "
|
||||
"weechat.look.theme_backup to force)"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sUnable to create theme backup; aborting reset (disable option "
|
||||
"weechat.look.theme_backup to force)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sBuffer name \"%s\" is reserved for WeeChat"
|
||||
msgid "%sName \"%s\" is reserved for automatic backups"
|
||||
msgstr "%sDer Buffer-Name \"%s\" ist für WeeChat reserviert"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sBuffer name \"%s\" is reserved for WeeChat"
|
||||
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||
msgstr "%sDer Buffer-Name \"%s\" ist für WeeChat reserviert"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to parse file \"%s\""
|
||||
msgid "%sFailed to save theme \"%s\""
|
||||
msgstr "%s%s: Datei \"%s\" Analyse nicht möglich"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Option \"%s%s%s\":"
|
||||
msgid "Theme saved to: %s"
|
||||
msgstr "Einstellung \"%s%s%s\":"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sCannot create file \"%s\""
|
||||
msgid "%sCannot rename built-in theme \"%s\""
|
||||
msgstr "%sDie Datei \"%s\" kann nicht erstellt werden"
|
||||
|
||||
#, c-format
|
||||
msgid "%sNew name is the same as old name"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sBar \"%s\" already exists"
|
||||
msgid "%sTheme \"%s\" already exists"
|
||||
msgstr "%sBar \"%s\" existiert bereits"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sUnable to rename filter \"%s\" to \"%s\""
|
||||
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||
msgstr "%sUmbenennung des Filters von \"%s\" in \"%s\" nicht möglich"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Trigger \"%s\" renamed to \"%s\""
|
||||
msgid "Theme \"%s\" renamed to \"%s\""
|
||||
msgstr "Trigger \"%s\" wurde umbenannt. Der neue Name lautet \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sCannot create file \"%s\""
|
||||
msgid "%sCannot delete built-in theme \"%s\""
|
||||
msgstr "%sDie Datei \"%s\" kann nicht erstellt werden"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to parse file \"%s\""
|
||||
msgid "%sFailed to delete theme \"%s\""
|
||||
msgstr "%s%s: Datei \"%s\" Analyse nicht möglich"
|
||||
|
||||
#, c-format
|
||||
msgid "Theme deleted: %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||
msgstr ""
|
||||
@@ -7182,37 +7447,36 @@ msgstr "Ende der URL-Übertragung '%s', Übertragung gestoppt"
|
||||
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||
msgstr "WeeChat läuft im Hintergrundmodus (ctrl-c zum Beenden)."
|
||||
|
||||
msgid "Welcome to WeeChat!"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Welcome to WeeChat!\n"
|
||||
"\n"
|
||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||
"main WeeChat concepts.\n"
|
||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||
"\n"
|
||||
"main WeeChat concepts."
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "All WeeChat docs are available at: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Moreover, there is inline help with /help on all commands and options (use "
|
||||
"Tab key to complete the name).\n"
|
||||
"The command /fset can help to customize WeeChat.\n"
|
||||
"\n"
|
||||
"Tab key to complete the name)."
|
||||
msgstr ""
|
||||
|
||||
msgid "The command /fset can help to customize WeeChat."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"You can add and connect to an IRC server with /server and /connect commands "
|
||||
"(see /help server)."
|
||||
msgstr ""
|
||||
"Willkommen zu WeeChat!\n"
|
||||
"\n"
|
||||
"Wenn Du WeeChat nutzen möchtest dann solltest Du zumindest einen Blick in "
|
||||
"die Quickstart-Anleitung werfen. Wir empfehlen aber um den vollen "
|
||||
"Funktionsumfang und das Konzept hinter WeeChat kennen zu lernen, die "
|
||||
"Benutzeranleitung zu lesen.\n"
|
||||
"Die vollständige Dokumentation findet man unter: https://weechat.org/doc/\n"
|
||||
"\n"
|
||||
"Darüber hinaus ist in WeeChat eine interne Hilfe integriert die man mit /"
|
||||
"help auf alle Befehle und Optionen anwenden kann (mittels der TAB-Taste kann "
|
||||
"eine Namensvervollständigung durchgeführt werden).\n"
|
||||
"Mit dem Befehl /fset kann WeeChat sehr einfach und übersichtlich den eigenen "
|
||||
"Bedürfnissen angepasst werden.\n"
|
||||
"\n"
|
||||
"Um einen IRC Server zu erstellen und sich mit selbigem zu Verbinden müssen "
|
||||
"die Befehle /server und /connect verwendet werden (siehe /help server)."
|
||||
|
||||
msgid ""
|
||||
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||
"switch back to the default dark theme."
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||
#, c-format
|
||||
@@ -9039,9 +9303,14 @@ msgstr "> `xxx`: zeigt nur Optionen mit \"xxx\" im Namen"
|
||||
msgid "> `f:xxx`: show only configuration file \"xxx\""
|
||||
msgstr "> `f:xxx`: zeigt nur Konfigurationsdatei \"xxx\" an"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/"
|
||||
#| "integer/string/color/enum)"
|
||||
msgid ""
|
||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||
"string/color/enum)"
|
||||
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||
"options that can be used in themes, regardless of type"
|
||||
msgstr ""
|
||||
"> `t:xxx`: zeigt nur Optionen des entsprechenden Typs, \"xxx\" (bool/int/str/"
|
||||
"col/enum oder boolean/Ganzzahl/Zeichenkette/Farbe/Aufzählung)"
|
||||
@@ -17510,6 +17779,11 @@ msgstr "1 falls Skript geladen wurde"
|
||||
msgid "script name with extension"
|
||||
msgstr "Skriptname mit Erweiterung"
|
||||
|
||||
msgid "comma-separated list of plugin:extension with supported languages"
|
||||
msgstr ""
|
||||
"durch Kommata getrennte Liste von Erweiterungen: Endung mit unterstützen "
|
||||
"Sprachen"
|
||||
|
||||
msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
|
||||
msgstr ""
|
||||
"Name des Skriptes, mit Dateierweiterung (Platzhalter \"*\" kann verwendet "
|
||||
@@ -18176,10 +18450,12 @@ msgstr ""
|
||||
msgid "> type `command_run`: command(s) (required)"
|
||||
msgstr "> type `command_run`: Befehl(e) (erforderlich)"
|
||||
|
||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
||||
msgid ""
|
||||
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||
"calls"
|
||||
msgstr ""
|
||||
"> type `timer`: Intervall (erforderlich), an Sekunden anpassen, maximale "
|
||||
"Anzahl an Aufrufen"
|
||||
"> type `timer`: Intervall (erforderlich, in Millisekunden), an Sekunde "
|
||||
"anpassen, maximale Anzahl an Aufrufen"
|
||||
|
||||
msgid "> type `config`: name(s) of option (required)"
|
||||
msgstr "> type `config`: Name der Einstellung (erforderlich)"
|
||||
@@ -19100,3 +19376,37 @@ msgstr ""
|
||||
"%s%s Datei \"%s\" zum Fortsetzen der Übertragung wird nicht akzeptiert "
|
||||
"(Port: %d, Startposition: %llu): xfer nicht gefunden oder nicht bereit für "
|
||||
"Transfer"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Welcome to WeeChat!\n"
|
||||
#~ "\n"
|
||||
#~ "If you are discovering WeeChat, it is recommended to read at least the "
|
||||
#~ "quickstart guide, and the user's guide if you have some time; they "
|
||||
#~ "explain main WeeChat concepts.\n"
|
||||
#~ "All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||
#~ "\n"
|
||||
#~ "Moreover, there is inline help with /help on all commands and options "
|
||||
#~ "(use Tab key to complete the name).\n"
|
||||
#~ "The command /fset can help to customize WeeChat.\n"
|
||||
#~ "\n"
|
||||
#~ "You can add and connect to an IRC server with /server and /connect "
|
||||
#~ "commands (see /help server)."
|
||||
#~ msgstr ""
|
||||
#~ "Willkommen zu WeeChat!\n"
|
||||
#~ "\n"
|
||||
#~ "Wenn Du WeeChat nutzen möchtest dann solltest Du zumindest einen Blick in "
|
||||
#~ "die Quickstart-Anleitung werfen. Wir empfehlen aber um den vollen "
|
||||
#~ "Funktionsumfang und das Konzept hinter WeeChat kennen zu lernen, die "
|
||||
#~ "Benutzeranleitung zu lesen.\n"
|
||||
#~ "Die vollständige Dokumentation findet man unter: https://weechat.org/"
|
||||
#~ "doc/\n"
|
||||
#~ "\n"
|
||||
#~ "Darüber hinaus ist in WeeChat eine interne Hilfe integriert die man mit /"
|
||||
#~ "help auf alle Befehle und Optionen anwenden kann (mittels der TAB-Taste "
|
||||
#~ "kann eine Namensvervollständigung durchgeführt werden).\n"
|
||||
#~ "Mit dem Befehl /fset kann WeeChat sehr einfach und übersichtlich den "
|
||||
#~ "eigenen Bedürfnissen angepasst werden.\n"
|
||||
#~ "\n"
|
||||
#~ "Um einen IRC Server zu erstellen und sich mit selbigem zu Verbinden "
|
||||
#~ "müssen die Befehle /server und /connect verwendet werden (siehe /help "
|
||||
#~ "server)."
|
||||
|
||||
@@ -24,10 +24,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-05-30 14:00+0200\n"
|
||||
"PO-Revision-Date: 2026-05-30 14:01+0200\n"
|
||||
"POT-Creation-Date: 2026-07-04 22:01+0200\n"
|
||||
"PO-Revision-Date: 2026-06-28 08:46+0200\n"
|
||||
"Last-Translator: Santiago Forero <santiago@forero.xyz>\n"
|
||||
"Language-Team: Spanish - Spain <weechat-dev@nongnu.org>\n"
|
||||
"Language-Team: Spanish <weechat-dev@nongnu.org>\n"
|
||||
"Language: es\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -1034,6 +1034,54 @@ msgstr "Opción creada: "
|
||||
msgid "%sFunction \"%s\" is not available on this system"
|
||||
msgstr "%s: atención: diccionario \"%s\" no está disponible en su sistema"
|
||||
|
||||
#, fuzzy
|
||||
msgid "No theme available"
|
||||
msgstr "Variables"
|
||||
|
||||
msgid "Themes:"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid " %s %s%s%s (file)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sKey \"%s\" not found"
|
||||
msgid "%sTheme \"%s\" not found"
|
||||
msgstr "%sTecla \"%s\" no encontrada"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Option \"%s%s%s\":"
|
||||
msgid "Theme \"%s%s%s\":"
|
||||
msgstr "Opción \"%s%s%s\":"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid " file: %s"
|
||||
msgid " source: %s"
|
||||
msgstr " archivo: %s"
|
||||
|
||||
msgid " source: built-in (in-memory)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "description"
|
||||
msgid " description: %s"
|
||||
msgstr "descripción"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid " file: %s"
|
||||
msgid " date: %s"
|
||||
msgstr " archivo: %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "WeeChat version"
|
||||
msgid " WeeChat version: %s"
|
||||
msgstr "versión de WeeChat"
|
||||
|
||||
#, c-format
|
||||
msgid " overrides: %d"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sFailed to unset option \"%s\""
|
||||
msgstr "%sNo se pudo deshacer la opción \"%s\""
|
||||
@@ -3751,6 +3799,78 @@ msgstr ""
|
||||
msgid "number: number of processes to clean"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "list of bar items"
|
||||
msgid "manage color themes"
|
||||
msgstr "lista de elementos de barra"
|
||||
|
||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||
msgid ""
|
||||
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||
"<new> || del <name> || info <name>"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "list of filters"
|
||||
msgid ""
|
||||
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||
"marked with \"->\""
|
||||
msgstr "lista de filtros"
|
||||
|
||||
msgid "raw[-backups]: display backup theme files"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||
"shadows any built-in theme of the same name"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[reset]: reset every themable option to its default value (restores the "
|
||||
"original look shipped with WeeChat)"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||
"the name must not match a built-in theme or start with \"backup-\""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "names of filters"
|
||||
msgid "raw[rename]: rename a user theme file"
|
||||
msgstr "nombre de los filtros"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "get/set channel topic"
|
||||
msgid "raw[del]: delete a user theme file"
|
||||
msgstr "ver/establecer el tema del canal"
|
||||
|
||||
msgid ""
|
||||
"raw[info]: display details on a theme (name, description, creation date, "
|
||||
"WeeChat version, number of option overrides)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "name: name of a theme"
|
||||
msgstr "habilitar soporte para ratón"
|
||||
|
||||
msgid ""
|
||||
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||
"directory \"themes\" inside the WeeChat configuration directory."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"By default, `/theme apply` command creates a backup of current themable "
|
||||
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||
"backup-<timestamp>`. This is controlled by the option "
|
||||
"weechat.look.theme_backup."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "values for a configuration option"
|
||||
msgid "toggle value of a config option"
|
||||
@@ -4337,6 +4457,15 @@ msgstr "áreas (\"chat\" o nombre de barra) para movimiento libre del cursor"
|
||||
msgid "names of layouts"
|
||||
msgstr "nombres de temas"
|
||||
|
||||
msgid "names of themes (built-ins + user files + backups)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of user theme files (without built-ins and backups)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of secured data (file sec.conf, section data)"
|
||||
msgstr ""
|
||||
|
||||
@@ -5362,6 +5491,20 @@ msgstr ""
|
||||
msgid "number of spaces used to display tabs in messages"
|
||||
msgstr "localización para traducción de mensajes"
|
||||
|
||||
msgid ""
|
||||
"name of the last theme applied with command /theme (set automatically, do "
|
||||
"not change manually); informational only, the theme is not re-applied at "
|
||||
"startup"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"create a backup theme file with the current themable options before applying "
|
||||
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||
"is aborted (no option is changed); the backup file is written to directory "
|
||||
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||
"with the command: `/theme apply backup-<timestamp>`"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"time format for dates converted to strings and displayed in messages (see "
|
||||
@@ -6343,6 +6486,117 @@ msgstr "%s: error: diccionario \"%s\" no está disponible en tu sistema"
|
||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||
msgstr "Uso de memoria (ver en \"man mallinfo\" por ayuda):"
|
||||
|
||||
msgid "WeeChat default theme for light-background terminals"
|
||||
msgstr ""
|
||||
|
||||
msgid "Automatic backup"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sKey \"%s\" not found"
|
||||
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||
msgstr "%sTecla \"%s\" no encontrada"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: script \"%s\" is not installed"
|
||||
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||
msgstr "%s: el script \"%s\" no esta instalado"
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: malformed section header"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sWarning: %s, line %d: unknown section identifier (\"%s\")"
|
||||
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||
msgstr ""
|
||||
"%sAtención: %s, línea %d: identificador de sección desconocido (\"%s\")"
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: missing '=' separator"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sWarning: %s, line %d: unknown option for section \"%s\": %s"
|
||||
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||
msgstr ""
|
||||
"%sAtención: %s, línea %d: opción desconocida para la sección \"%s\": %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to parse file \"%s\""
|
||||
msgid "%sFailed to parse theme file \"%s\""
|
||||
msgstr "%s%s: no es posible analizar el archivo \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sUnable to create theme backup; aborting apply (disable option "
|
||||
"weechat.look.theme_backup to force)"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sUnable to create theme backup; aborting reset (disable option "
|
||||
"weechat.look.theme_backup to force)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sBuffer name \"%s\" is reserved for WeeChat"
|
||||
msgid "%sName \"%s\" is reserved for automatic backups"
|
||||
msgstr "%sEl nombre del buffer \"%s\" está reservado por WeeChat"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sBuffer name \"%s\" is reserved for WeeChat"
|
||||
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||
msgstr "%sEl nombre del buffer \"%s\" está reservado por WeeChat"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to parse file \"%s\""
|
||||
msgid "%sFailed to save theme \"%s\""
|
||||
msgstr "%s%s: no es posible analizar el archivo \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Option \"%s%s%s\":"
|
||||
msgid "Theme saved to: %s"
|
||||
msgstr "Opción \"%s%s%s\":"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sCannot rename built-in theme \"%s\""
|
||||
msgstr "%sError: no es posible crear el archivo \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid "%sNew name is the same as old name"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sTheme \"%s\" already exists"
|
||||
msgstr "%sError: el filtro \"%s\" ya existe"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sUnable to rename filter \"%s\" to \"%s\""
|
||||
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||
msgstr "%sError: no se pudo renombrar el filtro \"%s\" a \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "Theme \"%s\" renamed to \"%s\""
|
||||
msgstr "Filtro \"%s\" renombrado a \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sCannot delete built-in theme \"%s\""
|
||||
msgstr "%sError: no es posible crear el archivo \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to parse file \"%s\""
|
||||
msgid "%sFailed to delete theme \"%s\""
|
||||
msgstr "%s%s: no es posible analizar el archivo \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid "Theme deleted: %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||
msgstr "%sError al actualizar WeeChat con el archivo \"%s\":"
|
||||
@@ -6510,35 +6764,36 @@ msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||
msgstr ""
|
||||
"WeeChat se está ejecutando en modo de segundo plano (Ctrl-C para salir)."
|
||||
|
||||
msgid "Welcome to WeeChat!"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Welcome to WeeChat!\n"
|
||||
"\n"
|
||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||
"main WeeChat concepts.\n"
|
||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||
"\n"
|
||||
"main WeeChat concepts."
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "All WeeChat docs are available at: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Moreover, there is inline help with /help on all commands and options (use "
|
||||
"Tab key to complete the name).\n"
|
||||
"The command /fset can help to customize WeeChat.\n"
|
||||
"\n"
|
||||
"Tab key to complete the name)."
|
||||
msgstr ""
|
||||
|
||||
msgid "The command /fset can help to customize WeeChat."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"You can add and connect to an IRC server with /server and /connect commands "
|
||||
"(see /help server)."
|
||||
msgstr ""
|
||||
"¡Bienvenido a WeeChat!\n"
|
||||
"\n"
|
||||
"Si estás conociendo WeeChat, es recomendable que leas la guia de inicio, y "
|
||||
"la guia de usuario si tienes tiempo; en ellas se explicanlo conceptos "
|
||||
"principales de WeeChat.\n"
|
||||
"Toda la documentación de WeeChat se encuentra disponible en: https://"
|
||||
"weechat.org/doc/\n"
|
||||
"\n"
|
||||
"Adicionalmente, hay un menú de ayuda con el comando /help con todos los "
|
||||
"comandos y opciones (usa el tabulador (Tab) para completar el nombre).\n"
|
||||
"El comando /fset puede ayudar a customizar WeeChat.\n"
|
||||
"\n"
|
||||
"Puedes agregar y conectarte a un servidor IRC con los comandos /server y /"
|
||||
"connect (más información en /help server)."
|
||||
|
||||
msgid ""
|
||||
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||
"switch back to the default dark theme."
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||
#, c-format
|
||||
@@ -8054,7 +8309,8 @@ msgstr "Archivo de configuración \"%s\" desconocido"
|
||||
|
||||
msgid ""
|
||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||
"string/color/enum)"
|
||||
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||
"options that can be used in themes, regardless of type"
|
||||
msgstr ""
|
||||
|
||||
msgid "> `d`: show only changed options"
|
||||
@@ -16346,6 +16602,11 @@ msgstr "scripts en %s cargados:"
|
||||
msgid "script name with extension"
|
||||
msgstr "lista de scripts"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "comma separated list of file name extensions for plugins"
|
||||
msgid "comma-separated list of plugin:extension with supported languages"
|
||||
msgstr "lista separada por comas de extensiones de archivo para plugins"
|
||||
|
||||
#, fuzzy
|
||||
msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
|
||||
msgstr ""
|
||||
@@ -16975,7 +17236,9 @@ msgstr ""
|
||||
msgid "> type `command_run`: command(s) (required)"
|
||||
msgstr ""
|
||||
|
||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
||||
msgid ""
|
||||
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||
"calls"
|
||||
msgstr ""
|
||||
|
||||
msgid "> type `config`: name(s) of option (required)"
|
||||
@@ -17824,3 +18087,33 @@ msgid ""
|
||||
msgstr ""
|
||||
"%s%s: no es posible aceptar la continuación del archivo \"%s\" (puerto: %d, "
|
||||
"posición inicial: %llu): xfer encontrado o no está listo para transferir"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Welcome to WeeChat!\n"
|
||||
#~ "\n"
|
||||
#~ "If you are discovering WeeChat, it is recommended to read at least the "
|
||||
#~ "quickstart guide, and the user's guide if you have some time; they "
|
||||
#~ "explain main WeeChat concepts.\n"
|
||||
#~ "All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||
#~ "\n"
|
||||
#~ "Moreover, there is inline help with /help on all commands and options "
|
||||
#~ "(use Tab key to complete the name).\n"
|
||||
#~ "The command /fset can help to customize WeeChat.\n"
|
||||
#~ "\n"
|
||||
#~ "You can add and connect to an IRC server with /server and /connect "
|
||||
#~ "commands (see /help server)."
|
||||
#~ msgstr ""
|
||||
#~ "¡Bienvenido a WeeChat!\n"
|
||||
#~ "\n"
|
||||
#~ "Si estás conociendo WeeChat, es recomendable que leas la guia de inicio, "
|
||||
#~ "y la guia de usuario si tienes tiempo; en ellas se explicanlo conceptos "
|
||||
#~ "principales de WeeChat.\n"
|
||||
#~ "Toda la documentación de WeeChat se encuentra disponible en: https://"
|
||||
#~ "weechat.org/doc/\n"
|
||||
#~ "\n"
|
||||
#~ "Adicionalmente, hay un menú de ayuda con el comando /help con todos los "
|
||||
#~ "comandos y opciones (usa el tabulador (Tab) para completar el nombre).\n"
|
||||
#~ "El comando /fset puede ayudar a customizar WeeChat.\n"
|
||||
#~ "\n"
|
||||
#~ "Puedes agregar y conectarte a un servidor IRC con los comandos /server y /"
|
||||
#~ "connect (más información en /help server)."
|
||||
|
||||
@@ -23,10 +23,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-05-30 14:00+0200\n"
|
||||
"PO-Revision-Date: 2026-05-30 14:01+0200\n"
|
||||
"POT-Creation-Date: 2026-07-04 22:01+0200\n"
|
||||
"PO-Revision-Date: 2026-07-04 22:02+0200\n"
|
||||
"Last-Translator: Sébastien Helleu <flashcode@flashtux.org>\n"
|
||||
"Language-Team: French - France <weechat-dev@nongnu.org>\n"
|
||||
"Language-Team: French <flashcode@flashtux.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -989,6 +989,47 @@ msgstr "Option créée : "
|
||||
msgid "%sFunction \"%s\" is not available on this system"
|
||||
msgstr "%sLa fonction \"%s\" n'est pas disponible sur ce système"
|
||||
|
||||
msgid "No theme available"
|
||||
msgstr "Aucun thème disponible"
|
||||
|
||||
msgid "Themes:"
|
||||
msgstr "Thèmes :"
|
||||
|
||||
#, c-format
|
||||
msgid " %s %s%s%s (file)"
|
||||
msgstr " %s %s%s%s (fichier)"
|
||||
|
||||
#, c-format
|
||||
msgid "%sTheme \"%s\" not found"
|
||||
msgstr "%sThème \"%s\" non trouvé"
|
||||
|
||||
#, c-format
|
||||
msgid "Theme \"%s%s%s\":"
|
||||
msgstr "Thème \"%s%s%s\" :"
|
||||
|
||||
#, c-format
|
||||
msgid " source: %s"
|
||||
msgstr " source : %s"
|
||||
|
||||
msgid " source: built-in (in-memory)"
|
||||
msgstr " source : intégré (en mémoire)"
|
||||
|
||||
#, c-format
|
||||
msgid " description: %s"
|
||||
msgstr " description : %s"
|
||||
|
||||
#, c-format
|
||||
msgid " date: %s"
|
||||
msgstr " date : %s"
|
||||
|
||||
#, c-format
|
||||
msgid " WeeChat version: %s"
|
||||
msgstr " version de WeeChat : %s"
|
||||
|
||||
#, c-format
|
||||
msgid " overrides: %d"
|
||||
msgstr " remplace : %d"
|
||||
|
||||
#, c-format
|
||||
msgid "%sFailed to unset option \"%s\""
|
||||
msgstr "%sImpossible de supprimer/réinitialiser l'option \"%s\""
|
||||
@@ -3985,6 +4026,94 @@ msgstr ""
|
||||
msgid "number: number of processes to clean"
|
||||
msgstr "nombre : nombre de processus à nettoyer"
|
||||
|
||||
msgid "manage color themes"
|
||||
msgstr "gestion des thèmes de couleurs"
|
||||
|
||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||
msgid ""
|
||||
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||
"<new> || del <name> || info <name>"
|
||||
msgstr ""
|
||||
"[list [-backups]] || apply <nom> || reset || save <nom> || rename <ancien> "
|
||||
"<nouveau> || del <nom> || info <nom>"
|
||||
|
||||
msgid ""
|
||||
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||
"marked with \"->\""
|
||||
msgstr ""
|
||||
"raw[list] : afficher les thèmes enregistrés et tous les fichiers *.theme "
|
||||
"dans le répertoire de configuration de WeeChat ; le thème actif "
|
||||
"(correspondant à weechat.look.theme) est marqué avec \"->\""
|
||||
|
||||
msgid "raw[-backups]: display backup theme files"
|
||||
msgstr "raw[-backups] : afficher les fichier de sauvegarde de thèmes"
|
||||
|
||||
msgid ""
|
||||
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||
"shadows any built-in theme of the same name"
|
||||
msgstr ""
|
||||
"raw[apply] : appliquer un thème (définir chaque option personnalisable par "
|
||||
"thème à la valeur du thème) ; si un fichier nommé <nom>.theme existe dans le "
|
||||
"répertoire \"themes\", il masque tout thème intégré du même nom"
|
||||
|
||||
msgid ""
|
||||
"raw[reset]: reset every themable option to its default value (restores the "
|
||||
"original look shipped with WeeChat)"
|
||||
msgstr ""
|
||||
"raw[reset] : réinitialiser toutes les options de thème à leurs valeurs par "
|
||||
"défaut (rétablit l'apparence d'origine de WeeChat)"
|
||||
|
||||
msgid ""
|
||||
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||
"the name must not match a built-in theme or start with \"backup-\""
|
||||
msgstr ""
|
||||
"raw[save] : sauvegarder les options de thème dans un fichier <nom>.theme "
|
||||
"dans le répertoire \"themes\" ; toutes les options de thème sont écrites, le "
|
||||
"fichier est donc autonome ; le nom ne doit pas correspondre à un thème "
|
||||
"intégré ou démarrer par \"backup-\""
|
||||
|
||||
msgid "raw[rename]: rename a user theme file"
|
||||
msgstr "raw[rename] : renommer un fichier de thème utilisateur"
|
||||
|
||||
msgid "raw[del]: delete a user theme file"
|
||||
msgstr "raw[del] : supprimer un fichier de thème utilisateur"
|
||||
|
||||
msgid ""
|
||||
"raw[info]: display details on a theme (name, description, creation date, "
|
||||
"WeeChat version, number of option overrides)"
|
||||
msgstr ""
|
||||
"raw[info] : afficher les détails sur un thème (nom, description, date de "
|
||||
"création, version de WeeChat, nombre d'options remplacées)"
|
||||
|
||||
msgid "name: name of a theme"
|
||||
msgstr "nom : nom du thème"
|
||||
|
||||
msgid ""
|
||||
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||
"directory \"themes\" inside the WeeChat configuration directory."
|
||||
msgstr ""
|
||||
"Les thèmes sont des ensembles nommés de redéfinitions d'options. Les thèmes "
|
||||
"intégrés sont enregistrés en mémoire par le cœur, les plugins ou les "
|
||||
"scripts ; les thèmes utilisateur sont lus à partir de fichiers situés dans "
|
||||
"le répertoire \"themes\" du répertoire de configuration de WeeChat."
|
||||
|
||||
msgid ""
|
||||
"By default, `/theme apply` command creates a backup of current themable "
|
||||
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||
"backup-<timestamp>`. This is controlled by the option "
|
||||
"weechat.look.theme_backup."
|
||||
msgstr ""
|
||||
"Par défaut, la commande `/theme apply` crée une sauvegarde des valeurs du "
|
||||
"thème actuel dans le répertoire \"themes\" avant de les appliquer (nom de "
|
||||
"fichier : \"backup-<horodatage>.theme\") ; l'état précédent peut être "
|
||||
"restauré à l'aide de la commande `/theme apply backup-<horodatage>`. Ce "
|
||||
"comportement est régi par l'option weechat.look.theme_backup."
|
||||
|
||||
msgid "toggle value of a config option"
|
||||
msgstr "basculer la valeur d'une option de configuration"
|
||||
|
||||
@@ -4627,6 +4756,17 @@ msgstr "zones (\"chat\" ou un nom de barre) pour le mouvement libre du curseur"
|
||||
msgid "names of layouts"
|
||||
msgstr "noms des dispositions"
|
||||
|
||||
msgid "names of themes (built-ins + user files + backups)"
|
||||
msgstr "noms des thèmes (intégrés + fichiers utilisateur + sauvegardes)"
|
||||
|
||||
msgid "names of user theme files (without built-ins and backups)"
|
||||
msgstr "noms des thèmes utilisateur (sans les intégrés et sauvegardes)"
|
||||
|
||||
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||
msgstr ""
|
||||
"noms des fichiers de thèmes sur le disque (fichiers utilisateur + "
|
||||
"sauvegardes, pas les intégrés)"
|
||||
|
||||
msgid "names of secured data (file sec.conf, section data)"
|
||||
msgstr "noms de données sécurisées (fichier sec.conf, section data)"
|
||||
|
||||
@@ -5800,6 +5940,29 @@ msgid "number of spaces used to display tabs in messages"
|
||||
msgstr ""
|
||||
"nombre d'espaces utilisés pour afficher les tabulations dans les messages"
|
||||
|
||||
msgid ""
|
||||
"name of the last theme applied with command /theme (set automatically, do "
|
||||
"not change manually); informational only, the theme is not re-applied at "
|
||||
"startup"
|
||||
msgstr ""
|
||||
"nom du dernier thème appliqué avec la commande /theme (défini "
|
||||
"automatiquement, ne pas changer manuellement) ; à titre d'information "
|
||||
"seulement, le thème n'est pas réappliqué au démarrage"
|
||||
|
||||
msgid ""
|
||||
"create a backup theme file with the current themable options before applying "
|
||||
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||
"is aborted (no option is changed); the backup file is written to directory "
|
||||
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||
"with the command: `/theme apply backup-<timestamp>`"
|
||||
msgstr ""
|
||||
"créer un fichier de sauvegarde des options de thème actuelles avant "
|
||||
"d'appliquer un thème avec la commande `/theme` ; si le fichier de sauvegarde "
|
||||
"ne peut pas être écrit, l'application est annulée (aucune option n'est "
|
||||
"modifiée) ; le fichier de sauvegarde est enregistré dans le répertoire "
|
||||
"\"themes\" situé dans le répertoire de configuration de WeeChat et peut être "
|
||||
"restauré à l'aide de la commande : `/theme apply backup-<horodatage>`"
|
||||
|
||||
msgid ""
|
||||
"time format for dates converted to strings and displayed in messages (see "
|
||||
"man strftime for date/time specifiers)"
|
||||
@@ -6894,6 +7057,109 @@ msgstr "La fonction système \"%s\" n'est pas disponible"
|
||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||
msgstr "Utilisation des ressources (voir \"man getrusage\" pour de l'aide) :"
|
||||
|
||||
msgid "WeeChat default theme for light-background terminals"
|
||||
msgstr "Thème par défaut de WeeChat par défaut pour les terminaux à fond clair"
|
||||
|
||||
msgid "Automatic backup"
|
||||
msgstr "Sauvegarde automatique"
|
||||
|
||||
#, c-format
|
||||
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||
msgstr "%sThème : option \"%s\" non trouvée, ignorée"
|
||||
|
||||
#, c-format
|
||||
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||
msgstr "%sThème : l'option \"%s\" n'est pas personnalisable par thème, ignorée"
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: malformed section header"
|
||||
msgstr "%s%s : ligne %d : en-tête de section mal formé"
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||
msgstr "%s%s : ligne %d : section \"%s\" inconnue, ignorée"
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: missing '=' separator"
|
||||
msgstr "%s%s : ligne %d : séparateur '=' manquant"
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||
msgstr "%s%s : ligne %d : clé [info] \"%s\" inconnue, ignorée"
|
||||
|
||||
#, c-format
|
||||
msgid "%sFailed to parse theme file \"%s\""
|
||||
msgstr "%sÉchec de l'analyse du fichier de thème \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sUnable to create theme backup; aborting apply (disable option "
|
||||
"weechat.look.theme_backup to force)"
|
||||
msgstr ""
|
||||
"%sImpossible de créer une sauvegarde du thème ; abandon de l'application "
|
||||
"(désactivez l'option weechat.look.theme_backup pour forcer)"
|
||||
|
||||
#, c-format
|
||||
msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s"
|
||||
msgstr ""
|
||||
"État précédent sauvé sous le thème \"%s\" ; pour restaurer : /theme apply %s"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sUnable to create theme backup; aborting reset (disable option "
|
||||
"weechat.look.theme_backup to force)"
|
||||
msgstr ""
|
||||
"%sImpossible de créer une sauvegarde du thème ; abandon de la "
|
||||
"réinitialisation (désactivez l'option weechat.look.theme_backup pour forcer)"
|
||||
|
||||
#, c-format
|
||||
msgid "%sName \"%s\" is reserved for automatic backups"
|
||||
msgstr "%sLe nom \"%s\" est réservé pour les sauvegardes automatiques"
|
||||
|
||||
#, c-format
|
||||
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||
msgstr "%sLe nom \"%s\" est réservé pour un thème intégré"
|
||||
|
||||
#, c-format
|
||||
msgid "%sFailed to save theme \"%s\""
|
||||
msgstr "%sÉchec de sauvegarde du thème \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid "Theme saved to: %s"
|
||||
msgstr "Thème sauvegardé vers : %s"
|
||||
|
||||
#, c-format
|
||||
msgid "%sCannot rename built-in theme \"%s\""
|
||||
msgstr "%sImpossible de renommer le thème intégré \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid "%sNew name is the same as old name"
|
||||
msgstr "%sLe nouveau nom est le même que l'ancien"
|
||||
|
||||
#, c-format
|
||||
msgid "%sTheme \"%s\" already exists"
|
||||
msgstr "%sLe thème \"%s\" existe déjà"
|
||||
|
||||
#, c-format
|
||||
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||
msgstr "%sImpossible de renommer le thème \"%s\" en \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid "Theme \"%s\" renamed to \"%s\""
|
||||
msgstr "Thème \"%s\" renommé en \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid "%sCannot delete built-in theme \"%s\""
|
||||
msgstr "%sImpossible de supprimer le thème intégré \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid "%sFailed to delete theme \"%s\""
|
||||
msgstr "%sImpossible de supprimer le thème \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid "Theme deleted: %s"
|
||||
msgstr "Thème supprimé : %s"
|
||||
|
||||
#, c-format
|
||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||
msgstr "%sErreur de mise à jour de WeeChat avec le fichier \"%s\" :"
|
||||
@@ -7054,36 +7320,46 @@ msgstr "Fin du transfert d'URL '%s', transfert arrêté"
|
||||
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||
msgstr "WeeChat tourne sans interface (ctrl-c pour quitter)."
|
||||
|
||||
msgid "Welcome to WeeChat!"
|
||||
msgstr "Bienvenue dans WeeChat !"
|
||||
|
||||
msgid ""
|
||||
"Welcome to WeeChat!\n"
|
||||
"\n"
|
||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||
"main WeeChat concepts.\n"
|
||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||
"\n"
|
||||
"main WeeChat concepts."
|
||||
msgstr ""
|
||||
"Si vous découvrez WeeChat, il est recommandé de lire au moins le guide de "
|
||||
"démarrage rapide, et le guide utilisateur si vous avez le temps ; ils "
|
||||
"expliquent les concepts principaux de WeeChat."
|
||||
|
||||
#, c-format
|
||||
msgid "All WeeChat docs are available at: %s"
|
||||
msgstr "Toutes les documentations WeeChat sont disponibles ici : %s"
|
||||
|
||||
msgid ""
|
||||
"Moreover, there is inline help with /help on all commands and options (use "
|
||||
"Tab key to complete the name).\n"
|
||||
"The command /fset can help to customize WeeChat.\n"
|
||||
"\n"
|
||||
"Tab key to complete the name)."
|
||||
msgstr ""
|
||||
"De plus, il y a de l'aide en ligne avec /help sur toutes les commandes et "
|
||||
"options (utilisez la touche Tab pour compléter le nom)."
|
||||
|
||||
msgid "The command /fset can help to customize WeeChat."
|
||||
msgstr "La commande /fset peut aider à paramétrer WeeChat."
|
||||
|
||||
msgid ""
|
||||
"You can add and connect to an IRC server with /server and /connect commands "
|
||||
"(see /help server)."
|
||||
msgstr ""
|
||||
"Bienvenue dans WeeChat !\n"
|
||||
"\n"
|
||||
"Si vous découvrez WeeChat, il est recommandé de lire au moins le guide de "
|
||||
"démarrage rapide, et le guide utilisateur si vous avez le temps ; ils "
|
||||
"expliquent les concepts principaux de WeeChat.\n"
|
||||
"Toutes les documentations WeeChat sont disponibles ici : https://weechat.org/"
|
||||
"doc/\n"
|
||||
"\n"
|
||||
"De plus, il y a de l'aide en ligne avec /help sur toutes les commandes et "
|
||||
"options (utilisez la touche Tab pour compléter le nom).\n"
|
||||
"La commande /fset peut aider à paramétrer WeeChat.\n"
|
||||
"\n"
|
||||
"Vous pouvez ajouter et vous connecter à un serveur IRC avec les commandes /"
|
||||
"server et /connect (voir /help server)."
|
||||
|
||||
msgid ""
|
||||
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||
"switch back to the default dark theme."
|
||||
msgstr ""
|
||||
"Le thème \"light\" sera automatiquement appliqué. Utilisez /theme reset pour "
|
||||
"revenir au thème sombre par défaut."
|
||||
|
||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||
#, c-format
|
||||
msgid ""
|
||||
@@ -8887,10 +9163,13 @@ msgstr "> `f:xxx` : afficher seulement le fichier de configuration \"xxx\""
|
||||
|
||||
msgid ""
|
||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||
"string/color/enum)"
|
||||
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||
"options that can be used in themes, regardless of type"
|
||||
msgstr ""
|
||||
"> `t:xxx` : afficher seulement le type \"xxx\" (bool/int/str/col/enum ou "
|
||||
"boolean/integer/string/color/enum)"
|
||||
"boolean/integer/string/color/enum) ; la valeur spéciale \"themable\" peut "
|
||||
"être utilisée pour afficher toutes les options qui peuvent être utilisées "
|
||||
"dans des thèmes, peu importe le type"
|
||||
|
||||
msgid "> `d`: show only changed options"
|
||||
msgstr "> `d` : afficher seulement les options changées"
|
||||
@@ -17182,6 +17461,9 @@ msgstr "1 si le script est chargé"
|
||||
msgid "script name with extension"
|
||||
msgstr "nom du script avec l'extension"
|
||||
|
||||
msgid "comma-separated list of plugin:extension with supported languages"
|
||||
msgstr "liste de extension:extension_fichier avec les langages supportés"
|
||||
|
||||
msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
|
||||
msgstr ""
|
||||
"nom du script avec extension (le caractère joker \"*\" est autorisé) "
|
||||
@@ -17834,10 +18116,12 @@ msgstr ""
|
||||
msgid "> type `command_run`: command(s) (required)"
|
||||
msgstr "> type `command_run` : commande(s) (obligatoire)"
|
||||
|
||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
||||
msgid ""
|
||||
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||
"calls"
|
||||
msgstr ""
|
||||
"> type `timer` : intervalle (obligatoire), alignement sur la seconde, nombre "
|
||||
"max d'appels"
|
||||
"> type `timer` : intervalle (obligatoire, en millisecondes), alignement sur "
|
||||
"la seconde, nombre max d'appels"
|
||||
|
||||
msgid "> type `config`: name(s) of option (required)"
|
||||
msgstr "> type `config` : nom(s) de l'option (obligatoire)"
|
||||
@@ -18759,3 +19043,51 @@ msgid ""
|
||||
msgstr ""
|
||||
"%s%s : impossible d'accepter de continuer le fichier \"%s\" (port : %d, "
|
||||
"position de départ : %llu) : xfer non trouvé ou non prêt pour le transfert"
|
||||
|
||||
#~ msgid "Automatic backup written before /theme apply"
|
||||
#~ msgstr "Sauvegarde automatique écrite avant /theme apply"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Welcome to WeeChat!\n"
|
||||
#~ "\n"
|
||||
#~ "If you are discovering WeeChat, it is recommended to read at least the "
|
||||
#~ "quickstart guide, and the user's guide if you have some time; they "
|
||||
#~ "explain main WeeChat concepts.\n"
|
||||
#~ "All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||
#~ "\n"
|
||||
#~ "Moreover, there is inline help with /help on all commands and options "
|
||||
#~ "(use Tab key to complete the name).\n"
|
||||
#~ "The command /fset can help to customize WeeChat.\n"
|
||||
#~ "\n"
|
||||
#~ "You can add and connect to an IRC server with /server and /connect "
|
||||
#~ "commands (see /help server)."
|
||||
#~ msgstr ""
|
||||
#~ "Bienvenue dans WeeChat !\n"
|
||||
#~ "\n"
|
||||
#~ "Si vous découvrez WeeChat, il est recommandé de lire au moins le guide de "
|
||||
#~ "démarrage rapide, et le guide utilisateur si vous avez le temps ; ils "
|
||||
#~ "expliquent les concepts principaux de WeeChat.\n"
|
||||
#~ "Toutes les documentations WeeChat sont disponibles ici : https://"
|
||||
#~ "weechat.org/doc/\n"
|
||||
#~ "\n"
|
||||
#~ "De plus, il y a de l'aide en ligne avec /help sur toutes les commandes et "
|
||||
#~ "options (utilisez la touche Tab pour compléter le nom).\n"
|
||||
#~ "La commande /fset peut aider à paramétrer WeeChat.\n"
|
||||
#~ "\n"
|
||||
#~ "Vous pouvez ajouter et vous connecter à un serveur IRC avec les "
|
||||
#~ "commandes /server et /connect (voir /help server)."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "raw[delete]: delete a user theme file (refuses to delete built-in themes, "
|
||||
#~ "which have no file)"
|
||||
#~ msgstr "raw[delete] : supprimer un fichier thème de l'utilisateur"
|
||||
|
||||
#~ msgid "No theme registered"
|
||||
#~ msgstr "Aucun thème enregistré"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "raw[list]: list registered themes (default action with no argument); "
|
||||
#~ "active theme is marked with \"->\""
|
||||
#~ msgstr ""
|
||||
#~ "raw[list] : afficher les thèmes enregistrés (sans paramètre, cette liste "
|
||||
#~ "est affichée), le thème actif est marqué avec \"->\""
|
||||
|
||||
@@ -22,7 +22,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-05-30 14:00+0200\n"
|
||||
"POT-Creation-Date: 2026-07-04 22:01+0200\n"
|
||||
"PO-Revision-Date: 2026-03-08 08:59+0100\n"
|
||||
"Last-Translator: Andras Voroskoi <voroskoi@frugalware.org>\n"
|
||||
"Language-Team: Hungarian <weechat-dev@nongnu.org>\n"
|
||||
@@ -991,6 +991,48 @@ msgstr "nincs a szobában"
|
||||
msgid "%sFunction \"%s\" is not available on this system"
|
||||
msgstr "%s a \"%s\" modul nem található\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "No theme available"
|
||||
msgstr " . típus: szám\n"
|
||||
|
||||
msgid "Themes:"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid " %s %s%s%s (file)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sTheme \"%s\" not found"
|
||||
msgstr "%s a \"%s\" szerver nem található\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "Theme \"%s%s%s\":"
|
||||
msgstr "Felhasználók a %s%s%s szobában: %s["
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid " source: %s"
|
||||
msgstr " IRC(%s)\n"
|
||||
|
||||
msgid " source: built-in (in-memory)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid " description: %s"
|
||||
msgstr " . leírás : %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid " date: %s"
|
||||
msgstr " IRC(%s)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid " WeeChat version: %s"
|
||||
msgstr "WeeChat szlogen"
|
||||
|
||||
#, c-format
|
||||
msgid " overrides: %d"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sFailed to unset option \"%s\""
|
||||
msgstr "%s nem sikerült a modul opciókat elmenteni\n"
|
||||
@@ -3511,6 +3553,75 @@ msgstr ""
|
||||
msgid "number: number of processes to clean"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "manage color themes"
|
||||
msgstr "Aliaszok listája:\n"
|
||||
|
||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||
msgid ""
|
||||
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||
"<new> || del <name> || info <name>"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||
"marked with \"->\""
|
||||
msgstr "Aliaszok listája:\n"
|
||||
|
||||
msgid "raw[-backups]: display backup theme files"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||
"shadows any built-in theme of the same name"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[reset]: reset every themable option to its default value (restores the "
|
||||
"original look shipped with WeeChat)"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||
"the name must not match a built-in theme or start with \"backup-\""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "raw[rename]: rename a user theme file"
|
||||
msgstr "Aliaszok listája:\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "get/set channel topic"
|
||||
msgid "raw[del]: delete a user theme file"
|
||||
msgstr "szoba témájának olvasása/módosítása"
|
||||
|
||||
msgid ""
|
||||
"raw[info]: display details on a theme (name, description, creation date, "
|
||||
"WeeChat version, number of option overrides)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "name: name of a theme"
|
||||
msgstr "Aliaszok listája:\n"
|
||||
|
||||
msgid ""
|
||||
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||
"directory \"themes\" inside the WeeChat configuration directory."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"By default, `/theme apply` command creates a backup of current themable "
|
||||
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||
"backup-<timestamp>`. This is controlled by the option "
|
||||
"weechat.look.theme_backup."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "toggle value of a config option"
|
||||
msgstr "Nem található az opció\n"
|
||||
@@ -4067,6 +4178,15 @@ msgstr ""
|
||||
msgid "names of layouts"
|
||||
msgstr "Aliaszok listája:\n"
|
||||
|
||||
msgid "names of themes (built-ins + user files + backups)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of user theme files (without built-ins and backups)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of secured data (file sec.conf, section data)"
|
||||
msgstr ""
|
||||
|
||||
@@ -4906,6 +5026,20 @@ msgstr ""
|
||||
msgid "number of spaces used to display tabs in messages"
|
||||
msgstr "válasz ping üzenetre"
|
||||
|
||||
msgid ""
|
||||
"name of the last theme applied with command /theme (set automatically, do "
|
||||
"not change manually); informational only, the theme is not re-applied at "
|
||||
"startup"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"create a backup theme file with the current themable options before applying "
|
||||
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||
"is aborted (no option is changed); the backup file is written to directory "
|
||||
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||
"with the command: `/theme apply backup-<timestamp>`"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"time format for dates converted to strings and displayed in messages (see "
|
||||
@@ -5866,6 +6000,104 @@ msgstr "%s a \"%s\" modul nem található\n"
|
||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||
msgstr ""
|
||||
|
||||
msgid "WeeChat default theme for light-background terminals"
|
||||
msgstr ""
|
||||
|
||||
msgid "Automatic backup"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||
msgstr "%s a \"%s\" szerver nem található\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||
msgstr "%s a \"%s\" szerver nem található\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: malformed section header"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||
msgstr "%s %s, %d. sor: ismeretlen csoportazonosító (\"%s\")\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: missing '=' separator"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||
msgstr "%s %s, %d. sor: ismeretlen csoportazonosító (\"%s\")\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sFailed to parse theme file \"%s\""
|
||||
msgstr "Nem sikerült a(z) \"%s\" naplófájlt írni\n"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sUnable to create theme backup; aborting apply (disable option "
|
||||
"weechat.look.theme_backup to force)"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sUnable to create theme backup; aborting reset (disable option "
|
||||
"weechat.look.theme_backup to force)"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sName \"%s\" is reserved for automatic backups"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sFailed to save theme \"%s\""
|
||||
msgstr "Nem sikerült a(z) \"%s\" naplófájlt írni\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "Theme saved to: %s"
|
||||
msgstr "Felhasználók a %s%s%s szobában: %s["
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sCannot rename built-in theme \"%s\""
|
||||
msgstr "%s nem sikerült a \"%s\" fájlt létrehozni\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%sNew name is the same as old name"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sTheme \"%s\" already exists"
|
||||
msgstr "%s az ignore már létezik\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||
msgstr "%s ismeretlen opció a \"%s\" parancsnak\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "Theme \"%s\" renamed to \"%s\""
|
||||
msgstr "a felhasználók le lettek tiltva"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sCannot delete built-in theme \"%s\""
|
||||
msgstr "%s nem sikerült a \"%s\" fájlt létrehozni\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sFailed to delete theme \"%s\""
|
||||
msgstr "Nem sikerült a(z) \"%s\" naplófájlt írni\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Theme deleted: %s"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||
msgstr "WeeChat frissítése...\n"
|
||||
@@ -6025,22 +6257,37 @@ msgstr ""
|
||||
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||
msgstr ""
|
||||
|
||||
msgid "Welcome to WeeChat!"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Welcome to WeeChat!\n"
|
||||
"\n"
|
||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||
"main WeeChat concepts.\n"
|
||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||
"\n"
|
||||
"main WeeChat concepts."
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "All WeeChat docs are available at: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Moreover, there is inline help with /help on all commands and options (use "
|
||||
"Tab key to complete the name).\n"
|
||||
"The command /fset can help to customize WeeChat.\n"
|
||||
"\n"
|
||||
"Tab key to complete the name)."
|
||||
msgstr ""
|
||||
|
||||
msgid "The command /fset can help to customize WeeChat."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"You can add and connect to an IRC server with /server and /connect commands "
|
||||
"(see /help server)."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||
"switch back to the default dark theme."
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||
#, c-format
|
||||
msgid ""
|
||||
@@ -7526,7 +7773,8 @@ msgstr "szerver konfigurációs fájljának újraolvastatása"
|
||||
|
||||
msgid ""
|
||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||
"string/color/enum)"
|
||||
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||
"options that can be used in themes, regardless of type"
|
||||
msgstr ""
|
||||
|
||||
msgid "> `d`: show only changed options"
|
||||
@@ -15314,6 +15562,9 @@ msgstr "FIFO cső bezárva\n"
|
||||
msgid "script name with extension"
|
||||
msgstr "Aliaszok listája:\n"
|
||||
|
||||
msgid "comma-separated list of plugin:extension with supported languages"
|
||||
msgstr ""
|
||||
|
||||
msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
|
||||
msgstr ""
|
||||
|
||||
@@ -15907,7 +16158,9 @@ msgstr ""
|
||||
msgid "> type `command_run`: command(s) (required)"
|
||||
msgstr ""
|
||||
|
||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
||||
msgid ""
|
||||
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||
"calls"
|
||||
msgstr ""
|
||||
|
||||
msgid "> type `config`: name(s) of option (required)"
|
||||
|
||||
@@ -22,7 +22,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-05-30 14:00+0200\n"
|
||||
"POT-Creation-Date: 2026-07-04 22:01+0200\n"
|
||||
"PO-Revision-Date: 2026-05-30 14:02+0200\n"
|
||||
"Last-Translator: Esteban I. Ruiz Moreno <exio4.com@gmail.com>\n"
|
||||
"Language-Team: Italian <weechat-dev@nongnu.org>\n"
|
||||
@@ -999,6 +999,54 @@ msgid "%sFunction \"%s\" is not available on this system"
|
||||
msgstr ""
|
||||
"%s: attenzione: il dizionario \"%s\" non è disponibile su questo sistema"
|
||||
|
||||
#, fuzzy
|
||||
msgid "No theme available"
|
||||
msgstr "Variabili"
|
||||
|
||||
msgid "Themes:"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid " %s %s%s%s (file)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sKey \"%s\" not found"
|
||||
msgid "%sTheme \"%s\" not found"
|
||||
msgstr "%sTasto \"%s\" non trovato"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Option \"%s%s%s\":"
|
||||
msgid "Theme \"%s%s%s\":"
|
||||
msgstr "Opzione \"%s%s%s\":"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid " file: %s"
|
||||
msgid " source: %s"
|
||||
msgstr " file: %s"
|
||||
|
||||
msgid " source: built-in (in-memory)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "description"
|
||||
msgid " description: %s"
|
||||
msgstr "descrizione"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid " file: %s"
|
||||
msgid " date: %s"
|
||||
msgstr " file: %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "WeeChat version"
|
||||
msgid " WeeChat version: %s"
|
||||
msgstr "versione di WeeChat"
|
||||
|
||||
#, c-format
|
||||
msgid " overrides: %d"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sFailed to unset option \"%s\""
|
||||
msgstr "%sImpossibile disabilitare l'opzione \"%s\""
|
||||
@@ -3682,6 +3730,78 @@ msgstr ""
|
||||
msgid "number: number of processes to clean"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "list of bar items"
|
||||
msgid "manage color themes"
|
||||
msgstr "elenco degli elementi barra"
|
||||
|
||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||
msgid ""
|
||||
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||
"<new> || del <name> || info <name>"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "list of filters"
|
||||
msgid ""
|
||||
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||
"marked with \"->\""
|
||||
msgstr "elenco dei filtri"
|
||||
|
||||
msgid "raw[-backups]: display backup theme files"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||
"shadows any built-in theme of the same name"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[reset]: reset every themable option to its default value (restores the "
|
||||
"original look shipped with WeeChat)"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||
"the name must not match a built-in theme or start with \"backup-\""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "names of filters"
|
||||
msgid "raw[rename]: rename a user theme file"
|
||||
msgstr "nomi dei filtri"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "get/set channel topic"
|
||||
msgid "raw[del]: delete a user theme file"
|
||||
msgstr "legge/modifica argomento del canale"
|
||||
|
||||
msgid ""
|
||||
"raw[info]: display details on a theme (name, description, creation date, "
|
||||
"WeeChat version, number of option overrides)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "name: name of a theme"
|
||||
msgstr "abilita il supporto del mouse"
|
||||
|
||||
msgid ""
|
||||
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||
"directory \"themes\" inside the WeeChat configuration directory."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"By default, `/theme apply` command creates a backup of current themable "
|
||||
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||
"backup-<timestamp>`. This is controlled by the option "
|
||||
"weechat.look.theme_backup."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "values for a configuration option"
|
||||
msgid "toggle value of a config option"
|
||||
@@ -4272,6 +4392,15 @@ msgstr "aree (\"chat\" o nome barra) per il movimento libero del cursore"
|
||||
msgid "names of layouts"
|
||||
msgstr "nomi dei layout"
|
||||
|
||||
msgid "names of themes (built-ins + user files + backups)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of user theme files (without built-ins and backups)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "names of secured data (file sec.conf, section data)"
|
||||
msgstr "nome dei dati sensibili (file sec.conf, sezione data)"
|
||||
@@ -5319,6 +5448,20 @@ msgstr ""
|
||||
msgid "number of spaces used to display tabs in messages"
|
||||
msgstr "locale usato per la traduzione dei messaggi"
|
||||
|
||||
msgid ""
|
||||
"name of the last theme applied with command /theme (set automatically, do "
|
||||
"not change manually); informational only, the theme is not re-applied at "
|
||||
"startup"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"create a backup theme file with the current themable options before applying "
|
||||
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||
"is aborted (no option is changed); the backup file is written to directory "
|
||||
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||
"with the command: `/theme apply backup-<timestamp>`"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"time format for dates converted to strings and displayed in messages (see "
|
||||
"man strftime for date/time specifiers)"
|
||||
@@ -6331,6 +6474,114 @@ msgstr "%s: errore: il dizionario \"%s\" non è disponibile su questo sistema"
|
||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||
msgstr "Uso della memoria (consultare \"man mallinfo\" per aiuto):"
|
||||
|
||||
msgid "WeeChat default theme for light-background terminals"
|
||||
msgstr ""
|
||||
|
||||
msgid "Automatic backup"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sKey \"%s\" not found"
|
||||
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||
msgstr "%sTasto \"%s\" non trovato"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: script \"%s\" is not installed"
|
||||
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||
msgstr "%s: script \"%s\" non installato"
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: malformed section header"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sWarning: %s, line %d: unknown section identifier (\"%s\")"
|
||||
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||
msgstr ""
|
||||
"%sAttenzione: %s, riga %d: identificatore di sezione sconosciuto (\"%s\")"
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: missing '=' separator"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sWarning: %s, line %d: unknown option for section \"%s\": %s"
|
||||
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||
msgstr ""
|
||||
"%sAttenzione: %s, riga %d: opzione sconosciuta per la sezione \"%s\": %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to parse file \"%s\""
|
||||
msgid "%sFailed to parse theme file \"%s\""
|
||||
msgstr "%s%s: impossibile analizzare il file \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sUnable to create theme backup; aborting apply (disable option "
|
||||
"weechat.look.theme_backup to force)"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sUnable to create theme backup; aborting reset (disable option "
|
||||
"weechat.look.theme_backup to force)"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sName \"%s\" is reserved for automatic backups"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to parse file \"%s\""
|
||||
msgid "%sFailed to save theme \"%s\""
|
||||
msgstr "%s%s: impossibile analizzare il file \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Option \"%s%s%s\":"
|
||||
msgid "Theme saved to: %s"
|
||||
msgstr "Opzione \"%s%s%s\":"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sCannot rename built-in theme \"%s\""
|
||||
msgstr "%sErrore: impossibile creare il file \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid "%sNew name is the same as old name"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sTheme \"%s\" already exists"
|
||||
msgstr "%sErrore: il filtro \"%s\" esiste già"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||
msgstr "%sErrore: impossibile rinominare il filtro da \"%s\" a \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "Theme \"%s\" renamed to \"%s\""
|
||||
msgstr "Filtro \"%s\" rinominato in \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sCannot delete built-in theme \"%s\""
|
||||
msgstr "%sErrore: impossibile creare il file \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to parse file \"%s\""
|
||||
msgid "%sFailed to delete theme \"%s\""
|
||||
msgstr "%s%s: impossibile analizzare il file \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid "Theme deleted: %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||
msgstr "%sErrore durante l'aggiornamento di WeeChat con il file \"%s\":"
|
||||
@@ -6495,22 +6746,37 @@ msgstr "Fine comando '%s', timeout raggiunto (%.1fs)"
|
||||
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||
msgstr "1 se si sta aggiornando WeeChat (comando `/upgrade`)"
|
||||
|
||||
msgid "Welcome to WeeChat!"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Welcome to WeeChat!\n"
|
||||
"\n"
|
||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||
"main WeeChat concepts.\n"
|
||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||
"\n"
|
||||
"main WeeChat concepts."
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "All WeeChat docs are available at: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Moreover, there is inline help with /help on all commands and options (use "
|
||||
"Tab key to complete the name).\n"
|
||||
"The command /fset can help to customize WeeChat.\n"
|
||||
"\n"
|
||||
"Tab key to complete the name)."
|
||||
msgstr ""
|
||||
|
||||
msgid "The command /fset can help to customize WeeChat."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"You can add and connect to an IRC server with /server and /connect commands "
|
||||
"(see /help server)."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||
"switch back to the default dark theme."
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||
#, c-format
|
||||
msgid ""
|
||||
@@ -8060,7 +8326,8 @@ msgstr "File di configurazione \"%s\" sconosciuto"
|
||||
|
||||
msgid ""
|
||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||
"string/color/enum)"
|
||||
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||
"options that can be used in themes, regardless of type"
|
||||
msgstr ""
|
||||
|
||||
msgid "> `d`: show only changed options"
|
||||
@@ -16432,6 +16699,11 @@ msgstr "script %s caricati:"
|
||||
msgid "script name with extension"
|
||||
msgstr "elenco degli script"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "comma separated list of file name extensions for plugins"
|
||||
msgid "comma-separated list of plugin:extension with supported languages"
|
||||
msgstr "elenco separato da virgole di estensioni dei nomi file per i plugin"
|
||||
|
||||
#, fuzzy
|
||||
msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
|
||||
msgstr ""
|
||||
@@ -17065,7 +17337,9 @@ msgstr ""
|
||||
msgid "> type `command_run`: command(s) (required)"
|
||||
msgstr ""
|
||||
|
||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
||||
msgid ""
|
||||
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||
"calls"
|
||||
msgstr ""
|
||||
|
||||
msgid "> type `config`: name(s) of option (required)"
|
||||
|
||||
@@ -22,7 +22,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-05-30 14:00+0200\n"
|
||||
"POT-Creation-Date: 2026-07-04 22:01+0200\n"
|
||||
"PO-Revision-Date: 2026-05-30 14:02+0200\n"
|
||||
"Last-Translator: AYANOKOUZI, Ryuunosuke <i38w7i3@yahoo.co.jp>\n"
|
||||
"Language-Team: Japanese <weechat-dev@nongnu.org>\n"
|
||||
@@ -1004,6 +1004,55 @@ msgstr "作成されたオプション: "
|
||||
msgid "%sFunction \"%s\" is not available on this system"
|
||||
msgstr "%s: 警告: 辞書 \"%s\" がこのシステム上では利用できません"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "no variable"
|
||||
msgid "No theme available"
|
||||
msgstr "変数がありません"
|
||||
|
||||
msgid "Themes:"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid " %s %s%s%s (file)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sKey \"%s\" not found"
|
||||
msgid "%sTheme \"%s\" not found"
|
||||
msgstr "%sキー \"%s\" が見つかりません"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Option \"%s%s%s\":"
|
||||
msgid "Theme \"%s%s%s\":"
|
||||
msgstr "オプション \"%s%s%s\":"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid " file: %s"
|
||||
msgid " source: %s"
|
||||
msgstr " ファイル: %s"
|
||||
|
||||
msgid " source: built-in (in-memory)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "description"
|
||||
msgid " description: %s"
|
||||
msgstr "説明"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid " file: %s"
|
||||
msgid " date: %s"
|
||||
msgstr " ファイル: %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "WeeChat version"
|
||||
msgid " WeeChat version: %s"
|
||||
msgstr "WeeChat のバージョン"
|
||||
|
||||
#, c-format
|
||||
msgid " overrides: %d"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sFailed to unset option \"%s\""
|
||||
msgstr "%sオプション \"%s\" の無効化に失敗しました"
|
||||
@@ -3766,6 +3815,79 @@ msgstr ""
|
||||
msgid "number: number of processes to clean"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "list of bar items"
|
||||
msgid "manage color themes"
|
||||
msgstr "バー要素のリスト"
|
||||
|
||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||
msgid ""
|
||||
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||
"<new> || del <name> || info <name>"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "list of filters"
|
||||
msgid ""
|
||||
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||
"marked with \"->\""
|
||||
msgstr "フィルタのリスト"
|
||||
|
||||
msgid "raw[-backups]: display backup theme files"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||
"shadows any built-in theme of the same name"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[reset]: reset every themable option to its default value (restores the "
|
||||
"original look shipped with WeeChat)"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||
"the name must not match a built-in theme or start with \"backup-\""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "names of filters"
|
||||
msgid "raw[rename]: rename a user theme file"
|
||||
msgstr "フィルタ名"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "get/set channel topic"
|
||||
msgid "raw[del]: delete a user theme file"
|
||||
msgstr "チャンネルトピックの取得/設定"
|
||||
|
||||
msgid ""
|
||||
"raw[info]: display details on a theme (name, description, creation date, "
|
||||
"WeeChat version, number of option overrides)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "enable trigger support"
|
||||
msgid "name: name of a theme"
|
||||
msgstr "トリガサポートの有効化"
|
||||
|
||||
msgid ""
|
||||
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||
"directory \"themes\" inside the WeeChat configuration directory."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"By default, `/theme apply` command creates a backup of current themable "
|
||||
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||
"backup-<timestamp>`. This is controlled by the option "
|
||||
"weechat.look.theme_backup."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "values for a configuration option"
|
||||
msgid "toggle value of a config option"
|
||||
@@ -4372,6 +4494,15 @@ msgstr "カーソルを自由に動かせるエリア (\"chat\" またはバー
|
||||
msgid "names of layouts"
|
||||
msgstr "レイアウトの名前"
|
||||
|
||||
msgid "names of themes (built-ins + user files + backups)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of user theme files (without built-ins and backups)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of secured data (file sec.conf, section data)"
|
||||
msgstr "保護データの名前 (sec.conf ファイル、セクションデータ)"
|
||||
|
||||
@@ -5479,6 +5610,20 @@ msgstr ""
|
||||
msgid "number of spaces used to display tabs in messages"
|
||||
msgstr "メッセージに含まれるタブ文字を表示する際に使う空白文字の数"
|
||||
|
||||
msgid ""
|
||||
"name of the last theme applied with command /theme (set automatically, do "
|
||||
"not change manually); informational only, the theme is not re-applied at "
|
||||
"startup"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"create a backup theme file with the current themable options before applying "
|
||||
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||
"is aborted (no option is changed); the backup file is written to directory "
|
||||
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||
"with the command: `/theme apply backup-<timestamp>`"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"time format for dates converted to strings and displayed in messages (see "
|
||||
"man strftime for date/time specifiers)"
|
||||
@@ -6507,6 +6652,114 @@ msgstr "%s: エラー: 辞書 \"%s\" がシステム上に見つかりません"
|
||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||
msgstr "メモリ使用量 (ヘルプを見るには \"man mallinfo\" を参照してください):"
|
||||
|
||||
msgid "WeeChat default theme for light-background terminals"
|
||||
msgstr ""
|
||||
|
||||
msgid "Automatic backup"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sKey \"%s\" not found"
|
||||
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||
msgstr "%sキー \"%s\" が見つかりません"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: script \"%s\" is not installed"
|
||||
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||
msgstr "%s: スクリプト \"%s\" はインストールされていません"
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: malformed section header"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sWarning: %s, line %d: unknown section identifier (\"%s\")"
|
||||
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||
msgstr "%s警告: %s、行 %d: セクションインジケータ (\"%s\") は未定義"
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: missing '=' separator"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sWarning: %s, line %d: unknown option for section \"%s\": %s"
|
||||
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||
msgstr "%s警告: %s、行 %d: セクション \"%s\" の無効なオプション: %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to parse file \"%s\""
|
||||
msgid "%sFailed to parse theme file \"%s\""
|
||||
msgstr "%s%s: ファイル \"%s\" を解析できません"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sUnable to create theme backup; aborting apply (disable option "
|
||||
"weechat.look.theme_backup to force)"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sUnable to create theme backup; aborting reset (disable option "
|
||||
"weechat.look.theme_backup to force)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sName \"%s\" is reserved for automatic backups"
|
||||
msgstr "%sエラー: \"%s\" は WeeChat の予約名です"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||
msgstr "%sエラー: \"%s\" は WeeChat の予約名です"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to parse file \"%s\""
|
||||
msgid "%sFailed to save theme \"%s\""
|
||||
msgstr "%s%s: ファイル \"%s\" を解析できません"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Option \"%s%s%s\":"
|
||||
msgid "Theme saved to: %s"
|
||||
msgstr "オプション \"%s%s%s\":"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sCannot rename built-in theme \"%s\""
|
||||
msgstr "%sエラー: ファイル \"%s\" の作成に失敗"
|
||||
|
||||
#, c-format
|
||||
msgid "%sNew name is the same as old name"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: trigger \"%s\" already exists"
|
||||
msgid "%sTheme \"%s\" already exists"
|
||||
msgstr "%s%s: トリガ \"%s\" は既に存在します"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||
msgstr "%sエラー: フィルタ \"%s\" の名前を \"%s\" に変更できません"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Trigger \"%s\" renamed to \"%s\""
|
||||
msgid "Theme \"%s\" renamed to \"%s\""
|
||||
msgstr "トリガ \"%s\" の名前を \"%s\" に変更しました"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sCannot delete built-in theme \"%s\""
|
||||
msgstr "%sエラー: ファイル \"%s\" の作成に失敗"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to parse file \"%s\""
|
||||
msgid "%sFailed to delete theme \"%s\""
|
||||
msgstr "%s%s: ファイル \"%s\" を解析できません"
|
||||
|
||||
#, c-format
|
||||
msgid "Theme deleted: %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||
msgstr "%sファイル \"%s\" で WeeChat のアップグレード中にエラー:"
|
||||
@@ -6675,34 +6928,36 @@ msgstr "コマンド '%s' の終了、タイムアウトになりました (%.1f
|
||||
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||
msgstr "WeeChat をヘッドレスモードで実行中 (Ctrl-C で終了します)。"
|
||||
|
||||
msgid "Welcome to WeeChat!"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Welcome to WeeChat!\n"
|
||||
"\n"
|
||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||
"main WeeChat concepts.\n"
|
||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||
"\n"
|
||||
"main WeeChat concepts."
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "All WeeChat docs are available at: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Moreover, there is inline help with /help on all commands and options (use "
|
||||
"Tab key to complete the name).\n"
|
||||
"The command /fset can help to customize WeeChat.\n"
|
||||
"\n"
|
||||
"Tab key to complete the name)."
|
||||
msgstr ""
|
||||
|
||||
msgid "The command /fset can help to customize WeeChat."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"You can add and connect to an IRC server with /server and /connect commands "
|
||||
"(see /help server)."
|
||||
msgstr ""
|
||||
"WeeChat にようこそ!\n"
|
||||
"\n"
|
||||
"WeeChat を初めて使うのなら、少なくともクイックスタートガイドを、時間があるな"
|
||||
"らユーザーズガイドを読むことをお勧めします。これらは WeeChat の主な構想を説明"
|
||||
"しています。\n"
|
||||
"WeeChat の文書は全てこのサイトから利用可能です: https://weechat.org/doc/\n"
|
||||
"\n"
|
||||
"さらに、すべてのコマンドとオプションには /help から見れるインラインヘルプが用"
|
||||
"意されています (Tab キーで名前補完できます)。\n"
|
||||
"WeeChat をカスタマイズするには /fset を使うと便利です。\n"
|
||||
"\n"
|
||||
"IRC サーバの設定を追加してサーバに接続するには /server と /connect コマンドを"
|
||||
"使ってください (/help server 参照)。"
|
||||
|
||||
msgid ""
|
||||
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||
"switch back to the default dark theme."
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||
#, c-format
|
||||
@@ -8361,7 +8616,8 @@ msgstr "設定ファイル \"%s\" が見つかりません"
|
||||
|
||||
msgid ""
|
||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||
"string/color/enum)"
|
||||
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||
"options that can be used in themes, regardless of type"
|
||||
msgstr ""
|
||||
|
||||
msgid "> `d`: show only changed options"
|
||||
@@ -16996,6 +17252,11 @@ msgstr "ロードされた %s スクリプト:"
|
||||
msgid "script name with extension"
|
||||
msgstr "スクリプトの拡張子のリスト"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "comma separated list of file name extensions for plugins"
|
||||
msgid "comma-separated list of plugin:extension with supported languages"
|
||||
msgstr "プラグインのファイル拡張子のコンマ区切りリスト"
|
||||
|
||||
msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
|
||||
msgstr ""
|
||||
"拡張子を含めたスクリプト名 (ワイルドカード \"*\" を使うことができます) (任意)"
|
||||
@@ -17640,7 +17901,9 @@ msgstr ""
|
||||
msgid "> type `command_run`: command(s) (required)"
|
||||
msgstr ""
|
||||
|
||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
||||
msgid ""
|
||||
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||
"calls"
|
||||
msgstr ""
|
||||
|
||||
msgid "> type `config`: name(s) of option (required)"
|
||||
@@ -18499,3 +18762,32 @@ msgid ""
|
||||
msgstr ""
|
||||
"%s%s: ファイル \"%s\" のリジュームが承認されませんでした (ポート: %d、開始位"
|
||||
"置: %llu): xfer が見つからないか、転送準備が整っていません"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Welcome to WeeChat!\n"
|
||||
#~ "\n"
|
||||
#~ "If you are discovering WeeChat, it is recommended to read at least the "
|
||||
#~ "quickstart guide, and the user's guide if you have some time; they "
|
||||
#~ "explain main WeeChat concepts.\n"
|
||||
#~ "All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||
#~ "\n"
|
||||
#~ "Moreover, there is inline help with /help on all commands and options "
|
||||
#~ "(use Tab key to complete the name).\n"
|
||||
#~ "The command /fset can help to customize WeeChat.\n"
|
||||
#~ "\n"
|
||||
#~ "You can add and connect to an IRC server with /server and /connect "
|
||||
#~ "commands (see /help server)."
|
||||
#~ msgstr ""
|
||||
#~ "WeeChat にようこそ!\n"
|
||||
#~ "\n"
|
||||
#~ "WeeChat を初めて使うのなら、少なくともクイックスタートガイドを、時間がある"
|
||||
#~ "ならユーザーズガイドを読むことをお勧めします。これらは WeeChat の主な構想"
|
||||
#~ "を説明しています。\n"
|
||||
#~ "WeeChat の文書は全てこのサイトから利用可能です: https://weechat.org/doc/\n"
|
||||
#~ "\n"
|
||||
#~ "さらに、すべてのコマンドとオプションには /help から見れるインラインヘルプ"
|
||||
#~ "が用意されています (Tab キーで名前補完できます)。\n"
|
||||
#~ "WeeChat をカスタマイズするには /fset を使うと便利です。\n"
|
||||
#~ "\n"
|
||||
#~ "IRC サーバの設定を追加してサーバに接続するには /server と /connect コマン"
|
||||
#~ "ドを使ってください (/help server 参照)。"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# SPDX-FileCopyrightText: 2009-2016 Krzysztof Koroscik <soltys1@gmail.com>
|
||||
# SPDX-FileCopyrightText: 2009-2026 Krzysztof Koroscik <soltys@soltys.info>
|
||||
# SPDX-FileCopyrightText: 2010 B.J. Stobiecki <bartek@stobiecki.eu>
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
@@ -19,15 +19,14 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Krzysztof Korościk <soltys@soltys.info>, 2018, 2019, 2020.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-05-30 14:00+0200\n"
|
||||
"PO-Revision-Date: 2026-05-30 14:02+0200\n"
|
||||
"POT-Creation-Date: 2026-07-04 22:01+0200\n"
|
||||
"PO-Revision-Date: 2026-06-28 08:55+0200\n"
|
||||
"Last-Translator: Krzysztof Korościk <soltys@soltys.info>\n"
|
||||
"Language-Team: Polish <weechat-dev@nongnu.org>\n"
|
||||
"Language-Team: Polish <soltys@soltys.info>\n"
|
||||
"Language: pl\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -981,6 +980,55 @@ msgstr "Opcja utworzona: "
|
||||
msgid "%sFunction \"%s\" is not available on this system"
|
||||
msgstr "%sFunkcja „%s” nie jest dostępna w tym systemie"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "not available"
|
||||
msgid "No theme available"
|
||||
msgstr "niedostępne"
|
||||
|
||||
msgid "Themes:"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid " %s %s%s%s (file)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sKey \"%s\" not found"
|
||||
msgid "%sTheme \"%s\" not found"
|
||||
msgstr "%sKlawisz \"%s\" nie znaleziony"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Option \"%s%s%s\":"
|
||||
msgid "Theme \"%s%s%s\":"
|
||||
msgstr "Opcja \"%s%s%s\":"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid " file: %s"
|
||||
msgid " source: %s"
|
||||
msgstr " plik: %s"
|
||||
|
||||
msgid " source: built-in (in-memory)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "description"
|
||||
msgid " description: %s"
|
||||
msgstr "opis"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid " file: %s"
|
||||
msgid " date: %s"
|
||||
msgstr " plik: %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "WeeChat version"
|
||||
msgid " WeeChat version: %s"
|
||||
msgstr "Wersja WeeChat"
|
||||
|
||||
#, c-format
|
||||
msgid " overrides: %d"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sFailed to unset option \"%s\""
|
||||
msgstr "%sNie powiodło się wyzerowanie opcji \"%s\""
|
||||
@@ -3877,6 +3925,85 @@ msgstr ""
|
||||
msgid "number: number of processes to clean"
|
||||
msgstr "numer: ilość procesów do wyczyszczenia"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "manage custom bar items"
|
||||
msgid "manage color themes"
|
||||
msgstr "zarządza niestandardowymi elementami pasków"
|
||||
|
||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||
msgid ""
|
||||
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||
"<new> || del <name> || info <name>"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "raw[list]: list remote relay servers (without argument, this list is "
|
||||
#| "displayed)"
|
||||
msgid ""
|
||||
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||
"marked with \"->\""
|
||||
msgstr ""
|
||||
"raw[list]: wyświetl pośredników (bez podania argumentu wyświetlana jest ta "
|
||||
"lista)"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "raw[tags]: display tags for lines"
|
||||
msgid "raw[-backups]: display backup theme files"
|
||||
msgstr "raw[tags]: wyświetl tagi dla linii"
|
||||
|
||||
msgid ""
|
||||
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||
"shadows any built-in theme of the same name"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[reset]: reset every themable option to its default value (restores the "
|
||||
"original look shipped with WeeChat)"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||
"the name must not match a built-in theme or start with \"backup-\""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "raw[rename]: rename a filter"
|
||||
msgid "raw[rename]: rename a user theme file"
|
||||
msgstr "raw[rename]: zmień nazwę filtra"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "raw[del]: delete a server"
|
||||
msgid "raw[del]: delete a user theme file"
|
||||
msgstr "raw[del]: usuń serwer"
|
||||
|
||||
msgid ""
|
||||
"raw[info]: display details on a theme (name, description, creation date, "
|
||||
"WeeChat version, number of option overrides)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "name: name of trigger"
|
||||
msgid "name: name of a theme"
|
||||
msgstr "nazwa: nazwa triggera"
|
||||
|
||||
msgid ""
|
||||
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||
"directory \"themes\" inside the WeeChat configuration directory."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"By default, `/theme apply` command creates a backup of current themable "
|
||||
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||
"backup-<timestamp>`. This is controlled by the option "
|
||||
"weechat.look.theme_backup."
|
||||
msgstr ""
|
||||
|
||||
msgid "toggle value of a config option"
|
||||
msgstr "przełącza wartość opcji konfiguracyjnej"
|
||||
|
||||
@@ -4500,6 +4627,15 @@ msgstr ""
|
||||
msgid "names of layouts"
|
||||
msgstr "nazwy układów"
|
||||
|
||||
msgid "names of themes (built-ins + user files + backups)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of user theme files (without built-ins and backups)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of secured data (file sec.conf, section data)"
|
||||
msgstr "nazwy zabezpieczonych danych (plik sec.conf, sekcja data)"
|
||||
|
||||
@@ -5632,6 +5768,20 @@ msgstr ""
|
||||
msgid "number of spaces used to display tabs in messages"
|
||||
msgstr "liczba spacji używana do wyświetlania tabulacji w wiadomościach"
|
||||
|
||||
msgid ""
|
||||
"name of the last theme applied with command /theme (set automatically, do "
|
||||
"not change manually); informational only, the theme is not re-applied at "
|
||||
"startup"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"create a backup theme file with the current themable options before applying "
|
||||
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||
"is aborted (no option is changed); the backup file is written to directory "
|
||||
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||
"with the command: `/theme apply backup-<timestamp>`"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"time format for dates converted to strings and displayed in messages (see "
|
||||
"man strftime for date/time specifiers)"
|
||||
@@ -6680,6 +6830,122 @@ msgstr "Funkcja systemowa \"%s\" nie jest dostępna"
|
||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||
msgstr "Zużycie zasobów (zobacz \"man getrusage\"):"
|
||||
|
||||
msgid "WeeChat default theme for light-background terminals"
|
||||
msgstr ""
|
||||
|
||||
msgid "Automatic backup"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sKey \"%s\" not found"
|
||||
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||
msgstr "%sKlawisz \"%s\" nie znaleziony"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: script \"%s\" is not installed"
|
||||
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||
msgstr "%s: skrypt \"%s\" nie zainstalowany"
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: malformed section header"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sWarning: %s, line %d: ignoring unknown section identifier (\"%s\")"
|
||||
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||
msgstr ""
|
||||
"%sOstrzeżenie: %s, linia %d: ignoruje nieznany identyfikator sekcji (\"%s\")"
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: missing '=' separator"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid ""
|
||||
#| "%sWarning: %s, line %d: ignoring unknown option for section \"%s\": %s"
|
||||
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||
msgstr ""
|
||||
"%sOstrzeżenie: %s, linia %d: ignoruje nieznaną opcję dla sekcji \"%s\": %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to parse file \"%s\""
|
||||
msgid "%sFailed to parse theme file \"%s\""
|
||||
msgstr "%s%s: nie można przetworzyć pliku \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sUnable to create theme backup; aborting apply (disable option "
|
||||
"weechat.look.theme_backup to force)"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sUnable to create theme backup; aborting reset (disable option "
|
||||
"weechat.look.theme_backup to force)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sBuffer name \"%s\" is reserved for WeeChat"
|
||||
msgid "%sName \"%s\" is reserved for automatic backups"
|
||||
msgstr "%sNazwa bufora \"%s\" jest zarezerwowana dla WeeChat"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sBuffer name \"%s\" is reserved for WeeChat"
|
||||
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||
msgstr "%sNazwa bufora \"%s\" jest zarezerwowana dla WeeChat"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to parse file \"%s\""
|
||||
msgid "%sFailed to save theme \"%s\""
|
||||
msgstr "%s%s: nie można przetworzyć pliku \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Option \"%s%s%s\":"
|
||||
msgid "Theme saved to: %s"
|
||||
msgstr "Opcja \"%s%s%s\":"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sCannot create file \"%s\""
|
||||
msgid "%sCannot rename built-in theme \"%s\""
|
||||
msgstr "%sNie można utworzyć pliku \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid "%sNew name is the same as old name"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sBar \"%s\" already exists"
|
||||
msgid "%sTheme \"%s\" already exists"
|
||||
msgstr "%sPasek \"%s\" już istnieje"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sUnable to rename filter \"%s\" to \"%s\""
|
||||
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||
msgstr "%sNie można zmienić nazwy filtru z \"%s\" na \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Trigger \"%s\" renamed to \"%s\""
|
||||
msgid "Theme \"%s\" renamed to \"%s\""
|
||||
msgstr "Zmieniono nazwę triggera z \"%s\" na \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sCannot create file \"%s\""
|
||||
msgid "%sCannot delete built-in theme \"%s\""
|
||||
msgstr "%sNie można utworzyć pliku \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to parse file \"%s\""
|
||||
msgid "%sFailed to delete theme \"%s\""
|
||||
msgstr "%s%s: nie można przetworzyć pliku \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid "Theme deleted: %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||
msgstr "%sBłąd przy uaktualnianiu WeeChat z użyciem pliku \"%s\":"
|
||||
@@ -6839,35 +7105,36 @@ msgstr "Zakończono transfer URL '%s', transfer zatrzymany"
|
||||
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||
msgstr "WeeChat działa w trybie bez interfejsu (naciśnij ctrl-c żeby wyjść)."
|
||||
|
||||
msgid "Welcome to WeeChat!"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Welcome to WeeChat!\n"
|
||||
"\n"
|
||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||
"main WeeChat concepts.\n"
|
||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||
"\n"
|
||||
"main WeeChat concepts."
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "All WeeChat docs are available at: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Moreover, there is inline help with /help on all commands and options (use "
|
||||
"Tab key to complete the name).\n"
|
||||
"The command /fset can help to customize WeeChat.\n"
|
||||
"\n"
|
||||
"Tab key to complete the name)."
|
||||
msgstr ""
|
||||
|
||||
msgid "The command /fset can help to customize WeeChat."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"You can add and connect to an IRC server with /server and /connect commands "
|
||||
"(see /help server)."
|
||||
msgstr ""
|
||||
"Witaj w WeeChat!\n"
|
||||
"\n"
|
||||
"Jeśli dopiero poznajesz WeeChat, zaleca się abyś przeczytał przynajmniej "
|
||||
"szybki start i poradnik użytkownika jeśli znajdziesz na to chwilę; wyjaśnią "
|
||||
"one główne założenia WeeChat.\n"
|
||||
"Wszystkie dokumenty dotyczące WeeChat dostępne są pod adresem: https://"
|
||||
"weechat.org/doc/\n"
|
||||
"\n"
|
||||
"Ponadto, dostępna jest wbudowana pomoc /help dla wszystkich komend i opcji "
|
||||
"(klawisz Tab dopełnia nazwy).\n"
|
||||
"Komenda /fset pomaga w dostosowaniu WeeChat do swoich preferencji.\n"
|
||||
"\n"
|
||||
"Możesz dodać i połączyć się z serwerem IRC za pomocą komend /server i /"
|
||||
"connect (zobacz /help server)."
|
||||
|
||||
msgid ""
|
||||
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||
"switch back to the default dark theme."
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||
#, c-format
|
||||
@@ -8606,9 +8873,14 @@ msgstr "> `xxx`: pokaż tylko opcje z „xxx” w nazwie"
|
||||
msgid "> `f:xxx`: show only configuration file \"xxx\""
|
||||
msgstr "> `f:xxx`: pokaż tylko plik konfiguracyjny „xxx”"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/"
|
||||
#| "integer/string/color/enum)"
|
||||
msgid ""
|
||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||
"string/color/enum)"
|
||||
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||
"options that can be used in themes, regardless of type"
|
||||
msgstr ""
|
||||
"> `t:xxx`: pokaż tylko opcje typu „xxx” (bool/int/str/col/enum or boolean/"
|
||||
"integer/string/color/enum)"
|
||||
@@ -16747,6 +17019,11 @@ msgstr "1 jeśli skrypt jest załadowany"
|
||||
msgid "script name with extension"
|
||||
msgstr "nazwa skryptu z rozszerzeniem"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "comma separated list of file name extensions for plugins"
|
||||
msgid "comma-separated list of plugin:extension with supported languages"
|
||||
msgstr "oddzielona przecinkami lista rozszerzeń nazw plików dla wtyczek"
|
||||
|
||||
msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
|
||||
msgstr ""
|
||||
"nazwa skryptu z rozszerzeniem (wildcard \"*\" jest dozwolony) (opcjonalne)\""
|
||||
@@ -17383,7 +17660,11 @@ msgstr ""
|
||||
msgid "> type `command_run`: command(s) (required)"
|
||||
msgstr "> typ `command_run`: komenda(-y) (wymagane)"
|
||||
|
||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
||||
#, fuzzy
|
||||
#| msgid "> type `timer`: interval (required), align on second, max calls"
|
||||
msgid ""
|
||||
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||
"calls"
|
||||
msgstr ""
|
||||
"> typ `timer`: interwał (wymagany), wyrównane do sekund, maksymalne wywołania"
|
||||
|
||||
@@ -18263,3 +18544,33 @@ msgid ""
|
||||
msgstr ""
|
||||
"%s%s: nie można zaakceptować wznowienia pliku \"%s\" (port: %d, pozycja "
|
||||
"startowa: %llu): xfer nie znaleziony lub nie gotowy do transferu"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Welcome to WeeChat!\n"
|
||||
#~ "\n"
|
||||
#~ "If you are discovering WeeChat, it is recommended to read at least the "
|
||||
#~ "quickstart guide, and the user's guide if you have some time; they "
|
||||
#~ "explain main WeeChat concepts.\n"
|
||||
#~ "All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||
#~ "\n"
|
||||
#~ "Moreover, there is inline help with /help on all commands and options "
|
||||
#~ "(use Tab key to complete the name).\n"
|
||||
#~ "The command /fset can help to customize WeeChat.\n"
|
||||
#~ "\n"
|
||||
#~ "You can add and connect to an IRC server with /server and /connect "
|
||||
#~ "commands (see /help server)."
|
||||
#~ msgstr ""
|
||||
#~ "Witaj w WeeChat!\n"
|
||||
#~ "\n"
|
||||
#~ "Jeśli dopiero poznajesz WeeChat, zaleca się abyś przeczytał przynajmniej "
|
||||
#~ "szybki start i poradnik użytkownika jeśli znajdziesz na to chwilę; "
|
||||
#~ "wyjaśnią one główne założenia WeeChat.\n"
|
||||
#~ "Wszystkie dokumenty dotyczące WeeChat dostępne są pod adresem: https://"
|
||||
#~ "weechat.org/doc/\n"
|
||||
#~ "\n"
|
||||
#~ "Ponadto, dostępna jest wbudowana pomoc /help dla wszystkich komend i "
|
||||
#~ "opcji (klawisz Tab dopełnia nazwy).\n"
|
||||
#~ "Komenda /fset pomaga w dostosowaniu WeeChat do swoich preferencji.\n"
|
||||
#~ "\n"
|
||||
#~ "Możesz dodać i połączyć się z serwerem IRC za pomocą komend /server i /"
|
||||
#~ "connect (zobacz /help server)."
|
||||
|
||||
@@ -22,10 +22,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-05-30 14:00+0200\n"
|
||||
"PO-Revision-Date: 2026-05-30 14:02+0200\n"
|
||||
"POT-Creation-Date: 2026-07-04 22:01+0200\n"
|
||||
"PO-Revision-Date: 2026-06-28 08:48+0200\n"
|
||||
"Last-Translator: Vasco Almeida <vascomalmeida@sapo.pt>\n"
|
||||
"Language-Team: Portuguese - Portugal <weechat-dev@nongnu.org>\n"
|
||||
"Language-Team: Portuguese <weechat-dev@nongnu.org>\n"
|
||||
"Language: pt\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -1006,6 +1006,55 @@ msgstr "Opção criada: "
|
||||
msgid "%sFunction \"%s\" is not available on this system"
|
||||
msgstr "%s: aviso: o dicionário \"%s\" não está disponível no sistema"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "no variable"
|
||||
msgid "No theme available"
|
||||
msgstr "nenhum variável"
|
||||
|
||||
msgid "Themes:"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid " %s %s%s%s (file)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sKey \"%s\" not found"
|
||||
msgid "%sTheme \"%s\" not found"
|
||||
msgstr "%sTecla \"%s\" não encontrada"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Option \"%s%s%s\":"
|
||||
msgid "Theme \"%s%s%s\":"
|
||||
msgstr "Opção \"%s%s%s\":"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid " file: %s"
|
||||
msgid " source: %s"
|
||||
msgstr " ficheiro: %s"
|
||||
|
||||
msgid " source: built-in (in-memory)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "description"
|
||||
msgid " description: %s"
|
||||
msgstr "descrição"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid " file: %s"
|
||||
msgid " date: %s"
|
||||
msgstr " ficheiro: %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "WeeChat version"
|
||||
msgid " WeeChat version: %s"
|
||||
msgstr "versão do WeeChat"
|
||||
|
||||
#, c-format
|
||||
msgid " overrides: %d"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sFailed to unset option \"%s\""
|
||||
msgstr "%sFalha ao reinicializar a opção \"%s\""
|
||||
@@ -3775,6 +3824,79 @@ msgstr ""
|
||||
msgid "number: number of processes to clean"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "list of bar items"
|
||||
msgid "manage color themes"
|
||||
msgstr "lista de itens da barra"
|
||||
|
||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||
msgid ""
|
||||
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||
"<new> || del <name> || info <name>"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "list of filters"
|
||||
msgid ""
|
||||
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||
"marked with \"->\""
|
||||
msgstr "lista de filtros"
|
||||
|
||||
msgid "raw[-backups]: display backup theme files"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||
"shadows any built-in theme of the same name"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[reset]: reset every themable option to its default value (restores the "
|
||||
"original look shipped with WeeChat)"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||
"the name must not match a built-in theme or start with \"backup-\""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "names of filters"
|
||||
msgid "raw[rename]: rename a user theme file"
|
||||
msgstr "nomes dos filtros"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "get/set channel topic"
|
||||
msgid "raw[del]: delete a user theme file"
|
||||
msgstr "obter/definir o tópico do canal"
|
||||
|
||||
msgid ""
|
||||
"raw[info]: display details on a theme (name, description, creation date, "
|
||||
"WeeChat version, number of option overrides)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "enable trigger support"
|
||||
msgid "name: name of a theme"
|
||||
msgstr "ativar suporte de acionadores"
|
||||
|
||||
msgid ""
|
||||
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||
"directory \"themes\" inside the WeeChat configuration directory."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"By default, `/theme apply` command creates a backup of current themable "
|
||||
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||
"backup-<timestamp>`. This is controlled by the option "
|
||||
"weechat.look.theme_backup."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "values for a configuration option"
|
||||
msgid "toggle value of a config option"
|
||||
@@ -4391,6 +4513,15 @@ msgstr "áreas (\"chat\" ou nome da barra) onde mover o cursor livremente"
|
||||
msgid "names of layouts"
|
||||
msgstr "nomes das disposições"
|
||||
|
||||
msgid "names of themes (built-ins + user files + backups)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of user theme files (without built-ins and backups)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of secured data (file sec.conf, section data)"
|
||||
msgstr "nomes dos ficheiros protegidos (ficheiro sec.conf, secção de dados)"
|
||||
|
||||
@@ -5508,6 +5639,20 @@ msgstr ""
|
||||
msgid "number of spaces used to display tabs in messages"
|
||||
msgstr "número de espaços usados para apresentar tabulações nas mensagens"
|
||||
|
||||
msgid ""
|
||||
"name of the last theme applied with command /theme (set automatically, do "
|
||||
"not change manually); informational only, the theme is not re-applied at "
|
||||
"startup"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"create a backup theme file with the current themable options before applying "
|
||||
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||
"is aborted (no option is changed); the backup file is written to directory "
|
||||
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||
"with the command: `/theme apply backup-<timestamp>`"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"time format for dates converted to strings and displayed in messages (see "
|
||||
"man strftime for date/time specifiers)"
|
||||
@@ -6563,6 +6708,114 @@ msgstr "%s: erro: o dicionário \"%s\" não está disponível no sistema"
|
||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||
msgstr "Utilização de memória (ver \"man mallingo\" para obter ajuda):"
|
||||
|
||||
msgid "WeeChat default theme for light-background terminals"
|
||||
msgstr ""
|
||||
|
||||
msgid "Automatic backup"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sKey \"%s\" not found"
|
||||
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||
msgstr "%sTecla \"%s\" não encontrada"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: script \"%s\" is not installed"
|
||||
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||
msgstr "%s: o script \"%s\" não está instalado"
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: malformed section header"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sWarning: %s, line %d: unknown section identifier (\"%s\")"
|
||||
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||
msgstr "%sAviso: %s, linha %d: identificador de secção desconhecido (\"%s\")"
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: missing '=' separator"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sWarning: %s, line %d: unknown option for section \"%s\": %s"
|
||||
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||
msgstr "%sAviso: %s, linha %d: opção desconhecida na secção \"%s\": %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to parse file \"%s\""
|
||||
msgid "%sFailed to parse theme file \"%s\""
|
||||
msgstr "%s%s: não foi possível analisar o ficheiro \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sUnable to create theme backup; aborting apply (disable option "
|
||||
"weechat.look.theme_backup to force)"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sUnable to create theme backup; aborting reset (disable option "
|
||||
"weechat.look.theme_backup to force)"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sName \"%s\" is reserved for automatic backups"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to parse file \"%s\""
|
||||
msgid "%sFailed to save theme \"%s\""
|
||||
msgstr "%s%s: não foi possível analisar o ficheiro \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Option \"%s%s%s\":"
|
||||
msgid "Theme saved to: %s"
|
||||
msgstr "Opção \"%s%s%s\":"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sCannot rename built-in theme \"%s\""
|
||||
msgstr "%sErro: não é possível criar o ficheiro \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid "%sNew name is the same as old name"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: trigger \"%s\" already exists"
|
||||
msgid "%sTheme \"%s\" already exists"
|
||||
msgstr "%s%s: o acionador \"%s\" já existe"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||
msgstr "%sErro: não foi possível mudar o nome do filtro \"%s\" para \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Trigger \"%s\" renamed to \"%s\""
|
||||
msgid "Theme \"%s\" renamed to \"%s\""
|
||||
msgstr "O nome do acionador \"%s\" mudou para \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sCannot delete built-in theme \"%s\""
|
||||
msgstr "%sErro: não é possível criar o ficheiro \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to parse file \"%s\""
|
||||
msgid "%sFailed to delete theme \"%s\""
|
||||
msgstr "%s%s: não foi possível analisar o ficheiro \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid "Theme deleted: %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||
msgstr "%sErro ao atualizar o WeeChat com o ficheiro \"%s\":"
|
||||
@@ -6727,36 +6980,36 @@ msgstr "Fim do comando '%s', tempo limite atingido (%.1fs)"
|
||||
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||
msgstr "1 se o WeeChat está a atualizar (comando `/upgrade`)"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Welcome to WeeChat!"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Welcome to WeeChat!\n"
|
||||
"\n"
|
||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||
"main WeeChat concepts.\n"
|
||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||
"\n"
|
||||
"main WeeChat concepts."
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "All WeeChat docs are available at: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Moreover, there is inline help with /help on all commands and options (use "
|
||||
"Tab key to complete the name).\n"
|
||||
"The command /fset can help to customize WeeChat.\n"
|
||||
"\n"
|
||||
"Tab key to complete the name)."
|
||||
msgstr ""
|
||||
|
||||
msgid "The command /fset can help to customize WeeChat."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"You can add and connect to an IRC server with /server and /connect commands "
|
||||
"(see /help server)."
|
||||
msgstr ""
|
||||
"Bem-vindo ao WeeChat!\n"
|
||||
"\n"
|
||||
"Se é a primeira vez que usa o WeeChat, recomenda-se que leia pelo menos o "
|
||||
"guia de introdução, e o manual do utilizador se dispõe de algum tempo; estes "
|
||||
"explicam os principais conceitos do WeeChat.\n"
|
||||
"A documentação do WeeChat está disponível em: https://weechat.org/doc/\n"
|
||||
"\n"
|
||||
"Além disso, pode consultar a ajuda incorporada com /help sobre todos os "
|
||||
"comandos e opções (use a tecla Tab para completar o nome).\n"
|
||||
"O comando /iset (script iset.pl) pode ajudá-lo a personalizar o WeeChat: /"
|
||||
"script install iset.pl\n"
|
||||
"\n"
|
||||
"Pode adicionar e conectar-se a um ser servidor de IRC pelos comandos /server "
|
||||
"e /connect (ver /help server)."
|
||||
|
||||
msgid ""
|
||||
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||
"switch back to the default dark theme."
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||
#, c-format
|
||||
@@ -8328,7 +8581,8 @@ msgstr "Ficheiro de configuração desconhecido \"%s\""
|
||||
|
||||
msgid ""
|
||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||
"string/color/enum)"
|
||||
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||
"options that can be used in themes, regardless of type"
|
||||
msgstr ""
|
||||
|
||||
msgid "> `d`: show only changed options"
|
||||
@@ -16869,6 +17123,11 @@ msgstr "scripts %s carregados:"
|
||||
msgid "script name with extension"
|
||||
msgstr "lista de extensões de script"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "comma separated list of file name extensions for plugins"
|
||||
msgid "comma-separated list of plugin:extension with supported languages"
|
||||
msgstr "lista de extensões de ficheiros separadas por vírgula para os plugins"
|
||||
|
||||
msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
|
||||
msgstr ""
|
||||
"nome do script com extensão (o caráter universal \"*\" é permitido) "
|
||||
@@ -17530,7 +17789,9 @@ msgstr ""
|
||||
msgid "> type `command_run`: command(s) (required)"
|
||||
msgstr ""
|
||||
|
||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
||||
msgid ""
|
||||
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||
"calls"
|
||||
msgstr ""
|
||||
|
||||
msgid "> type `config`: name(s) of option (required)"
|
||||
@@ -18404,3 +18665,34 @@ msgstr ""
|
||||
"%s%s: não foi possível aceitar o ficheiro a retomar \"%s\" (porto: %d, "
|
||||
"posição inicial: %llu): xfer não foi encontrado ou não está pronto para ser "
|
||||
"transferido"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid ""
|
||||
#~ "Welcome to WeeChat!\n"
|
||||
#~ "\n"
|
||||
#~ "If you are discovering WeeChat, it is recommended to read at least the "
|
||||
#~ "quickstart guide, and the user's guide if you have some time; they "
|
||||
#~ "explain main WeeChat concepts.\n"
|
||||
#~ "All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||
#~ "\n"
|
||||
#~ "Moreover, there is inline help with /help on all commands and options "
|
||||
#~ "(use Tab key to complete the name).\n"
|
||||
#~ "The command /fset can help to customize WeeChat.\n"
|
||||
#~ "\n"
|
||||
#~ "You can add and connect to an IRC server with /server and /connect "
|
||||
#~ "commands (see /help server)."
|
||||
#~ msgstr ""
|
||||
#~ "Bem-vindo ao WeeChat!\n"
|
||||
#~ "\n"
|
||||
#~ "Se é a primeira vez que usa o WeeChat, recomenda-se que leia pelo menos o "
|
||||
#~ "guia de introdução, e o manual do utilizador se dispõe de algum tempo; "
|
||||
#~ "estes explicam os principais conceitos do WeeChat.\n"
|
||||
#~ "A documentação do WeeChat está disponível em: https://weechat.org/doc/\n"
|
||||
#~ "\n"
|
||||
#~ "Além disso, pode consultar a ajuda incorporada com /help sobre todos os "
|
||||
#~ "comandos e opções (use a tecla Tab para completar o nome).\n"
|
||||
#~ "O comando /iset (script iset.pl) pode ajudá-lo a personalizar o WeeChat: /"
|
||||
#~ "script install iset.pl\n"
|
||||
#~ "\n"
|
||||
#~ "Pode adicionar e conectar-se a um ser servidor de IRC pelos comandos /"
|
||||
#~ "server e /connect (ver /help server)."
|
||||
|
||||
+282
-13
@@ -46,10 +46,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-05-30 14:00+0200\n"
|
||||
"PO-Revision-Date: 2026-05-30 14:02+0200\n"
|
||||
"POT-Creation-Date: 2026-07-04 22:01+0200\n"
|
||||
"PO-Revision-Date: 2026-06-28 08:49+0200\n"
|
||||
"Last-Translator: Érico Nogueira <ericonr@disroot.org>\n"
|
||||
"Language-Team: Portuguese - Brazil <weechat-dev@nongnu.org>\n"
|
||||
"Language-Team: Portuguese (Brazil) <weechat-dev@nongnu.org>\n"
|
||||
"Language: pt_BR\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -1025,6 +1025,54 @@ msgstr "Opção criada: "
|
||||
msgid "%sFunction \"%s\" is not available on this system"
|
||||
msgstr "%s: aviso: dicionário \"%s\" não está disponível em seu sistema"
|
||||
|
||||
#, fuzzy
|
||||
msgid "No theme available"
|
||||
msgstr "Variáveis"
|
||||
|
||||
msgid "Themes:"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid " %s %s%s%s (file)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sKey \"%s\" not found"
|
||||
msgid "%sTheme \"%s\" not found"
|
||||
msgstr "%sTecla \"%s\" não encontrada"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Option \"%s%s%s\":"
|
||||
msgid "Theme \"%s%s%s\":"
|
||||
msgstr "Opção \"%s%s%s\":"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid " file: %s"
|
||||
msgid " source: %s"
|
||||
msgstr " arquivo: %s"
|
||||
|
||||
msgid " source: built-in (in-memory)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "description"
|
||||
msgid " description: %s"
|
||||
msgstr "descrição"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid " file: %s"
|
||||
msgid " date: %s"
|
||||
msgstr " arquivo: %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "WeeChat version"
|
||||
msgid " WeeChat version: %s"
|
||||
msgstr "versão do WeeChat"
|
||||
|
||||
#, c-format
|
||||
msgid " overrides: %d"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sFailed to unset option \"%s\""
|
||||
msgstr "%sFalhou ao desabilitar a opção \"%s\""
|
||||
@@ -3696,6 +3744,77 @@ msgstr ""
|
||||
msgid "number: number of processes to clean"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "list of bar items"
|
||||
msgid "manage color themes"
|
||||
msgstr "lista de itens da barra"
|
||||
|
||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||
msgid ""
|
||||
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||
"<new> || del <name> || info <name>"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "list of filters"
|
||||
msgid ""
|
||||
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||
"marked with \"->\""
|
||||
msgstr "lista de filtros"
|
||||
|
||||
msgid "raw[-backups]: display backup theme files"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||
"shadows any built-in theme of the same name"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[reset]: reset every themable option to its default value (restores the "
|
||||
"original look shipped with WeeChat)"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||
"the name must not match a built-in theme or start with \"backup-\""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "names of filters"
|
||||
msgid "raw[rename]: rename a user theme file"
|
||||
msgstr "nomes dos filtros"
|
||||
|
||||
#, fuzzy
|
||||
msgid "raw[del]: delete a user theme file"
|
||||
msgstr "lista de atalhos"
|
||||
|
||||
msgid ""
|
||||
"raw[info]: display details on a theme (name, description, creation date, "
|
||||
"WeeChat version, number of option overrides)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "name: name of a theme"
|
||||
msgstr "habilita suporte à mouse"
|
||||
|
||||
msgid ""
|
||||
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||
"directory \"themes\" inside the WeeChat configuration directory."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"By default, `/theme apply` command creates a backup of current themable "
|
||||
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||
"backup-<timestamp>`. This is controlled by the option "
|
||||
"weechat.look.theme_backup."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "values for a configuration option"
|
||||
msgid "toggle value of a config option"
|
||||
@@ -4298,6 +4417,15 @@ msgstr ""
|
||||
msgid "names of layouts"
|
||||
msgstr "nomes das disposições"
|
||||
|
||||
msgid "names of themes (built-ins + user files + backups)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of user theme files (without built-ins and backups)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of secured data (file sec.conf, section data)"
|
||||
msgstr ""
|
||||
|
||||
@@ -5267,6 +5395,20 @@ msgstr ""
|
||||
msgid "number of spaces used to display tabs in messages"
|
||||
msgstr "prefixo para mensagens de ação"
|
||||
|
||||
msgid ""
|
||||
"name of the last theme applied with command /theme (set automatically, do "
|
||||
"not change manually); informational only, the theme is not re-applied at "
|
||||
"startup"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"create a backup theme file with the current themable options before applying "
|
||||
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||
"is aborted (no option is changed); the backup file is written to directory "
|
||||
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||
"with the command: `/theme apply backup-<timestamp>`"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"time format for dates converted to strings and displayed in messages (see "
|
||||
"man strftime for date/time specifiers)"
|
||||
@@ -6233,6 +6375,111 @@ msgstr "%s: erro: dicionário \"%s\" não está disponível em seu sistema"
|
||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||
msgstr "Uso de memória (veja \"man mallinfo\" para ajuda):"
|
||||
|
||||
msgid "WeeChat default theme for light-background terminals"
|
||||
msgstr ""
|
||||
|
||||
msgid "Automatic backup"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sKey \"%s\" not found"
|
||||
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||
msgstr "%sTecla \"%s\" não encontrada"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||
msgstr "%s%s: script \"%s\" não carregado"
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: malformed section header"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sWarning: %s, line %d: unknown section identifier (\"%s\")"
|
||||
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||
msgstr "%sAviso: %s, linha %d: identificador de seção desconhecido (\"%s\")"
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: missing '=' separator"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sWarning: %s, line %d: unknown option for section \"%s\": %s"
|
||||
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||
msgstr "%sAviso: %s, linha %d: opção \"%s\" desconhecido para seção \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to parse file \"%s\""
|
||||
msgid "%sFailed to parse theme file \"%s\""
|
||||
msgstr "%s%s: não foi possível interpretar arquivo \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sUnable to create theme backup; aborting apply (disable option "
|
||||
"weechat.look.theme_backup to force)"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sUnable to create theme backup; aborting reset (disable option "
|
||||
"weechat.look.theme_backup to force)"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sName \"%s\" is reserved for automatic backups"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to parse file \"%s\""
|
||||
msgid "%sFailed to save theme \"%s\""
|
||||
msgstr "%s%s: não foi possível interpretar arquivo \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Option \"%s%s%s\":"
|
||||
msgid "Theme saved to: %s"
|
||||
msgstr "Opção \"%s%s%s\":"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sCannot rename built-in theme \"%s\""
|
||||
msgstr "%sErro: não foi possível criar arquivo \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid "%sNew name is the same as old name"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sTheme \"%s\" already exists"
|
||||
msgstr "%sErro: filtro \"%s\" já existe"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||
msgstr "%sErro: não foi possível renomear filtro \"%s\" para \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "Theme \"%s\" renamed to \"%s\""
|
||||
msgstr "Filtro \"%s\" renomeado para \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sCannot delete built-in theme \"%s\""
|
||||
msgstr "%sErro: não foi possível criar arquivo \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to parse file \"%s\""
|
||||
msgid "%sFailed to delete theme \"%s\""
|
||||
msgstr "%s%s: não foi possível interpretar arquivo \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid "Theme deleted: %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||
msgstr ""
|
||||
@@ -6390,22 +6637,37 @@ msgstr ""
|
||||
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||
msgstr "1 se o WeeChat está sendo atualizado (comando `/upgrade`)"
|
||||
|
||||
msgid "Welcome to WeeChat!"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Welcome to WeeChat!\n"
|
||||
"\n"
|
||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||
"main WeeChat concepts.\n"
|
||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||
"\n"
|
||||
"main WeeChat concepts."
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "All WeeChat docs are available at: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Moreover, there is inline help with /help on all commands and options (use "
|
||||
"Tab key to complete the name).\n"
|
||||
"The command /fset can help to customize WeeChat.\n"
|
||||
"\n"
|
||||
"Tab key to complete the name)."
|
||||
msgstr ""
|
||||
|
||||
msgid "The command /fset can help to customize WeeChat."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"You can add and connect to an IRC server with /server and /connect commands "
|
||||
"(see /help server)."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||
"switch back to the default dark theme."
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||
#, c-format
|
||||
msgid ""
|
||||
@@ -7938,7 +8200,8 @@ msgstr "Arquivo de configuração desconhecido \"%s\""
|
||||
|
||||
msgid ""
|
||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||
"string/color/enum)"
|
||||
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||
"options that can be used in themes, regardless of type"
|
||||
msgstr ""
|
||||
|
||||
msgid "> `d`: show only changed options"
|
||||
@@ -15838,6 +16101,10 @@ msgstr "scripts %s carregados:"
|
||||
msgid "script name with extension"
|
||||
msgstr "list de scripts"
|
||||
|
||||
#, fuzzy
|
||||
msgid "comma-separated list of plugin:extension with supported languages"
|
||||
msgstr "lista de dicionários (separados por vírgula) para uso neste buffer"
|
||||
|
||||
#, fuzzy
|
||||
msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
|
||||
msgstr ""
|
||||
@@ -16462,7 +16729,9 @@ msgstr ""
|
||||
msgid "> type `command_run`: command(s) (required)"
|
||||
msgstr ""
|
||||
|
||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
||||
msgid ""
|
||||
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||
"calls"
|
||||
msgstr ""
|
||||
|
||||
msgid "> type `config`: name(s) of option (required)"
|
||||
|
||||
@@ -23,7 +23,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-05-30 14:00+0200\n"
|
||||
"POT-Creation-Date: 2026-07-04 22:01+0200\n"
|
||||
"PO-Revision-Date: 2026-03-08 08:59+0100\n"
|
||||
"Last-Translator: Aleksey V Zapparov AKA ixti <ixti@member.fsf.org>\n"
|
||||
"Language-Team: Russian <weechat-dev@nongnu.org>\n"
|
||||
@@ -1012,6 +1012,48 @@ msgstr "не на канале"
|
||||
msgid "%sFunction \"%s\" is not available on this system"
|
||||
msgstr "%s plugin \"%s\" не найден\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "No theme available"
|
||||
msgstr " . тип: целочисленный\n"
|
||||
|
||||
msgid "Themes:"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid " %s %s%s%s (file)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sTheme \"%s\" not found"
|
||||
msgstr "%s сервер \"%s\" не найден\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "Theme \"%s%s%s\":"
|
||||
msgstr "Ники %s%s%s: %s["
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid " source: %s"
|
||||
msgstr " IRC(%s)\n"
|
||||
|
||||
msgid " source: built-in (in-memory)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid " description: %s"
|
||||
msgstr " . описание: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid " date: %s"
|
||||
msgstr " IRC(%s)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid " WeeChat version: %s"
|
||||
msgstr "слоган WeeChat"
|
||||
|
||||
#, c-format
|
||||
msgid " overrides: %d"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sFailed to unset option \"%s\""
|
||||
msgstr "%s не могу сохранить конфигурационный файл pluginов\n"
|
||||
@@ -3535,6 +3577,75 @@ msgstr ""
|
||||
msgid "number: number of processes to clean"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "manage color themes"
|
||||
msgstr "Список сокращений:\n"
|
||||
|
||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||
msgid ""
|
||||
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||
"<new> || del <name> || info <name>"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||
"marked with \"->\""
|
||||
msgstr "Список сокращений:\n"
|
||||
|
||||
msgid "raw[-backups]: display backup theme files"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||
"shadows any built-in theme of the same name"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[reset]: reset every themable option to its default value (restores the "
|
||||
"original look shipped with WeeChat)"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||
"the name must not match a built-in theme or start with \"backup-\""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "raw[rename]: rename a user theme file"
|
||||
msgstr "Список сокращений:\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "get/set channel topic"
|
||||
msgid "raw[del]: delete a user theme file"
|
||||
msgstr "получить/установить тему канала"
|
||||
|
||||
msgid ""
|
||||
"raw[info]: display details on a theme (name, description, creation date, "
|
||||
"WeeChat version, number of option overrides)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "name: name of a theme"
|
||||
msgstr "Список сокращений:\n"
|
||||
|
||||
msgid ""
|
||||
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||
"directory \"themes\" inside the WeeChat configuration directory."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"By default, `/theme apply` command creates a backup of current themable "
|
||||
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||
"backup-<timestamp>`. This is controlled by the option "
|
||||
"weechat.look.theme_backup."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "toggle value of a config option"
|
||||
msgstr "Не найден параметр\n"
|
||||
@@ -4091,6 +4202,15 @@ msgstr ""
|
||||
msgid "names of layouts"
|
||||
msgstr "Список сокращений:\n"
|
||||
|
||||
msgid "names of themes (built-ins + user files + backups)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of user theme files (without built-ins and backups)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of secured data (file sec.conf, section data)"
|
||||
msgstr ""
|
||||
|
||||
@@ -4940,6 +5060,20 @@ msgstr ""
|
||||
msgid "number of spaces used to display tabs in messages"
|
||||
msgstr "ответить на ping"
|
||||
|
||||
msgid ""
|
||||
"name of the last theme applied with command /theme (set automatically, do "
|
||||
"not change manually); informational only, the theme is not re-applied at "
|
||||
"startup"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"create a backup theme file with the current themable options before applying "
|
||||
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||
"is aborted (no option is changed); the backup file is written to directory "
|
||||
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||
"with the command: `/theme apply backup-<timestamp>`"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"time format for dates converted to strings and displayed in messages (see "
|
||||
@@ -5903,6 +6037,104 @@ msgstr "%s plugin \"%s\" не найден\n"
|
||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||
msgstr ""
|
||||
|
||||
msgid "WeeChat default theme for light-background terminals"
|
||||
msgstr ""
|
||||
|
||||
msgid "Automatic backup"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||
msgstr "%s сервер \"%s\" не найден\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||
msgstr "%s сервер \"%s\" не найден\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: malformed section header"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||
msgstr "%s %s, строка %d: неизвестный идентификатор секции (\"%s\")\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: missing '=' separator"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||
msgstr "%s %s, строка %d: неизвестный идентификатор секции (\"%s\")\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sFailed to parse theme file \"%s\""
|
||||
msgstr "Не могу записать лог-файл \"%s\"\n"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sUnable to create theme backup; aborting apply (disable option "
|
||||
"weechat.look.theme_backup to force)"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sUnable to create theme backup; aborting reset (disable option "
|
||||
"weechat.look.theme_backup to force)"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sName \"%s\" is reserved for automatic backups"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sFailed to save theme \"%s\""
|
||||
msgstr "Не могу записать лог-файл \"%s\"\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "Theme saved to: %s"
|
||||
msgstr "Ники %s%s%s: %s["
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sCannot rename built-in theme \"%s\""
|
||||
msgstr "%s не могу создать файл \"%s\"\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%sNew name is the same as old name"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sTheme \"%s\" already exists"
|
||||
msgstr "%s игнорирование уже существует\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||
msgstr "%s неизвестный параметр для команды \"%s\"\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "Theme \"%s\" renamed to \"%s\""
|
||||
msgstr "команда users отключена"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sCannot delete built-in theme \"%s\""
|
||||
msgstr "%s не могу создать файл \"%s\"\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sFailed to delete theme \"%s\""
|
||||
msgstr "Не могу записать лог-файл \"%s\"\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Theme deleted: %s"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||
msgstr "Обновляю WeeChat...\n"
|
||||
@@ -6062,22 +6294,37 @@ msgstr ""
|
||||
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||
msgstr ""
|
||||
|
||||
msgid "Welcome to WeeChat!"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Welcome to WeeChat!\n"
|
||||
"\n"
|
||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||
"main WeeChat concepts.\n"
|
||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||
"\n"
|
||||
"main WeeChat concepts."
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "All WeeChat docs are available at: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Moreover, there is inline help with /help on all commands and options (use "
|
||||
"Tab key to complete the name).\n"
|
||||
"The command /fset can help to customize WeeChat.\n"
|
||||
"\n"
|
||||
"Tab key to complete the name)."
|
||||
msgstr ""
|
||||
|
||||
msgid "The command /fset can help to customize WeeChat."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"You can add and connect to an IRC server with /server and /connect commands "
|
||||
"(see /help server)."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||
"switch back to the default dark theme."
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||
#, c-format
|
||||
msgid ""
|
||||
@@ -7567,7 +7814,8 @@ msgstr "перезагрузить конфигурационный файл с
|
||||
|
||||
msgid ""
|
||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||
"string/color/enum)"
|
||||
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||
"options that can be used in themes, regardless of type"
|
||||
msgstr ""
|
||||
|
||||
msgid "> `d`: show only changed options"
|
||||
@@ -15367,6 +15615,9 @@ msgstr "FIFO pipe закрыт\n"
|
||||
msgid "script name with extension"
|
||||
msgstr "Список сокращений:\n"
|
||||
|
||||
msgid "comma-separated list of plugin:extension with supported languages"
|
||||
msgstr ""
|
||||
|
||||
msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
|
||||
msgstr ""
|
||||
|
||||
@@ -15959,7 +16210,9 @@ msgstr ""
|
||||
msgid "> type `command_run`: command(s) (required)"
|
||||
msgstr ""
|
||||
|
||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
||||
msgid ""
|
||||
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||
"calls"
|
||||
msgstr ""
|
||||
|
||||
msgid "> type `config`: name(s) of option (required)"
|
||||
|
||||
@@ -22,10 +22,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-05-30 14:00+0200\n"
|
||||
"PO-Revision-Date: 2026-05-30 14:02+0200\n"
|
||||
"POT-Creation-Date: 2026-07-04 22:01+0200\n"
|
||||
"PO-Revision-Date: 2026-06-28 08:52+0200\n"
|
||||
"Last-Translator: Ivan Pešić <ivan.pesic@gmail.com>\n"
|
||||
"Language-Team: Serbian <weechat-dev@nongnu.org>\n"
|
||||
"Language-Team: Serbian <ivan.pesic@gmail.com>\n"
|
||||
"Language: sr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -976,6 +976,55 @@ msgstr "Креирана опција: "
|
||||
msgid "%sFunction \"%s\" is not available on this system"
|
||||
msgstr "%sФункција „%s” није доступна на овом систему"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "not available"
|
||||
msgid "No theme available"
|
||||
msgstr "није доступно"
|
||||
|
||||
msgid "Themes:"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid " %s %s%s%s (file)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sKey \"%s\" not found"
|
||||
msgid "%sTheme \"%s\" not found"
|
||||
msgstr "%sНије пронађен тастер „%s”"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Option \"%s%s%s\":"
|
||||
msgid "Theme \"%s%s%s\":"
|
||||
msgstr "Опција „%s%s%s”:"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid " file: %s"
|
||||
msgid " source: %s"
|
||||
msgstr " фајл: %s"
|
||||
|
||||
msgid " source: built-in (in-memory)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "description"
|
||||
msgid " description: %s"
|
||||
msgstr "опис"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid " file: %s"
|
||||
msgid " date: %s"
|
||||
msgstr " фајл: %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "WeeChat version"
|
||||
msgid " WeeChat version: %s"
|
||||
msgstr "верзија програма WeeChat"
|
||||
|
||||
#, c-format
|
||||
msgid " overrides: %d"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sFailed to unset option \"%s\""
|
||||
msgstr "%sНије успело уклањање опције „%s”"
|
||||
@@ -3853,6 +3902,85 @@ msgstr ""
|
||||
msgid "number: number of processes to clean"
|
||||
msgstr "број: број процеса који треба да се очисти"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "manage custom bar items"
|
||||
msgid "manage color themes"
|
||||
msgstr "управљање прилагођеним ставкама траке"
|
||||
|
||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||
msgid ""
|
||||
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||
"<new> || del <name> || info <name>"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "raw[list]: list remote relay servers (without argument, this list is "
|
||||
#| "displayed)"
|
||||
msgid ""
|
||||
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||
"marked with \"->\""
|
||||
msgstr ""
|
||||
"raw[list]: листа сервера релеја удаљених (без аргумента се приказује ова "
|
||||
"листа)"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "raw[tags]: display tags for lines"
|
||||
msgid "raw[-backups]: display backup theme files"
|
||||
msgstr "raw[tags]: исписује ознаке за линије"
|
||||
|
||||
msgid ""
|
||||
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||
"shadows any built-in theme of the same name"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[reset]: reset every themable option to its default value (restores the "
|
||||
"original look shipped with WeeChat)"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||
"the name must not match a built-in theme or start with \"backup-\""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "raw[rename]: rename a filter"
|
||||
msgid "raw[rename]: rename a user theme file"
|
||||
msgstr "raw[rename]: мења име филтеру"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "raw[del]: delete a server"
|
||||
msgid "raw[del]: delete a user theme file"
|
||||
msgstr "raw[del]: брисање сервера"
|
||||
|
||||
msgid ""
|
||||
"raw[info]: display details on a theme (name, description, creation date, "
|
||||
"WeeChat version, number of option overrides)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "name: name of trigger"
|
||||
msgid "name: name of a theme"
|
||||
msgstr "име: име окидача"
|
||||
|
||||
msgid ""
|
||||
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||
"directory \"themes\" inside the WeeChat configuration directory."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"By default, `/theme apply` command creates a backup of current themable "
|
||||
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||
"backup-<timestamp>`. This is controlled by the option "
|
||||
"weechat.look.theme_backup."
|
||||
msgstr ""
|
||||
|
||||
msgid "toggle value of a config option"
|
||||
msgstr "пребацује вредност опције конфигурације"
|
||||
|
||||
@@ -4474,6 +4602,15 @@ msgstr "површине („chat” или име траке) за слобод
|
||||
msgid "names of layouts"
|
||||
msgstr "имена распореда"
|
||||
|
||||
msgid "names of themes (built-ins + user files + backups)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of user theme files (without built-ins and backups)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of secured data (file sec.conf, section data)"
|
||||
msgstr "имена обезбеђених података (фајл sec.conf, одељак data)"
|
||||
|
||||
@@ -5607,6 +5744,20 @@ msgstr ""
|
||||
msgid "number of spaces used to display tabs in messages"
|
||||
msgstr "број размака који се користи за приказ табулатора у порукама"
|
||||
|
||||
msgid ""
|
||||
"name of the last theme applied with command /theme (set automatically, do "
|
||||
"not change manually); informational only, the theme is not re-applied at "
|
||||
"startup"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"create a backup theme file with the current themable options before applying "
|
||||
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||
"is aborted (no option is changed); the backup file is written to directory "
|
||||
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||
"with the command: `/theme apply backup-<timestamp>`"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"time format for dates converted to strings and displayed in messages (see "
|
||||
"man strftime for date/time specifiers)"
|
||||
@@ -6661,6 +6812,122 @@ msgstr "Системска функција „%s” није доступна"
|
||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||
msgstr "Употреба ресурса (за помоћ погледајте „man getrusage”):"
|
||||
|
||||
msgid "WeeChat default theme for light-background terminals"
|
||||
msgstr ""
|
||||
|
||||
msgid "Automatic backup"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sKey \"%s\" not found"
|
||||
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||
msgstr "%sНије пронађен тастер „%s”"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: script \"%s\" is not installed"
|
||||
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||
msgstr "%s: скрипта „%s” није инсталирана"
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: malformed section header"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sWarning: %s, line %d: ignoring unknown section identifier (\"%s\")"
|
||||
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||
msgstr ""
|
||||
"%sУпозорење: %s, линија %d: игнорише се непознати идентификатор одељка („%s”)"
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: missing '=' separator"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid ""
|
||||
#| "%sWarning: %s, line %d: ignoring unknown option for section \"%s\": %s"
|
||||
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||
msgstr ""
|
||||
"%sУпозорење: %s, линија %d: игнорише се непозната опција за одељак „%s”: %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to parse file \"%s\""
|
||||
msgid "%sFailed to parse theme file \"%s\""
|
||||
msgstr "%s%s: није успело парсирање фајла „%s”"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sUnable to create theme backup; aborting apply (disable option "
|
||||
"weechat.look.theme_backup to force)"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sUnable to create theme backup; aborting reset (disable option "
|
||||
"weechat.look.theme_backup to force)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sBuffer name \"%s\" is reserved for WeeChat"
|
||||
msgid "%sName \"%s\" is reserved for automatic backups"
|
||||
msgstr "%sИме бафера „%s” је резервисано за програм WeeChat"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sBuffer name \"%s\" is reserved for WeeChat"
|
||||
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||
msgstr "%sИме бафера „%s” је резервисано за програм WeeChat"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to parse file \"%s\""
|
||||
msgid "%sFailed to save theme \"%s\""
|
||||
msgstr "%s%s: није успело парсирање фајла „%s”"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Option \"%s%s%s\":"
|
||||
msgid "Theme saved to: %s"
|
||||
msgstr "Опција „%s%s%s”:"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sCannot create file \"%s\""
|
||||
msgid "%sCannot rename built-in theme \"%s\""
|
||||
msgstr "%sНе може да се креира фајл „%s”"
|
||||
|
||||
#, c-format
|
||||
msgid "%sNew name is the same as old name"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sBar \"%s\" already exists"
|
||||
msgid "%sTheme \"%s\" already exists"
|
||||
msgstr "%sТрака „%s” већ постоји"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sUnable to rename filter \"%s\" to \"%s\""
|
||||
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||
msgstr "%sНије успела промена име филтера „%s” на „%s”"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Trigger \"%s\" renamed to \"%s\""
|
||||
msgid "Theme \"%s\" renamed to \"%s\""
|
||||
msgstr "Окидачу „%s” је промењено име у „%s”"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sCannot create file \"%s\""
|
||||
msgid "%sCannot delete built-in theme \"%s\""
|
||||
msgstr "%sНе може да се креира фајл „%s”"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to parse file \"%s\""
|
||||
msgid "%sFailed to delete theme \"%s\""
|
||||
msgstr "%s%s: није успело парсирање фајла „%s”"
|
||||
|
||||
#, c-format
|
||||
msgid "Theme deleted: %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||
msgstr "%sГрешка приликом ажурирања програма WeeChat фајлом „%s”:"
|
||||
@@ -6820,35 +7087,36 @@ msgstr "Крај URL трансфера ’%s’, трансфер је заус
|
||||
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||
msgstr "WeeChat се извршава у режиму без интерфејса (ctrl-c за излаз)."
|
||||
|
||||
msgid "Welcome to WeeChat!"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Welcome to WeeChat!\n"
|
||||
"\n"
|
||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||
"main WeeChat concepts.\n"
|
||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||
"\n"
|
||||
"main WeeChat concepts."
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "All WeeChat docs are available at: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Moreover, there is inline help with /help on all commands and options (use "
|
||||
"Tab key to complete the name).\n"
|
||||
"The command /fset can help to customize WeeChat.\n"
|
||||
"\n"
|
||||
"Tab key to complete the name)."
|
||||
msgstr ""
|
||||
|
||||
msgid "The command /fset can help to customize WeeChat."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"You can add and connect to an IRC server with /server and /connect commands "
|
||||
"(see /help server)."
|
||||
msgstr ""
|
||||
"Добродошли у WeeChat!\n"
|
||||
"\n"
|
||||
"Ако се тек упознајете са програмом WeeChat, препоручује се да прочитате "
|
||||
"барем водич за брзи почетак, и корисничко упутство ако имате више времена; "
|
||||
"они објашњавају основне концепте програма WeeChat.\n"
|
||||
"Комплетна WeeChat документација је доступна на адреси: https://weechat.org/"
|
||||
"doc/\n"
|
||||
"\n"
|
||||
"Такође је доступна и активна помоћ са /help за све команде и опције "
|
||||
"(користите тастер Tab да довршите име).\n"
|
||||
"Команда /fset може да вам помогне за прилагођавање програма WeeChat.\n"
|
||||
"\n"
|
||||
"Командама /server и /connect додајете и повезујете се на IRC сервер "
|
||||
"(погледајте /help server)."
|
||||
|
||||
msgid ""
|
||||
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||
"switch back to the default dark theme."
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||
#, c-format
|
||||
@@ -8597,9 +8865,14 @@ msgstr "> `xxx`: приказивање само опција са „xxx” у
|
||||
msgid "> `f:xxx`: show only configuration file \"xxx\""
|
||||
msgstr "> `f:xxx`: приказивање само конфигурационог фајла „xxx”"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/"
|
||||
#| "integer/string/color/enum)"
|
||||
msgid ""
|
||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||
"string/color/enum)"
|
||||
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||
"options that can be used in themes, regardless of type"
|
||||
msgstr ""
|
||||
"> `t:xxx`: приказивање само типа „xxx” (bool/int/str/col/enum или boolean/"
|
||||
"integer/string/color/enum)"
|
||||
@@ -12664,16 +12937,14 @@ msgstr "%s%s: нисте повезани са сервером"
|
||||
msgid "%s%s: this buffer is not a channel!"
|
||||
msgstr "%s%s: овај бафер није канал!"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid ""
|
||||
#| "%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join "
|
||||
#| "channel, ($)=refresh, (q)=close buffer"
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
|
||||
"| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
|
||||
msgstr ""
|
||||
"%d канала (укупно: %d) | Филтер: %s | Сортирање: %s | Тастер(унос): ctrl+j= "
|
||||
"приступ каналу, ($)=освежавање, (q)=затварање бафера"
|
||||
"%d канала (укупно: %d) | Филтер: %s | Сортирање: %s | Тастери: "
|
||||
"ctrl+j=приступ каналу | Унос: $=освежавање, s:x,y=сортирање, *=ресет "
|
||||
"филтера, q=затварање бафера"
|
||||
|
||||
msgid "Empty list of channels, try \"$\" to refresh list"
|
||||
msgstr "Празна листа канала, покушајте „$” да освежите листу"
|
||||
@@ -15679,14 +15950,6 @@ msgstr ""
|
||||
"relay.network.allow_empty_password) (напомена: садржај се израчунава, "
|
||||
"погледајте /help eval)"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "comma separated list of hash algorithms used for password authentication "
|
||||
#| "in weechat protocol, among these values: \"plain\" (password in plain "
|
||||
#| "text, not hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", "
|
||||
#| "\"pbkdf2+sha512\"), \"*\" means all algorithms, a name beginning with \"!"
|
||||
#| "\" is a negative value to prevent an algorithm from being used, wildcard "
|
||||
#| "\"*\" is allowed in names (examples: \"*\", \"pbkdf2*\", \"*,!plain\")"
|
||||
msgid ""
|
||||
"comma separated list of hash algorithms used for password authentication in "
|
||||
"\"api\" and \"weechat\" protocols, among these values: \"plain\" (password "
|
||||
@@ -15696,28 +15959,22 @@ msgid ""
|
||||
"is allowed in names (examples: \"*\", \"pbkdf2*\", \"*,!plain\")"
|
||||
msgstr ""
|
||||
"листа хеш алгоритама раздвојених запетама који се користе за аутентификацију "
|
||||
"лозинке у weechat протоколу, могу бити: „plain” (лозинка је чисти текст, не "
|
||||
"хешира се), „sha256”, „sha512”, „pbkdf2+sha256”, „pbkdf2+sha512”), „*” значи "
|
||||
"сви алгоритми, име које почиње са „!” је негативна вредност којим се "
|
||||
"спречава употреба тог алгоритма, у именима је дозвољена употреба џокера „*” "
|
||||
"(примери: „*”, „pbkdf2*”, „*,!plain”)"
|
||||
"лозинке у „api” и „weechat” протоколима, који могу бити: „plain” (лозинка је "
|
||||
"чисти текст, не хешира се), „sha256”, „sha512”, „pbkdf2+sha256”, "
|
||||
"„pbkdf2+sha512”), „*” значи сви алгоритми, име које почиње са „!” је "
|
||||
"негативна вредност којим се спречава употреба тог алгоритма, у именима је "
|
||||
"дозвољена употреба џокера „*” (примери: „*”, „pbkdf2*”, „*,!plain”)"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "number of iterations asked to the client in weechat protocol when a "
|
||||
#| "hashed password with algorithm PBKDF2 is used for authentication; more "
|
||||
#| "iterations is better in term of security but is slower to compute; this "
|
||||
#| "number should not be too high if your CPU is slow"
|
||||
msgid ""
|
||||
"number of iterations asked to the client in \"api\" and \"weechat\" "
|
||||
"protocols when a hashed password with algorithm PBKDF2 is used for "
|
||||
"authentication; more iterations is better in term of security but is slower "
|
||||
"to compute; this number should not be too high if your CPU is slow"
|
||||
msgstr ""
|
||||
"број итерација који се захтева од клијента у weechat протоколу када се за "
|
||||
"аутентификацију користи лозинка хеширана PBKDF2 алгоритмом ; више итерација "
|
||||
"је боље у смислу безбедности, али је спорије за израчунавање; ако је ваш CPU "
|
||||
"спор, овај број не би требало да буде сувише велики"
|
||||
"број итерација који се захтева од клијента у „api” и „weechat” протоколима "
|
||||
"када се за аутентификацију користи лозинка хеширана PBKDF2 алгоритмом; више "
|
||||
"итерација је боље у смислу безбедности, али је спорије за израчунавање; ако "
|
||||
"је ваш CPU спор, овај број не би требало да буде сувише велики"
|
||||
|
||||
msgid ""
|
||||
"number of seconds to allow before and after the current time for the hash of "
|
||||
@@ -16303,22 +16560,17 @@ msgstr "(ништа)"
|
||||
msgid "Alt+key/input: v=back to list d=jump to diff"
|
||||
msgstr "Alt+тастер/унос: v=назад на листу d=скок на diff"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid ""
|
||||
#| "%d/%d scripts (filter: %s) | Sort: %s | Alt+key/input: i=install, "
|
||||
#| "r=remove, l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view "
|
||||
#| "script | Input: q=close, $=refresh, s:x,y=sort, words=filter, *=reset "
|
||||
#| "filter | Mouse: left=select, right=install/remove"
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%d/%d scripts | Filter: %s | Sort: %s | Alt+key/input: i=install, r=remove, "
|
||||
"l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: "
|
||||
"$=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer | Mouse: "
|
||||
"left=select, right=install/remove"
|
||||
msgstr ""
|
||||
"%d/%d скрипти (филтер: %s) | Сортирање: %s | Alt+тастер/унос: i=инсталација, "
|
||||
"%d/%d скрипти | Филтер: %s | Сортирање: %s | Alt+тастер/унос: i=инсталација, "
|
||||
"r=уклањање, l=учитавање, L=поновно учитавање, u=уклањање из меморије, "
|
||||
"A=аутоучитавање, h=задржавање, v=преглед скрипте | Унос: q=затварање, "
|
||||
"$=освежавање, s:x,y=сортирање, речи=филтер, *=ресет филтера | Миш: "
|
||||
"$=освежавање, s:x,y=сортирање, words=филтер, *=ресет филтера | Миш: "
|
||||
"леви=избор, десни=инсталација/уклањање"
|
||||
|
||||
msgid "Scripts"
|
||||
@@ -16695,6 +16947,9 @@ msgstr "1 ако је скрипта учитана"
|
||||
msgid "script name with extension"
|
||||
msgstr "име скрипте са екстензијом"
|
||||
|
||||
msgid "comma-separated list of plugin:extension with supported languages"
|
||||
msgstr "листа додатак:екстензија са подржаним језицима раздвојених запетама"
|
||||
|
||||
msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
|
||||
msgstr "име скрипте са екстензијом (дозвољен је џокер „*”) (није обавезно)"
|
||||
|
||||
@@ -17328,8 +17583,12 @@ msgstr ""
|
||||
msgid "> type `command_run`: command(s) (required)"
|
||||
msgstr "> тип `command_run`: команд(а/е) (обавезно)"
|
||||
|
||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
||||
msgstr "> тип `timer`: интервал (обавезан), поравнање на секунди, макс позива"
|
||||
msgid ""
|
||||
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||
"calls"
|
||||
msgstr ""
|
||||
"> тип `timer`: интервал (обавезан, у милисекундама), поравнање на секунди, "
|
||||
"макс позива"
|
||||
|
||||
msgid "> type `config`: name(s) of option (required)"
|
||||
msgstr "> тип `config`: име(на) опције (обавезно)"
|
||||
@@ -18208,3 +18467,33 @@ msgid ""
|
||||
msgstr ""
|
||||
"%s%s: не може да се прихвати настављање фајла „%s” (порт: %d, почетна "
|
||||
"позиција: %llu): xfer није пронађен или није спреман за трансфер"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Welcome to WeeChat!\n"
|
||||
#~ "\n"
|
||||
#~ "If you are discovering WeeChat, it is recommended to read at least the "
|
||||
#~ "quickstart guide, and the user's guide if you have some time; they "
|
||||
#~ "explain main WeeChat concepts.\n"
|
||||
#~ "All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||
#~ "\n"
|
||||
#~ "Moreover, there is inline help with /help on all commands and options "
|
||||
#~ "(use Tab key to complete the name).\n"
|
||||
#~ "The command /fset can help to customize WeeChat.\n"
|
||||
#~ "\n"
|
||||
#~ "You can add and connect to an IRC server with /server and /connect "
|
||||
#~ "commands (see /help server)."
|
||||
#~ msgstr ""
|
||||
#~ "Добродошли у WeeChat!\n"
|
||||
#~ "\n"
|
||||
#~ "Ако се тек упознајете са програмом WeeChat, препоручује се да прочитате "
|
||||
#~ "барем водич за брзи почетак, и корисничко упутство ако имате више "
|
||||
#~ "времена; они објашњавају основне концепте програма WeeChat.\n"
|
||||
#~ "Комплетна WeeChat документација је доступна на адреси: https://"
|
||||
#~ "weechat.org/doc/\n"
|
||||
#~ "\n"
|
||||
#~ "Такође је доступна и активна помоћ са /help за све команде и опције "
|
||||
#~ "(користите тастер Tab да довршите име).\n"
|
||||
#~ "Команда /fset може да вам помогне за прилагођавање програма WeeChat.\n"
|
||||
#~ "\n"
|
||||
#~ "Командама /server и /connect додајете и повезујете се на IRC сервер "
|
||||
#~ "(погледајте /help server)."
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# SPDX-FileCopyrightText: 2013 Hasan Kiran <sunder67@hotmail.com>
|
||||
# SPDX-FileCopyrightText: 2020-2025 Emir SARI <emir_sari@icloud.com>
|
||||
# SPDX-FileCopyrightText: 2020-2026 Emir SARI <emir_sari@icloud.com>
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
#
|
||||
@@ -23,10 +23,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-05-30 14:00+0200\n"
|
||||
"PO-Revision-Date: 2026-05-30 14:02+0200\n"
|
||||
"POT-Creation-Date: 2026-07-04 22:01+0200\n"
|
||||
"PO-Revision-Date: 2026-06-28 08:53+0200\n"
|
||||
"Last-Translator: Emir SARI <emir_sari@icloud.com>\n"
|
||||
"Language-Team: Turkish <weechat-dev@nongnu.org>\n"
|
||||
"Language-Team: Turkish <emir_sari@icloud.com>\n"
|
||||
"Language: tr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -971,6 +971,55 @@ msgstr "Seçenek oluşturuldu: "
|
||||
msgid "%sFunction \"%s\" is not available on this system"
|
||||
msgstr "%s\"%s\" işlevi sisteminizde kullanılabilir değil"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "not available"
|
||||
msgid "No theme available"
|
||||
msgstr "kullanılamıyor"
|
||||
|
||||
msgid "Themes:"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid " %s %s%s%s (file)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sKey \"%s\" not found"
|
||||
msgid "%sTheme \"%s\" not found"
|
||||
msgstr "%s\"%s\" düğmesi bulunamadı"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Option \"%s%s%s\":"
|
||||
msgid "Theme \"%s%s%s\":"
|
||||
msgstr "\"%s%s%s\" seçeneği:"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid " file: %s"
|
||||
msgid " source: %s"
|
||||
msgstr " dosya: %s"
|
||||
|
||||
msgid " source: built-in (in-memory)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "description"
|
||||
msgid " description: %s"
|
||||
msgstr "açıklama"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid " file: %s"
|
||||
msgid " date: %s"
|
||||
msgstr " dosya: %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "WeeChat version"
|
||||
msgid " WeeChat version: %s"
|
||||
msgstr "WeeChat sürümü"
|
||||
|
||||
#, c-format
|
||||
msgid " overrides: %d"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sFailed to unset option \"%s\""
|
||||
msgstr "%s\"%s\" seçeneği kaldırılamadı"
|
||||
@@ -3712,6 +3761,81 @@ msgstr ""
|
||||
msgid "number: number of processes to clean"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "manage custom bar items"
|
||||
msgid "manage color themes"
|
||||
msgstr "özel çubuk ögelerini yönet"
|
||||
|
||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||
msgid ""
|
||||
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||
"<new> || del <name> || info <name>"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "list of filters"
|
||||
msgid ""
|
||||
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||
"marked with \"->\""
|
||||
msgstr "süzgeçlerin listesi"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "raw[tags]: display tags for lines"
|
||||
msgid "raw[-backups]: display backup theme files"
|
||||
msgstr "raw[tags]: Satırlar için künyeleri görüntüle"
|
||||
|
||||
msgid ""
|
||||
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||
"shadows any built-in theme of the same name"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[reset]: reset every themable option to its default value (restores the "
|
||||
"original look shipped with WeeChat)"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||
"the name must not match a built-in theme or start with \"backup-\""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "raw[rename]: rename a filter"
|
||||
msgid "raw[rename]: rename a user theme file"
|
||||
msgstr "raw[rename]: Bir süzgeci yeniden adlandır"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "get/set channel topic"
|
||||
msgid "raw[del]: delete a user theme file"
|
||||
msgstr "kanal konusunu al/ayarla"
|
||||
|
||||
msgid ""
|
||||
"raw[info]: display details on a theme (name, description, creation date, "
|
||||
"WeeChat version, number of option overrides)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "name: name of trigger"
|
||||
msgid "name: name of a theme"
|
||||
msgstr "ad: Tetiğin adı"
|
||||
|
||||
msgid ""
|
||||
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||
"directory \"themes\" inside the WeeChat configuration directory."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"By default, `/theme apply` command creates a backup of current themable "
|
||||
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||
"backup-<timestamp>`. This is controlled by the option "
|
||||
"weechat.look.theme_backup."
|
||||
msgstr ""
|
||||
|
||||
msgid "toggle value of a config option"
|
||||
msgstr "bir yapılandırma seçeneğinin değerini aç/kapat"
|
||||
|
||||
@@ -4304,6 +4428,15 @@ msgstr "serbest imleç hareketi için alanlar (\"chat\" veya çubuk adı)"
|
||||
msgid "names of layouts"
|
||||
msgstr "dizilim adları"
|
||||
|
||||
msgid "names of themes (built-ins + user files + backups)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of user theme files (without built-ins and backups)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of secured data (file sec.conf, section data)"
|
||||
msgstr "güvenli veri adları (sec.conf dosyası, bölüm verisi)"
|
||||
|
||||
@@ -5431,6 +5564,20 @@ msgstr ""
|
||||
msgid "number of spaces used to display tabs in messages"
|
||||
msgstr "iletilerdeki sekmeleri görüntülemek için kullanılan boşluk sayısı"
|
||||
|
||||
msgid ""
|
||||
"name of the last theme applied with command /theme (set automatically, do "
|
||||
"not change manually); informational only, the theme is not re-applied at "
|
||||
"startup"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"create a backup theme file with the current themable options before applying "
|
||||
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||
"is aborted (no option is changed); the backup file is written to directory "
|
||||
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||
"with the command: `/theme apply backup-<timestamp>`"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"time format for dates converted to strings and displayed in messages (see "
|
||||
"man strftime for date/time specifiers)"
|
||||
@@ -6465,6 +6612,119 @@ msgstr "Sistem işlevi \"%s\" kullanılabilir değil"
|
||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||
msgstr "Özkaynak kullanımı (yardım için bkz. \"man getrusage\"):"
|
||||
|
||||
msgid "WeeChat default theme for light-background terminals"
|
||||
msgstr ""
|
||||
|
||||
msgid "Automatic backup"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sKey \"%s\" not found"
|
||||
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||
msgstr "%s\"%s\" düğmesi bulunamadı"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: script \"%s\" is not installed"
|
||||
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||
msgstr "%s: \"%s\" betiği kurulu değil"
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: malformed section header"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sWarning: %s, line %d: unknown section identifier (\"%s\")"
|
||||
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||
msgstr "%sUyarı: %s, %d. satır: Bilinmeyen bölüm tanımlayıcısı (\"%s\")"
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: missing '=' separator"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sWarning: %s, line %d: unknown option for section \"%s\": %s"
|
||||
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||
msgstr "%sUyarı: %s, %d. satır: \"%s\" bölümü için bilinmeyen seçenek: %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to parse file \"%s\""
|
||||
msgid "%sFailed to parse theme file \"%s\""
|
||||
msgstr "%s%s: \"%s\" dosyası ayrıştırılamıyor"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sUnable to create theme backup; aborting apply (disable option "
|
||||
"weechat.look.theme_backup to force)"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sUnable to create theme backup; aborting reset (disable option "
|
||||
"weechat.look.theme_backup to force)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sBuffer name \"%s\" is reserved for WeeChat"
|
||||
msgid "%sName \"%s\" is reserved for automatic backups"
|
||||
msgstr "%s\"%s\" arabellek adı WeeChat için ayrılmış"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sBuffer name \"%s\" is reserved for WeeChat"
|
||||
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||
msgstr "%s\"%s\" arabellek adı WeeChat için ayrılmış"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to parse file \"%s\""
|
||||
msgid "%sFailed to save theme \"%s\""
|
||||
msgstr "%s%s: \"%s\" dosyası ayrıştırılamıyor"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Option \"%s%s%s\":"
|
||||
msgid "Theme saved to: %s"
|
||||
msgstr "\"%s%s%s\" seçeneği:"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sCannot create file \"%s\""
|
||||
msgid "%sCannot rename built-in theme \"%s\""
|
||||
msgstr "%s\"%s\" dosyası oluşturulamıyor"
|
||||
|
||||
#, c-format
|
||||
msgid "%sNew name is the same as old name"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sBar \"%s\" already exists"
|
||||
msgid "%sTheme \"%s\" already exists"
|
||||
msgstr "%s\"%s\" çubuğu halihazırda var"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sUnable to rename filter \"%s\" to \"%s\""
|
||||
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||
msgstr "%s\"%s\" süzgeci \"%s\" olarak yeniden adlandırılamıyor"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Trigger \"%s\" renamed to \"%s\""
|
||||
msgid "Theme \"%s\" renamed to \"%s\""
|
||||
msgstr "\"%s\" tetiği \"%s\" olarak yeniden adlandırıldı"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sCannot create file \"%s\""
|
||||
msgid "%sCannot delete built-in theme \"%s\""
|
||||
msgstr "%s\"%s\" dosyası oluşturulamıyor"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to parse file \"%s\""
|
||||
msgid "%sFailed to delete theme \"%s\""
|
||||
msgstr "%s%s: \"%s\" dosyası ayrıştırılamıyor"
|
||||
|
||||
#, c-format
|
||||
msgid "Theme deleted: %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||
msgstr "%sWeeChat'i \"%s\" dosyası ile yükseltirken hata:"
|
||||
@@ -6623,34 +6883,36 @@ msgstr "\"%s\" URL aktarımının sonu; aktarım durduruldu"
|
||||
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||
msgstr "WeeChat başsız kipte çalışıyor (çıkmak için ctrl-c yapın)."
|
||||
|
||||
msgid "Welcome to WeeChat!"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Welcome to WeeChat!\n"
|
||||
"\n"
|
||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||
"main WeeChat concepts.\n"
|
||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||
"\n"
|
||||
"main WeeChat concepts."
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "All WeeChat docs are available at: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Moreover, there is inline help with /help on all commands and options (use "
|
||||
"Tab key to complete the name).\n"
|
||||
"The command /fset can help to customize WeeChat.\n"
|
||||
"\n"
|
||||
"Tab key to complete the name)."
|
||||
msgstr ""
|
||||
|
||||
msgid "The command /fset can help to customize WeeChat."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"You can add and connect to an IRC server with /server and /connect commands "
|
||||
"(see /help server)."
|
||||
msgstr ""
|
||||
"WeeChat'e hoş geldiniz!\n"
|
||||
"\n"
|
||||
"WeeChat'e yeniyseniz hızlı başlangıç kılavuzunu veya biraz daha vaktiniz "
|
||||
"varsa kullanıcı kılavuzunu okumanız önerilir; bu belgeler WeeChat'in temel "
|
||||
"konseptlerini açıklarlar.\n"
|
||||
"Tüm WeeChat belgelendirmesi https://weechat.org/doc/ adresinde mevcuttur.\n"
|
||||
"\n"
|
||||
"Ek olarak, /help komutu ile doğrudan satır içi yardım alabilirsiniz (komutu "
|
||||
"tamamlamak için Sekme düğmesini kullanın).\n"
|
||||
"/fset komutu WeeChat'i özelleştirmenize yardımcı olur.\n"
|
||||
"\n"
|
||||
"IRC sunucularına /server ve /connect komutları ile bağlanabilirsiniz (bkz. /"
|
||||
"help server)."
|
||||
|
||||
msgid ""
|
||||
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||
"switch back to the default dark theme."
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||
#, c-format
|
||||
@@ -8309,7 +8571,8 @@ msgstr "Bilinmeyen yapılandırma dosyası \"%s\""
|
||||
|
||||
msgid ""
|
||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||
"string/color/enum)"
|
||||
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||
"options that can be used in themes, regardless of type"
|
||||
msgstr ""
|
||||
|
||||
msgid "> `d`: show only changed options"
|
||||
@@ -17120,6 +17383,11 @@ msgstr "Hiçbir betik yüklenmedi"
|
||||
msgid "script name with extension"
|
||||
msgstr "betik uzantılarının listesi"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "comma separated list of file name extensions for plugins"
|
||||
msgid "comma-separated list of plugin:extension with supported languages"
|
||||
msgstr "eklentiler için dosya adı uzantılarının virgülle ayrılmış listesi"
|
||||
|
||||
msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
|
||||
msgstr "betik adı, uzantı ile (\"*\" jokerine izin verilir) (isteğe bağlı)"
|
||||
|
||||
@@ -17750,7 +18018,9 @@ msgstr ""
|
||||
msgid "> type `command_run`: command(s) (required)"
|
||||
msgstr ""
|
||||
|
||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
||||
msgid ""
|
||||
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||
"calls"
|
||||
msgstr ""
|
||||
|
||||
msgid "> type `config`: name(s) of option (required)"
|
||||
@@ -18611,3 +18881,33 @@ msgid ""
|
||||
msgstr ""
|
||||
"%s%s: \"%s\" dosyası sürdürümü kabul edilemiyor (kapı: %d, başlangıç konumu: "
|
||||
"%llu): xfer bulunamadı veya aktarım için hazır değil"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Welcome to WeeChat!\n"
|
||||
#~ "\n"
|
||||
#~ "If you are discovering WeeChat, it is recommended to read at least the "
|
||||
#~ "quickstart guide, and the user's guide if you have some time; they "
|
||||
#~ "explain main WeeChat concepts.\n"
|
||||
#~ "All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||
#~ "\n"
|
||||
#~ "Moreover, there is inline help with /help on all commands and options "
|
||||
#~ "(use Tab key to complete the name).\n"
|
||||
#~ "The command /fset can help to customize WeeChat.\n"
|
||||
#~ "\n"
|
||||
#~ "You can add and connect to an IRC server with /server and /connect "
|
||||
#~ "commands (see /help server)."
|
||||
#~ msgstr ""
|
||||
#~ "WeeChat'e hoş geldiniz!\n"
|
||||
#~ "\n"
|
||||
#~ "WeeChat'e yeniyseniz hızlı başlangıç kılavuzunu veya biraz daha vaktiniz "
|
||||
#~ "varsa kullanıcı kılavuzunu okumanız önerilir; bu belgeler WeeChat'in "
|
||||
#~ "temel konseptlerini açıklarlar.\n"
|
||||
#~ "Tüm WeeChat belgelendirmesi https://weechat.org/doc/ adresinde "
|
||||
#~ "mevcuttur.\n"
|
||||
#~ "\n"
|
||||
#~ "Ek olarak, /help komutu ile doğrudan satır içi yardım alabilirsiniz "
|
||||
#~ "(komutu tamamlamak için Sekme düğmesini kullanın).\n"
|
||||
#~ "/fset komutu WeeChat'i özelleştirmenize yardımcı olur.\n"
|
||||
#~ "\n"
|
||||
#~ "IRC sunucularına /server ve /connect komutları ile bağlanabilirsiniz "
|
||||
#~ "(bkz. /help server)."
|
||||
|
||||
+257
-11
@@ -23,7 +23,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2026-05-30 14:00+0200\n"
|
||||
"POT-Creation-Date: 2026-07-04 22:01+0200\n"
|
||||
"PO-Revision-Date: 2014-08-16 10:27+0200\n"
|
||||
"Last-Translator: Sébastien Helleu <flashcode@flashtux.org>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
@@ -926,6 +926,47 @@ msgstr ""
|
||||
msgid "%sFunction \"%s\" is not available on this system"
|
||||
msgstr ""
|
||||
|
||||
msgid "No theme available"
|
||||
msgstr ""
|
||||
|
||||
msgid "Themes:"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid " %s %s%s%s (file)"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sTheme \"%s\" not found"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Theme \"%s%s%s\":"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid " source: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid " source: built-in (in-memory)"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid " description: %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid " date: %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid " WeeChat version: %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid " overrides: %d"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sFailed to unset option \"%s\""
|
||||
msgstr ""
|
||||
@@ -3305,6 +3346,69 @@ msgstr ""
|
||||
msgid "number: number of processes to clean"
|
||||
msgstr ""
|
||||
|
||||
msgid "manage color themes"
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||
msgid ""
|
||||
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||
"<new> || del <name> || info <name>"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||
"marked with \"->\""
|
||||
msgstr ""
|
||||
|
||||
msgid "raw[-backups]: display backup theme files"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||
"shadows any built-in theme of the same name"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[reset]: reset every themable option to its default value (restores the "
|
||||
"original look shipped with WeeChat)"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[save]: save current themable options to a file <name>.theme in directory "
|
||||
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||
"the name must not match a built-in theme or start with \"backup-\""
|
||||
msgstr ""
|
||||
|
||||
msgid "raw[rename]: rename a user theme file"
|
||||
msgstr ""
|
||||
|
||||
msgid "raw[del]: delete a user theme file"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"raw[info]: display details on a theme (name, description, creation date, "
|
||||
"WeeChat version, number of option overrides)"
|
||||
msgstr ""
|
||||
|
||||
msgid "name: name of a theme"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||
"directory \"themes\" inside the WeeChat configuration directory."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"By default, `/theme apply` command creates a backup of current themable "
|
||||
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||
"backup-<timestamp>`. This is controlled by the option "
|
||||
"weechat.look.theme_backup."
|
||||
msgstr ""
|
||||
|
||||
msgid "toggle value of a config option"
|
||||
msgstr ""
|
||||
|
||||
@@ -3817,6 +3921,15 @@ msgstr ""
|
||||
msgid "names of layouts"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of themes (built-ins + user files + backups)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of user theme files (without built-ins and backups)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of secured data (file sec.conf, section data)"
|
||||
msgstr ""
|
||||
|
||||
@@ -4616,6 +4729,20 @@ msgstr ""
|
||||
msgid "number of spaces used to display tabs in messages"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"name of the last theme applied with command /theme (set automatically, do "
|
||||
"not change manually); informational only, the theme is not re-applied at "
|
||||
"startup"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"create a backup theme file with the current themable options before applying "
|
||||
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||
"is aborted (no option is changed); the backup file is written to directory "
|
||||
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||
"with the command: `/theme apply backup-<timestamp>`"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"time format for dates converted to strings and displayed in messages (see "
|
||||
"man strftime for date/time specifiers)"
|
||||
@@ -5467,6 +5594,104 @@ msgstr ""
|
||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||
msgstr ""
|
||||
|
||||
msgid "WeeChat default theme for light-background terminals"
|
||||
msgstr ""
|
||||
|
||||
msgid "Automatic backup"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: malformed section header"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: missing '=' separator"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sFailed to parse theme file \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sUnable to create theme backup; aborting apply (disable option "
|
||||
"weechat.look.theme_backup to force)"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sUnable to create theme backup; aborting reset (disable option "
|
||||
"weechat.look.theme_backup to force)"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sName \"%s\" is reserved for automatic backups"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sFailed to save theme \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Theme saved to: %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sCannot rename built-in theme \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sNew name is the same as old name"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sTheme \"%s\" already exists"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Theme \"%s\" renamed to \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sCannot delete built-in theme \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sFailed to delete theme \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Theme deleted: %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||
msgstr ""
|
||||
@@ -5619,22 +5844,37 @@ msgstr ""
|
||||
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||
msgstr ""
|
||||
|
||||
msgid "Welcome to WeeChat!"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Welcome to WeeChat!\n"
|
||||
"\n"
|
||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||
"main WeeChat concepts.\n"
|
||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||
"\n"
|
||||
"main WeeChat concepts."
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "All WeeChat docs are available at: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Moreover, there is inline help with /help on all commands and options (use "
|
||||
"Tab key to complete the name).\n"
|
||||
"The command /fset can help to customize WeeChat.\n"
|
||||
"\n"
|
||||
"Tab key to complete the name)."
|
||||
msgstr ""
|
||||
|
||||
msgid "The command /fset can help to customize WeeChat."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"You can add and connect to an IRC server with /server and /connect commands "
|
||||
"(see /help server)."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||
"switch back to the default dark theme."
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||
#, c-format
|
||||
msgid ""
|
||||
@@ -7052,7 +7292,8 @@ msgstr ""
|
||||
|
||||
msgid ""
|
||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||
"string/color/enum)"
|
||||
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||
"options that can be used in themes, regardless of type"
|
||||
msgstr ""
|
||||
|
||||
msgid "> `d`: show only changed options"
|
||||
@@ -14018,6 +14259,9 @@ msgstr ""
|
||||
msgid "script name with extension"
|
||||
msgstr ""
|
||||
|
||||
msgid "comma-separated list of plugin:extension with supported languages"
|
||||
msgstr ""
|
||||
|
||||
msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
|
||||
msgstr ""
|
||||
|
||||
@@ -14576,7 +14820,9 @@ msgstr ""
|
||||
msgid "> type `command_run`: command(s) (required)"
|
||||
msgstr ""
|
||||
|
||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
||||
msgid ""
|
||||
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||
"calls"
|
||||
msgstr ""
|
||||
|
||||
msgid "> type `config`: name(s) of option (required)"
|
||||
|
||||
@@ -51,6 +51,8 @@ set(LIB_CORE_SRC
|
||||
core-signal.c core-signal.h
|
||||
core-string.c core-string.h
|
||||
core-sys.c core-sys.h
|
||||
core-theme.c core-theme.h
|
||||
core-theme-builtin.c
|
||||
core-upgrade.c core-upgrade.h
|
||||
core-upgrade-file.c core-upgrade-file.h
|
||||
core-url.c core-url.h
|
||||
|
||||
+305
-3
@@ -68,6 +68,7 @@
|
||||
#include "core-signal.h"
|
||||
#include "core-string.h"
|
||||
#include "core-sys.h"
|
||||
#include "core-theme.h"
|
||||
#include "core-upgrade.h"
|
||||
#include "core-url.h"
|
||||
#include "core-utf8.h"
|
||||
@@ -5536,7 +5537,7 @@ COMMAND_CALLBACK(print)
|
||||
struct timeval tv_date;
|
||||
char *tags, *pos, *text, *text2, empty_string[1] = { '\0' };
|
||||
const char *prefix, *ptr_text;
|
||||
long value;
|
||||
long long value;
|
||||
|
||||
/* make C compiler happy */
|
||||
(void) pointer;
|
||||
@@ -5609,7 +5610,7 @@ COMMAND_CALLBACK(print)
|
||||
i++;
|
||||
if ((argv[i][0] == '-') || (argv[i][0] == '+'))
|
||||
{
|
||||
if (!util_parse_long (argv[i] + 1, 10, &value))
|
||||
if (!util_parse_longlong (argv[i] + 1, 10, &value))
|
||||
COMMAND_ERROR;
|
||||
gettimeofday (&tv_date, NULL);
|
||||
tv_date.tv_sec += (argv[i][0] == '+') ? value : value * -1;
|
||||
@@ -7180,6 +7181,256 @@ COMMAND_CALLBACK(sys)
|
||||
COMMAND_ERROR;
|
||||
}
|
||||
|
||||
/*
|
||||
* Callback for "dir_exec_on_files": collects names of files matching
|
||||
* "*.theme" into an arraylist passed as data; "backup-*.theme" is
|
||||
* excluded when *(int *)data->show_backups is zero.
|
||||
*
|
||||
* The arraylist is iterated outside this callback so all dirent
|
||||
* processing can happen in one place.
|
||||
*/
|
||||
|
||||
struct t_command_theme_dir_collect
|
||||
{
|
||||
struct t_arraylist *names; /* arraylist of char * (owned) */
|
||||
int show_backups; /* include backup-*.theme ? */
|
||||
};
|
||||
|
||||
void
|
||||
command_theme_collect_file_cb (void *data, const char *filename)
|
||||
{
|
||||
struct t_command_theme_dir_collect *ctx;
|
||||
const char *base;
|
||||
char *name;
|
||||
size_t len;
|
||||
|
||||
ctx = (struct t_command_theme_dir_collect *)data;
|
||||
base = strrchr (filename, '/');
|
||||
base = (base) ? base + 1 : filename;
|
||||
len = strlen (base);
|
||||
if ((len < 7) || (strcmp (base + len - 6, ".theme") != 0))
|
||||
return;
|
||||
if (!ctx->show_backups && (strncmp (base, "backup-", 7) == 0))
|
||||
return;
|
||||
name = string_strndup (base, len - 6);
|
||||
if (name)
|
||||
arraylist_add (ctx->names, name);
|
||||
}
|
||||
|
||||
/*
|
||||
* Compare two theme file names (callback used by arraylist sort).
|
||||
*
|
||||
* Return negative, zero, or positive value (like strcmp).
|
||||
*/
|
||||
|
||||
int
|
||||
command_theme_strcmp_cb (void *data, struct t_arraylist *arraylist,
|
||||
void *pointer1, void *pointer2)
|
||||
{
|
||||
/* make C compiler happy */
|
||||
(void) data;
|
||||
(void) arraylist;
|
||||
|
||||
return strcmp ((const char *)pointer1, (const char *)pointer2);
|
||||
}
|
||||
|
||||
/*
|
||||
* Callback for command "/theme": list or display details on themes.
|
||||
*/
|
||||
|
||||
COMMAND_CALLBACK(theme)
|
||||
{
|
||||
struct t_arraylist *list, *file_names;
|
||||
struct t_command_theme_dir_collect collect;
|
||||
struct t_theme *ptr_theme, *file_theme;
|
||||
const char *ptr_active, *ptr_name;
|
||||
char *path, *dir;
|
||||
int i, size, show_backups;
|
||||
|
||||
/* make C compiler happy */
|
||||
(void) pointer;
|
||||
(void) data;
|
||||
(void) buffer;
|
||||
(void) argv_eol;
|
||||
|
||||
/* "/theme" or "/theme list [-backups]": list themes */
|
||||
if ((argc == 1) || (string_strcmp (argv[1], "list") == 0))
|
||||
{
|
||||
show_backups = ((argc >= 3)
|
||||
&& (string_strcmp (argv[2], "-backups") == 0));
|
||||
ptr_active = CONFIG_STRING(config_look_theme);
|
||||
|
||||
list = theme_list ();
|
||||
|
||||
/* scan ${weechat_config_dir}/themes/ for *.theme files */
|
||||
file_names = arraylist_new (8, 1, 0,
|
||||
&command_theme_strcmp_cb, NULL,
|
||||
NULL, NULL);
|
||||
if (file_names)
|
||||
{
|
||||
dir = NULL;
|
||||
string_asprintf (&dir, "%s/themes", weechat_config_dir);
|
||||
if (dir)
|
||||
{
|
||||
collect.names = file_names;
|
||||
collect.show_backups = show_backups;
|
||||
dir_exec_on_files (dir, 0, 0,
|
||||
&command_theme_collect_file_cb,
|
||||
&collect);
|
||||
free (dir);
|
||||
}
|
||||
}
|
||||
|
||||
if ((!list || (arraylist_size (list) == 0))
|
||||
&& (!file_names || (arraylist_size (file_names) == 0)))
|
||||
{
|
||||
gui_chat_printf (NULL, _("No theme available"));
|
||||
arraylist_free (list);
|
||||
arraylist_free (file_names);
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
|
||||
gui_chat_printf (NULL, "");
|
||||
gui_chat_printf (NULL, _("Themes:"));
|
||||
size = (list) ? arraylist_size (list) : 0;
|
||||
for (i = 0; i < size; i++)
|
||||
{
|
||||
ptr_theme = (struct t_theme *)arraylist_get (list, i);
|
||||
gui_chat_printf (
|
||||
NULL,
|
||||
" %s %s%s%s%s%s",
|
||||
(ptr_active && (strcmp (ptr_active, ptr_theme->name) == 0))
|
||||
? "->" : " ",
|
||||
GUI_COLOR(GUI_COLOR_CHAT_BUFFER),
|
||||
ptr_theme->name,
|
||||
GUI_COLOR(GUI_COLOR_CHAT_DELIMITERS),
|
||||
(ptr_theme->description && ptr_theme->description[0])
|
||||
? ": " : "",
|
||||
(ptr_theme->description) ? ptr_theme->description : "");
|
||||
}
|
||||
size = (file_names) ? arraylist_size (file_names) : 0;
|
||||
for (i = 0; i < size; i++)
|
||||
{
|
||||
ptr_name = (const char *)arraylist_get (file_names, i);
|
||||
gui_chat_printf (
|
||||
NULL,
|
||||
_(" %s %s%s%s (file)"),
|
||||
(ptr_active && (strcmp (ptr_active, ptr_name) == 0))
|
||||
? "->" : " ",
|
||||
GUI_COLOR(GUI_COLOR_CHAT_BUFFER),
|
||||
ptr_name,
|
||||
GUI_COLOR(GUI_COLOR_CHAT));
|
||||
}
|
||||
if (file_names)
|
||||
{
|
||||
size = arraylist_size (file_names);
|
||||
for (i = 0; i < size; i++)
|
||||
free (arraylist_get (file_names, i));
|
||||
arraylist_free (file_names);
|
||||
}
|
||||
arraylist_free (list);
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
|
||||
/* "/theme apply <name>": apply a theme */
|
||||
if (string_strcmp (argv[1], "apply") == 0)
|
||||
{
|
||||
COMMAND_MIN_ARGS(3, "apply");
|
||||
return theme_apply (argv[2]);
|
||||
}
|
||||
|
||||
/* "/theme reset": reset every themable option to its default value */
|
||||
if (string_strcmp (argv[1], "reset") == 0)
|
||||
{
|
||||
return theme_reset ();
|
||||
}
|
||||
|
||||
/* "/theme save <name>": write a user theme file */
|
||||
if (string_strcmp (argv[1], "save") == 0)
|
||||
{
|
||||
COMMAND_MIN_ARGS(3, "save");
|
||||
return theme_save (argv[2]);
|
||||
}
|
||||
|
||||
/* "/theme rename <old> <new>": rename a user theme file */
|
||||
if (string_strcmp (argv[1], "rename") == 0)
|
||||
{
|
||||
COMMAND_MIN_ARGS(4, "rename");
|
||||
return theme_rename (argv[2], argv[3]);
|
||||
}
|
||||
|
||||
/* "/theme del <name>": remove a user theme file */
|
||||
if (string_strcmp (argv[1], "del") == 0)
|
||||
{
|
||||
COMMAND_MIN_ARGS(3, "del");
|
||||
return theme_delete (argv[2]);
|
||||
}
|
||||
|
||||
/* "/theme info <name>": show details about a theme */
|
||||
if (string_strcmp (argv[1], "info") == 0)
|
||||
{
|
||||
COMMAND_MIN_ARGS(3, "info");
|
||||
/* file shadows registry: try user file first */
|
||||
path = theme_user_file_path (argv[2]);
|
||||
file_theme = NULL;
|
||||
if (path && (access (path, R_OK) == 0))
|
||||
file_theme = theme_file_parse (path);
|
||||
if (!file_theme)
|
||||
{
|
||||
free (path);
|
||||
path = NULL;
|
||||
ptr_theme = theme_search (argv[2]);
|
||||
if (!ptr_theme)
|
||||
{
|
||||
gui_chat_printf (NULL,
|
||||
_("%sTheme \"%s\" not found"),
|
||||
gui_chat_prefix[GUI_CHAT_PREFIX_ERROR],
|
||||
argv[2]);
|
||||
return WEECHAT_RC_ERROR;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ptr_theme = file_theme;
|
||||
}
|
||||
gui_chat_printf (NULL, "");
|
||||
gui_chat_printf (NULL,
|
||||
_("Theme \"%s%s%s\":"),
|
||||
GUI_COLOR(GUI_COLOR_CHAT_BUFFER),
|
||||
(ptr_theme->name && ptr_theme->name[0])
|
||||
? ptr_theme->name : argv[2],
|
||||
GUI_COLOR(GUI_COLOR_CHAT));
|
||||
if (path)
|
||||
{
|
||||
gui_chat_printf (NULL,
|
||||
_(" source: %s"), path);
|
||||
}
|
||||
else
|
||||
{
|
||||
gui_chat_printf (NULL,
|
||||
_(" source: built-in (in-memory)"));
|
||||
}
|
||||
gui_chat_printf (NULL,
|
||||
_(" description: %s"),
|
||||
(ptr_theme->description) ? ptr_theme->description : "");
|
||||
gui_chat_printf (NULL,
|
||||
_(" date: %s"),
|
||||
(ptr_theme->date) ? ptr_theme->date : "");
|
||||
gui_chat_printf (NULL,
|
||||
_(" WeeChat version: %s"),
|
||||
(ptr_theme->weechat_version)
|
||||
? ptr_theme->weechat_version : "");
|
||||
gui_chat_printf (NULL,
|
||||
_(" overrides: %d"),
|
||||
theme_overrides_count (ptr_theme));
|
||||
free (path);
|
||||
theme_free (file_theme);
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
|
||||
COMMAND_ERROR;
|
||||
}
|
||||
|
||||
/*
|
||||
* Callback for command "/toggle": toggle value of configuration option.
|
||||
*/
|
||||
@@ -7401,7 +7652,7 @@ command_upgrade_display (struct t_gui_buffer *buffer,
|
||||
str_first_start[0] = '\0';
|
||||
str_last_start[0] = '\0';
|
||||
|
||||
weechat_last_start_time = (time_t)weechat_current_start_timeval.tv_sec;
|
||||
weechat_last_start_time = weechat_current_start_timeval.tv_sec;
|
||||
|
||||
if (translated_string)
|
||||
{
|
||||
@@ -9832,6 +10083,57 @@ command_init (void)
|
||||
" || suspend"
|
||||
" || waitpid 1|10|100|1000",
|
||||
&command_sys, NULL, NULL);
|
||||
hook_command (
|
||||
NULL, "theme",
|
||||
N_("manage color themes"),
|
||||
/* TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated */
|
||||
N_("[list [-backups]]"
|
||||
" || apply <name>"
|
||||
" || reset"
|
||||
" || save <name>"
|
||||
" || rename <old> <new>"
|
||||
" || del <name>"
|
||||
" || info <name>"),
|
||||
CMD_ARGS_DESC(
|
||||
N_("raw[list]: list registered themes and any *.theme files in "
|
||||
"the WeeChat configuration directory; the active theme "
|
||||
"(matching weechat.look.theme) is marked with \"->\""),
|
||||
N_("raw[-backups]: display backup theme files"),
|
||||
N_("raw[apply]: apply a theme (set every themable option to the "
|
||||
"value from the theme); if a file named <name>.theme "
|
||||
"exists in directory \"themes\" it shadows any built-in "
|
||||
"theme of the same name"),
|
||||
N_("raw[reset]: reset every themable option to its default "
|
||||
"value (restores the original look shipped with WeeChat)"),
|
||||
N_("raw[save]: save current themable options to a file "
|
||||
"<name>.theme in directory \"themes\"; every themable "
|
||||
"option is written, so the file is self-contained; the "
|
||||
"name must not match a built-in theme or start with "
|
||||
"\"backup-\""),
|
||||
N_("raw[rename]: rename a user theme file"),
|
||||
N_("raw[del]: delete a user theme file"),
|
||||
N_("raw[info]: display details on a theme (name, description, "
|
||||
"creation date, WeeChat version, number of option overrides)"),
|
||||
N_("name: name of a theme"),
|
||||
"",
|
||||
N_("Themes are named bundles of option overrides. Built-in themes "
|
||||
"are registered in memory by core/plugins/scripts; user themes "
|
||||
"are read from files in directory \"themes\" inside the WeeChat "
|
||||
"configuration directory."),
|
||||
"",
|
||||
N_("By default, `/theme apply` command creates a backup of current "
|
||||
"themable values in directory \"themes\" before applying "
|
||||
"(file name: \"backup-<timestamp>.theme\"); the previous "
|
||||
"state can be restored with: `/theme apply backup-<timestamp>`. "
|
||||
"This is controlled by the option weechat.look.theme_backup.")),
|
||||
"list -backups"
|
||||
" || apply %(theme_themes_all)"
|
||||
" || reset"
|
||||
" || save %(theme_themes_user)"
|
||||
" || rename %(theme_themes_files)"
|
||||
" || del %(theme_themes_user)"
|
||||
" || info %(theme_themes_all)",
|
||||
&command_theme, NULL, NULL);
|
||||
hook_command (
|
||||
NULL, "toggle",
|
||||
N_("toggle value of a config option"),
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
#include "core-proxy.h"
|
||||
#include "core-secure.h"
|
||||
#include "core-string.h"
|
||||
#include "core-theme.h"
|
||||
#include "../gui/gui-completion.h"
|
||||
#include "../gui/gui-bar.h"
|
||||
#include "../gui/gui-bar-item.h"
|
||||
@@ -63,6 +64,12 @@
|
||||
|
||||
extern char **environ;
|
||||
|
||||
struct t_completion_theme_dir
|
||||
{
|
||||
struct t_gui_completion *completion;
|
||||
int show_backups;
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Add a word with quotes around to completion list.
|
||||
@@ -1974,6 +1981,145 @@ completion_list_add_layouts_names_cb (const void *pointer, void *data,
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* Add filename (without ".theme" suffix) to completion list if it ends
|
||||
* with ".theme"; skips "backup-*.theme" entries unless data is non-NULL.
|
||||
*
|
||||
* Callback for dir_exec_on_files; "data" carries a pair of pointers:
|
||||
* data[0] = struct t_gui_completion *completion (target)
|
||||
* data[1] = int *show_backups
|
||||
*/
|
||||
|
||||
void
|
||||
completion_theme_add_file_cb (void *data, const char *filename)
|
||||
{
|
||||
struct t_completion_theme_dir *ctx;
|
||||
const char *base;
|
||||
char *name;
|
||||
size_t len;
|
||||
|
||||
ctx = (struct t_completion_theme_dir *)data;
|
||||
base = strrchr (filename, '/');
|
||||
base = (base) ? base + 1 : filename;
|
||||
len = strlen (base);
|
||||
if ((len < 7) || (strcmp (base + len - 6, ".theme") != 0))
|
||||
return;
|
||||
if (!ctx->show_backups && (strncmp (base, "backup-", 7) == 0))
|
||||
return;
|
||||
name = string_strndup (base, len - 6);
|
||||
if (!name)
|
||||
return;
|
||||
gui_completion_list_add (ctx->completion, name, 0, WEECHAT_LIST_POS_SORT);
|
||||
free (name);
|
||||
}
|
||||
|
||||
/*
|
||||
* Add theme names to completion list: in-memory built-ins plus any
|
||||
* "*.theme" files in <weechat_config_dir>/themes/ (including backups).
|
||||
*/
|
||||
|
||||
int
|
||||
completion_list_add_theme_themes_all_cb (const void *pointer, void *data,
|
||||
const char *completion_item,
|
||||
struct t_gui_buffer *buffer,
|
||||
struct t_gui_completion *completion)
|
||||
{
|
||||
struct t_theme *ptr_theme;
|
||||
struct t_completion_theme_dir ctx;
|
||||
char *dir;
|
||||
|
||||
/* make C compiler happy */
|
||||
(void) pointer;
|
||||
(void) data;
|
||||
(void) completion_item;
|
||||
(void) buffer;
|
||||
|
||||
for (ptr_theme = themes; ptr_theme; ptr_theme = ptr_theme->next_theme)
|
||||
{
|
||||
gui_completion_list_add (completion, ptr_theme->name,
|
||||
0, WEECHAT_LIST_POS_SORT);
|
||||
}
|
||||
|
||||
dir = NULL;
|
||||
string_asprintf (&dir, "%s/themes", weechat_config_dir);
|
||||
if (dir)
|
||||
{
|
||||
ctx.completion = completion;
|
||||
ctx.show_backups = 1;
|
||||
dir_exec_on_files (dir, 0, 0, &completion_theme_add_file_cb, &ctx);
|
||||
free (dir);
|
||||
}
|
||||
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* Add user theme file names (excluding built-ins and backups) to the
|
||||
* completion list; suitable for /theme save and /theme del.
|
||||
*/
|
||||
|
||||
int
|
||||
completion_list_add_theme_themes_user_cb (const void *pointer, void *data,
|
||||
const char *completion_item,
|
||||
struct t_gui_buffer *buffer,
|
||||
struct t_gui_completion *completion)
|
||||
{
|
||||
struct t_completion_theme_dir ctx;
|
||||
char *dir;
|
||||
|
||||
/* make C compiler happy */
|
||||
(void) pointer;
|
||||
(void) data;
|
||||
(void) completion_item;
|
||||
(void) buffer;
|
||||
|
||||
dir = NULL;
|
||||
string_asprintf (&dir, "%s/themes", weechat_config_dir);
|
||||
if (dir)
|
||||
{
|
||||
ctx.completion = completion;
|
||||
ctx.show_backups = 0;
|
||||
dir_exec_on_files (dir, 0, 0, &completion_theme_add_file_cb, &ctx);
|
||||
free (dir);
|
||||
}
|
||||
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* Add every on-disk theme file (user files + backups, no built-ins)
|
||||
* to the completion list; suitable for /theme rename which can take a
|
||||
* backup as its source.
|
||||
*/
|
||||
|
||||
int
|
||||
completion_list_add_theme_themes_files_cb (const void *pointer, void *data,
|
||||
const char *completion_item,
|
||||
struct t_gui_buffer *buffer,
|
||||
struct t_gui_completion *completion)
|
||||
{
|
||||
struct t_completion_theme_dir ctx;
|
||||
char *dir;
|
||||
|
||||
/* make C compiler happy */
|
||||
(void) pointer;
|
||||
(void) data;
|
||||
(void) completion_item;
|
||||
(void) buffer;
|
||||
|
||||
dir = NULL;
|
||||
string_asprintf (&dir, "%s/themes", weechat_config_dir);
|
||||
if (dir)
|
||||
{
|
||||
ctx.completion = completion;
|
||||
ctx.show_backups = 1;
|
||||
dir_exec_on_files (dir, 0, 0, &completion_theme_add_file_cb, &ctx);
|
||||
free (dir);
|
||||
}
|
||||
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* Add a secured data to completion list.
|
||||
*/
|
||||
@@ -2365,6 +2511,16 @@ completion_init (void)
|
||||
hook_completion (NULL, "layouts_names",
|
||||
N_("names of layouts"),
|
||||
&completion_list_add_layouts_names_cb, NULL, NULL);
|
||||
hook_completion (NULL, "theme_themes_all",
|
||||
N_("names of themes (built-ins + user files + backups)"),
|
||||
&completion_list_add_theme_themes_all_cb, NULL, NULL);
|
||||
hook_completion (NULL, "theme_themes_user",
|
||||
N_("names of user theme files (without built-ins and backups)"),
|
||||
&completion_list_add_theme_themes_user_cb, NULL, NULL);
|
||||
hook_completion (NULL, "theme_themes_files",
|
||||
N_("names of theme files on disk (user files + backups, "
|
||||
"no built-ins)"),
|
||||
&completion_list_add_theme_themes_files_cb, NULL, NULL);
|
||||
hook_completion (NULL, "secured_data",
|
||||
N_("names of secured data (file sec.conf, section data)"),
|
||||
&completion_list_add_secured_data_cb, NULL, NULL);
|
||||
|
||||
@@ -648,6 +648,7 @@ config_file_option_malloc (void)
|
||||
new_option->name = NULL;
|
||||
new_option->parent_name = NULL;
|
||||
new_option->type = 0;
|
||||
new_option->themable = 0;
|
||||
new_option->description = NULL;
|
||||
new_option->string_values = NULL;
|
||||
new_option->min = 0;
|
||||
@@ -704,16 +705,37 @@ config_file_new_option (struct t_config_file *config_file,
|
||||
void *callback_delete_data)
|
||||
{
|
||||
struct t_config_option *new_option;
|
||||
int var_type, int_value, argc, i, index_value, number;
|
||||
char *pos, *option_name, *parent_name;
|
||||
int var_type, int_value, argc, i, index_value, number, themable;
|
||||
const char *pos, *ptr_type;
|
||||
char *option_name, *parent_name, *type_name;
|
||||
|
||||
new_option = NULL;
|
||||
option_name = NULL;
|
||||
parent_name = NULL;
|
||||
type_name = NULL;
|
||||
themable = 0;
|
||||
|
||||
if (!name || !type)
|
||||
goto error;
|
||||
|
||||
/*
|
||||
* extract optional "|themable" suffix from type
|
||||
* (e.g.: "string|themable" for a string option that contains color names)
|
||||
*/
|
||||
pos = strchr (type, '|');
|
||||
if (pos && (strcmp (pos, "|themable") == 0))
|
||||
{
|
||||
type_name = string_strndup (type, pos - type);
|
||||
if (!type_name)
|
||||
goto error;
|
||||
ptr_type = type_name;
|
||||
themable = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
ptr_type = type;
|
||||
}
|
||||
|
||||
pos = strstr (name, " << ");
|
||||
if (pos)
|
||||
{
|
||||
@@ -734,7 +756,7 @@ config_file_new_option (struct t_config_file *config_file,
|
||||
var_type = -1;
|
||||
for (i = 0; i < CONFIG_NUM_OPTION_TYPES; i++)
|
||||
{
|
||||
if (strcmp (type, config_option_type_string[i]) == 0)
|
||||
if (strcmp (ptr_type, config_option_type_string[i]) == 0)
|
||||
{
|
||||
var_type = i;
|
||||
break;
|
||||
@@ -744,10 +766,14 @@ config_file_new_option (struct t_config_file *config_file,
|
||||
{
|
||||
gui_chat_printf (NULL, "%sUnknown option type \"%s\"",
|
||||
gui_chat_prefix[GUI_CHAT_PREFIX_ERROR],
|
||||
type);
|
||||
ptr_type);
|
||||
goto error;
|
||||
}
|
||||
|
||||
/* color options are always themable */
|
||||
if (var_type == CONFIG_OPTION_TYPE_COLOR)
|
||||
themable = 1;
|
||||
|
||||
/*
|
||||
* compatibility with versions < 4.1.0: force enum type for an integer
|
||||
* with string values
|
||||
@@ -784,6 +810,7 @@ config_file_new_option (struct t_config_file *config_file,
|
||||
goto error;
|
||||
new_option->parent_name = (parent_name) ? strdup (parent_name) : NULL;
|
||||
new_option->type = var_type;
|
||||
new_option->themable = themable;
|
||||
if (description)
|
||||
{
|
||||
new_option->description = strdup (description);
|
||||
@@ -969,6 +996,7 @@ error:
|
||||
end:
|
||||
free (option_name);
|
||||
free (parent_name);
|
||||
free (type_name);
|
||||
return new_option;
|
||||
}
|
||||
|
||||
@@ -1095,12 +1123,13 @@ config_file_search_with_string (const char *option_name,
|
||||
struct t_config_file **config_file,
|
||||
struct t_config_section **section,
|
||||
struct t_config_option **option,
|
||||
char **pos_option_name)
|
||||
const char **pos_option_name)
|
||||
{
|
||||
struct t_config_file *ptr_config;
|
||||
struct t_config_section *ptr_section;
|
||||
struct t_config_option *ptr_option;
|
||||
char *file_name, *pos_section, *section_name, *pos_option;
|
||||
const char *pos_section, *pos_option;
|
||||
char *file_name, *section_name;
|
||||
|
||||
if (config_file)
|
||||
*config_file = NULL;
|
||||
@@ -2438,6 +2467,8 @@ config_file_option_get_pointer (struct t_config_option *option,
|
||||
return option->parent_name;
|
||||
else if (strcmp (property, "type") == 0)
|
||||
return &option->type;
|
||||
else if (strcmp (property, "themable") == 0)
|
||||
return &option->themable;
|
||||
else if (strcmp (property, "description") == 0)
|
||||
return option->description;
|
||||
else if (strcmp (property, "string_values") == 0)
|
||||
@@ -2553,7 +2584,7 @@ config_file_option_set_with_string (const char *option_name, const char *value)
|
||||
struct t_config_file *ptr_config;
|
||||
struct t_config_section *ptr_section;
|
||||
struct t_config_option *ptr_option;
|
||||
char *pos_option;
|
||||
const char *pos_option;
|
||||
|
||||
rc = WEECHAT_CONFIG_OPTION_SET_OPTION_NOT_FOUND;
|
||||
|
||||
@@ -4247,6 +4278,7 @@ config_file_hdata_config_option_cb (const void *pointer, void *data,
|
||||
HDATA_VAR(struct t_config_option, name, STRING, 0, NULL, NULL);
|
||||
HDATA_VAR(struct t_config_option, parent_name, STRING, 0, NULL, NULL);
|
||||
HDATA_VAR(struct t_config_option, type, INTEGER, 0, NULL, NULL);
|
||||
HDATA_VAR(struct t_config_option, themable, INTEGER, 0, NULL, NULL);
|
||||
HDATA_VAR(struct t_config_option, description, STRING, 0, NULL, NULL);
|
||||
HDATA_VAR(struct t_config_option, string_values, STRING, 0, "*,*", NULL);
|
||||
HDATA_VAR(struct t_config_option, min, INTEGER, 0, NULL, NULL);
|
||||
@@ -4359,6 +4391,8 @@ config_file_add_option_to_infolist (struct t_infolist *infolist,
|
||||
{
|
||||
goto error;
|
||||
}
|
||||
if (!infolist_new_var_integer (ptr_item, "themable", option->themable))
|
||||
goto error;
|
||||
if (option->value)
|
||||
{
|
||||
value = config_file_option_value_to_string (option, 0, 0, 0);
|
||||
@@ -4523,6 +4557,7 @@ config_file_print_log (void)
|
||||
log_printf (" name . . . . . . . . . . . . : '%s'", ptr_option->name);
|
||||
log_printf (" parent_name. . . . . . . . . : '%s'", ptr_option->parent_name);
|
||||
log_printf (" type . . . . . . . . . . . . : %d", ptr_option->type);
|
||||
log_printf (" themable . . . . . . . . . . : %d", ptr_option->themable);
|
||||
log_printf (" description. . . . . . . . . : '%s'", ptr_option->description);
|
||||
log_printf (" string_values. . . . . . . . : %p", ptr_option->string_values);
|
||||
log_printf (" min. . . . . . . . . . . . . : %d", ptr_option->min);
|
||||
|
||||
@@ -154,6 +154,8 @@ struct t_config_option
|
||||
char *parent_name; /* parent name (to inherit the */
|
||||
/* value from another option) */
|
||||
enum t_config_option_type type; /* type */
|
||||
int themable; /* 1 if option is themable */
|
||||
/* (color, or string with color) */
|
||||
char *description; /* description */
|
||||
char **string_values; /* allowed string values */
|
||||
int min, max; /* min and max for value */
|
||||
@@ -286,7 +288,7 @@ extern void config_file_search_with_string (const char *option_name,
|
||||
struct t_config_file **config_file,
|
||||
struct t_config_section **section,
|
||||
struct t_config_option **option,
|
||||
char **pos_option_name);
|
||||
const char **pos_option_name);
|
||||
extern int config_file_string_to_boolean (const char *text);
|
||||
extern int config_file_option_reset (struct t_config_option *option,
|
||||
int run_callback);
|
||||
|
||||
+47
-20
@@ -50,6 +50,7 @@
|
||||
#include "core-proxy.h"
|
||||
#include "core-string.h"
|
||||
#include "core-sys.h"
|
||||
#include "core-theme.h"
|
||||
#include "core-util.h"
|
||||
#include "core-version.h"
|
||||
#include "../gui/gui-bar.h"
|
||||
@@ -222,6 +223,8 @@ struct t_config_option *config_look_separator_horizontal = NULL;
|
||||
struct t_config_option *config_look_separator_vertical = NULL;
|
||||
struct t_config_option *config_look_tab_whitespace_char = NULL;
|
||||
struct t_config_option *config_look_tab_width = NULL;
|
||||
struct t_config_option *config_look_theme = NULL;
|
||||
struct t_config_option *config_look_theme_backup = NULL;
|
||||
struct t_config_option *config_look_time_format = NULL;
|
||||
struct t_config_option *config_look_whitespace_char = NULL;
|
||||
struct t_config_option *config_look_window_auto_zoom = NULL;
|
||||
@@ -1381,7 +1384,7 @@ config_change_color (const void *pointer, void *data,
|
||||
(void) data;
|
||||
(void) option;
|
||||
|
||||
if (gui_init_ok)
|
||||
if (gui_init_ok && !theme_applying)
|
||||
{
|
||||
gui_color_init_weechat ();
|
||||
gui_window_ask_refresh (1);
|
||||
@@ -1709,7 +1712,7 @@ config_weechat_update_cb (const void *pointer, void *data,
|
||||
int version_read,
|
||||
struct t_hashtable *data_read)
|
||||
{
|
||||
const char *ptr_config, *ptr_section, *ptr_option, *ptr_value;
|
||||
const char *ptr_config, *ptr_section, *ptr_option, *ptr_value, *pos_option;
|
||||
char *new_commands[][2] = {
|
||||
/* old command, new command */
|
||||
{ "/input jump_smart", "/buffer jump smart" },
|
||||
@@ -1739,7 +1742,7 @@ config_weechat_update_cb (const void *pointer, void *data,
|
||||
{ "number_desc" "-buffer.number" },
|
||||
{ NULL, NULL },
|
||||
};
|
||||
char *new_option, *new_value, *pos_option;
|
||||
char *new_option, *new_value;
|
||||
int changes, i;
|
||||
|
||||
/* make C compiler happy */
|
||||
@@ -2262,7 +2265,8 @@ config_weechat_proxy_read_cb (const void *pointer, void *data,
|
||||
struct t_config_section *section,
|
||||
const char *option_name, const char *value)
|
||||
{
|
||||
char *pos_option, *proxy_name;
|
||||
const char *pos_option;
|
||||
char *proxy_name;
|
||||
struct t_proxy *ptr_temp_proxy;
|
||||
int index_option;
|
||||
|
||||
@@ -2341,7 +2345,8 @@ config_weechat_bar_read_cb (const void *pointer, void *data,
|
||||
struct t_config_section *section,
|
||||
const char *option_name, const char *value)
|
||||
{
|
||||
char *pos_option, *bar_name;
|
||||
const char *pos_option;
|
||||
char *bar_name;
|
||||
struct t_gui_bar *ptr_temp_bar;
|
||||
int index_option;
|
||||
|
||||
@@ -2421,7 +2426,8 @@ config_weechat_custom_bar_item_read_cb (const void *pointer, void *data,
|
||||
struct t_config_section *section,
|
||||
const char *option_name, const char *value)
|
||||
{
|
||||
char *pos_option, *item_name;
|
||||
const char *pos_option;
|
||||
char *item_name;
|
||||
struct t_gui_bar_item_custom *ptr_temp_item;
|
||||
int index_option;
|
||||
|
||||
@@ -2512,7 +2518,8 @@ config_weechat_layout_read_cb (const void *pointer, void *data,
|
||||
const char *option_name, const char *value)
|
||||
{
|
||||
int argc, force_current_layout, number1, number2, number3, number4;
|
||||
char **argv, *pos, *layout_name;
|
||||
const char *pos;
|
||||
char **argv, *layout_name;
|
||||
const char *ptr_option_name;
|
||||
struct t_gui_layout *ptr_layout;
|
||||
struct t_gui_layout_window *parent;
|
||||
@@ -3446,7 +3453,7 @@ config_weechat_init_options (void)
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||
config_look_buffer_time_format = config_file_new_option (
|
||||
weechat_config_file, weechat_config_section_look,
|
||||
"buffer_time_format", "string",
|
||||
"buffer_time_format", "string|themable",
|
||||
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
||||
N_("time format for each line displayed in buffers (see man "
|
||||
"strftime for date/time specifiers, extra specifiers are "
|
||||
@@ -3470,7 +3477,7 @@ config_weechat_init_options (void)
|
||||
NULL, NULL, NULL);
|
||||
config_look_buffer_time_same = config_file_new_option (
|
||||
weechat_config_file, weechat_config_section_look,
|
||||
"buffer_time_same", "string",
|
||||
"buffer_time_same", "string|themable",
|
||||
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
||||
N_("time displayed for a message with same time as previous message: "
|
||||
"use a space \" \" to hide time, another string to display this "
|
||||
@@ -3637,7 +3644,7 @@ config_weechat_init_options (void)
|
||||
NULL, NULL, NULL);
|
||||
config_look_day_change_message_1date = config_file_new_option (
|
||||
weechat_config_file, weechat_config_section_look,
|
||||
"day_change_message_1date", "string",
|
||||
"day_change_message_1date", "string|themable",
|
||||
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
||||
N_("message displayed when the day has changed, with one date "
|
||||
"displayed (for example at beginning of buffer) (see man "
|
||||
@@ -3650,7 +3657,7 @@ config_weechat_init_options (void)
|
||||
NULL, NULL, NULL);
|
||||
config_look_day_change_message_2dates = config_file_new_option (
|
||||
weechat_config_file, weechat_config_section_look,
|
||||
"day_change_message_2dates", "string",
|
||||
"day_change_message_2dates", "string|themable",
|
||||
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
||||
N_("message displayed when the day has changed, with two dates "
|
||||
"displayed (between two messages); the second date specifiers "
|
||||
@@ -3967,7 +3974,7 @@ config_weechat_init_options (void)
|
||||
NULL, NULL, NULL);
|
||||
config_look_item_time_format = config_file_new_option (
|
||||
weechat_config_file, weechat_config_section_look,
|
||||
"item_time_format", "string",
|
||||
"item_time_format", "string|themable",
|
||||
N_("time format for \"time\" bar item (see man strftime for "
|
||||
"date/time specifiers) (note: content is evaluated, so you can "
|
||||
"use colors with format \"${color:xxx}\", see /help eval)"),
|
||||
@@ -4022,7 +4029,7 @@ config_weechat_init_options (void)
|
||||
NULL, NULL, NULL);
|
||||
config_look_nick_color_force = config_file_new_option (
|
||||
weechat_config_file, weechat_config_section_look,
|
||||
"nick_color_force", "string",
|
||||
"nick_color_force", "string|themable",
|
||||
N_("force color for some nicks: hash computed with nickname "
|
||||
"to find color will not be used for these nicks (format is: "
|
||||
"\"nick1:color1;nick2:color2\"); look up for nicks is with "
|
||||
@@ -4114,7 +4121,7 @@ config_weechat_init_options (void)
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||
config_look_prefix[GUI_CHAT_PREFIX_ERROR] = config_file_new_option (
|
||||
weechat_config_file, weechat_config_section_look,
|
||||
"prefix_error", "string",
|
||||
"prefix_error", "string|themable",
|
||||
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
||||
N_("prefix for error messages (note: content is evaluated, so you "
|
||||
"can use colors with format \"${color:xxx}\", see /help eval)"),
|
||||
@@ -4124,7 +4131,7 @@ config_weechat_init_options (void)
|
||||
NULL, NULL, NULL);
|
||||
config_look_prefix[GUI_CHAT_PREFIX_NETWORK] = config_file_new_option (
|
||||
weechat_config_file, weechat_config_section_look,
|
||||
"prefix_network", "string",
|
||||
"prefix_network", "string|themable",
|
||||
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
||||
N_("prefix for network messages (note: content is evaluated, so you "
|
||||
"can use colors with format \"${color:xxx}\", see /help eval)"),
|
||||
@@ -4134,7 +4141,7 @@ config_weechat_init_options (void)
|
||||
NULL, NULL, NULL);
|
||||
config_look_prefix[GUI_CHAT_PREFIX_ACTION] = config_file_new_option (
|
||||
weechat_config_file, weechat_config_section_look,
|
||||
"prefix_action", "string",
|
||||
"prefix_action", "string|themable",
|
||||
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
||||
N_("prefix for action messages (note: content is evaluated, so you "
|
||||
"can use colors with format \"${color:xxx}\", see /help eval)"),
|
||||
@@ -4144,7 +4151,7 @@ config_weechat_init_options (void)
|
||||
NULL, NULL, NULL);
|
||||
config_look_prefix[GUI_CHAT_PREFIX_JOIN] = config_file_new_option (
|
||||
weechat_config_file, weechat_config_section_look,
|
||||
"prefix_join", "string",
|
||||
"prefix_join", "string|themable",
|
||||
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
||||
N_("prefix for join messages (note: content is evaluated, so you "
|
||||
"can use colors with format \"${color:xxx}\", see /help eval)"),
|
||||
@@ -4154,7 +4161,7 @@ config_weechat_init_options (void)
|
||||
NULL, NULL, NULL);
|
||||
config_look_prefix[GUI_CHAT_PREFIX_QUIT] = config_file_new_option (
|
||||
weechat_config_file, weechat_config_section_look,
|
||||
"prefix_quit", "string",
|
||||
"prefix_quit", "string|themable",
|
||||
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
||||
N_("prefix for quit messages (note: content is evaluated, so you "
|
||||
"can use colors with format \"${color:xxx}\", see /help eval)"),
|
||||
@@ -4423,6 +4430,26 @@ config_weechat_init_options (void)
|
||||
NULL, NULL, NULL,
|
||||
&config_change_tab, NULL, NULL,
|
||||
NULL, NULL, NULL);
|
||||
config_look_theme = config_file_new_option (
|
||||
weechat_config_file, weechat_config_section_look,
|
||||
"theme", "string",
|
||||
N_("name of the last theme applied with command /theme "
|
||||
"(set automatically, do not change manually); informational "
|
||||
"only, the theme is not re-applied at startup"),
|
||||
NULL, 0, 0, "", NULL, 0,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||
config_look_theme_backup = config_file_new_option (
|
||||
weechat_config_file, weechat_config_section_look,
|
||||
"theme_backup", "boolean",
|
||||
N_("create a backup theme file with the current themable "
|
||||
"options before applying a theme with command /theme; if "
|
||||
"the backup file cannot be written, the apply is aborted "
|
||||
"(no option is changed); the backup file is written to "
|
||||
"directory \"themes\" inside the WeeChat configuration "
|
||||
"directory and can be restored with the command: `/theme apply "
|
||||
"backup-<timestamp>`"),
|
||||
NULL, 0, 0, "on", NULL, 0,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||
config_look_time_format = config_file_new_option (
|
||||
weechat_config_file, weechat_config_section_look,
|
||||
"time_format", "string",
|
||||
@@ -4643,7 +4670,7 @@ config_weechat_init_options (void)
|
||||
NULL, NULL, NULL);
|
||||
config_color_chat_nick_colors = config_file_new_option (
|
||||
weechat_config_file, weechat_config_section_color,
|
||||
"chat_nick_colors", "string",
|
||||
"chat_nick_colors", "string|themable",
|
||||
/* TRANSLATORS: please do not translate "lightred:blue" */
|
||||
N_("text color for nicks (comma separated list of colors, "
|
||||
"background is allowed with format: \"fg:bg\", for example: "
|
||||
@@ -4914,7 +4941,7 @@ config_weechat_init_options (void)
|
||||
/* eval syntax highlighting colors (for "${raw_hl:xxx}" and "${hl:xxx}") */
|
||||
config_color_eval_syntax_colors = config_file_new_option (
|
||||
weechat_config_file, weechat_config_section_color,
|
||||
"eval_syntax_colors", "string",
|
||||
"eval_syntax_colors", "string|themable",
|
||||
/* TRANSLATORS: please do not translate "lightred:blue" */
|
||||
N_("text color for syntax highlighting in evaluated strings, "
|
||||
"with \"${raw_hl:...}\" and \"${hl:...}\" (comma separated "
|
||||
|
||||
@@ -277,6 +277,8 @@ extern struct t_config_option *config_look_separator_horizontal;
|
||||
extern struct t_config_option *config_look_separator_vertical;
|
||||
extern struct t_config_option *config_look_tab_whitespace_char;
|
||||
extern struct t_config_option *config_look_tab_width;
|
||||
extern struct t_config_option *config_look_theme;
|
||||
extern struct t_config_option *config_look_theme_backup;
|
||||
extern struct t_config_option *config_look_time_format;
|
||||
extern struct t_config_option *config_look_whitespace_char;
|
||||
extern struct t_config_option *config_look_window_auto_zoom;
|
||||
|
||||
+14
-9
@@ -508,7 +508,8 @@ eval_string_repeat (const char *text)
|
||||
char *
|
||||
eval_string_split (const char *text)
|
||||
{
|
||||
char *pos, *pos2, *pos3, *str_number, *separators, **items, *value;
|
||||
const char *pos, *pos2, *pos3;
|
||||
char *str_number, *separators, **items, *value;
|
||||
char str_value[32], *str_flags, **list_flags, *strip_items, **ptr_flag;
|
||||
int num_items, count_items, random_item, flags, max_items;
|
||||
long number;
|
||||
@@ -655,7 +656,8 @@ end:
|
||||
char *
|
||||
eval_string_split_shell (const char *text)
|
||||
{
|
||||
char *pos, *str_number, **items, *value, str_value[32];
|
||||
const char *pos;
|
||||
char *str_number, **items, *value, str_value[32];
|
||||
int num_items, count_items, random_item;
|
||||
long number;
|
||||
|
||||
@@ -1046,7 +1048,8 @@ eval_string_if (const char *text, struct t_eval_context *eval_context)
|
||||
char *
|
||||
eval_string_random (const char *text)
|
||||
{
|
||||
char *pos, *tmp, result[128];
|
||||
const char *pos;
|
||||
char *tmp, result[128];
|
||||
long long min_number, max_number;
|
||||
|
||||
if (!text || !text[0])
|
||||
@@ -1112,7 +1115,8 @@ eval_string_translate (const char *text)
|
||||
void
|
||||
eval_string_define (const char *text, struct t_eval_context *eval_context)
|
||||
{
|
||||
char *pos, *name;
|
||||
const char *pos;
|
||||
char *name;
|
||||
|
||||
pos = strchr (text, ',');
|
||||
if (!pos)
|
||||
@@ -1139,7 +1143,8 @@ eval_hdata_count (const char *text, struct t_eval_context *eval_context)
|
||||
struct t_hdata *hdata;
|
||||
unsigned long ptr_value;
|
||||
void *pointer;
|
||||
char *pos1, *pos2, *value, *hdata_name, *pointer_name, str_count[64];
|
||||
const char *pos1, *pos2;
|
||||
char *value, *hdata_name, *pointer_name, str_count[64];
|
||||
int rc, count;
|
||||
|
||||
value = NULL;
|
||||
@@ -1211,8 +1216,8 @@ char *
|
||||
eval_hdata_get_value (struct t_hdata *hdata, void *pointer, const char *path,
|
||||
struct t_eval_context *eval_context)
|
||||
{
|
||||
char *value, *var_name, str_value[128], *pos, *property;
|
||||
const char *ptr_value, *hdata_name, *ptr_var_name, *pos_open_paren;
|
||||
char *value, *var_name, str_value[128], *property;
|
||||
const char *ptr_value, *hdata_name, *ptr_var_name, *pos, *pos_open_paren;
|
||||
int type, debug_id;
|
||||
struct t_hashtable *hashtable;
|
||||
|
||||
@@ -1539,8 +1544,8 @@ eval_syntax_highlight_add_markers (const char *prefix, const char *text,
|
||||
char *
|
||||
eval_syntax_highlight_colorize (const char *value)
|
||||
{
|
||||
const char *ptr_value;
|
||||
char **result, *pos;
|
||||
const char *ptr_value, *pos;
|
||||
char **result;
|
||||
int color;
|
||||
|
||||
if (!value)
|
||||
|
||||
@@ -688,7 +688,8 @@ hdata_count (struct t_hdata *hdata, void *pointer)
|
||||
void
|
||||
hdata_get_index_and_name (const char *name, int *index, const char **ptr_name)
|
||||
{
|
||||
char *pos, *str_index;
|
||||
const char *pos;
|
||||
char *str_index;
|
||||
int number;
|
||||
|
||||
if (index)
|
||||
@@ -1312,9 +1313,9 @@ hdata_set (struct t_hdata *hdata, void *pointer, const char *name,
|
||||
}
|
||||
break;
|
||||
case WEECHAT_HDATA_TIME:
|
||||
if (util_parse_long (value, 10, &number_long) && (number_long >= 0))
|
||||
if (util_parse_longlong (value, 10, &number_longlong) && (number_longlong >= 0))
|
||||
{
|
||||
*((time_t *)(pointer + var->offset)) = (time_t)number_long;
|
||||
*((time_t *)(pointer + var->offset)) = (time_t)number_longlong;
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -242,8 +242,8 @@ int
|
||||
input_data (struct t_gui_buffer *buffer, const char *data,
|
||||
const char *commands_allowed, int split_newline, int user_data)
|
||||
{
|
||||
char *pos, str_buffer[128], *new_data, *buffer_full_name;
|
||||
const char *ptr_data, *ptr_data_for_buffer;
|
||||
const char *ptr_data_for_buffer;
|
||||
char *pos, str_buffer[128], *new_data, *buffer_full_name, *ptr_data;
|
||||
int first_command, rc;
|
||||
|
||||
if (!buffer || !gui_buffer_valid (buffer) || !data)
|
||||
@@ -272,8 +272,13 @@ input_data (struct t_gui_buffer *buffer, const char *data,
|
||||
if (data[0] && new_data && !new_data[0])
|
||||
goto end;
|
||||
|
||||
if (!new_data)
|
||||
new_data = strdup (data);
|
||||
if (!new_data)
|
||||
goto end;
|
||||
|
||||
first_command = 1;
|
||||
ptr_data = (new_data) ? new_data : data;
|
||||
ptr_data = new_data;
|
||||
while (ptr_data)
|
||||
{
|
||||
/*
|
||||
|
||||
+19
-1
@@ -582,7 +582,13 @@ network_pass_socks5proxy (struct t_proxy *proxy, int sock, const char *address,
|
||||
int port)
|
||||
{
|
||||
struct t_network_socks5 socks5;
|
||||
unsigned char buffer[288];
|
||||
/*
|
||||
* buffer must be large enough for the username/password authentication
|
||||
* request, which is the longest message sent/received here; according to
|
||||
* RFC 1929 it is: version (1) + username length (1) + username (max 255)
|
||||
* + password length (1) + password (max 255)
|
||||
*/
|
||||
unsigned char buffer[2 + 255 + 1 + 255];
|
||||
int username_len, password_len, addr_len, addr_buffer_len;
|
||||
unsigned char *addr_buffer;
|
||||
char *username, *password;
|
||||
@@ -631,6 +637,18 @@ network_pass_socks5proxy (struct t_proxy *proxy, int sock, const char *address,
|
||||
username_len = strlen (username);
|
||||
password_len = strlen (password);
|
||||
|
||||
/*
|
||||
* username and password length are each stored on a single byte
|
||||
* (RFC 1929), so they cannot exceed 255 bytes: reject longer values,
|
||||
* otherwise the memcpy calls below would overflow the buffer
|
||||
*/
|
||||
if ((username_len > 255) || (password_len > 255))
|
||||
{
|
||||
free (username);
|
||||
free (password);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* make username/password buffer */
|
||||
buffer[0] = 1;
|
||||
buffer[1] = (unsigned char) username_len;
|
||||
|
||||
@@ -1686,9 +1686,8 @@ string_mask_to_regex (const char *mask)
|
||||
const char *
|
||||
string_regex_flags (const char *regex, int default_flags, int *flags)
|
||||
{
|
||||
const char *ptr_regex, *ptr_flags;
|
||||
const char *ptr_regex, *ptr_flags, *pos;
|
||||
int set_flag, flag;
|
||||
char *pos;
|
||||
|
||||
if (flags)
|
||||
*flags = default_flags;
|
||||
@@ -2966,8 +2965,9 @@ char **
|
||||
string_split_command (const char *command, char separator)
|
||||
{
|
||||
int nb_substr, arr_idx, str_idx, type;
|
||||
const char *p;
|
||||
char **array, **array2;
|
||||
char *buffer, *p;
|
||||
char *buffer;
|
||||
const char *ptr;
|
||||
|
||||
if (!command || !command[0])
|
||||
@@ -4138,8 +4138,7 @@ string_is_command_char (const char *string)
|
||||
const char *
|
||||
string_input_for_buffer (const char *string)
|
||||
{
|
||||
char *pos_slash, *pos_space, *pos_newline;
|
||||
const char *next_char;
|
||||
const char *pos_slash, *pos_space, *pos_newline, *next_char;
|
||||
|
||||
if (!string)
|
||||
return NULL;
|
||||
@@ -4476,7 +4475,8 @@ string_get_priority_and_name (const char *string,
|
||||
int *priority, const char **name,
|
||||
int default_priority)
|
||||
{
|
||||
char *pos, *str_priority;
|
||||
const char *pos;
|
||||
char *str_priority;
|
||||
int number;
|
||||
|
||||
if (priority)
|
||||
|
||||
@@ -0,0 +1,141 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2026 Sébastien Helleu <flashcode@flashtux.org>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*
|
||||
* This file is part of WeeChat, the extensible chat client.
|
||||
*
|
||||
* WeeChat is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* WeeChat is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* Built-in theme registrations (core contribution only). */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "weechat.h"
|
||||
#include "core-hashtable.h"
|
||||
#include "core-theme.h"
|
||||
#include "../plugins/weechat-plugin.h"
|
||||
|
||||
|
||||
/*
|
||||
* Core overrides for the "light" theme: option values tuned for a
|
||||
* light-background terminal. Order is by full option name to keep diffs
|
||||
* stable; the list ends with a NULL sentinel.
|
||||
*/
|
||||
|
||||
struct t_theme_builtin_entry
|
||||
{
|
||||
const char *option;
|
||||
const char *value;
|
||||
};
|
||||
|
||||
struct t_theme_builtin_entry theme_builtin_light_core[] =
|
||||
{
|
||||
{ "weechat.bar.status.color_bg", "254" },
|
||||
{ "weechat.bar.status.color_bg_inactive", "default" },
|
||||
{ "weechat.bar.title.color_bg", "254" },
|
||||
{ "weechat.bar.title.color_bg_inactive", "default" },
|
||||
{ "weechat.color.bar_more", "magenta" },
|
||||
{ "weechat.color.chat_buffer", "default" },
|
||||
{ "weechat.color.chat_channel", "default" },
|
||||
{ "weechat.color.chat_nick", "cyan" },
|
||||
{ "weechat.color.chat_nick_colors",
|
||||
"red,green,brown,blue,magenta,cyan,lightred,lightblue,lightmagenta,"
|
||||
"20,28,52,57,58,61,63,88,94,128,166,202" },
|
||||
{ "weechat.color.chat_nick_self", "default" },
|
||||
{ "weechat.color.chat_prefix_action", "default" },
|
||||
{ "weechat.color.chat_prefix_error", "94" },
|
||||
{ "weechat.color.chat_prefix_join", "green" },
|
||||
{ "weechat.color.chat_prefix_more", "magenta" },
|
||||
{ "weechat.color.chat_prefix_quit", "red" },
|
||||
{ "weechat.color.chat_prefix_suffix", "251" },
|
||||
{ "weechat.color.chat_server", "94" },
|
||||
{ "weechat.color.chat_text_found_bg", "magenta" },
|
||||
{ "weechat.color.chat_time_delimiters", "94" },
|
||||
{ "weechat.color.eval_syntax_colors",
|
||||
"green,red,blue,magenta,94,cyan" },
|
||||
{ "weechat.color.input_actions", "28" },
|
||||
{ "weechat.color.item_away", "brown" },
|
||||
{ "weechat.color.separator", "251" },
|
||||
{ "weechat.color.status_count_msg", "94" },
|
||||
{ "weechat.color.status_data_highlight", "93" },
|
||||
{ "weechat.color.status_data_msg", "94" },
|
||||
{ "weechat.color.status_data_private", "green" },
|
||||
{ "weechat.color.status_more", "94" },
|
||||
{ "weechat.color.status_mouse", "green" },
|
||||
{ "weechat.color.status_name", "default" },
|
||||
{ "weechat.color.status_name_insecure", "202" },
|
||||
{ "weechat.color.status_name_tls", "default" },
|
||||
{ "weechat.color.status_number", "28" },
|
||||
{ NULL, NULL },
|
||||
};
|
||||
|
||||
/*
|
||||
* Build a hashtable of overrides from a NULL-terminated table and
|
||||
* register it under the given theme name, with an optional description.
|
||||
*/
|
||||
|
||||
void
|
||||
theme_builtin_register_entries (const char *name,
|
||||
const char *description,
|
||||
const struct t_theme_builtin_entry *entries)
|
||||
{
|
||||
struct t_hashtable *overrides;
|
||||
struct t_theme *theme;
|
||||
int i;
|
||||
|
||||
if (!name || !entries)
|
||||
return;
|
||||
|
||||
overrides = hashtable_new (32,
|
||||
WEECHAT_HASHTABLE_STRING,
|
||||
WEECHAT_HASHTABLE_STRING,
|
||||
NULL, NULL);
|
||||
if (!overrides)
|
||||
return;
|
||||
|
||||
for (i = 0; entries[i].option; i++)
|
||||
hashtable_set (overrides, entries[i].option, entries[i].value);
|
||||
|
||||
theme = theme_register (NULL, NULL, name, overrides);
|
||||
if (theme && description)
|
||||
{
|
||||
free (theme->description);
|
||||
theme->description = strdup (description);
|
||||
}
|
||||
|
||||
hashtable_free (overrides);
|
||||
}
|
||||
|
||||
/*
|
||||
* Register all built-in themes contributed by core. Called once from
|
||||
* weechat_init; plugins/scripts add their own contributions later via
|
||||
* weechat_theme_register.
|
||||
*/
|
||||
|
||||
void
|
||||
theme_builtin_init (void)
|
||||
{
|
||||
theme_builtin_register_entries (
|
||||
"light",
|
||||
_("WeeChat default theme for light-background terminals"),
|
||||
theme_builtin_light_core);
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,92 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2026 Sébastien Helleu <flashcode@flashtux.org>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*
|
||||
* This file is part of WeeChat, the extensible chat client.
|
||||
*
|
||||
* WeeChat is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* WeeChat is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef WEECHAT_THEME_H
|
||||
#define WEECHAT_THEME_H
|
||||
|
||||
struct t_hashtable;
|
||||
struct t_arraylist;
|
||||
struct t_weechat_plugin;
|
||||
|
||||
/*
|
||||
* A contribution is one (owner, overrides) pair attached to a theme.
|
||||
* "owner" is identified by a (plugin, script) pair:
|
||||
* - plugin == NULL && script == NULL => core
|
||||
* - plugin != NULL && script == NULL => plugin (e.g. irc, fset)
|
||||
* - plugin != NULL && script != NULL => individual script under that
|
||||
* script-language plugin
|
||||
*/
|
||||
struct t_theme_contribution
|
||||
{
|
||||
struct t_weechat_plugin *plugin;
|
||||
const void *script;
|
||||
struct t_hashtable *overrides; /* full_option_name -> value */
|
||||
struct t_theme_contribution *prev_contribution;
|
||||
struct t_theme_contribution *next_contribution;
|
||||
};
|
||||
|
||||
struct t_theme
|
||||
{
|
||||
char *name; /* "light", "solarized", ... */
|
||||
char *description; /* free-form text */
|
||||
char *date; /* "YYYY-MM-DD HH:MM:SS" */
|
||||
char *weechat_version; /* version at registration time */
|
||||
struct t_theme_contribution *contributions;
|
||||
struct t_theme_contribution *last_contribution;
|
||||
struct t_theme *prev_theme;
|
||||
struct t_theme *next_theme;
|
||||
};
|
||||
|
||||
extern struct t_theme *themes;
|
||||
extern struct t_theme *last_theme;
|
||||
extern int theme_applying; /* gate for config_change_color */
|
||||
|
||||
extern struct t_theme *theme_search (const char *name);
|
||||
extern struct t_theme *theme_register (struct t_weechat_plugin *plugin,
|
||||
const void *script,
|
||||
const char *name,
|
||||
struct t_hashtable *overrides);
|
||||
extern int theme_overrides_count (struct t_theme *theme);
|
||||
extern const char *theme_get_override (struct t_theme *theme,
|
||||
const char *option_name);
|
||||
extern struct t_arraylist *theme_list (void);
|
||||
extern int theme_apply (const char *name);
|
||||
extern int theme_reset (void);
|
||||
extern int theme_save (const char *name);
|
||||
extern int theme_rename (const char *old_name, const char *new_name);
|
||||
extern int theme_delete (const char *name);
|
||||
extern char *theme_make_backup (void);
|
||||
extern char *theme_user_file_path (const char *name);
|
||||
extern struct t_theme *theme_file_parse (const char *path);
|
||||
extern void theme_free (struct t_theme *theme);
|
||||
|
||||
/* lifecycle: drop all contributions owned by a plugin or script */
|
||||
extern void theme_unregister_plugin (struct t_weechat_plugin *plugin);
|
||||
extern void theme_unregister_script (struct t_weechat_plugin *plugin,
|
||||
const void *script);
|
||||
|
||||
extern void theme_init (void);
|
||||
extern void theme_end (void);
|
||||
|
||||
/* implemented in core-theme-builtin.c */
|
||||
extern void theme_builtin_init (void);
|
||||
|
||||
#endif /* WEECHAT_THEME_H */
|
||||
@@ -143,8 +143,10 @@ struct t_url_constant url_auth[] =
|
||||
|
||||
struct t_url_constant url_authtype[] =
|
||||
{
|
||||
#if LIBCURL_VERSION_NUM < 0x081600 /* < 8.22.0 */
|
||||
URL_DEF_CONST(_TLSAUTH, NONE),
|
||||
URL_DEF_CONST(_TLSAUTH, SRP),
|
||||
#endif
|
||||
{ NULL, 0 },
|
||||
};
|
||||
|
||||
@@ -409,9 +411,11 @@ struct t_url_option url_options[] =
|
||||
URL_DEF_OPTION(PASSWORD, STRING, NULL),
|
||||
URL_DEF_OPTION(PROXYUSERNAME, STRING, NULL),
|
||||
URL_DEF_OPTION(PROXYPASSWORD, STRING, NULL),
|
||||
#if LIBCURL_VERSION_NUM < 0x081600 /* < 8.22.0 */
|
||||
URL_DEF_OPTION(TLSAUTH_TYPE, MASK, url_authtype),
|
||||
URL_DEF_OPTION(TLSAUTH_USERNAME, STRING, NULL),
|
||||
URL_DEF_OPTION(TLSAUTH_PASSWORD, STRING, NULL),
|
||||
#endif
|
||||
URL_DEF_OPTION(SASL_AUTHZID, STRING, NULL),
|
||||
|
||||
URL_DEF_OPTION(SASL_IR, LONG, NULL),
|
||||
@@ -626,9 +630,11 @@ struct t_url_option url_options[] =
|
||||
URL_DEF_OPTION(PROXY_SSL_OPTIONS, LONG, url_ssl_options),
|
||||
URL_DEF_OPTION(PROXY_SSL_VERIFYHOST, LONG, NULL),
|
||||
URL_DEF_OPTION(PROXY_SSL_VERIFYPEER, LONG, NULL),
|
||||
#if LIBCURL_VERSION_NUM < 0x081600 /* < 8.22.0 */
|
||||
URL_DEF_OPTION(PROXY_TLSAUTH_PASSWORD, STRING, NULL),
|
||||
URL_DEF_OPTION(PROXY_TLSAUTH_TYPE, STRING, NULL),
|
||||
URL_DEF_OPTION(PROXY_TLSAUTH_USERNAME, STRING, NULL),
|
||||
#endif
|
||||
URL_DEF_OPTION(TLS13_CIPHERS, LIST, NULL),
|
||||
URL_DEF_OPTION(PROXY_TLS13_CIPHERS, LIST, NULL),
|
||||
#if LIBCURL_VERSION_NUM >= 0x074700 /* 7.71.0 */
|
||||
|
||||
@@ -416,8 +416,8 @@ util_strftimeval (char *string, int max, const char *format, struct timeval *tv)
|
||||
int
|
||||
util_parse_time (const char *datetime, struct timeval *tv)
|
||||
{
|
||||
char *string, *pos, *pos2, *pos_colon, *pos_hyphen, *pos_dot;
|
||||
char str_usec[16], str_date[128];
|
||||
const char *pos_colon, *pos_hyphen, *pos_dot;
|
||||
char *pos, *pos2, *string, str_usec[16], str_date[128];
|
||||
struct tm tm_date, tm_date_gm, tm_date_local, *local_time;
|
||||
time_t time_now, time_gm, time_local;
|
||||
long long value;
|
||||
|
||||
@@ -597,8 +597,8 @@ hook_command_exec (struct t_gui_buffer *buffer, int any_plugin,
|
||||
struct t_hook *hook_plugin, *hook_other_plugin, *hook_other_plugin2;
|
||||
struct t_hook *hook_incomplete_command;
|
||||
struct t_hook_exec_cb hook_exec_cb;
|
||||
char **argv, **argv_eol, *command_name, *pos;
|
||||
const char *ptr_string;
|
||||
char **argv, **argv_eol, *command_name;
|
||||
const char *ptr_string, *pos;
|
||||
int argc, rc, length_command_name, allow_incomplete_commands;
|
||||
int count_other_plugin, count_incomplete_commands, flags;
|
||||
|
||||
|
||||
@@ -132,7 +132,8 @@ void
|
||||
hook_signal_extract_flags (const char *signal, const char **ptr_signal,
|
||||
int *stop_on_error, int *ignore_eat)
|
||||
{
|
||||
char *pos, *str_flags, **flags;
|
||||
const char *pos;
|
||||
char *str_flags, **flags;
|
||||
int i, num_flags;
|
||||
|
||||
if (!signal || !ptr_signal || !stop_on_error || !ignore_eat)
|
||||
|
||||
+46
-15
@@ -75,6 +75,7 @@
|
||||
#include "core-secure-config.h"
|
||||
#include "core-signal.h"
|
||||
#include "core-string.h"
|
||||
#include "core-theme.h"
|
||||
#include "core-upgrade.h"
|
||||
#include "core-url.h"
|
||||
#include "core-utf8.h"
|
||||
@@ -134,10 +135,13 @@ int weechat_auto_load_scripts = 1; /* auto-load scripts */
|
||||
|
||||
/*
|
||||
* Display WeeChat startup message.
|
||||
*
|
||||
* If "term_theme_light" is set, a notice about the automatic "light" theme is
|
||||
* displayed on first start.
|
||||
*/
|
||||
|
||||
void
|
||||
weechat_startup_message (void)
|
||||
weechat_startup_message (int term_theme_light)
|
||||
{
|
||||
if (weechat_headless)
|
||||
{
|
||||
@@ -182,22 +186,34 @@ weechat_startup_message (void)
|
||||
if (weechat_first_start)
|
||||
{
|
||||
/* message on first run (when weechat.conf is created) */
|
||||
gui_chat_printf (NULL, "");
|
||||
gui_chat_printf (NULL, _("Welcome to WeeChat!"));
|
||||
gui_chat_printf (
|
||||
NULL,
|
||||
_("Welcome to WeeChat!\n"
|
||||
"\n"
|
||||
"If you are discovering WeeChat, it is recommended to read at "
|
||||
"least the quickstart guide, and the user's guide if you have "
|
||||
"some time; they explain main WeeChat concepts.\n"
|
||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||
"\n"
|
||||
"Moreover, there is inline help with /help on all commands and "
|
||||
"options (use Tab key to complete the name).\n"
|
||||
"The command /fset can help to customize WeeChat.\n"
|
||||
"\n"
|
||||
"You can add and connect to an IRC server with /server and "
|
||||
_("If you are discovering WeeChat, it is recommended to "
|
||||
"read at least the quickstart guide, and the user's guide if "
|
||||
"you have some time; they explain main WeeChat concepts."));
|
||||
gui_chat_printf (
|
||||
NULL,
|
||||
_("All WeeChat docs are available at: %s"),
|
||||
WEECHAT_WEBSITE_DOC);
|
||||
gui_chat_printf (
|
||||
NULL,
|
||||
_("Moreover, there is inline help with /help on all commands and "
|
||||
"options (use Tab key to complete the name)."));
|
||||
gui_chat_printf (
|
||||
NULL,
|
||||
_("The command /fset can help to customize WeeChat."));
|
||||
gui_chat_printf (
|
||||
NULL,
|
||||
_("You can add and connect to an IRC server with /server and "
|
||||
"/connect commands (see /help server)."));
|
||||
if (term_theme_light)
|
||||
{
|
||||
gui_chat_printf (
|
||||
NULL,
|
||||
_("The \"light\" theme will be automatically applied. "
|
||||
"Use /theme reset to switch back to the default dark theme."));
|
||||
}
|
||||
gui_chat_printf (NULL, "");
|
||||
gui_chat_printf (NULL, "---");
|
||||
gui_chat_printf (NULL, "");
|
||||
@@ -360,6 +376,8 @@ weechat_init_gettext (void)
|
||||
void
|
||||
weechat_init (int argc, char *argv[], void (*gui_init_cb)(void))
|
||||
{
|
||||
int term_theme_light; /* 1 if a light terminal detected */
|
||||
|
||||
weechat_first_start_time = time (NULL); /* initialize start time */
|
||||
gettimeofday (&weechat_current_start_timeval, NULL);
|
||||
|
||||
@@ -368,6 +386,9 @@ weechat_init (int argc, char *argv[], void (*gui_init_cb)(void))
|
||||
* weechat_current_start_timeval.tv_usec)
|
||||
^ getpid ());
|
||||
|
||||
/* detect the terminal theme, before initializing the GUI */
|
||||
term_theme_light = gui_term_theme_is_light ();
|
||||
|
||||
weeurl_init (); /* initialize URL */
|
||||
string_init (); /* initialize string */
|
||||
signal_init (); /* initialize signals */
|
||||
@@ -384,6 +405,8 @@ weechat_init (int argc, char *argv[], void (*gui_init_cb)(void))
|
||||
weechat_shutdown (EXIT_FAILURE, 0);
|
||||
if (!secure_config_init ()) /* init secured data options (sec.*)*/
|
||||
weechat_shutdown (EXIT_FAILURE, 0);
|
||||
theme_init (); /* initialize theme registry */
|
||||
theme_builtin_init (); /* register built-in themes */
|
||||
if (!config_weechat_init ()) /* init WeeChat options (weechat.*) */
|
||||
weechat_shutdown (EXIT_FAILURE, 0);
|
||||
args_parse (argc, argv); /* parse command line args */
|
||||
@@ -405,7 +428,7 @@ weechat_init (int argc, char *argv[], void (*gui_init_cb)(void))
|
||||
weechat_upgrading = 0;
|
||||
}
|
||||
if (!weechat_doc_gen)
|
||||
weechat_startup_message (); /* display WeeChat startup message */
|
||||
weechat_startup_message (term_theme_light); /* startup message */
|
||||
gui_chat_print_lines_waiting_buffer (NULL); /* display lines waiting */
|
||||
weechat_term_check (); /* warning about wrong $TERM */
|
||||
weechat_locale_check (); /* warning about wrong locale */
|
||||
@@ -423,6 +446,13 @@ weechat_init (int argc, char *argv[], void (*gui_init_cb)(void))
|
||||
weechat_doc_gen_ok = doc_generate (weechat_doc_gen_path);
|
||||
weechat_quit = 1;
|
||||
}
|
||||
|
||||
if (weechat_first_start && isatty (STDOUT_FILENO) && !weechat_headless && !weechat_doc_gen)
|
||||
{
|
||||
/* switch to "light" theme if terminal background was detected as "light" */
|
||||
if (term_theme_light)
|
||||
theme_apply ("light");
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -449,6 +479,7 @@ weechat_end (void (*gui_end_cb)(int clean_exit))
|
||||
unhook_all (); /* remove all hooks */
|
||||
hdata_end (); /* end hdata */
|
||||
secure_end (); /* end secured data */
|
||||
theme_end (); /* end theme registry */
|
||||
string_end (); /* end string */
|
||||
weeurl_end ();
|
||||
weechat_shutdown (-1, 0); /* end other things */
|
||||
|
||||
@@ -55,6 +55,7 @@
|
||||
|
||||
#define WEECHAT_COPYRIGHT_DATE "(C) 2003-2026"
|
||||
#define WEECHAT_WEBSITE "https://weechat.org/"
|
||||
#define WEECHAT_WEBSITE_DOC "https://weechat.org/doc/"
|
||||
#define WEECHAT_WEBSITE_DOWNLOAD "https://weechat.org/download/"
|
||||
#define WEECHAT_AUTHOR_NAME "Sébastien Helleu"
|
||||
#define WEECHAT_AUTHOR_EMAIL "flashcode@flashtux.org"
|
||||
|
||||
@@ -25,6 +25,14 @@
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <sys/select.h>
|
||||
#include <sys/time.h>
|
||||
#include <termios.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#ifndef WEECHAT_HEADLESS
|
||||
#ifdef HAVE_NCURSESW_CURSES_H
|
||||
#ifdef __sun
|
||||
@@ -37,6 +45,8 @@
|
||||
#endif /* HAVE_NCURSESW_CURSES_H */
|
||||
#endif /* WEECHAT_HEADLESS */
|
||||
|
||||
#include "../../core/weechat.h"
|
||||
|
||||
|
||||
/*
|
||||
* Set "eat_newline_glitch" variable.
|
||||
@@ -56,3 +66,139 @@ gui_term_set_eat_newline_glitch (int value)
|
||||
(void) value;
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
* Auto-detects the terminal background as "light" or "dark".
|
||||
*
|
||||
* Best-effort, in order:
|
||||
*
|
||||
* 1. Environment variable COLORFGBG (set by rxvt, urxvt, Konsole,
|
||||
* ...): "fg;bg" or "fg;default;bg"; the last ';'-separated
|
||||
* component is the bg ANSI color index. 0-6 + 8 are dark,
|
||||
* 7 + 9-15 are light.
|
||||
*
|
||||
* 2. OSC 11 escape query on /dev/tty: write "\033]11;?\033\\",
|
||||
* wait up to 100 ms for a reply of the form
|
||||
* "...rgb:RRRR/GGGG/BBBB..." (each component is 1-4 hex digits
|
||||
* depending on the terminal). Classify the answer by Rec. 601
|
||||
* luminance computed on the high nibble of each component
|
||||
* (resolution is plenty for a light/dark binary decision and
|
||||
* avoids width-normalization headaches).
|
||||
*
|
||||
* /dev/tty is used rather than stdin/stdout so a pipe redirection
|
||||
* does not defeat detection. The select() timeout caps how long a
|
||||
* silent terminal can stall startup. Headless mode and any I/O error
|
||||
* short-circuit to the safe default 0 (dark), which is also returned
|
||||
* when both probes are inconclusive.
|
||||
*
|
||||
* MUST be called before curses init: it briefly puts the tty in raw
|
||||
* mode and reads/writes escape sequences directly.
|
||||
*
|
||||
* Returns 1 if a light background is detected, otherwise 0 (0 is the
|
||||
* preferred value when detection is unsure).
|
||||
*/
|
||||
|
||||
int
|
||||
gui_term_theme_is_light (void)
|
||||
{
|
||||
const char *colorfgbg, *p;
|
||||
char *endptr;
|
||||
long bg;
|
||||
int fd, n, i, len;
|
||||
struct termios old_attr, new_attr;
|
||||
fd_set rfds;
|
||||
struct timeval tv;
|
||||
char buf[256], *q, *qend;
|
||||
unsigned long comp_high[3], luminance;
|
||||
|
||||
if (weechat_headless)
|
||||
return 0;
|
||||
|
||||
/* 1. COLORFGBG */
|
||||
colorfgbg = getenv ("COLORFGBG");
|
||||
if (colorfgbg && colorfgbg[0])
|
||||
{
|
||||
p = strrchr (colorfgbg, ';');
|
||||
if (p)
|
||||
{
|
||||
bg = strtol (p + 1, &endptr, 10);
|
||||
if (endptr != p + 1 && *endptr == '\0')
|
||||
{
|
||||
if (bg == 7 || (bg >= 9 && bg <= 15))
|
||||
return 1;
|
||||
if ((bg >= 0 && bg <= 6) || bg == 8)
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 2. OSC 11 query on the controlling terminal */
|
||||
fd = open ("/dev/tty", O_RDWR | O_NOCTTY);
|
||||
if (fd < 0)
|
||||
return 0;
|
||||
|
||||
if (tcgetattr (fd, &old_attr) != 0)
|
||||
{
|
||||
close (fd);
|
||||
return 0;
|
||||
}
|
||||
new_attr = old_attr;
|
||||
new_attr.c_lflag &= (tcflag_t) ~(ICANON | ECHO);
|
||||
new_attr.c_cc[VMIN] = 0;
|
||||
new_attr.c_cc[VTIME] = 0;
|
||||
if (tcsetattr (fd, TCSANOW, &new_attr) != 0)
|
||||
{
|
||||
close (fd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
n = -1;
|
||||
if (write (fd, "\033]11;?\033\\", 8) == 8)
|
||||
{
|
||||
FD_ZERO (&rfds);
|
||||
FD_SET (fd, &rfds);
|
||||
tv.tv_sec = 0;
|
||||
tv.tv_usec = 100000; /* 100 ms cap on terminals that won't reply */
|
||||
if (select (fd + 1, &rfds, NULL, NULL, &tv) > 0)
|
||||
n = read (fd, buf, sizeof (buf) - 1);
|
||||
}
|
||||
|
||||
tcsetattr (fd, TCSANOW, &old_attr);
|
||||
close (fd);
|
||||
|
||||
if (n <= 0)
|
||||
return 0;
|
||||
buf[n] = '\0';
|
||||
|
||||
q = strstr (buf, "rgb:");
|
||||
if (!q)
|
||||
return 0;
|
||||
q += 4;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
qend = q;
|
||||
while ((*qend >= '0' && *qend <= '9')
|
||||
|| (*qend >= 'a' && *qend <= 'f')
|
||||
|| (*qend >= 'A' && *qend <= 'F'))
|
||||
qend++;
|
||||
len = (int)(qend - q);
|
||||
if (len < 1 || len > 4)
|
||||
return 0;
|
||||
/* high nibble of this component: width-independent brightness */
|
||||
comp_high[i] = strtoul (q, NULL, 16) >> ((len - 1) * 4);
|
||||
q = qend;
|
||||
if (i < 2)
|
||||
{
|
||||
if (*q != '/')
|
||||
return 0;
|
||||
q++;
|
||||
}
|
||||
}
|
||||
|
||||
/* Rec. 601 with coefficients summing to 1000; max = 15 * 1000 */
|
||||
luminance = (299UL * comp_high[0]
|
||||
+ 587UL * comp_high[1]
|
||||
+ 114UL * comp_high[2]);
|
||||
return (luminance > 7500) ? 1 : 0;
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ void
|
||||
daemonize (void)
|
||||
{
|
||||
pid_t pid;
|
||||
int fd, i;
|
||||
int fd, i, rc;
|
||||
|
||||
printf ("%s ", _("Running WeeChat in background..."));
|
||||
|
||||
@@ -77,8 +77,9 @@ daemonize (void)
|
||||
close (i);
|
||||
}
|
||||
fd = open ("/dev/null", O_RDWR);
|
||||
(void) dup (fd);
|
||||
(void) dup (fd);
|
||||
rc = dup (fd);
|
||||
rc = dup (fd);
|
||||
(void) rc;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -138,7 +138,8 @@ gui_bar_item_custom_search (const char *item_name)
|
||||
struct t_gui_bar_item_custom *
|
||||
gui_bar_item_custom_search_with_option_name (const char *option_name)
|
||||
{
|
||||
char *item_name, *pos_option;
|
||||
const char *pos_option;
|
||||
char *item_name;
|
||||
struct t_gui_bar_item_custom *ptr_item;
|
||||
|
||||
if (!option_name)
|
||||
|
||||
@@ -1880,9 +1880,9 @@ gui_bar_item_buffer_nicklist_cb (const void *pointer, void *data,
|
||||
{
|
||||
if (strchr (ptr_nick->prefix_color, '.'))
|
||||
{
|
||||
config_file_search_with_string (ptr_nick->prefix_color,
|
||||
NULL, NULL, &ptr_option,
|
||||
NULL);
|
||||
config_file_search_with_string (
|
||||
ptr_nick->prefix_color,
|
||||
NULL, NULL, &ptr_option, NULL);
|
||||
if (ptr_option)
|
||||
{
|
||||
string_dyn_concat (
|
||||
@@ -1907,9 +1907,9 @@ gui_bar_item_buffer_nicklist_cb (const void *pointer, void *data,
|
||||
{
|
||||
if (strchr (ptr_nick->color, '.'))
|
||||
{
|
||||
config_file_search_with_string (ptr_nick->color,
|
||||
NULL, NULL, &ptr_option,
|
||||
NULL);
|
||||
config_file_search_with_string (
|
||||
ptr_nick->color,
|
||||
NULL, NULL, &ptr_option, NULL);
|
||||
if (ptr_option)
|
||||
{
|
||||
string_dyn_concat (
|
||||
@@ -1940,9 +1940,9 @@ gui_bar_item_buffer_nicklist_cb (const void *pointer, void *data,
|
||||
{
|
||||
if (strchr (ptr_group->color, '.'))
|
||||
{
|
||||
config_file_search_with_string (ptr_group->color,
|
||||
NULL, NULL, &ptr_option,
|
||||
NULL);
|
||||
config_file_search_with_string (
|
||||
ptr_group->color,
|
||||
NULL, NULL, &ptr_option, NULL);
|
||||
if (ptr_option)
|
||||
{
|
||||
string_dyn_concat (
|
||||
|
||||
+2
-1
@@ -515,7 +515,8 @@ gui_bar_search (const char *name)
|
||||
struct t_gui_bar *
|
||||
gui_bar_search_with_option_name (const char *option_name)
|
||||
{
|
||||
char *bar_name, *pos_option;
|
||||
const char *pos_option;
|
||||
char *bar_name;
|
||||
struct t_gui_bar *ptr_bar;
|
||||
|
||||
if (!option_name)
|
||||
|
||||
+70
-98
@@ -1764,17 +1764,13 @@ void
|
||||
gui_buffer_set_notify (struct t_gui_buffer *buffer, const char *notify)
|
||||
{
|
||||
const char *ptr_notify;
|
||||
char *error;
|
||||
long number;
|
||||
int mute_old;
|
||||
int mute_old, number;
|
||||
|
||||
if (!buffer)
|
||||
return;
|
||||
|
||||
ptr_notify = NULL;
|
||||
error = NULL;
|
||||
number = strtol (notify, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (notify, 10, &number))
|
||||
{
|
||||
if (number < GUI_BUFFER_NUM_NOTIFY)
|
||||
{
|
||||
@@ -2232,9 +2228,8 @@ void
|
||||
gui_buffer_set_hotlist_max_level_nicks (struct t_gui_buffer *buffer,
|
||||
const char *new_hotlist_max_level_nicks)
|
||||
{
|
||||
char **nicks, *pos, *error;
|
||||
int nicks_count, value, i;
|
||||
long number;
|
||||
char **nicks, *pos;
|
||||
int nicks_count, number, value, i;
|
||||
|
||||
if (!buffer)
|
||||
return;
|
||||
@@ -2260,13 +2255,10 @@ gui_buffer_set_hotlist_max_level_nicks (struct t_gui_buffer *buffer,
|
||||
{
|
||||
pos[0] = '\0';
|
||||
pos++;
|
||||
error = NULL;
|
||||
number = strtol (pos, &error, 10);
|
||||
if (error && !error[0])
|
||||
value = (int)number;
|
||||
if (util_parse_int (pos, 10, &number))
|
||||
value = number;
|
||||
}
|
||||
hashtable_set (buffer->hotlist_max_level_nicks, nicks[i],
|
||||
&value);
|
||||
hashtable_set (buffer->hotlist_max_level_nicks, nicks[i], &value);
|
||||
}
|
||||
string_free_split (nicks);
|
||||
}
|
||||
@@ -2279,9 +2271,8 @@ void
|
||||
gui_buffer_add_hotlist_max_level_nicks (struct t_gui_buffer *buffer,
|
||||
const char *nicks_to_add)
|
||||
{
|
||||
char **nicks, *pos, *error;
|
||||
int nicks_count, value, i;
|
||||
long number;
|
||||
char **nicks, *pos;
|
||||
int nicks_count, number, value, i;
|
||||
|
||||
if (!buffer || !nicks_to_add)
|
||||
return;
|
||||
@@ -2302,13 +2293,10 @@ gui_buffer_add_hotlist_max_level_nicks (struct t_gui_buffer *buffer,
|
||||
{
|
||||
pos[0] = '\0';
|
||||
pos++;
|
||||
error = NULL;
|
||||
number = strtol (pos, &error, 10);
|
||||
if (error && !error[0])
|
||||
value = (int)number;
|
||||
if (util_parse_int (pos, 10, &number))
|
||||
value = number;
|
||||
}
|
||||
hashtable_set (buffer->hotlist_max_level_nicks, nicks[i],
|
||||
&value);
|
||||
hashtable_set (buffer->hotlist_max_level_nicks, nicks[i], &value);
|
||||
}
|
||||
string_free_split (nicks);
|
||||
}
|
||||
@@ -2454,9 +2442,7 @@ void
|
||||
gui_buffer_set_unread (struct t_gui_buffer *buffer, const char *argument)
|
||||
{
|
||||
struct t_gui_line *old_last_read_line;
|
||||
int i, old_first_line_not_read;
|
||||
long number;
|
||||
char *error;
|
||||
int i, number, old_first_line_not_read;
|
||||
|
||||
if (!buffer || (buffer->type != GUI_BUFFER_TYPE_FORMATTED))
|
||||
return;
|
||||
@@ -2479,9 +2465,7 @@ gui_buffer_set_unread (struct t_gui_buffer *buffer, const char *argument)
|
||||
else if (argument[0] == '-')
|
||||
{
|
||||
/* move the unread marker N lines towards the first line */
|
||||
error = NULL;
|
||||
number = strtol (argument, &error, 10);
|
||||
if (error && !error[0] && (number < 0))
|
||||
if (util_parse_int (argument, 10, &number) && (number < 0))
|
||||
{
|
||||
for (i = 0; i > number; i--)
|
||||
{
|
||||
@@ -2507,9 +2491,7 @@ gui_buffer_set_unread (struct t_gui_buffer *buffer, const char *argument)
|
||||
else if (argument[0] == '+')
|
||||
{
|
||||
/* move the unread marker N lines towards the last line */
|
||||
error = NULL;
|
||||
number = strtol (argument, &error, 10);
|
||||
if (error && !error[0] && (number > 0))
|
||||
if (util_parse_int (argument, 10, &number) && (number > 0))
|
||||
{
|
||||
for (i = 0; i < number; i++)
|
||||
{
|
||||
@@ -2533,9 +2515,7 @@ gui_buffer_set_unread (struct t_gui_buffer *buffer, const char *argument)
|
||||
else
|
||||
{
|
||||
/* move the unread marker N lines from the end towards the first line */
|
||||
error = NULL;
|
||||
number = strtol (argument, &error, 10);
|
||||
if (error && !error[0] && (number > 0))
|
||||
if (util_parse_int (argument, 10, &number) && (number > 0))
|
||||
{
|
||||
buffer->lines->last_read_line = buffer->lines->last_line;
|
||||
buffer->lines->first_line_not_read = 0;
|
||||
@@ -2569,8 +2549,7 @@ void
|
||||
gui_buffer_set (struct t_gui_buffer *buffer, const char *property,
|
||||
const char *value)
|
||||
{
|
||||
long number;
|
||||
char *error;
|
||||
int number;
|
||||
|
||||
if (!property || !value)
|
||||
return;
|
||||
@@ -2584,9 +2563,7 @@ gui_buffer_set (struct t_gui_buffer *buffer, const char *property,
|
||||
gui_add_hotlist = 1;
|
||||
else if (buffer)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value, 10, &number))
|
||||
{
|
||||
if (number < 0)
|
||||
{
|
||||
@@ -2614,9 +2591,7 @@ gui_buffer_set (struct t_gui_buffer *buffer, const char *property,
|
||||
/* properties that need a buffer */
|
||||
if (strcmp (property, "hotlist_conditions") == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value, 10, &number))
|
||||
{
|
||||
if (number < 0)
|
||||
{
|
||||
@@ -2650,9 +2625,7 @@ gui_buffer_set (struct t_gui_buffer *buffer, const char *property,
|
||||
}
|
||||
else if (strcmp (property, "hidden") == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value, 10, &number))
|
||||
{
|
||||
if (number)
|
||||
gui_buffer_hide (buffer);
|
||||
@@ -2662,37 +2635,27 @@ gui_buffer_set (struct t_gui_buffer *buffer, const char *property,
|
||||
}
|
||||
else if (strcmp (property, "print_hooks_enabled") == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value, 10, &number))
|
||||
buffer->print_hooks_enabled = (number) ? 1 : 0;
|
||||
}
|
||||
else if (strcmp (property, "day_change") == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value, 10, &number))
|
||||
gui_buffer_set_day_change (buffer, number);
|
||||
}
|
||||
else if (strcmp (property, "clear") == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value, 10, &number))
|
||||
buffer->clear = (number) ? 1 : 0;
|
||||
}
|
||||
else if (strcmp (property, "filter") == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value, 10, &number))
|
||||
gui_buffer_set_filter (buffer, number);
|
||||
}
|
||||
else if (strcmp (property, "number") == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value, &error, 10);
|
||||
if (error && !error[0] && (number >= 1))
|
||||
if (util_parse_int (value, 10, &number) && (number >= 1))
|
||||
gui_buffer_move_to_number (buffer, number);
|
||||
}
|
||||
else if (strcmp (property, "name") == 0)
|
||||
@@ -2724,30 +2687,22 @@ gui_buffer_set (struct t_gui_buffer *buffer, const char *property,
|
||||
}
|
||||
else if (strcmp (property, "time_for_each_line") == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value, 10, &number))
|
||||
gui_buffer_set_time_for_each_line (buffer, number);
|
||||
}
|
||||
else if (strcmp (property, "nicklist") == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value, 10, &number))
|
||||
gui_buffer_set_nicklist (buffer, number);
|
||||
}
|
||||
else if (strcmp (property, "nicklist_case_sensitive") == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value, 10, &number))
|
||||
gui_buffer_set_nicklist_case_sensitive (buffer, number);
|
||||
}
|
||||
else if (strcmp (property, "nicklist_display_groups") == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value, 10, &number))
|
||||
gui_buffer_set_nicklist_display_groups (buffer, number);
|
||||
}
|
||||
else if (strcmp (property, "highlight_words") == 0)
|
||||
@@ -2816,37 +2771,27 @@ gui_buffer_set (struct t_gui_buffer *buffer, const char *property,
|
||||
}
|
||||
else if (strcmp (property, "input_pos") == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value, 10, &number))
|
||||
gui_input_set_pos (buffer, number);
|
||||
}
|
||||
else if (strcmp (property, "input_get_any_user_data") == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value, 10, &number))
|
||||
gui_buffer_set_input_get_any_user_data (buffer, number);
|
||||
}
|
||||
else if (strcmp (property, "input_get_unknown_commands") == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value, 10, &number))
|
||||
gui_buffer_set_input_get_unknown_commands (buffer, number);
|
||||
}
|
||||
else if (strcmp (property, "input_get_empty") == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value, 10, &number))
|
||||
gui_buffer_set_input_get_empty (buffer, number);
|
||||
}
|
||||
else if (strcmp (property, "input_multiline") == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value, 10, &number))
|
||||
gui_buffer_set_input_multiline (buffer, number);
|
||||
}
|
||||
else if (strncmp (property, "localvar_set_", 13) == 0)
|
||||
@@ -3076,7 +3021,6 @@ gui_buffer_search (const char *plugin, const char *name)
|
||||
struct t_gui_buffer *ptr_buffer;
|
||||
int plugin_match, plugin_case_sensitive, name_case_sensitive;
|
||||
long long id;
|
||||
char *error;
|
||||
|
||||
if (!name || !name[0])
|
||||
return gui_current_window->buffer;
|
||||
@@ -3086,9 +3030,9 @@ gui_buffer_search (const char *plugin, const char *name)
|
||||
|
||||
if (plugin && (strcmp (plugin, "==id") == 0))
|
||||
{
|
||||
error = NULL;
|
||||
id = strtoll (name, &error, 10);
|
||||
return (error && !error[0]) ? gui_buffer_search_by_id (id) : NULL;
|
||||
if (util_parse_longlong (name, 10, &id))
|
||||
return gui_buffer_search_by_id (id);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
plugin_case_sensitive = 1;
|
||||
@@ -3317,16 +3261,13 @@ gui_buffer_search_by_id_number_name (const char *string)
|
||||
{
|
||||
struct t_gui_buffer *ptr_buffer;
|
||||
long long number;
|
||||
char *error;
|
||||
|
||||
if (!string)
|
||||
if (!string || !string[0])
|
||||
return NULL;
|
||||
|
||||
ptr_buffer = NULL;
|
||||
|
||||
error = NULL;
|
||||
number = strtoll (string, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_longlong (string, 10, &number))
|
||||
{
|
||||
ptr_buffer = gui_buffer_search_by_id (number);
|
||||
if (!ptr_buffer)
|
||||
@@ -3834,6 +3775,7 @@ gui_buffer_close (struct t_gui_buffer *buffer)
|
||||
|
||||
gui_hotlist_remove_buffer (buffer, 1);
|
||||
free (buffer->hotlist_removed);
|
||||
buffer->hotlist_removed = NULL;
|
||||
if (gui_hotlist_initial_buffer == buffer)
|
||||
gui_hotlist_initial_buffer = NULL;
|
||||
|
||||
@@ -3852,55 +3794,85 @@ gui_buffer_close (struct t_gui_buffer *buffer)
|
||||
/* free all lines */
|
||||
gui_line_free_all (buffer);
|
||||
free (buffer->own_lines);
|
||||
buffer->own_lines = NULL;
|
||||
free (buffer->mixed_lines);
|
||||
buffer->mixed_lines = NULL;
|
||||
|
||||
/* free some data */
|
||||
gui_buffer_undo_free_all (buffer);
|
||||
gui_history_buffer_free (buffer);
|
||||
gui_completion_free (buffer->completion);
|
||||
buffer->completion = NULL;
|
||||
gui_nicklist_remove_all (buffer);
|
||||
gui_nicklist_remove_group (buffer, buffer->nicklist_root);
|
||||
buffer->nicklist_root = NULL;
|
||||
hashtable_free (buffer->hotlist_max_level_nicks);
|
||||
buffer->hotlist_max_level_nicks = NULL;
|
||||
gui_key_free_all (-1, &buffer->keys, &buffer->last_key,
|
||||
&buffer->keys_count, 0);
|
||||
gui_buffer_local_var_remove_all (buffer);
|
||||
hashtable_free (buffer->local_variables);
|
||||
buffer->local_variables = NULL;
|
||||
free (buffer->plugin_name_for_upgrade);
|
||||
buffer->plugin_name_for_upgrade = NULL;
|
||||
free (buffer->name);
|
||||
buffer->name = NULL;
|
||||
free (buffer->full_name);
|
||||
buffer->full_name = NULL;
|
||||
free (buffer->old_full_name);
|
||||
buffer->old_full_name = NULL;
|
||||
free (buffer->short_name);
|
||||
buffer->short_name = NULL;
|
||||
free (buffer->title);
|
||||
buffer->title = NULL;
|
||||
free (buffer->modes);
|
||||
buffer->modes = NULL;
|
||||
free (buffer->input_prompt);
|
||||
buffer->input_prompt = NULL;
|
||||
free (buffer->input_buffer);
|
||||
buffer->input_buffer = NULL;
|
||||
free (buffer->input_undo_snap);
|
||||
buffer->input_undo_snap = NULL;
|
||||
free (buffer->text_search_input);
|
||||
buffer->text_search_input = NULL;
|
||||
if (buffer->text_search_regex_compiled)
|
||||
{
|
||||
regfree (buffer->text_search_regex_compiled);
|
||||
free (buffer->text_search_regex_compiled);
|
||||
buffer->text_search_regex_compiled = NULL;
|
||||
}
|
||||
free (buffer->highlight_words);
|
||||
buffer->highlight_words = NULL;
|
||||
free (buffer->highlight_disable_regex);
|
||||
buffer->highlight_disable_regex = NULL;
|
||||
if (buffer->highlight_disable_regex_compiled)
|
||||
{
|
||||
regfree (buffer->highlight_disable_regex_compiled);
|
||||
free (buffer->highlight_disable_regex_compiled);
|
||||
buffer->highlight_disable_regex_compiled = NULL;
|
||||
}
|
||||
free (buffer->highlight_regex);
|
||||
buffer->highlight_regex = NULL;
|
||||
if (buffer->highlight_regex_compiled)
|
||||
{
|
||||
regfree (buffer->highlight_regex_compiled);
|
||||
free (buffer->highlight_regex_compiled);
|
||||
buffer->highlight_regex_compiled = NULL;
|
||||
}
|
||||
free (buffer->highlight_tags_restrict);
|
||||
buffer->highlight_tags_restrict = NULL;
|
||||
string_free_split_tags (buffer->highlight_tags_restrict_array);
|
||||
buffer->highlight_tags_restrict_array = NULL;
|
||||
free (buffer->highlight_tags);
|
||||
buffer->highlight_tags = NULL;
|
||||
string_free_split_tags (buffer->highlight_tags_array);
|
||||
buffer->highlight_tags_array = NULL;
|
||||
free (buffer->input_callback_data);
|
||||
buffer->input_callback_data = NULL;
|
||||
free (buffer->close_callback_data);
|
||||
buffer->close_callback_data = NULL;
|
||||
free (buffer->nickcmp_callback_data);
|
||||
buffer->nickcmp_callback_data = NULL;
|
||||
|
||||
/* remove buffer from buffers list */
|
||||
if (buffer->prev_buffer)
|
||||
|
||||
+5
-9
@@ -118,8 +118,8 @@ gui_chat_init (void)
|
||||
void
|
||||
gui_chat_prefix_build (void)
|
||||
{
|
||||
const char *ptr_prefix;
|
||||
char prefix[512], *pos_color;
|
||||
const char *ptr_prefix, *pos_color;
|
||||
char prefix[512];
|
||||
int prefix_color[GUI_CHAT_NUM_PREFIXES] =
|
||||
{ GUI_COLOR_CHAT_PREFIX_ERROR, GUI_COLOR_CHAT_PREFIX_NETWORK,
|
||||
GUI_COLOR_CHAT_PREFIX_ACTION, GUI_COLOR_CHAT_PREFIX_JOIN,
|
||||
@@ -1400,7 +1400,7 @@ gui_chat_hsignal_quote_line_cb (const void *pointer, void *data,
|
||||
struct timeval tv;
|
||||
struct t_gui_line *ptr_line;
|
||||
int is_nick, rc;
|
||||
char str_time[128], *str, *error;
|
||||
char str_time[128], *str;
|
||||
|
||||
/* make C compiler happy */
|
||||
(void) pointer;
|
||||
@@ -1415,9 +1415,7 @@ gui_chat_hsignal_quote_line_cb (const void *pointer, void *data,
|
||||
hashtable_get (hashtable, "_chat_line_date") : NULL;
|
||||
if (ptr_date)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtoll (ptr_date, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_longlong (ptr_date, 10, &number))
|
||||
{
|
||||
tv.tv_sec = (time_t)number;
|
||||
tv.tv_usec = 0;
|
||||
@@ -1425,9 +1423,7 @@ gui_chat_hsignal_quote_line_cb (const void *pointer, void *data,
|
||||
hashtable_get (hashtable, "_chat_line_date_usec") : NULL;
|
||||
if (ptr_date_usec)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtoll (ptr_date_usec, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_longlong (ptr_date_usec, 10, &number))
|
||||
tv.tv_usec = (long)number;
|
||||
}
|
||||
util_strftimeval (str_time, sizeof (str_time),
|
||||
|
||||
+17
-41
@@ -41,6 +41,7 @@
|
||||
#include "../core/core-list.h"
|
||||
#include "../core/core-string.h"
|
||||
#include "../core/core-utf8.h"
|
||||
#include "../core/core-util.h"
|
||||
#include "../plugins/plugin.h"
|
||||
#include "gui-color.h"
|
||||
#include "gui-chat.h"
|
||||
@@ -170,8 +171,7 @@ gui_color_search_config (const char *color_name)
|
||||
/* search in any configuration file (example: "irc.color.message_quit") */
|
||||
if (strchr (color_name, '.'))
|
||||
{
|
||||
config_file_search_with_string (color_name, NULL, NULL, &ptr_option,
|
||||
NULL);
|
||||
config_file_search_with_string (color_name, NULL, NULL, &ptr_option, NULL);
|
||||
if (ptr_option)
|
||||
return gui_color_from_option (ptr_option);
|
||||
}
|
||||
@@ -255,8 +255,8 @@ gui_color_get_custom (const char *color_name)
|
||||
static char color[32][96];
|
||||
static int index_color = 0;
|
||||
char color_fg[32], color_bg[32];
|
||||
char *pos_delim, *str_fg, *pos_bg, *error, *color_attr;
|
||||
const char *ptr_color_name;
|
||||
char *str_fg, *color_attr;
|
||||
const char *ptr_color_name, *pos_delim, *pos_bg;
|
||||
|
||||
/* attribute or other color name (GUI dependent) */
|
||||
index_color = (index_color + 1) % 32;
|
||||
@@ -439,9 +439,7 @@ gui_color_get_custom (const char *color_name)
|
||||
fg_term = gui_color_palette_get_alias (str_fg);
|
||||
if (fg_term < 0)
|
||||
{
|
||||
error = NULL;
|
||||
term_color = (int)strtol (str_fg, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (str_fg, 10, &term_color))
|
||||
{
|
||||
fg_term = term_color;
|
||||
if (fg_term < 0)
|
||||
@@ -458,9 +456,7 @@ gui_color_get_custom (const char *color_name)
|
||||
bg_term = gui_color_palette_get_alias (pos_bg);
|
||||
if (bg_term < 0)
|
||||
{
|
||||
error = NULL;
|
||||
term_color = (int)strtol (pos_bg, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (pos_bg, 10, &term_color))
|
||||
{
|
||||
bg_term = term_color;
|
||||
if (bg_term < 0)
|
||||
@@ -1287,7 +1283,7 @@ char *
|
||||
gui_color_encode_ansi (const char *string)
|
||||
{
|
||||
const unsigned char *ptr_string;
|
||||
char **out, str_concat[128], str_color[8], *error;
|
||||
char **out, str_concat[128], str_color[8];
|
||||
int flag, color, length, ansi_color, fg, bg, attrs;
|
||||
|
||||
if (!string)
|
||||
@@ -1321,9 +1317,7 @@ gui_color_encode_ansi (const char *string)
|
||||
{
|
||||
memcpy (str_color, ptr_string, 5);
|
||||
str_color[5] = '\0';
|
||||
error = NULL;
|
||||
color = (int)strtol (str_color, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (str_color, 10, &color))
|
||||
{
|
||||
snprintf (str_concat, sizeof (str_concat),
|
||||
"\x1B[38;5;%dm",
|
||||
@@ -1344,9 +1338,7 @@ gui_color_encode_ansi (const char *string)
|
||||
{
|
||||
memcpy (str_color, ptr_string, 2);
|
||||
str_color[2] = '\0';
|
||||
error = NULL;
|
||||
color = (int)strtol (str_color, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (str_color, 10, &color))
|
||||
{
|
||||
ansi_color = gui_color_weechat_to_ansi (color);
|
||||
snprintf (str_concat, sizeof (str_concat),
|
||||
@@ -1371,9 +1363,7 @@ gui_color_encode_ansi (const char *string)
|
||||
{
|
||||
memcpy (str_color, ptr_string, 5);
|
||||
str_color[5] = '\0';
|
||||
error = NULL;
|
||||
color = (int)strtol (str_color, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (str_color, 10, &color))
|
||||
{
|
||||
snprintf (str_concat, sizeof (str_concat),
|
||||
"\x1B[48;5;%dm",
|
||||
@@ -1389,9 +1379,7 @@ gui_color_encode_ansi (const char *string)
|
||||
{
|
||||
memcpy (str_color, ptr_string, 2);
|
||||
str_color[2] = '\0';
|
||||
error = NULL;
|
||||
color = (int)strtol (str_color, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (str_color, 10, &color))
|
||||
{
|
||||
ansi_color = gui_color_weechat_to_ansi (color);
|
||||
snprintf (str_concat, sizeof (str_concat),
|
||||
@@ -1421,9 +1409,7 @@ gui_color_encode_ansi (const char *string)
|
||||
{
|
||||
memcpy (str_color, ptr_string, 5);
|
||||
str_color[5] = '\0';
|
||||
error = NULL;
|
||||
color = (int)strtol (str_color, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (str_color, 10, &color))
|
||||
{
|
||||
snprintf (str_concat, sizeof (str_concat),
|
||||
"\x1B[38;5;%dm",
|
||||
@@ -1444,9 +1430,7 @@ gui_color_encode_ansi (const char *string)
|
||||
{
|
||||
memcpy (str_color, ptr_string, 2);
|
||||
str_color[2] = '\0';
|
||||
error = NULL;
|
||||
color = (int)strtol (str_color, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (str_color, 10, &color))
|
||||
{
|
||||
ansi_color = gui_color_weechat_to_ansi (color);
|
||||
snprintf (str_concat, sizeof (str_concat),
|
||||
@@ -1477,9 +1461,7 @@ gui_color_encode_ansi (const char *string)
|
||||
{
|
||||
memcpy (str_color, ptr_string, 5);
|
||||
str_color[5] = '\0';
|
||||
error = NULL;
|
||||
color = (int)strtol (str_color, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (str_color, 10, &color))
|
||||
{
|
||||
snprintf (str_concat, sizeof (str_concat),
|
||||
"\x1B[48;5;%dm",
|
||||
@@ -1496,9 +1478,7 @@ gui_color_encode_ansi (const char *string)
|
||||
{
|
||||
memcpy (str_color, ptr_string, 2);
|
||||
str_color[2] = '\0';
|
||||
error = NULL;
|
||||
color = (int)strtol (str_color, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (str_color, 10, &color))
|
||||
{
|
||||
ansi_color = gui_color_weechat_to_ansi (color);
|
||||
snprintf (str_concat, sizeof (str_concat),
|
||||
@@ -1522,9 +1502,7 @@ gui_color_encode_ansi (const char *string)
|
||||
{
|
||||
memcpy (str_color, ptr_string, 5);
|
||||
str_color[5] = '\0';
|
||||
error = NULL;
|
||||
color = (int)strtol (str_color, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (str_color, 10, &color))
|
||||
{
|
||||
snprintf (str_concat, sizeof (str_concat),
|
||||
"\x1B[38;5;%dm",
|
||||
@@ -1596,9 +1574,7 @@ gui_color_encode_ansi (const char *string)
|
||||
{
|
||||
memcpy (str_color, ptr_string, 2);
|
||||
str_color[2] = '\0';
|
||||
error = NULL;
|
||||
color = (int)strtol (str_color, &error, 10);
|
||||
if (error && !error[0]
|
||||
if (util_parse_int (str_color, 10, &color)
|
||||
&& (color >= 0)
|
||||
&& (color < GUI_COLOR_NUM_COLORS))
|
||||
{
|
||||
|
||||
@@ -366,8 +366,8 @@ gui_filter_new (int enabled, const char *name, const char *buffer_name,
|
||||
{
|
||||
struct t_gui_filter *new_filter;
|
||||
regex_t *regex1, *regex2;
|
||||
char *pos_tab, *regex_prefix, buf[512], str_error[1024];
|
||||
const char *ptr_start_regex, *pos_regex_message;
|
||||
char *regex_prefix, buf[512], str_error[1024];
|
||||
const char *ptr_start_regex, *pos_regex_message, *pos_tab;
|
||||
int rc;
|
||||
|
||||
if (!name || !buffer_name || !tags || !regex)
|
||||
|
||||
+5
-9
@@ -32,6 +32,7 @@
|
||||
#include "../core/core-hashtable.h"
|
||||
#include "../core/core-hook.h"
|
||||
#include "../core/core-string.h"
|
||||
#include "../core/core-util.h"
|
||||
#include "../plugins/plugin.h"
|
||||
#include "gui-bar.h"
|
||||
#include "gui-bar-window.h"
|
||||
@@ -280,11 +281,10 @@ gui_focus_info_hashtable_gui_focus_info_cb (const void *pointer, void *data,
|
||||
const char *info_name,
|
||||
struct t_hashtable *hashtable)
|
||||
{
|
||||
char *error;
|
||||
const char *ptr_value;
|
||||
int x, y;
|
||||
struct t_gui_focus_info *focus_info;
|
||||
struct t_hashtable *focus_hashtable, *ret_hashtable;
|
||||
const char *ptr_value;
|
||||
int x, y;
|
||||
|
||||
/* make C compiler happy */
|
||||
(void) pointer;
|
||||
@@ -298,17 +298,13 @@ gui_focus_info_hashtable_gui_focus_info_cb (const void *pointer, void *data,
|
||||
ptr_value = hashtable_get (hashtable, "x");
|
||||
if (!ptr_value)
|
||||
return NULL;
|
||||
error = NULL;
|
||||
x = (int)strtol (ptr_value, &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!util_parse_int (ptr_value, 10, &x))
|
||||
return NULL;
|
||||
|
||||
ptr_value = hashtable_get (hashtable, "y");
|
||||
if (!ptr_value)
|
||||
return NULL;
|
||||
error = NULL;
|
||||
y = (int)strtol (ptr_value, &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!util_parse_int (ptr_value, 10, &y))
|
||||
return NULL;
|
||||
|
||||
/* get focus info */
|
||||
|
||||
@@ -623,10 +623,8 @@ void
|
||||
gui_hotlist_clear_level_string (struct t_gui_buffer *buffer,
|
||||
const char *str_level_mask)
|
||||
{
|
||||
long level_mask;
|
||||
char *error;
|
||||
struct t_gui_hotlist *ptr_hotlist;
|
||||
int priority;
|
||||
int level_mask, priority;
|
||||
|
||||
if (str_level_mask)
|
||||
{
|
||||
@@ -665,11 +663,9 @@ gui_hotlist_clear_level_string (struct t_gui_buffer *buffer,
|
||||
else
|
||||
{
|
||||
/* clear hotlist using a mask of levels */
|
||||
error = NULL;
|
||||
level_mask = strtol (str_level_mask, &error, 10);
|
||||
if (error && !error[0] && (level_mask > 0))
|
||||
if (util_parse_int (str_level_mask, 10, &level_mask) && (level_mask > 0))
|
||||
{
|
||||
gui_hotlist_clear ((int)level_mask);
|
||||
gui_hotlist_clear (level_mask);
|
||||
gui_hotlist_initial_buffer = buffer;
|
||||
}
|
||||
}
|
||||
|
||||
+4
-6
@@ -44,6 +44,7 @@
|
||||
#include "../core/core-log.h"
|
||||
#include "../core/core-string.h"
|
||||
#include "../core/core-utf8.h"
|
||||
#include "../core/core-util.h"
|
||||
#include "../plugins/plugin.h"
|
||||
#include "gui-key.h"
|
||||
#include "gui-bar.h"
|
||||
@@ -193,8 +194,7 @@ gui_key_get_current_context (void)
|
||||
void
|
||||
gui_key_grab_init (int grab_command, const char *delay)
|
||||
{
|
||||
long milliseconds;
|
||||
char *error;
|
||||
int milliseconds;
|
||||
|
||||
gui_key_grab = 1;
|
||||
gui_key_grab_count = 0;
|
||||
@@ -203,9 +203,7 @@ gui_key_grab_init (int grab_command, const char *delay)
|
||||
gui_key_grab_delay = CONFIG_INTEGER(config_look_key_grab_delay);
|
||||
if (delay != NULL)
|
||||
{
|
||||
error = NULL;
|
||||
milliseconds = strtol (delay, &error, 10);
|
||||
if (error && !error[0] && (milliseconds >= 0))
|
||||
if (util_parse_int (delay, 10, &milliseconds) && (milliseconds >= 0))
|
||||
{
|
||||
gui_key_grab_delay = milliseconds;
|
||||
if (gui_key_grab_delay == 0)
|
||||
@@ -1076,7 +1074,7 @@ gui_key_set_area_type_name (const char *area,
|
||||
int *area_type, char **area_name)
|
||||
{
|
||||
int focus, length;
|
||||
char *pos_end;
|
||||
const char *pos_end;
|
||||
|
||||
for (focus = 0; focus < GUI_KEY_NUM_FOCUS; focus++)
|
||||
{
|
||||
|
||||
+24
-28
@@ -39,6 +39,7 @@
|
||||
#include "../core/core-infolist.h"
|
||||
#include "../core/core-log.h"
|
||||
#include "../core/core-string.h"
|
||||
#include "../core/core-util.h"
|
||||
#include "../plugins/plugin.h"
|
||||
#include "gui-line.h"
|
||||
#include "gui-buffer.h"
|
||||
@@ -1674,10 +1675,10 @@ gui_line_hook_update (struct t_gui_line *line,
|
||||
const char *ptr_value, *ptr_value2;
|
||||
struct t_gui_buffer *ptr_buffer;
|
||||
unsigned long value_pointer;
|
||||
long value;
|
||||
char *error, *new_message, *pos_newline;
|
||||
long long value_longlong;
|
||||
char *new_message, *pos_newline;
|
||||
int rc, tags_updated, notify_level_updated, highlight_updated;
|
||||
int max_notify_level;
|
||||
int max_notify_level, value;
|
||||
|
||||
tags_updated = 0;
|
||||
notify_level_updated = 0;
|
||||
@@ -1730,9 +1731,7 @@ gui_line_hook_update (struct t_gui_line *line,
|
||||
ptr_value = hashtable_get (hashtable2, "y");
|
||||
if (ptr_value)
|
||||
{
|
||||
error = NULL;
|
||||
value = strtol (ptr_value, &error, 10);
|
||||
if (error && !error[0] && (value >= 0))
|
||||
if (util_parse_int (ptr_value, 10, &value) && (value >= 0))
|
||||
line->data->y = value;
|
||||
}
|
||||
}
|
||||
@@ -1740,9 +1739,8 @@ gui_line_hook_update (struct t_gui_line *line,
|
||||
ptr_value2 = hashtable_get (hashtable2, "notify_level");
|
||||
if (ptr_value2)
|
||||
{
|
||||
error = NULL;
|
||||
value = strtol (ptr_value2, &error, 10);
|
||||
if (error && !error[0] && (value >= -1) && (value <= GUI_HOTLIST_MAX))
|
||||
if (util_parse_int (ptr_value2, 10, &value)
|
||||
&& (value >= -1) && (value <= GUI_HOTLIST_MAX))
|
||||
{
|
||||
notify_level_updated = 1;
|
||||
line->data->notify_level = value;
|
||||
@@ -1752,9 +1750,7 @@ gui_line_hook_update (struct t_gui_line *line,
|
||||
ptr_value2 = hashtable_get (hashtable2, "highlight");
|
||||
if (ptr_value2)
|
||||
{
|
||||
error = NULL;
|
||||
value = strtol (ptr_value2, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (ptr_value2, 10, &value))
|
||||
{
|
||||
highlight_updated = 1;
|
||||
line->data->highlight = (value) ? 1 : 0;
|
||||
@@ -1764,11 +1760,10 @@ gui_line_hook_update (struct t_gui_line *line,
|
||||
ptr_value2 = hashtable_get (hashtable2, "date");
|
||||
if (ptr_value2)
|
||||
{
|
||||
error = NULL;
|
||||
value = strtol (ptr_value2, &error, 10);
|
||||
if (error && !error[0] && (value >= 0))
|
||||
if (util_parse_longlong (ptr_value2, 10, &value_longlong)
|
||||
&& (value_longlong >= 0))
|
||||
{
|
||||
line->data->date = (time_t)value;
|
||||
line->data->date = (time_t)value_longlong;
|
||||
free (line->data->str_time);
|
||||
line->data->str_time = gui_chat_get_time_string (
|
||||
line->data->date,
|
||||
@@ -1780,11 +1775,10 @@ gui_line_hook_update (struct t_gui_line *line,
|
||||
ptr_value2 = hashtable_get (hashtable2, "date_usec");
|
||||
if (ptr_value2)
|
||||
{
|
||||
error = NULL;
|
||||
value = strtol (ptr_value2, &error, 10);
|
||||
if (error && !error[0] && (value >= 0) && (value <= 999999))
|
||||
if (util_parse_int (ptr_value2, 10, &value)
|
||||
&& (value >= 0) && (value <= 999999))
|
||||
{
|
||||
line->data->date_usec = (int)value;
|
||||
line->data->date_usec = value;
|
||||
free (line->data->str_time);
|
||||
line->data->str_time = gui_chat_get_time_string (
|
||||
line->data->date,
|
||||
@@ -1796,19 +1790,21 @@ gui_line_hook_update (struct t_gui_line *line,
|
||||
ptr_value2 = hashtable_get (hashtable2, "date_printed");
|
||||
if (ptr_value2)
|
||||
{
|
||||
error = NULL;
|
||||
value = strtol (ptr_value2, &error, 10);
|
||||
if (error && !error[0] && (value >= 0))
|
||||
line->data->date_printed = (time_t)value;
|
||||
if (util_parse_longlong (ptr_value2, 10, &value_longlong)
|
||||
&& (value_longlong >= 0))
|
||||
{
|
||||
line->data->date_printed = (time_t)value_longlong;
|
||||
}
|
||||
}
|
||||
|
||||
ptr_value2 = hashtable_get (hashtable2, "date_usec_printed");
|
||||
if (ptr_value2)
|
||||
{
|
||||
error = NULL;
|
||||
value = strtol (ptr_value2, &error, 10);
|
||||
if (error && !error[0] && (value >= 0) && (value <= 999999))
|
||||
line->data->date_usec_printed = (int)value;
|
||||
if (util_parse_int (ptr_value2, 10, &value)
|
||||
&& (value >= 0) && (value <= 999999))
|
||||
{
|
||||
line->data->date_usec_printed = value;
|
||||
}
|
||||
}
|
||||
|
||||
ptr_value = hashtable_get (hashtable, "str_time");
|
||||
|
||||
@@ -31,5 +31,6 @@ extern void gui_main_end (int clean_exit);
|
||||
|
||||
/* terminal functions (GUI dependent) */
|
||||
extern void gui_term_set_eat_newline_glitch (int value);
|
||||
extern int gui_term_theme_is_light (void);
|
||||
|
||||
#endif /* WEECHAT_GUI_MAIN_H */
|
||||
|
||||
+9
-22
@@ -44,6 +44,7 @@
|
||||
#include "../core/core-log.h"
|
||||
#include "../core/core-string.h"
|
||||
#include "../core/core-utf8.h"
|
||||
#include "../core/core-util.h"
|
||||
#include "../plugins/plugin.h"
|
||||
#include "gui-nicklist.h"
|
||||
#include "gui-buffer.h"
|
||||
@@ -275,7 +276,6 @@ gui_nicklist_search_group (struct t_gui_buffer *buffer,
|
||||
const char *name)
|
||||
{
|
||||
const char *ptr_name;
|
||||
char *error;
|
||||
long long id;
|
||||
|
||||
if ((!buffer && !from_group)
|
||||
@@ -287,8 +287,7 @@ gui_nicklist_search_group (struct t_gui_buffer *buffer,
|
||||
|
||||
if (strncmp (name, "==id:", 5) == 0)
|
||||
{
|
||||
id = strtoll (name + 5, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_longlong (name + 5, 10, &id))
|
||||
return gui_nicklist_search_group_id (buffer, from_group, id);
|
||||
}
|
||||
|
||||
@@ -570,7 +569,6 @@ gui_nicklist_search_nick (struct t_gui_buffer *buffer,
|
||||
const char *name)
|
||||
{
|
||||
long long id;
|
||||
char *error;
|
||||
|
||||
if ((!buffer && !from_group)
|
||||
|| !name
|
||||
@@ -581,8 +579,7 @@ gui_nicklist_search_nick (struct t_gui_buffer *buffer,
|
||||
|
||||
if (strncmp (name, "==id:", 5) == 0)
|
||||
{
|
||||
id = strtoll (name + 5, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_longlong (name + 5, 10, &id))
|
||||
return gui_nicklist_search_nick_id (buffer, from_group, id);
|
||||
}
|
||||
|
||||
@@ -1036,9 +1033,7 @@ gui_nicklist_group_set (struct t_gui_buffer *buffer,
|
||||
const char *property, const char *value)
|
||||
{
|
||||
long long id;
|
||||
long number;
|
||||
char *error;
|
||||
int group_changed;
|
||||
int group_changed, number;
|
||||
|
||||
if (!buffer || !group || !property || !value)
|
||||
return;
|
||||
@@ -1047,8 +1042,7 @@ gui_nicklist_group_set (struct t_gui_buffer *buffer,
|
||||
|
||||
if (strcmp (property, "id") == 0)
|
||||
{
|
||||
id = strtoll (value, &error, 10);
|
||||
if (error && !error[0]
|
||||
if (util_parse_longlong (value, 10, &id)
|
||||
&& (id != group->id)
|
||||
&& !gui_nicklist_search_group_id (buffer, NULL, id))
|
||||
{
|
||||
@@ -1064,9 +1058,7 @@ gui_nicklist_group_set (struct t_gui_buffer *buffer,
|
||||
}
|
||||
else if (strcmp (property, "visible") == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value, 10, &number))
|
||||
group->visible = (number) ? 1 : 0;
|
||||
group_changed = 1;
|
||||
}
|
||||
@@ -1158,9 +1150,7 @@ gui_nicklist_nick_set (struct t_gui_buffer *buffer,
|
||||
const char *property, const char *value)
|
||||
{
|
||||
long long id;
|
||||
long number;
|
||||
char *error;
|
||||
int nick_changed;
|
||||
int nick_changed, number;
|
||||
|
||||
if (!buffer || !nick || !property || !value)
|
||||
return;
|
||||
@@ -1169,8 +1159,7 @@ gui_nicklist_nick_set (struct t_gui_buffer *buffer,
|
||||
|
||||
if (strcmp (property, "id") == 0)
|
||||
{
|
||||
id = strtoll (value, &error, 10);
|
||||
if (error && !error[0]
|
||||
if (util_parse_longlong (value, 10, &id)
|
||||
&& (id != nick->id)
|
||||
&& !gui_nicklist_search_nick_id (buffer, NULL, id))
|
||||
{
|
||||
@@ -1198,9 +1187,7 @@ gui_nicklist_nick_set (struct t_gui_buffer *buffer,
|
||||
}
|
||||
else if (strcmp (property, "visible") == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (util_parse_int (value, 10, &number))
|
||||
nick->visible = (number) ? 1 : 0;
|
||||
nick_changed = 1;
|
||||
}
|
||||
|
||||
+6
-10
@@ -43,6 +43,7 @@
|
||||
#include "../core/core-log.h"
|
||||
#include "../core/core-string.h"
|
||||
#include "../core/core-utf8.h"
|
||||
#include "../core/core-util.h"
|
||||
#include "../plugins/plugin.h"
|
||||
#include "gui-window.h"
|
||||
#include "gui-bar.h"
|
||||
@@ -1182,7 +1183,7 @@ gui_window_scroll (struct t_gui_window *window, char *scroll)
|
||||
int direction, stop, count_msg, scroll_from_end_free_buffer;
|
||||
char time_letter, saved_char;
|
||||
time_t old_date, diff_date;
|
||||
char *pos, *error;
|
||||
char *pos;
|
||||
long number;
|
||||
struct t_gui_line *ptr_line;
|
||||
struct tm *date_tmp, line_date, old_line_date;
|
||||
@@ -1231,9 +1232,7 @@ gui_window_scroll (struct t_gui_window *window, char *scroll)
|
||||
time_letter = pos[0];
|
||||
saved_char = pos[0];
|
||||
pos[0] = '\0';
|
||||
error = NULL;
|
||||
number = strtol (scroll, &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!util_parse_long (scroll, 10, &number))
|
||||
number = 0;
|
||||
pos[0] = saved_char;
|
||||
}
|
||||
@@ -1430,9 +1429,8 @@ gui_window_scroll (struct t_gui_window *window, char *scroll)
|
||||
void
|
||||
gui_window_scroll_horiz (struct t_gui_window *window, char *scroll)
|
||||
{
|
||||
int direction, percentage, start_col;
|
||||
char saved_char, *pos, *error;
|
||||
long number;
|
||||
int direction, percentage, start_col, number;
|
||||
char saved_char, *pos;
|
||||
|
||||
if (!window || !window->buffer->lines->first_line)
|
||||
return;
|
||||
@@ -1464,9 +1462,7 @@ gui_window_scroll_horiz (struct t_gui_window *window, char *scroll)
|
||||
percentage = (pos[0] == '%') ? 1 : 0;
|
||||
saved_char = pos[0];
|
||||
pos[0] = '\0';
|
||||
error = NULL;
|
||||
number = strtol (scroll, &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!util_parse_int (scroll, 10, &number))
|
||||
number = 0;
|
||||
pos[0] = saved_char;
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ add_library(buflist MODULE
|
||||
buflist-config.c buflist-config.h
|
||||
buflist-info.c buflist-info.h
|
||||
buflist-mouse.c buflist-mouse.h
|
||||
buflist-theme.c buflist-theme.h
|
||||
)
|
||||
set_target_properties(buflist PROPERTIES PREFIX "")
|
||||
|
||||
|
||||
@@ -645,7 +645,7 @@ buflist_config_init (void)
|
||||
{
|
||||
buflist_config_format_buffer = weechat_config_new_option (
|
||||
buflist_config_file, buflist_config_section_format,
|
||||
"buffer", "string",
|
||||
"buffer", "string|themable",
|
||||
N_("format of each line with a buffer "
|
||||
"(note: content is evaluated, see /help buflist); "
|
||||
"example: standard format for bar item \"buflist\" and only the "
|
||||
@@ -663,7 +663,7 @@ buflist_config_init (void)
|
||||
NULL, NULL, NULL);
|
||||
buflist_config_format_buffer_current = weechat_config_new_option (
|
||||
buflist_config_file, buflist_config_section_format,
|
||||
"buffer_current", "string",
|
||||
"buffer_current", "string|themable",
|
||||
N_("format for the line with current buffer "
|
||||
"(note: content is evaluated, see /help buflist)"),
|
||||
NULL, 0, 0, "${color:,17}${format_buffer}", NULL, 0,
|
||||
@@ -672,7 +672,7 @@ buflist_config_init (void)
|
||||
NULL, NULL, NULL);
|
||||
buflist_config_format_hotlist = weechat_config_new_option (
|
||||
buflist_config_file, buflist_config_section_format,
|
||||
"hotlist", "string",
|
||||
"hotlist", "string|themable",
|
||||
N_("format for hotlist "
|
||||
"(note: content is evaluated, see /help buflist)"),
|
||||
NULL, 0, 0,
|
||||
@@ -683,7 +683,7 @@ buflist_config_init (void)
|
||||
NULL, NULL, NULL);
|
||||
buflist_config_format_hotlist_level[3] = weechat_config_new_option (
|
||||
buflist_config_file, buflist_config_section_format,
|
||||
"hotlist_highlight", "string",
|
||||
"hotlist_highlight", "string|themable",
|
||||
N_("format for a buffer with hotlist level \"highlight\" "
|
||||
"(note: content is evaluated, see /help buflist)"),
|
||||
NULL, 0, 0, "${color:magenta}", NULL, 0,
|
||||
@@ -692,7 +692,7 @@ buflist_config_init (void)
|
||||
NULL, NULL, NULL);
|
||||
buflist_config_format_hotlist_level[0] = weechat_config_new_option (
|
||||
buflist_config_file, buflist_config_section_format,
|
||||
"hotlist_low", "string",
|
||||
"hotlist_low", "string|themable",
|
||||
N_("format for a buffer with hotlist level \"low\" "
|
||||
"(note: content is evaluated, see /help buflist)"),
|
||||
NULL, 0, 0, "${color:white}", NULL, 0,
|
||||
@@ -701,7 +701,7 @@ buflist_config_init (void)
|
||||
NULL, NULL, NULL);
|
||||
buflist_config_format_hotlist_level[1] = weechat_config_new_option (
|
||||
buflist_config_file, buflist_config_section_format,
|
||||
"hotlist_message", "string",
|
||||
"hotlist_message", "string|themable",
|
||||
N_("format for a buffer with hotlist level \"message\" "
|
||||
"(note: content is evaluated, see /help buflist)"),
|
||||
NULL, 0, 0, "${color:brown}", NULL, 0,
|
||||
@@ -710,7 +710,7 @@ buflist_config_init (void)
|
||||
NULL, NULL, NULL);
|
||||
buflist_config_format_hotlist_level_none = weechat_config_new_option (
|
||||
buflist_config_file, buflist_config_section_format,
|
||||
"hotlist_none", "string",
|
||||
"hotlist_none", "string|themable",
|
||||
N_("format for a buffer not in hotlist "
|
||||
"(note: content is evaluated, see /help buflist)"),
|
||||
NULL, 0, 0, "${color:default}", NULL, 0,
|
||||
@@ -719,7 +719,7 @@ buflist_config_init (void)
|
||||
NULL, NULL, NULL);
|
||||
buflist_config_format_hotlist_level[2] = weechat_config_new_option (
|
||||
buflist_config_file, buflist_config_section_format,
|
||||
"hotlist_private", "string",
|
||||
"hotlist_private", "string|themable",
|
||||
N_("format for a buffer with hotlist level \"private\" "
|
||||
"(note: content is evaluated, see /help buflist)"),
|
||||
NULL, 0, 0, "${color:green}", NULL, 0,
|
||||
@@ -728,7 +728,7 @@ buflist_config_init (void)
|
||||
NULL, NULL, NULL);
|
||||
buflist_config_format_hotlist_separator = weechat_config_new_option (
|
||||
buflist_config_file, buflist_config_section_format,
|
||||
"hotlist_separator", "string",
|
||||
"hotlist_separator", "string|themable",
|
||||
N_("separator for counts in hotlist "
|
||||
"(note: content is evaluated, see /help buflist)"),
|
||||
NULL, 0, 0, "${color:default},", NULL, 0,
|
||||
@@ -737,7 +737,7 @@ buflist_config_init (void)
|
||||
NULL, NULL, NULL);
|
||||
buflist_config_format_indent = weechat_config_new_option (
|
||||
buflist_config_file, buflist_config_section_format,
|
||||
"indent", "string",
|
||||
"indent", "string|themable",
|
||||
N_("string displayed to indent channel, private and list buffers "
|
||||
"(note: content is evaluated, see /help buflist)"),
|
||||
NULL, 0, 0, " ", NULL, 0,
|
||||
@@ -746,7 +746,7 @@ buflist_config_init (void)
|
||||
NULL, NULL, NULL);
|
||||
buflist_config_format_lag = weechat_config_new_option (
|
||||
buflist_config_file, buflist_config_section_format,
|
||||
"lag", "string",
|
||||
"lag", "string|themable",
|
||||
N_("format for lag on an IRC server buffer "
|
||||
"(note: content is evaluated, see /help buflist)"),
|
||||
NULL, 0, 0,
|
||||
@@ -757,7 +757,7 @@ buflist_config_init (void)
|
||||
NULL, NULL, NULL);
|
||||
buflist_config_format_name = weechat_config_new_option (
|
||||
buflist_config_file, buflist_config_section_format,
|
||||
"name", "string",
|
||||
"name", "string|themable",
|
||||
N_("format for buffer name "
|
||||
"(note: content is evaluated, see /help buflist)"),
|
||||
NULL, 0, 0, "${name}", NULL, 0,
|
||||
@@ -766,7 +766,7 @@ buflist_config_init (void)
|
||||
NULL, NULL, NULL);
|
||||
buflist_config_format_nick_prefix = weechat_config_new_option (
|
||||
buflist_config_file, buflist_config_section_format,
|
||||
"nick_prefix", "string",
|
||||
"nick_prefix", "string|themable",
|
||||
N_("format for nick prefix on a channel "
|
||||
"(note: content is evaluated, see /help buflist)"),
|
||||
NULL, 0, 0, "${color_nick_prefix}${nick_prefix}", NULL, 0,
|
||||
@@ -775,7 +775,7 @@ buflist_config_init (void)
|
||||
NULL, NULL, NULL);
|
||||
buflist_config_format_number = weechat_config_new_option (
|
||||
buflist_config_file, buflist_config_section_format,
|
||||
"number", "string",
|
||||
"number", "string|themable",
|
||||
N_("format for buffer number, ${number} is the indented number "
|
||||
"(note: content is evaluated, see /help buflist)"),
|
||||
NULL, 0, 0,
|
||||
@@ -786,7 +786,7 @@ buflist_config_init (void)
|
||||
NULL, NULL, NULL);
|
||||
buflist_config_format_tls_version = weechat_config_new_option (
|
||||
buflist_config_file, buflist_config_section_format,
|
||||
"tls_version", "string",
|
||||
"tls_version", "string|themable",
|
||||
N_("format for TLS version on an IRC server buffer "
|
||||
"(note: content is evaluated, see /help buflist)"),
|
||||
NULL, 0, 0,
|
||||
|
||||
@@ -40,9 +40,8 @@ struct t_hashtable *
|
||||
buflist_focus_cb (const void *pointer, void *data, struct t_hashtable *info)
|
||||
{
|
||||
const char *ptr_bar_item_name, *ptr_bar_item_line, *keys, *ptr_value;
|
||||
long item_line;
|
||||
char *error, str_value[128], **list_keys;
|
||||
int i, item_index, num_keys, type;
|
||||
char str_value[128], **list_keys;
|
||||
int i, item_index, item_line, num_keys, type;
|
||||
struct t_gui_buffer *ptr_buffer;
|
||||
|
||||
/* make C compiler happy */
|
||||
@@ -64,15 +63,10 @@ buflist_focus_cb (const void *pointer, void *data, struct t_hashtable *info)
|
||||
ptr_bar_item_line = weechat_hashtable_get (info, "_bar_item_line");
|
||||
if (!ptr_bar_item_line)
|
||||
goto end;
|
||||
error = NULL;
|
||||
item_line = strtol (ptr_bar_item_line, &error, 10);
|
||||
if (!error || error[0])
|
||||
goto end;
|
||||
if ((item_line < 0)
|
||||
if (!weechat_util_parse_int (ptr_bar_item_line, 10, &item_line)
|
||||
|| (item_line < 0)
|
||||
|| (item_line >= weechat_arraylist_size (buflist_list_buffers[item_index])))
|
||||
{
|
||||
goto end;
|
||||
}
|
||||
|
||||
/* check if buffer pointer is still valid */
|
||||
ptr_buffer = weechat_arraylist_get (buflist_list_buffers[item_index],
|
||||
@@ -333,10 +327,9 @@ buflist_hsignal_cb (const void *pointer, void *data, const char *signal,
|
||||
const char *ptr_key, *ptr_pointer, *ptr_number, *ptr_number2;
|
||||
const char *ptr_full_name;
|
||||
struct t_gui_buffer *ptr_buffer;
|
||||
char *error, str_command[1024];
|
||||
long number, number2;
|
||||
char str_command[1024];
|
||||
unsigned long value;
|
||||
int rc, current_buffer_number;
|
||||
int rc, current_buffer_number, number, number2;
|
||||
|
||||
/* make C compiler happy */
|
||||
(void) pointer;
|
||||
@@ -360,13 +353,9 @@ buflist_hsignal_cb (const void *pointer, void *data, const char *signal,
|
||||
return WEECHAT_RC_OK;
|
||||
ptr_buffer = (struct t_gui_buffer *)value;
|
||||
|
||||
error = NULL;
|
||||
number = strtol (ptr_number, &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!weechat_util_parse_int (ptr_number, 10, &number))
|
||||
return WEECHAT_RC_OK;
|
||||
error = NULL;
|
||||
number2 = strtol (ptr_number2, &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!weechat_util_parse_int (ptr_number2, 10, &number2))
|
||||
return WEECHAT_RC_OK;
|
||||
|
||||
current_buffer_number = weechat_buffer_get_integer (
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2026 Sébastien Helleu <flashcode@flashtux.org>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*
|
||||
* This file is part of WeeChat, the extensible chat client.
|
||||
*
|
||||
* WeeChat is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* WeeChat is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* buflist contribution to built-in themes. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#include "../weechat-plugin.h"
|
||||
#include "buflist.h"
|
||||
#include "buflist-theme.h"
|
||||
|
||||
|
||||
/*
|
||||
* buflist contribution to the "light" theme: format strings tuned for
|
||||
* a light-background terminal. Each row is { option_full_name, value };
|
||||
* the table is NULL-terminated.
|
||||
*/
|
||||
|
||||
const char *buflist_theme_light[][2] =
|
||||
{
|
||||
{ "buflist.format.buffer_current",
|
||||
"${color:,117}${format_buffer}" },
|
||||
{ "buflist.format.hotlist_low",
|
||||
"${color:default}" },
|
||||
{ "buflist.format.hotlist_message",
|
||||
"${color:94}" },
|
||||
{ "buflist.format.lag",
|
||||
" ${color:green}[${color:94}${lag}${color:green}]" },
|
||||
{ "buflist.format.number",
|
||||
"${color:28}${number}${if:${number_displayed}?.: }" },
|
||||
{ NULL, NULL },
|
||||
};
|
||||
|
||||
/*
|
||||
* Register buflist's contribution to one theme from a NULL-terminated
|
||||
* table of {option, value} rows.
|
||||
*/
|
||||
|
||||
void
|
||||
buflist_theme_register (const char *name, const char *entries[][2])
|
||||
{
|
||||
struct t_hashtable *overrides;
|
||||
int i;
|
||||
|
||||
if (!name || !entries)
|
||||
return;
|
||||
|
||||
overrides = weechat_hashtable_new (32,
|
||||
WEECHAT_HASHTABLE_STRING,
|
||||
WEECHAT_HASHTABLE_STRING,
|
||||
NULL, NULL);
|
||||
if (!overrides)
|
||||
return;
|
||||
|
||||
for (i = 0; entries[i][0]; i++)
|
||||
weechat_hashtable_set (overrides, entries[i][0], entries[i][1]);
|
||||
|
||||
weechat_theme_register (name, overrides);
|
||||
|
||||
weechat_hashtable_free (overrides);
|
||||
}
|
||||
|
||||
/*
|
||||
* Register all built-in theme contributions from buflist.
|
||||
*/
|
||||
|
||||
void
|
||||
buflist_theme_init (void)
|
||||
{
|
||||
buflist_theme_register ("light", buflist_theme_light);
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2026 Sébastien Helleu <flashcode@flashtux.org>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*
|
||||
* This file is part of WeeChat, the extensible chat client.
|
||||
*
|
||||
* WeeChat is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* WeeChat is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef WEECHAT_PLUGIN_BUFLIST_THEME_H
|
||||
#define WEECHAT_PLUGIN_BUFLIST_THEME_H
|
||||
|
||||
extern void buflist_theme_init (void);
|
||||
|
||||
#endif /* WEECHAT_PLUGIN_BUFLIST_THEME_H */
|
||||
@@ -34,6 +34,7 @@
|
||||
#include "buflist-config.h"
|
||||
#include "buflist-info.h"
|
||||
#include "buflist-mouse.h"
|
||||
#include "buflist-theme.h"
|
||||
|
||||
|
||||
WEECHAT_PLUGIN_NAME(BUFLIST_PLUGIN_NAME);
|
||||
@@ -455,6 +456,8 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
|
||||
|
||||
buflist_config_read ();
|
||||
|
||||
buflist_theme_init ();
|
||||
|
||||
if (!buflist_bar_item_init ())
|
||||
return WEECHAT_RC_ERROR;
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ add_library(exec MODULE
|
||||
exec-command.c exec-command.h
|
||||
exec-completion.c exec-completion.h
|
||||
exec-config.c exec-config.h
|
||||
exec-theme.c exec-theme.h
|
||||
)
|
||||
set_target_properties(exec PROPERTIES PREFIX "")
|
||||
|
||||
|
||||
@@ -185,8 +185,7 @@ exec_command_parse_options (struct t_exec_cmd_options *cmd_options,
|
||||
int argc, char **argv, int start_arg,
|
||||
int set_command_index)
|
||||
{
|
||||
int i, j, end, length, length_total;
|
||||
char *error;
|
||||
int i, j, end, length, length_total, timeout;
|
||||
|
||||
for (i = start_arg; i < argc; i++)
|
||||
{
|
||||
@@ -318,10 +317,9 @@ exec_command_parse_options (struct t_exec_cmd_options *cmd_options,
|
||||
if (i + 1 >= argc)
|
||||
return 0;
|
||||
i++;
|
||||
error = NULL;
|
||||
cmd_options->timeout = strtol (argv[i], &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!weechat_util_parse_int (argv[i], 10, &timeout))
|
||||
return 0;
|
||||
cmd_options->timeout = timeout;
|
||||
}
|
||||
else if (weechat_strcmp (argv[i], "-name") == 0)
|
||||
{
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2026 Sébastien Helleu <flashcode@flashtux.org>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*
|
||||
* This file is part of WeeChat, the extensible chat client.
|
||||
*
|
||||
* WeeChat is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* WeeChat is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* exec contribution to built-in themes. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#include "../weechat-plugin.h"
|
||||
#include "exec.h"
|
||||
#include "exec-theme.h"
|
||||
|
||||
|
||||
/*
|
||||
* exec contribution to the "light" theme: option values tuned for a
|
||||
* light-background terminal. Each row is { option_full_name, value };
|
||||
* the table is NULL-terminated.
|
||||
*/
|
||||
|
||||
const char *exec_theme_light[][2] =
|
||||
{
|
||||
{ "exec.color.flag_finished", "red" },
|
||||
{ "exec.color.flag_running", "green" },
|
||||
{ NULL, NULL },
|
||||
};
|
||||
|
||||
/*
|
||||
* Register exec's contribution to one theme from a NULL-terminated
|
||||
* table of {option, value} rows.
|
||||
*/
|
||||
|
||||
void
|
||||
exec_theme_register (const char *name, const char *entries[][2])
|
||||
{
|
||||
struct t_hashtable *overrides;
|
||||
int i;
|
||||
|
||||
if (!name || !entries)
|
||||
return;
|
||||
|
||||
overrides = weechat_hashtable_new (32,
|
||||
WEECHAT_HASHTABLE_STRING,
|
||||
WEECHAT_HASHTABLE_STRING,
|
||||
NULL, NULL);
|
||||
if (!overrides)
|
||||
return;
|
||||
|
||||
for (i = 0; entries[i][0]; i++)
|
||||
weechat_hashtable_set (overrides, entries[i][0], entries[i][1]);
|
||||
|
||||
weechat_theme_register (name, overrides);
|
||||
|
||||
weechat_hashtable_free (overrides);
|
||||
}
|
||||
|
||||
/*
|
||||
* Register all built-in theme contributions from exec.
|
||||
*/
|
||||
|
||||
void
|
||||
exec_theme_init (void)
|
||||
{
|
||||
exec_theme_register ("light", exec_theme_light);
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2026 Sébastien Helleu <flashcode@flashtux.org>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*
|
||||
* This file is part of WeeChat, the extensible chat client.
|
||||
*
|
||||
* WeeChat is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* WeeChat is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef WEECHAT_PLUGIN_EXEC_THEME_H
|
||||
#define WEECHAT_PLUGIN_EXEC_THEME_H
|
||||
|
||||
extern void exec_theme_init (void);
|
||||
|
||||
#endif /* WEECHAT_PLUGIN_EXEC_THEME_H */
|
||||
@@ -32,6 +32,7 @@
|
||||
#include "exec-command.h"
|
||||
#include "exec-completion.h"
|
||||
#include "exec-config.h"
|
||||
#include "exec-theme.h"
|
||||
|
||||
|
||||
WEECHAT_PLUGIN_NAME(EXEC_PLUGIN_NAME);
|
||||
@@ -85,15 +86,12 @@ struct t_exec_cmd *
|
||||
exec_search_by_id (const char *id)
|
||||
{
|
||||
struct t_exec_cmd* ptr_exec_cmd;
|
||||
char *error;
|
||||
long number;
|
||||
|
||||
if (!id)
|
||||
return NULL;
|
||||
|
||||
error = NULL;
|
||||
number = strtol (id, &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!weechat_util_parse_long (id, 10, &number))
|
||||
number = -1;
|
||||
|
||||
for (ptr_exec_cmd = exec_cmds; ptr_exec_cmd;
|
||||
@@ -744,6 +742,8 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
|
||||
|
||||
exec_config_read ();
|
||||
|
||||
exec_theme_init ();
|
||||
|
||||
/* hook some signals */
|
||||
weechat_hook_signal ("debug_dump", &exec_debug_dump_cb, NULL, NULL);
|
||||
|
||||
|
||||
@@ -29,6 +29,7 @@ add_library(fset MODULE
|
||||
fset-info.c fset-info.h
|
||||
fset-mouse.c fset-mouse.h
|
||||
fset-option.c fset-option.h
|
||||
fset-theme.c fset-theme.h
|
||||
)
|
||||
set_target_properties(fset PROPERTIES PREFIX "")
|
||||
|
||||
|
||||
@@ -60,15 +60,12 @@ int
|
||||
fset_command_get_int_arg (int argc, char **argv, int arg_number,
|
||||
int default_value)
|
||||
{
|
||||
long value;
|
||||
char *error;
|
||||
int value;
|
||||
|
||||
value = default_value;
|
||||
if (argc > arg_number)
|
||||
{
|
||||
error = NULL;
|
||||
value = strtol (argv[arg_number], &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!weechat_util_parse_int (argv[arg_number], 10, &value))
|
||||
value = default_value;
|
||||
}
|
||||
return (int)value;
|
||||
@@ -702,7 +699,9 @@ fset_command_init (void)
|
||||
N_("> `xxx`: show only options with \"xxx\" in name"),
|
||||
N_("> `f:xxx`: show only configuration file \"xxx\""),
|
||||
N_("> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum "
|
||||
"or boolean/integer/string/color/enum)"),
|
||||
"or boolean/integer/string/color/enum); the special value "
|
||||
"\"themable\" can be used to show all options that can be "
|
||||
"used in themes, regardless of type"),
|
||||
N_("> `d`: show only changed options"),
|
||||
N_("> `d:xxx`: show only changed options with \"xxx\" in "
|
||||
"name"),
|
||||
|
||||
@@ -572,7 +572,7 @@ fset_config_init (void)
|
||||
NULL, NULL, NULL);
|
||||
fset_config_format_option[1] = weechat_config_new_option (
|
||||
fset_config_file, fset_config_section_format,
|
||||
"option2", "string",
|
||||
"option2", "string|themable",
|
||||
N_("second format of each line, used when option "
|
||||
"fset.look.format_number is set to 2 "
|
||||
"(note: content is evaluated, see /help fset); "
|
||||
|
||||
@@ -42,11 +42,10 @@ struct t_hashtable *
|
||||
fset_mouse_focus_cb (const void *pointer, void *data, struct t_hashtable *info)
|
||||
{
|
||||
const char *buffer;
|
||||
int rc, format_number;
|
||||
int rc, format_number, y, option_index;
|
||||
unsigned long value;
|
||||
struct t_gui_buffer *ptr_buffer;
|
||||
long y, option_index;
|
||||
char *error, str_value[128];
|
||||
char str_value[128];
|
||||
struct t_fset_option *ptr_fset_option;
|
||||
|
||||
/* make C compiler happy */
|
||||
@@ -69,13 +68,11 @@ fset_mouse_focus_cb (const void *pointer, void *data, struct t_hashtable *info)
|
||||
if (!ptr_buffer || (ptr_buffer != fset_buffer))
|
||||
return info;
|
||||
|
||||
error = NULL;
|
||||
y = strtol (weechat_hashtable_get (info, "_chat_line_y"), &error, 10);
|
||||
if (!error || error[0])
|
||||
return info;
|
||||
|
||||
if (y < 0)
|
||||
if (!weechat_util_parse_int (weechat_hashtable_get (info, "_chat_line_y"), 10, &y)
|
||||
|| (y < 0))
|
||||
{
|
||||
return info;
|
||||
}
|
||||
|
||||
format_number = weechat_config_integer (fset_config_look_format_number);
|
||||
option_index = y / fset_config_format_option_num_lines[format_number - 1];
|
||||
@@ -87,7 +84,7 @@ fset_mouse_focus_cb (const void *pointer, void *data, struct t_hashtable *info)
|
||||
snprintf (str_value, sizeof (str_value),
|
||||
"0x%lx", (unsigned long)ptr_fset_option);
|
||||
weechat_hashtable_set (info, "fset_option", str_value);
|
||||
snprintf (str_value, sizeof (str_value), "%ld", option_index);
|
||||
snprintf (str_value, sizeof (str_value), "%d", option_index);
|
||||
weechat_hashtable_set (info, "fset_option_index", str_value);
|
||||
weechat_hashtable_set (info, "fset_option_name", ptr_fset_option->name);
|
||||
weechat_hashtable_set (info, "fset_option_parent_name", ptr_fset_option->parent_name);
|
||||
@@ -137,15 +134,12 @@ fset_mouse_get_hashtable_int (struct t_hashtable *hashtable,
|
||||
int default_value)
|
||||
{
|
||||
const char *ptr_value;
|
||||
char *error;
|
||||
int value;
|
||||
|
||||
ptr_value = weechat_hashtable_get (hashtable, variable);
|
||||
if (!ptr_value)
|
||||
return default_value;
|
||||
error = NULL;
|
||||
value = (int)strtol (ptr_value, &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!weechat_util_parse_int (ptr_value, 10, &value))
|
||||
return default_value;
|
||||
|
||||
return value;
|
||||
|
||||
@@ -335,6 +335,10 @@ fset_option_match_filter (struct t_fset_option *fset_option, const char *filter)
|
||||
}
|
||||
else if (strncmp (filter, "t:", 2) == 0)
|
||||
{
|
||||
/* virtual cross-type value: match themable flag (any option type) */
|
||||
if (weechat_strcasecmp (filter + 2, "themable") == 0)
|
||||
return (fset_option->themable) ? 1 : 0;
|
||||
|
||||
/* filter by type */
|
||||
return (
|
||||
(weechat_strcasecmp (
|
||||
@@ -426,7 +430,7 @@ fset_option_set_values (struct t_fset_option *fset_option,
|
||||
const char **ptr_string_values;
|
||||
void *ptr_default_value, *ptr_value;
|
||||
struct t_config_option *ptr_parent_option;
|
||||
int *ptr_type, *ptr_min, *ptr_max;
|
||||
int *ptr_type, *ptr_themable, *ptr_min, *ptr_max;
|
||||
char str_value[64], str_allowed_values[4096];
|
||||
|
||||
/* file */
|
||||
@@ -466,6 +470,10 @@ fset_option_set_values (struct t_fset_option *fset_option,
|
||||
ptr_type = weechat_config_option_get_pointer (option, "type");
|
||||
fset_option->type = *ptr_type;
|
||||
|
||||
/* themable */
|
||||
ptr_themable = weechat_config_option_get_pointer (option, "themable");
|
||||
fset_option->themable = (ptr_themable) ? *ptr_themable : 0;
|
||||
|
||||
/* default value */
|
||||
free (fset_option->default_value);
|
||||
fset_option->default_value = NULL;
|
||||
@@ -784,6 +792,7 @@ fset_option_alloc (struct t_config_option *option)
|
||||
new_fset_option->name = NULL;
|
||||
new_fset_option->parent_name = NULL;
|
||||
new_fset_option->type = 0;
|
||||
new_fset_option->themable = 0;
|
||||
new_fset_option->default_value = NULL;
|
||||
new_fset_option->value = NULL;
|
||||
new_fset_option->parent_value = NULL;
|
||||
@@ -1691,6 +1700,7 @@ fset_option_hdata_option_cb (const void *pointer, void *data,
|
||||
WEECHAT_HDATA_VAR(struct t_fset_option, name, STRING, 0, NULL, NULL);
|
||||
WEECHAT_HDATA_VAR(struct t_fset_option, parent_name, STRING, 0, NULL, NULL);
|
||||
WEECHAT_HDATA_VAR(struct t_fset_option, type, INTEGER, 0, NULL, NULL);
|
||||
WEECHAT_HDATA_VAR(struct t_fset_option, themable, INTEGER, 0, NULL, NULL);
|
||||
WEECHAT_HDATA_VAR(struct t_fset_option, default_value, STRING, 0, NULL, NULL);
|
||||
WEECHAT_HDATA_VAR(struct t_fset_option, value, STRING, 0, NULL, NULL);
|
||||
WEECHAT_HDATA_VAR(struct t_fset_option, parent_value, STRING, 0, NULL, NULL);
|
||||
@@ -1740,6 +1750,8 @@ fset_option_add_to_infolist (struct t_infolist *infolist,
|
||||
return 0;
|
||||
if (!weechat_infolist_new_var_string (ptr_item, "type_en", fset_option_type_string[fset_option->type]))
|
||||
return 0;
|
||||
if (!weechat_infolist_new_var_integer (ptr_item, "themable", fset_option->themable))
|
||||
return 0;
|
||||
if (!weechat_infolist_new_var_string (ptr_item, "default_value", fset_option->default_value))
|
||||
return 0;
|
||||
if (!weechat_infolist_new_var_string (ptr_item, "value", fset_option->value))
|
||||
@@ -1793,6 +1805,7 @@ fset_option_print_log (void)
|
||||
weechat_log_printf (" type. . . . . . . . . : %d ('%s')",
|
||||
ptr_fset_option->type,
|
||||
fset_option_type_string[ptr_fset_option->type]);
|
||||
weechat_log_printf (" themable. . . . . . . : %d", ptr_fset_option->themable);
|
||||
weechat_log_printf (" default_value . . . . : '%s'", ptr_fset_option->default_value);
|
||||
weechat_log_printf (" value . . . . . . . . : '%s'", ptr_fset_option->value);
|
||||
weechat_log_printf (" parent_value. . . . . : '%s'", ptr_fset_option->parent_value);
|
||||
|
||||
@@ -46,6 +46,7 @@ struct t_fset_option
|
||||
char *name; /* option full name: file.sect.opt */
|
||||
char *parent_name; /* parent option name */
|
||||
enum t_fset_option_type type; /* option type */
|
||||
int themable; /* 1 if option is themable */
|
||||
char *default_value; /* option default value */
|
||||
char *value; /* option value */
|
||||
char *parent_value; /* parent option value */
|
||||
|
||||
@@ -0,0 +1,130 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2026 Sébastien Helleu <flashcode@flashtux.org>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*
|
||||
* This file is part of WeeChat, the extensible chat client.
|
||||
*
|
||||
* WeeChat is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* WeeChat is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* fset contribution to built-in themes. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#include "../weechat-plugin.h"
|
||||
#include "fset.h"
|
||||
#include "fset-theme.h"
|
||||
|
||||
|
||||
/*
|
||||
* fset contribution to the "light" theme: option values tuned for a
|
||||
* light-background terminal. Each row is { option_full_name, value };
|
||||
* the table is NULL-terminated.
|
||||
*/
|
||||
|
||||
const char *fset_theme_light[][2] =
|
||||
{
|
||||
{ "fset.color.allowed_values_selected", "default" },
|
||||
{ "fset.color.color_name", "darkgray" },
|
||||
{ "fset.color.color_name_selected", "darkgray" },
|
||||
{ "fset.color.default_value_selected", "default" },
|
||||
{ "fset.color.description_selected", "242" },
|
||||
{ "fset.color.file_changed", "94" },
|
||||
{ "fset.color.file_changed_selected", "94" },
|
||||
{ "fset.color.file_selected", "default" },
|
||||
{ "fset.color.help_default_value", "default" },
|
||||
{ "fset.color.help_name", "default" },
|
||||
{ "fset.color.index", "24" },
|
||||
{ "fset.color.index_selected", "24" },
|
||||
{ "fset.color.line_marked_bg1", "193" },
|
||||
{ "fset.color.line_marked_bg2", "193" },
|
||||
{ "fset.color.line_selected_bg1", "117" },
|
||||
{ "fset.color.line_selected_bg2", "117" },
|
||||
{ "fset.color.marked", "94" },
|
||||
{ "fset.color.marked_selected", "94" },
|
||||
{ "fset.color.max_selected", "default" },
|
||||
{ "fset.color.min_selected", "default" },
|
||||
{ "fset.color.name_changed", "red" },
|
||||
{ "fset.color.name_changed_selected", "red" },
|
||||
{ "fset.color.name_selected", "default" },
|
||||
{ "fset.color.option_changed", "94" },
|
||||
{ "fset.color.option_changed_selected", "94" },
|
||||
{ "fset.color.option_selected", "default" },
|
||||
{ "fset.color.parent_name_selected", "default" },
|
||||
{ "fset.color.parent_value", "24" },
|
||||
{ "fset.color.parent_value_selected", "24" },
|
||||
{ "fset.color.quotes_changed_selected", "default" },
|
||||
{ "fset.color.section_changed", "94" },
|
||||
{ "fset.color.section_changed_selected", "94" },
|
||||
{ "fset.color.section_selected", "default" },
|
||||
{ "fset.color.string_values_selected", "default" },
|
||||
{ "fset.color.title_count_options", "30" },
|
||||
{ "fset.color.title_current_option", "30" },
|
||||
{ "fset.color.title_filter", "18" },
|
||||
{ "fset.color.title_marked_options", "94" },
|
||||
{ "fset.color.title_sort", "darkgray" },
|
||||
{ "fset.color.type", "58" },
|
||||
{ "fset.color.type_selected", "58" },
|
||||
{ "fset.color.unmarked_selected", "default" },
|
||||
{ "fset.color.value", "20" },
|
||||
{ "fset.color.value_changed", "red" },
|
||||
{ "fset.color.value_changed_selected", "red" },
|
||||
{ "fset.color.value_selected", "20" },
|
||||
{ "fset.color.value_undef_selected", "magenta" },
|
||||
{ NULL, NULL },
|
||||
};
|
||||
|
||||
/*
|
||||
* Register fset's contribution to one theme from a NULL-terminated
|
||||
* table of {option, value} rows.
|
||||
*/
|
||||
|
||||
void
|
||||
fset_theme_register (const char *name, const char *entries[][2])
|
||||
{
|
||||
struct t_hashtable *overrides;
|
||||
int i;
|
||||
|
||||
if (!name || !entries)
|
||||
return;
|
||||
|
||||
overrides = weechat_hashtable_new (32,
|
||||
WEECHAT_HASHTABLE_STRING,
|
||||
WEECHAT_HASHTABLE_STRING,
|
||||
NULL, NULL);
|
||||
if (!overrides)
|
||||
return;
|
||||
|
||||
for (i = 0; entries[i][0]; i++)
|
||||
weechat_hashtable_set (overrides, entries[i][0], entries[i][1]);
|
||||
|
||||
weechat_theme_register (name, overrides);
|
||||
|
||||
weechat_hashtable_free (overrides);
|
||||
}
|
||||
|
||||
/*
|
||||
* Register all built-in theme contributions from fset.
|
||||
*/
|
||||
|
||||
void
|
||||
fset_theme_init (void)
|
||||
{
|
||||
fset_theme_register ("light", fset_theme_light);
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2026 Sébastien Helleu <flashcode@flashtux.org>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*
|
||||
* This file is part of WeeChat, the extensible chat client.
|
||||
*
|
||||
* WeeChat is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* WeeChat is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef WEECHAT_PLUGIN_FSET_THEME_H
|
||||
#define WEECHAT_PLUGIN_FSET_THEME_H
|
||||
|
||||
extern void fset_theme_init (void);
|
||||
|
||||
#endif /* WEECHAT_PLUGIN_FSET_THEME_H */
|
||||
@@ -35,6 +35,7 @@
|
||||
#include "fset-info.h"
|
||||
#include "fset-mouse.h"
|
||||
#include "fset-option.h"
|
||||
#include "fset-theme.h"
|
||||
|
||||
|
||||
WEECHAT_PLUGIN_NAME(FSET_PLUGIN_NAME);
|
||||
@@ -126,6 +127,8 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
|
||||
|
||||
fset_config_read ();
|
||||
|
||||
fset_theme_init ();
|
||||
|
||||
if (!fset_bar_item_init ())
|
||||
return WEECHAT_RC_ERROR;
|
||||
|
||||
|
||||
@@ -2003,6 +2003,32 @@ weechat_guile_api_config_unset_plugin (SCM option)
|
||||
API_RETURN_INT(rc);
|
||||
}
|
||||
|
||||
SCM
|
||||
weechat_guile_api_theme_register (SCM name, SCM overrides)
|
||||
{
|
||||
struct t_hashtable *c_overrides;
|
||||
const char *result;
|
||||
SCM return_value;
|
||||
|
||||
API_INIT_FUNC(1, "theme_register", API_RETURN_EMPTY);
|
||||
if (!scm_is_string (name) || !scm_list_p (overrides))
|
||||
API_WRONG_ARGS(API_RETURN_EMPTY);
|
||||
|
||||
c_overrides = weechat_guile_alist_to_hashtable (overrides,
|
||||
WEECHAT_SCRIPT_HASHTABLE_DEFAULT_SIZE,
|
||||
WEECHAT_HASHTABLE_STRING,
|
||||
WEECHAT_HASHTABLE_STRING);
|
||||
|
||||
result = API_PTR2STR(plugin_script_api_theme_register (
|
||||
weechat_guile_plugin,
|
||||
guile_current_script,
|
||||
API_SCM_TO_STRING(name), c_overrides));
|
||||
|
||||
weechat_hashtable_free (c_overrides);
|
||||
|
||||
API_RETURN_STRING(result);
|
||||
}
|
||||
|
||||
SCM
|
||||
weechat_guile_api_key_bind (SCM context, SCM keys)
|
||||
{
|
||||
@@ -2096,7 +2122,7 @@ weechat_guile_api_print_date_tags (SCM buffer, SCM date, SCM tags, SCM message)
|
||||
plugin_script_api_printf_date_tags (weechat_guile_plugin,
|
||||
guile_current_script,
|
||||
API_STR2PTR(API_SCM_TO_STRING(buffer)),
|
||||
(time_t)scm_to_long (date),
|
||||
(time_t)scm_to_long_long (date),
|
||||
API_SCM_TO_STRING(tags),
|
||||
"%s", API_SCM_TO_STRING(message));
|
||||
|
||||
@@ -2117,7 +2143,7 @@ weechat_guile_api_print_datetime_tags (SCM buffer, SCM date, SCM date_usec,
|
||||
weechat_guile_plugin,
|
||||
guile_current_script,
|
||||
API_STR2PTR(API_SCM_TO_STRING(buffer)),
|
||||
(time_t)scm_to_long (date),
|
||||
(time_t)scm_to_long_long (date),
|
||||
scm_to_int (date_usec),
|
||||
API_SCM_TO_STRING(tags),
|
||||
"%s", API_SCM_TO_STRING(message));
|
||||
@@ -2156,7 +2182,7 @@ weechat_guile_api_print_y_date_tags (SCM buffer, SCM y, SCM date, SCM tags,
|
||||
guile_current_script,
|
||||
API_STR2PTR(API_SCM_TO_STRING(buffer)),
|
||||
scm_to_int (y),
|
||||
(time_t)scm_to_long (date),
|
||||
(time_t)scm_to_long_long (date),
|
||||
API_SCM_TO_STRING(tags),
|
||||
"%s", API_SCM_TO_STRING(message));
|
||||
|
||||
@@ -2178,7 +2204,7 @@ weechat_guile_api_print_y_datetime_tags (SCM buffer, SCM y, SCM date,
|
||||
guile_current_script,
|
||||
API_STR2PTR(API_SCM_TO_STRING(buffer)),
|
||||
scm_to_int (y),
|
||||
(time_t)scm_to_long (date),
|
||||
(time_t)scm_to_long_long (date),
|
||||
scm_to_int (date_usec),
|
||||
API_SCM_TO_STRING(tags),
|
||||
"%s", API_SCM_TO_STRING(message));
|
||||
@@ -4748,7 +4774,7 @@ weechat_guile_api_infolist_new_var_time (SCM item, SCM name, SCM value)
|
||||
|
||||
result = API_PTR2STR(weechat_infolist_new_var_time (API_STR2PTR(API_SCM_TO_STRING(item)),
|
||||
API_SCM_TO_STRING(name),
|
||||
(time_t)scm_to_long (value)));
|
||||
(time_t)scm_to_long_long (value)));
|
||||
|
||||
API_RETURN_STRING(result);
|
||||
}
|
||||
@@ -5537,6 +5563,7 @@ weechat_guile_api_module_init (void *data)
|
||||
API_DEF_FUNC(config_set_plugin, 2);
|
||||
API_DEF_FUNC(config_set_desc_plugin, 2);
|
||||
API_DEF_FUNC(config_unset_plugin, 1);
|
||||
API_DEF_FUNC(theme_register, 2);
|
||||
API_DEF_FUNC(key_bind, 2);
|
||||
API_DEF_FUNC(key_unbind, 2);
|
||||
API_DEF_FUNC(prefix, 1);
|
||||
|
||||
@@ -48,6 +48,7 @@ add_library(irc MODULE
|
||||
irc-sasl.c irc-sasl.h
|
||||
irc-server.c irc-server.h
|
||||
irc-tag.c irc-tag.h
|
||||
irc-theme.c irc-theme.h
|
||||
irc-typing.c irc-typing.h
|
||||
irc-upgrade.c irc-upgrade.h
|
||||
)
|
||||
|
||||
+15
-28
@@ -96,8 +96,8 @@ char *irc_color_string_decoded[32];
|
||||
int
|
||||
irc_color_convert_rgb2term (long rgb)
|
||||
{
|
||||
char str_color[64], *info_color, *error;
|
||||
long number;
|
||||
char str_color[64], *info_color;
|
||||
int number;
|
||||
|
||||
if (rgb < 0)
|
||||
return -1;
|
||||
@@ -111,9 +111,7 @@ irc_color_convert_rgb2term (long rgb)
|
||||
return -1;
|
||||
}
|
||||
|
||||
error = NULL;
|
||||
number = strtol (info_color, &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!weechat_util_parse_int (info_color, 10, &number))
|
||||
{
|
||||
free (info_color);
|
||||
return -1;
|
||||
@@ -121,7 +119,7 @@ irc_color_convert_rgb2term (long rgb)
|
||||
|
||||
free (info_color);
|
||||
|
||||
return (int)number;
|
||||
return number;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -133,8 +131,8 @@ irc_color_convert_rgb2term (long rgb)
|
||||
int
|
||||
irc_color_convert_rgb2irc (long rgb)
|
||||
{
|
||||
char str_color[64], *error, *info_color;
|
||||
long number;
|
||||
char str_color[64], *info_color;
|
||||
int number;
|
||||
|
||||
if (rgb < 0)
|
||||
return -1;
|
||||
@@ -151,9 +149,7 @@ irc_color_convert_rgb2irc (long rgb)
|
||||
return -1;
|
||||
}
|
||||
|
||||
error = NULL;
|
||||
number = strtol (info_color, &error, 10);
|
||||
if (!error || error[0]
|
||||
if (!weechat_util_parse_int (info_color, 10, &number)
|
||||
|| (number < 0) || (number >= IRC_COLOR_TERM2IRC_NUM_COLORS))
|
||||
{
|
||||
free (info_color);
|
||||
@@ -174,7 +170,7 @@ irc_color_convert_rgb2irc (long rgb)
|
||||
int
|
||||
irc_color_convert_term2irc (int color)
|
||||
{
|
||||
char str_color[64], *error, *info_color;
|
||||
char str_color[64], *info_color;
|
||||
long number;
|
||||
|
||||
snprintf (str_color, sizeof (str_color), "%d", color);
|
||||
@@ -186,9 +182,8 @@ irc_color_convert_term2irc (int color)
|
||||
return -1;
|
||||
}
|
||||
|
||||
error = NULL;
|
||||
number = strtol (info_color, &error, 10);
|
||||
if (!error || error[0] || (number < 0) || (number > 0xFFFFFF))
|
||||
if (!weechat_util_parse_long (info_color, 10, &number)
|
||||
|| (number < 0) || (number > 0xFFFFFF))
|
||||
{
|
||||
free (info_color);
|
||||
return -1;
|
||||
@@ -211,7 +206,7 @@ irc_color_convert_term2irc (int color)
|
||||
char *
|
||||
irc_color_decode (const char *string, int keep_colors)
|
||||
{
|
||||
char **out, *error;
|
||||
char **out;
|
||||
char str_fg[16], str_bg[16], str_color[128], str_key[128], str_to_add[128];
|
||||
const char *remapped_color;
|
||||
unsigned char *ptr_string;
|
||||
@@ -337,18 +332,14 @@ irc_color_decode (const char *string, int keep_colors)
|
||||
bg = -1;
|
||||
if (str_fg[0])
|
||||
{
|
||||
error = NULL;
|
||||
fg = (int)strtol (str_fg, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (weechat_util_parse_int (str_fg, 10, &fg))
|
||||
fg %= IRC_NUM_COLORS;
|
||||
else
|
||||
fg = -1;
|
||||
}
|
||||
if (str_bg[0])
|
||||
{
|
||||
error = NULL;
|
||||
bg = (int)strtol (str_bg, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (weechat_util_parse_int (str_bg, 10, &bg))
|
||||
bg %= IRC_NUM_COLORS;
|
||||
else
|
||||
bg = -1;
|
||||
@@ -422,16 +413,12 @@ irc_color_decode (const char *string, int keep_colors)
|
||||
bg_rgb = -1;
|
||||
if (str_fg[0])
|
||||
{
|
||||
error = NULL;
|
||||
fg_rgb = strtol (str_fg, &error, 16);
|
||||
if (!error || error[0])
|
||||
if (!weechat_util_parse_long (str_fg, 16, &fg_rgb))
|
||||
fg_rgb = -1;
|
||||
}
|
||||
if (str_bg[0])
|
||||
{
|
||||
error = NULL;
|
||||
bg_rgb = strtol (str_bg, &error, 16);
|
||||
if (!error || error[0])
|
||||
if (!weechat_util_parse_long (str_bg, 16, &bg_rgb))
|
||||
bg_rgb = -1;
|
||||
}
|
||||
str_fg[0] = '\0';
|
||||
|
||||
@@ -232,9 +232,8 @@ irc_command_mode_nicks (struct t_irc_server *server,
|
||||
char **
|
||||
irc_command_mode_masks_convert_ranges (char **argv, int arg_start)
|
||||
{
|
||||
char **str_masks, **masks, *error1, *error2, *pos, str_number[32];
|
||||
int i, length, added;
|
||||
long j, number1, number2;
|
||||
char **str_masks, **masks, *pos, str_number[32];
|
||||
int i, j, length, added, number1, number2;
|
||||
|
||||
if (!argv || (arg_start < 0))
|
||||
return NULL;
|
||||
@@ -255,12 +254,8 @@ irc_command_mode_masks_convert_ranges (char **argv, int arg_start)
|
||||
&& (argv[i][length - 1] != '-'))
|
||||
{
|
||||
pos[0] = '\0';
|
||||
error1 = NULL;
|
||||
number1 = strtol (argv[i], &error1, 10);
|
||||
error2 = NULL;
|
||||
number2 = strtol (pos + 1, &error2, 10);
|
||||
if (error1 && !error1[0]
|
||||
&& error2 && !error2[0]
|
||||
if (weechat_util_parse_int (argv[i], 10, &number1)
|
||||
&& weechat_util_parse_int (pos + 1, 10, &number2)
|
||||
&& (number1 > 0) && (number1 < 128)
|
||||
&& (number2 > 0) && (number2 < 128)
|
||||
&& (number1 < number2))
|
||||
@@ -269,8 +264,7 @@ irc_command_mode_masks_convert_ranges (char **argv, int arg_start)
|
||||
{
|
||||
if ((*str_masks)[0])
|
||||
weechat_string_dyn_concat (str_masks, " ", -1);
|
||||
snprintf (str_number, sizeof (str_number),
|
||||
"%ld", j);
|
||||
snprintf (str_number, sizeof (str_number), "%d", j);
|
||||
weechat_string_dyn_concat (str_masks, str_number, -1);
|
||||
}
|
||||
added = 1;
|
||||
@@ -312,14 +306,12 @@ irc_command_mode_masks (struct t_irc_server *server,
|
||||
const char *set, const char *mode,
|
||||
char **argv, int pos_masks)
|
||||
{
|
||||
int max_modes, modes_added, msg_priority;
|
||||
int max_modes, modes_added, msg_priority, number;
|
||||
char **modes, **masks, *mask;
|
||||
struct t_irc_channel *ptr_channel;
|
||||
struct t_irc_nick *ptr_nick;
|
||||
struct t_irc_modelist *ptr_modelist;
|
||||
struct t_irc_modelist_item *ptr_item;
|
||||
long number;
|
||||
char *error;
|
||||
|
||||
if (irc_mode_get_chanmode_type (server, mode[0]) != 'A')
|
||||
{
|
||||
@@ -367,9 +359,7 @@ irc_command_mode_masks (struct t_irc_server *server,
|
||||
/* use modelist item for number arguments */
|
||||
if (ptr_modelist && (set[0] == '-'))
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (argv[pos_masks], &error, 10);
|
||||
if (error && !error[0])
|
||||
if (weechat_util_parse_int (argv[pos_masks], 10, &number))
|
||||
{
|
||||
ptr_item = irc_modelist_item_search_number (ptr_modelist,
|
||||
number - 1);
|
||||
@@ -2622,9 +2612,8 @@ irc_command_ignore_display (struct t_irc_ignore *ignore)
|
||||
IRC_COMMAND_CALLBACK(ignore)
|
||||
{
|
||||
struct t_irc_ignore *ptr_ignore;
|
||||
char *mask, *regex, *regex2, *ptr_regex, *pos, *server, *channel, *error;
|
||||
int length, update;
|
||||
long number;
|
||||
char *mask, *regex, *regex2, *ptr_regex, *pos, *server, *channel;
|
||||
int length, number, update;
|
||||
|
||||
/* make C compiler happy */
|
||||
(void) pointer;
|
||||
@@ -2767,9 +2756,7 @@ IRC_COMMAND_CALLBACK(ignore)
|
||||
}
|
||||
else
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (argv[2], &error, 10);
|
||||
if (error && !error[0])
|
||||
if (weechat_util_parse_int (argv[2], 10, &number))
|
||||
{
|
||||
ptr_ignore = irc_ignore_search_by_number (number);
|
||||
if (ptr_ignore)
|
||||
@@ -2925,7 +2912,8 @@ void
|
||||
irc_command_join_server (struct t_irc_server *server, const char *arguments,
|
||||
int manual_join, int noswitch)
|
||||
{
|
||||
char *new_args, **channels, **keys, *pos_space, *pos_keys, *pos_channel;
|
||||
const char *pos_space, *pos_keys;
|
||||
char *new_args, **channels, **keys, *pos_channel;
|
||||
char *channel_name_lower;
|
||||
int i, num_channels, num_keys, length;
|
||||
time_t time_now;
|
||||
@@ -3429,18 +3417,15 @@ int
|
||||
irc_command_list_get_int_arg (int argc, char **argv, int arg_number,
|
||||
int default_value)
|
||||
{
|
||||
long value;
|
||||
char *error;
|
||||
int value;
|
||||
|
||||
value = default_value;
|
||||
if (argc > arg_number)
|
||||
{
|
||||
error = NULL;
|
||||
value = strtol (argv[arg_number], &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!weechat_util_parse_int (argv[arg_number], 10, &value))
|
||||
value = default_value;
|
||||
}
|
||||
return (int)value;
|
||||
return value;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -470,7 +470,7 @@ irc_completion_modelist_masks_cb (const void *pointer, void *data,
|
||||
struct t_gui_buffer *buffer,
|
||||
struct t_gui_completion *completion)
|
||||
{
|
||||
char *pos;
|
||||
const char *pos;
|
||||
struct t_irc_modelist *ptr_modelist;
|
||||
struct t_irc_modelist_item *ptr_item;
|
||||
|
||||
@@ -512,7 +512,8 @@ irc_completion_modelist_numbers_cb (const void *pointer, void *data,
|
||||
struct t_gui_buffer *buffer,
|
||||
struct t_gui_completion *completion)
|
||||
{
|
||||
char *pos, str_number[32];
|
||||
const char *pos;
|
||||
char str_number[32];
|
||||
struct t_irc_modelist *ptr_modelist;
|
||||
struct t_irc_modelist_item *ptr_item;
|
||||
|
||||
|
||||
@@ -201,7 +201,8 @@ struct t_irc_server *
|
||||
irc_config_get_server_from_option_name (const char *name)
|
||||
{
|
||||
struct t_irc_server *ptr_server;
|
||||
char *pos_option, *server_name;
|
||||
const char *pos_option;
|
||||
char *server_name;
|
||||
|
||||
ptr_server = NULL;
|
||||
|
||||
@@ -274,7 +275,7 @@ irc_config_compute_nick_colors (void)
|
||||
int
|
||||
irc_config_display_channel_modes_arguments (const char *modes)
|
||||
{
|
||||
char *pos_space, *pos;
|
||||
const char *pos_space, *pos;
|
||||
const char *ptr_mode;
|
||||
|
||||
pos_space = strchr (modes, ' ');
|
||||
@@ -1287,10 +1288,8 @@ irc_config_server_check_value_cb (const void *pointer, void *data,
|
||||
struct t_config_option *option,
|
||||
const char *value)
|
||||
{
|
||||
int index_option, proxy_found;
|
||||
int index_option, number, proxy_found;
|
||||
const char *pos_error, *proxy_name;
|
||||
char *error;
|
||||
long number;
|
||||
struct t_infolist *infolist;
|
||||
|
||||
/* make C compiler happy */
|
||||
@@ -1363,9 +1362,7 @@ irc_config_server_check_value_cb (const void *pointer, void *data,
|
||||
case IRC_SERVER_OPTION_SPLIT_MSG_MAX_LENGTH:
|
||||
if (!value || !value[0])
|
||||
break;
|
||||
error = NULL;
|
||||
number = strtol (value, &error, 10);
|
||||
if (!error || error[0])
|
||||
if (!weechat_util_parse_int (value, 10, &number))
|
||||
{
|
||||
/*
|
||||
* not a valid number, but we return 1 (OK) to let WeeChat
|
||||
@@ -2811,7 +2808,8 @@ irc_config_server_read_cb (const void *pointer, void *data,
|
||||
{
|
||||
struct t_irc_server *ptr_server;
|
||||
int index_option, rc, i;
|
||||
char *pos_option, *server_name;
|
||||
const char *pos_option;
|
||||
char *server_name;
|
||||
|
||||
/* make C compiler happy */
|
||||
(void) pointer;
|
||||
@@ -2940,9 +2938,9 @@ irc_config_update_cb (const void *pointer, void *data,
|
||||
int version_read,
|
||||
struct t_hashtable *data_read)
|
||||
{
|
||||
const char *ptr_config, *ptr_section, *ptr_option, *ptr_value;
|
||||
const char *ptr_config, *ptr_section, *ptr_option, *ptr_value, *pos_option;
|
||||
const char *option_autojoin_delay = "autojoin_delay";
|
||||
char *new_option, *pos_option, *new_value;
|
||||
char *new_option, *pos_new_option, *new_value;
|
||||
int changes, length;
|
||||
|
||||
/* make C compiler happy */
|
||||
@@ -2997,11 +2995,11 @@ irc_config_update_cb (const void *pointer, void *data,
|
||||
new_option = strdup (ptr_option);
|
||||
if (new_option)
|
||||
{
|
||||
pos_option = strrchr (new_option, '.');
|
||||
if (pos_option)
|
||||
pos_new_option = strrchr (new_option, '.');
|
||||
if (pos_new_option)
|
||||
{
|
||||
pos_option++;
|
||||
memcpy (pos_option, "tls", 3);
|
||||
pos_new_option++;
|
||||
memcpy (pos_new_option, "tls", 3);
|
||||
weechat_printf (
|
||||
NULL,
|
||||
_("IRC option renamed: \"irc.%s.%s\" => \"irc.%s.%s\""),
|
||||
@@ -3959,7 +3957,7 @@ irc_config_init (void)
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||
irc_config_color_mirc_remap = weechat_config_new_option (
|
||||
irc_config_file, irc_config_section_color,
|
||||
"mirc_remap", "string",
|
||||
"mirc_remap", "string|themable",
|
||||
/* TRANSLATORS: please do not translate the list of WeeChat color names at the end of string */
|
||||
N_("remap mirc colors in messages using a hashtable (used only "
|
||||
"for standard colors, not RGB colors): keys are \"fg,bg\" as "
|
||||
@@ -3977,7 +3975,7 @@ irc_config_init (void)
|
||||
NULL, NULL, NULL);
|
||||
irc_config_color_nick_prefixes = weechat_config_new_option (
|
||||
irc_config_file, irc_config_section_color,
|
||||
"nick_prefixes", "string",
|
||||
"nick_prefixes", "string|themable",
|
||||
N_("color for nick prefixes using mode char (o=op, h=halfop, "
|
||||
"v=voice, ..), format is: \"o:color1;h:color2;v:color3\" (if a "
|
||||
"mode is not found, WeeChat will try with next modes received "
|
||||
@@ -4008,7 +4006,7 @@ irc_config_init (void)
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||
irc_config_color_term_remap = weechat_config_new_option (
|
||||
irc_config_file, irc_config_section_color,
|
||||
"term_remap", "string",
|
||||
"term_remap", "string|themable",
|
||||
N_("remap terminal color numbers in messages using a hashtable "
|
||||
"(used only for RGB colors as hexadecimal, which are first "
|
||||
"translated to terminal color numbers): keys are \"fg,bg\" as "
|
||||
|
||||
+20
-23
@@ -67,8 +67,8 @@ irc_info_info_irc_is_channel_cb (const void *pointer, void *data,
|
||||
const char *info_name,
|
||||
const char *arguments)
|
||||
{
|
||||
char *pos_comma, *server;
|
||||
const char *pos_channel;
|
||||
char *server;
|
||||
const char *pos_channel, *pos_comma;
|
||||
struct t_irc_server *ptr_server;
|
||||
|
||||
/* make C compiler happy */
|
||||
@@ -106,8 +106,8 @@ irc_info_info_irc_is_nick_cb (const void *pointer, void *data,
|
||||
const char *info_name,
|
||||
const char *arguments)
|
||||
{
|
||||
char *pos_comma, *server;
|
||||
const char *pos_nick;
|
||||
char *server;
|
||||
const char *pos_nick, *pos_comma;
|
||||
struct t_irc_server *ptr_server;
|
||||
|
||||
/* make C compiler happy */
|
||||
@@ -233,8 +233,8 @@ irc_info_info_irc_buffer_cb (const void *pointer, void *data,
|
||||
const char *info_name,
|
||||
const char *arguments)
|
||||
{
|
||||
char *pos_comma, *pos_comma2, *server, *channel, *host;
|
||||
const char *nick;
|
||||
char *server, *channel, *host;
|
||||
const char *nick, *pos_comma, *pos_comma2;
|
||||
struct t_irc_server *ptr_server;
|
||||
struct t_irc_channel *ptr_channel;
|
||||
|
||||
@@ -332,8 +332,8 @@ irc_info_info_irc_server_isupport_cb (const void *pointer, void *data,
|
||||
const char *info_name,
|
||||
const char *arguments)
|
||||
{
|
||||
char *pos_comma, *server;
|
||||
const char *isupport_value;
|
||||
char *server;
|
||||
const char *isupport_value, *pos_comma;
|
||||
struct t_irc_server *ptr_server;
|
||||
|
||||
/* make C compiler happy */
|
||||
@@ -373,8 +373,8 @@ irc_info_info_irc_server_isupport_value_cb (const void *pointer, void *data,
|
||||
const char *info_name,
|
||||
const char *arguments)
|
||||
{
|
||||
char *pos_comma, *server;
|
||||
const char *isupport_value;
|
||||
char *server;
|
||||
const char *isupport_value, *pos_comma;
|
||||
struct t_irc_server *ptr_server;
|
||||
|
||||
/* make C compiler happy */
|
||||
@@ -414,7 +414,8 @@ irc_info_info_irc_server_cap_cb (const void *pointer, void *data,
|
||||
const char *info_name,
|
||||
const char *arguments)
|
||||
{
|
||||
char *pos_comma, *server;
|
||||
char *server;
|
||||
const char *pos_comma;
|
||||
int has_cap;
|
||||
struct t_irc_server *ptr_server;
|
||||
|
||||
@@ -455,8 +456,8 @@ irc_info_info_irc_server_cap_value_cb (const void *pointer, void *data,
|
||||
const char *info_name,
|
||||
const char *arguments)
|
||||
{
|
||||
char *pos_comma, *server;
|
||||
const char *cap_value;
|
||||
char *server;
|
||||
const char *cap_value, *pos_comma;
|
||||
struct t_irc_server *ptr_server;
|
||||
|
||||
/* make C compiler happy */
|
||||
@@ -496,8 +497,8 @@ irc_info_info_irc_is_message_ignored_cb (const void *pointer, void *data,
|
||||
const char *info_name,
|
||||
const char *arguments)
|
||||
{
|
||||
char *pos_comma, *server;
|
||||
const char *pos_message;
|
||||
char *server;
|
||||
const char *pos_message, *pos_comma;
|
||||
struct t_irc_server *ptr_server;
|
||||
|
||||
/* make C compiler happy */
|
||||
@@ -984,9 +985,8 @@ irc_info_infolist_irc_modelist_item_cb (const void *pointer, void *data,
|
||||
struct t_irc_channel *ptr_channel;
|
||||
struct t_irc_modelist *ptr_modelist;
|
||||
struct t_irc_modelist_item *ptr_item;
|
||||
char **argv, *error;
|
||||
int argc;
|
||||
long number;
|
||||
char **argv;
|
||||
int argc, number;
|
||||
|
||||
/* make C compiler happy */
|
||||
(void) pointer;
|
||||
@@ -1028,15 +1028,12 @@ irc_info_infolist_irc_modelist_item_cb (const void *pointer, void *data,
|
||||
}
|
||||
if (!obj_pointer && (argc >= 4))
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (argv[3], &error, 10);
|
||||
if (!error || error[0] || (number < 0))
|
||||
if (!weechat_util_parse_int (argv[3], 10, &number) || (number < 0))
|
||||
{
|
||||
weechat_string_free_split (argv);
|
||||
return NULL;
|
||||
}
|
||||
obj_pointer = irc_modelist_item_search_number (ptr_modelist,
|
||||
(int)number);
|
||||
obj_pointer = irc_modelist_item_search_number (ptr_modelist, number);
|
||||
if (!obj_pointer)
|
||||
{
|
||||
weechat_string_free_split (argv);
|
||||
|
||||
@@ -457,7 +457,7 @@ irc_input_send_cb (const void *pointer, void *data,
|
||||
const char *type_data, void *signal_data)
|
||||
{
|
||||
const char *ptr_string, *ptr_message;
|
||||
char *pos_semicol1, *pos_semicol2, *pos_semicol3, *pos_semicol4;
|
||||
const char *pos_semicol1, *pos_semicol2, *pos_semicol3, *pos_semicol4;
|
||||
char *server, *channel, *options, *tags, *data_with_colors, **list_options;
|
||||
int i, num_options, flags, force_user_message;
|
||||
struct t_irc_server *ptr_server;
|
||||
|
||||
+13
-18
@@ -234,9 +234,8 @@ int
|
||||
irc_list_channel_match_filter (struct t_irc_server *server,
|
||||
struct t_irc_list_channel *channel)
|
||||
{
|
||||
char *error, *result;
|
||||
long number;
|
||||
int match;
|
||||
char *result;
|
||||
int match, number;
|
||||
|
||||
/* no filter? then any channel is matching */
|
||||
if (!server->list->filter)
|
||||
@@ -280,25 +279,22 @@ irc_list_channel_match_filter (struct t_irc_server *server,
|
||||
else if (strncmp (server->list->filter, "u:>", 3) == 0)
|
||||
{
|
||||
/* filter by users (> N)*/
|
||||
error = NULL;
|
||||
number = strtol (server->list->filter + 3, &error, 10);
|
||||
if (error && !error[0] && channel->users > (int)number)
|
||||
if (weechat_util_parse_int (server->list->filter + 3, 10, &number)
|
||||
&& (channel->users > number))
|
||||
return 1;
|
||||
}
|
||||
else if (strncmp (server->list->filter, "u:<", 3) == 0)
|
||||
{
|
||||
/* filter by users (< N)*/
|
||||
error = NULL;
|
||||
number = strtol (server->list->filter + 3, &error, 10);
|
||||
if (error && !error[0] && channel->users < (int)number)
|
||||
if (weechat_util_parse_int (server->list->filter + 3, 10, &number)
|
||||
&& (channel->users < number))
|
||||
return 1;
|
||||
}
|
||||
else if (strncmp (server->list->filter, "u:", 2) == 0)
|
||||
{
|
||||
/* filter by users */
|
||||
error = NULL;
|
||||
number = strtol (server->list->filter + 2, &error, 10);
|
||||
if (error && !error[0] && channel->users >= (int)number)
|
||||
if (weechat_util_parse_int (server->list->filter + 2, 10, &number)
|
||||
&& (channel->users >= number))
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
@@ -375,10 +371,9 @@ int
|
||||
irc_list_parse_messages (struct t_irc_server *server, const char *output)
|
||||
{
|
||||
struct t_irc_list_channel *channel;
|
||||
char **irc_msgs, *command, **params, *error;
|
||||
char **irc_msgs, *command, **params;
|
||||
const char *ptr_name;
|
||||
int i, count_irc_msgs, num_params, length, keep_colors;
|
||||
long number;
|
||||
int i, count_irc_msgs, num_params, length, keep_colors, number;
|
||||
|
||||
if (server->list->channels)
|
||||
{
|
||||
@@ -439,9 +434,9 @@ irc_list_parse_messages (struct t_irc_server *server, const char *output)
|
||||
ptr_name++;
|
||||
}
|
||||
channel->name2 = strdup (ptr_name);
|
||||
error = NULL;
|
||||
number = strtol (params[2], &error, 10);
|
||||
channel->users = (error && !error[0]) ? number : 0;
|
||||
if (!weechat_util_parse_int (params[2], 10, &number))
|
||||
number = 0;
|
||||
channel->users = number;
|
||||
channel->topic = (num_params > 3) ?
|
||||
irc_color_decode (params[3], keep_colors) : NULL;
|
||||
length = weechat_utf8_strlen_screen (channel->name);
|
||||
|
||||
@@ -598,8 +598,7 @@ irc_message_parse_cap_multiline_value (struct t_irc_server *server,
|
||||
{
|
||||
struct t_hashtable *values;
|
||||
const char *ptr_value;
|
||||
char *error;
|
||||
long number;
|
||||
int number;
|
||||
|
||||
if (!server)
|
||||
return;
|
||||
@@ -617,18 +616,14 @@ irc_message_parse_cap_multiline_value (struct t_irc_server *server,
|
||||
ptr_value = (const char *)weechat_hashtable_get (values, "max-bytes");
|
||||
if (ptr_value)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (ptr_value, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (weechat_util_parse_int (ptr_value, 10, &number))
|
||||
server->multiline_max_bytes = number;
|
||||
}
|
||||
|
||||
ptr_value = (const char *)weechat_hashtable_get (values, "max-lines");
|
||||
if (ptr_value)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (ptr_value, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (weechat_util_parse_int (ptr_value, 10, &number))
|
||||
server->multiline_max_lines = number;
|
||||
}
|
||||
|
||||
@@ -707,8 +702,8 @@ const char *
|
||||
irc_message_get_nick_from_host (const char *host)
|
||||
{
|
||||
static char nick[128];
|
||||
char host2[128], *pos_space, *pos;
|
||||
const char *ptr_host;
|
||||
char host2[128];
|
||||
const char *ptr_host, *pos_space, *pos;
|
||||
|
||||
if (!host)
|
||||
return NULL;
|
||||
@@ -756,8 +751,8 @@ const char *
|
||||
irc_message_get_address_from_host (const char *host)
|
||||
{
|
||||
static char address[256];
|
||||
char host2[256], *pos_space, *pos;
|
||||
const char *ptr_host;
|
||||
char host2[256];
|
||||
const char *ptr_host, *pos_space, *pos;
|
||||
|
||||
if (!host)
|
||||
return NULL;
|
||||
@@ -1182,8 +1177,9 @@ irc_message_split_join (struct t_irc_message_split_context *context,
|
||||
{
|
||||
int channels_count, keys_count, length, length_no_channel;
|
||||
int length_to_add, index_channel;
|
||||
char **channels, **keys, *pos, *str;
|
||||
char **channels, **keys, *str;
|
||||
char msg_to_send[16384], keys_to_add[16384];
|
||||
const char *pos;
|
||||
|
||||
max_length -= 2; /* by default: 512 - 2 = 510 bytes */
|
||||
|
||||
@@ -1510,7 +1506,7 @@ irc_message_split_privmsg_notice (struct t_irc_message_split_context *context,
|
||||
int
|
||||
irc_message_split_005 (struct t_irc_message_split_context *context,
|
||||
const char *tags, const char *host, const char *command,
|
||||
const char *target, const char *arguments,
|
||||
const char *target, char *arguments,
|
||||
int max_length)
|
||||
{
|
||||
char *pos, suffix[4096];
|
||||
@@ -1570,7 +1566,8 @@ irc_message_split (struct t_irc_server *server, const char *message)
|
||||
{
|
||||
struct t_irc_message_split_context split_context;
|
||||
char **argv, **argv_eol, *tags, *host, *command, *arguments, target[4096];
|
||||
char *pos, monitor_action[3];
|
||||
char monitor_action[3];
|
||||
const char *pos;
|
||||
int split_ok, split_privmsg, argc, index_args, max_length_nick;
|
||||
int max_length_user, max_length_host, max_length_nick_user_host;
|
||||
int split_msg_max_length, multiline, multiline_max_bytes;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user