mirror of
https://github.com/weechat/weechat.git
synced 2026-06-24 20:06:38 +02:00
Compare commits
143 Commits
v4.0.0-rc1
..
v4.0.7
| Author | SHA1 | Date | |
|---|---|---|---|
| f9c3d0ae0a | |||
| 83749f491c | |||
| d79342dafd | |||
| 999ba00ac6 | |||
| df7a428454 | |||
| 1d6eb273c6 | |||
| ae93fa1fef | |||
| 7fabd8068f | |||
| a48dd9d481 | |||
| 2ee71c7699 | |||
| c7cf41c357 | |||
| 7c21c6b993 | |||
| 563654901c | |||
| 517c04ae65 | |||
| a317d0823a | |||
| a399d3f68c | |||
| b0e4e20205 | |||
| 5df21f38f3 | |||
| 90e7857e62 | |||
| 480d603eb5 | |||
| 3184bb92e6 | |||
| 753a2adffc | |||
| 020c8145b6 | |||
| a33f0d2132 | |||
| 7a3ae654be | |||
| 64403cefc1 | |||
| 9621c4381b | |||
| 0ff08971aa | |||
| 19bb049325 | |||
| e33da6292d | |||
| be6b27c8f9 | |||
| 2d9b133c77 | |||
| 6c36836182 | |||
| 15214f9538 | |||
| 7f13bdb51a | |||
| 49bbc53d7c | |||
| eb17fa24ee | |||
| c7d03668f1 | |||
| 8575546aa2 | |||
| 2c716e8154 | |||
| 49b1cb06b5 | |||
| 75a0755107 | |||
| 79b03d0680 | |||
| f43ed913f5 | |||
| 1fcbdb3bd9 | |||
| 1aab82f20b | |||
| 58141bde79 | |||
| 7f6e626122 | |||
| 15860532f3 | |||
| 8b7513e883 | |||
| 2566fca78c | |||
| a82bfa0e7e | |||
| 48d33521dc | |||
| e3f6dab366 | |||
| 1a05f89586 | |||
| c811072bdf | |||
| 4ae396825c | |||
| 87e47894e6 | |||
| ad75786e15 | |||
| 39fdb1b564 | |||
| c5eb982424 | |||
| e7bf09f4e8 | |||
| 27972b9c5d | |||
| ab7b51db72 | |||
| 647d7033cf | |||
| 4fe1ba7016 | |||
| 29db9b95ee | |||
| 270d64cfa1 | |||
| 4eabcdf840 | |||
| 77911680bb | |||
| bc5b287622 | |||
| 7c0b16df81 | |||
| f3bc66b255 | |||
| a23d8f2198 | |||
| f4c6caabb3 | |||
| f416688e84 | |||
| 1dc7ae6b68 | |||
| b06e09d00b | |||
| 89090b10e8 | |||
| fad7231f90 | |||
| cf1e073446 | |||
| b4fc345a13 | |||
| b2cd9d002b | |||
| 9312211d49 | |||
| 2ad27b41a5 | |||
| ef68312393 | |||
| 7aa490e360 | |||
| 36ea983d04 | |||
| a4e7e18c14 | |||
| ea934864d4 | |||
| 6e7fe96046 | |||
| 82daed8076 | |||
| bcc061292d | |||
| 3b26d6750e | |||
| 71f8c2ba17 | |||
| 2d91845d53 | |||
| ed67f4bf0a | |||
| e311564387 | |||
| 2781f38052 | |||
| 6c9ff45e5c | |||
| 3203ee8f05 | |||
| b71af61581 | |||
| 2304029d61 | |||
| b06edae3e3 | |||
| 7d78be3a1b | |||
| 1107205059 | |||
| bd9978e467 | |||
| b4d999010a | |||
| 9939f939aa | |||
| 929d6fd452 | |||
| db117f34dd | |||
| f546796b49 | |||
| dd3277adbb | |||
| cb7647a3ea | |||
| 21292f7464 | |||
| 3c433b5106 | |||
| b578a0a4b9 | |||
| 1c449f3c2e | |||
| 7c7a9484fb | |||
| eacb807448 | |||
| 001cf3376d | |||
| e1d1831fa8 | |||
| 3e42d95f40 | |||
| 1b78cd3bd2 | |||
| 9d7766ce3d | |||
| 2d25cac44a | |||
| 09b512337a | |||
| 3af4ccff38 | |||
| 964d882c61 | |||
| a9544af15c | |||
| 8c73634e1b | |||
| fc91ee59c9 | |||
| 1145d9f188 | |||
| 5de7152383 | |||
| 5d06ab76df | |||
| 2eacbe6153 | |||
| 0b51c2d0be | |||
| 4185e7b9f6 | |||
| 0d92c8703f | |||
| dccd1a348c | |||
| ab9b8e0b01 | |||
| 7f07782208 | |||
| 7a754d93ab |
@@ -33,6 +33,8 @@ jobs:
|
||||
run: |
|
||||
sudo apt-get update -qq
|
||||
sudo apt-get --yes --no-install-recommends install ${{ env.WEECHAT_DEPENDENCIES }}
|
||||
# uninstall php imagick as is causes a crash when loading php plugin (see #2009)
|
||||
sudo apt-get --yes purge php8.1-imagick
|
||||
sudo -H pip3 install --ignore-installed msgcheck
|
||||
|
||||
- name: Check gettext files
|
||||
|
||||
+6
-14
@@ -200,20 +200,6 @@ if(ENABLE_LARGEFILE)
|
||||
add_definitions(-D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_LARGE_FILES)
|
||||
endif()
|
||||
|
||||
# Check for Gettext
|
||||
if(ENABLE_NLS)
|
||||
find_package(Gettext)
|
||||
if(GETTEXT_FOUND)
|
||||
add_definitions(-DENABLE_NLS)
|
||||
find_package(Intl)
|
||||
if(Intl_FOUND)
|
||||
list(APPEND EXTRA_LIBS "${Intl_LIBRARIES}")
|
||||
endif()
|
||||
else()
|
||||
message(SEND_ERROR "Gettext not found")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Check for libgcrypt
|
||||
find_package(GCRYPT REQUIRED)
|
||||
add_definitions(-DHAVE_GCRYPT)
|
||||
@@ -258,7 +244,13 @@ endif()
|
||||
add_subdirectory(icons)
|
||||
|
||||
if(ENABLE_NLS)
|
||||
find_package(Gettext REQUIRED)
|
||||
add_definitions(-DENABLE_NLS)
|
||||
find_package(Intl REQUIRED)
|
||||
list(APPEND EXTRA_LIBS "${Intl_LIBRARIES}")
|
||||
add_subdirectory(po)
|
||||
else()
|
||||
add_custom_target(translations COMMAND true)
|
||||
endif()
|
||||
|
||||
add_subdirectory(src)
|
||||
|
||||
+133
-4
@@ -10,8 +10,131 @@ This document lists all the changes for each version. +
|
||||
For a list of important changes that require manual actions, please look at release notes.
|
||||
|
||||
|
||||
[[v4.0.7]]
|
||||
== Version 4.0.7 (2023-12-03)
|
||||
|
||||
Bug fixes::
|
||||
|
||||
* core: fix value of buffer variable "num_history" when the value defined in option weechat.history.max_commands is reached
|
||||
* core: remove incorrect warning when binding keys kbd:[F10] to kbd:[F20] (issue #2039)
|
||||
* core: fix memory leak when config version is invalid or not supported
|
||||
* core: fix crash when "config_version" is present in a configuration file without a value
|
||||
* core: display an error on startup if environment variable "HOME" is not set
|
||||
* irc: remove trailing "\r\n" in signals "irc_out" and "irc_outtags" when messages are queued
|
||||
* irc: fix target buffer of IRC message 337 (whois reply: "is hiding their idle time")
|
||||
* relay: close properly connection with the IRC client in case of server disconnection (issue #2038)
|
||||
* ruby: fix use of NULL variable when displaying exception
|
||||
|
||||
[[v4.0.6]]
|
||||
== Version 4.0.6 (2023-10-26)
|
||||
|
||||
Bug fixes::
|
||||
|
||||
* core: fix crash when a custom bar item name is already used by a default bar item (issue #2034)
|
||||
* core: fix generation of TOTP on Big Endian systems (issue #2021)
|
||||
* irc: move value `-all` at the end of completions for command `/ignore del`
|
||||
* irc: fix memory leak when joining channels with keys
|
||||
|
||||
Build::
|
||||
|
||||
* core: fix build error if CMake option ENABLE_NLS is turned to off or if required dependencies are not found (issue #2026, issue #2031)
|
||||
|
||||
[[v4.0.5]]
|
||||
== Version 4.0.5 (2023-09-24)
|
||||
|
||||
New features::
|
||||
|
||||
* core: automatically backup config file read if it has an unsupported version (issue #2013)
|
||||
* core: display a message when a configuration file is updated to a newer version
|
||||
* python: make stub (weechat.pyi) compatible with Python 3.8 and 3.9 (issue #2006)
|
||||
|
||||
Bug fixes::
|
||||
|
||||
* irc: add option irc.look.open_pv_buffer_echo_msg to open private buffer on self message when capability echo-message is enabled (issue #2016)
|
||||
* irc: fix title of private buffers wrongly set to own address when capability echo-message is enabled (issue #2016)
|
||||
* irc: fix autojoin of channels when private buffers are opened (issue #2012)
|
||||
* irc: fix string comparison when CASEMAPPING is set to "ascii"
|
||||
* script: fix removal of script in system directory while trying to install a script (issue #2019)
|
||||
* script: fix autoload of multiple scripts at once with `/script autoload` (issue #2018)
|
||||
* script: fix crash when a `/script` command triggers another `/script` command (issue #923)
|
||||
* xfer: fix memory leak on plugin unload
|
||||
|
||||
Tests::
|
||||
|
||||
* irc: add tests on server functions
|
||||
|
||||
[[v4.0.4]]
|
||||
== Version 4.0.4 (2023-08-22)
|
||||
|
||||
Bug fixes::
|
||||
|
||||
* core: fix integer overflow when setting integer option with `++N` or `--N`
|
||||
* core: fix increment/decrement of options weechat.notify.*
|
||||
* irc: add missing tags on multiline messages (issue #1987)
|
||||
* irc: fix redirection of command `/list` when the reply doesn't start with message 321 (start of /list)
|
||||
* irc: fix wrong time displayed for CTCP messages received from self nick (issue #2000)
|
||||
* logger: remove trailing empty line in display of backlog (issue #2002)
|
||||
* perl: fix display of non-ASCII chars after load of a script with Perl >= 5.38 (issue #1996)
|
||||
* script: adjust scroll after command `/script go N`
|
||||
* scripts: fix function string_parse_size on 32-bit systems (python and ruby) (issue #1999)
|
||||
* xfer: fix conversion of string to IPv4 on 32-bit systems (issue #1999)
|
||||
|
||||
Tests::
|
||||
|
||||
* irc: fix tests on function irc_join_compare_join_channel (issue #1997)
|
||||
* scripts: fix tests of functions print_date_tag, print_y_date_tags and hook_timer on 32-bit systems (issue #1999)
|
||||
|
||||
[[v4.0.3]]
|
||||
== Version 4.0.3 (2023-08-08)
|
||||
|
||||
Bug fixes::
|
||||
|
||||
* core: fix input length and crash after delete of line (issue #1989)
|
||||
* irc: fix display of self CTCP message containing bold attribute (issue #1981)
|
||||
* irc: fix memory leak in IRC message parser
|
||||
* irc: fix switch to channel manually joined when server option autojoin_dynamic is on and option irc.look.buffer_switch_autojoin is off (issue #1982)
|
||||
* irc: fix display of outgoing notice with channel when capability "echo-message" is enabled (issue #1991)
|
||||
* relay: fix display of IRC CTCP messages received from client (issue #1986)
|
||||
|
||||
Build::
|
||||
|
||||
* doc: display a warning if a locale is missing with fallback to English for auto-generated content (issue #1985)
|
||||
|
||||
[[v4.0.2]]
|
||||
== Version 4.0.2 (2023-07-12)
|
||||
|
||||
Bug fixes::
|
||||
|
||||
* core: fix renaming of options with command `/item rename` (issue #1978)
|
||||
* core: don't send "key_pressed" signal again for the same key press (issue #1976)
|
||||
* core: don't send "key_combo_*" signals for incomplete keys (issue #1976)
|
||||
* core: add key kbd:[Ctrl+Backspace] in /help key (issue #1975)
|
||||
* core: keep keys `ctrl-H` and `ctrl-?` (in lower case) if they were manually bound to custom commands in a previous version
|
||||
|
||||
Tests::
|
||||
|
||||
* core: fix hdata tests failure on Alpine 3.18
|
||||
* relay: fix crash in tests on Alpine 3.18
|
||||
|
||||
Build::
|
||||
|
||||
* php: fix detection of PHP 8.2 on Alpine 3.18
|
||||
|
||||
[[v4.0.1]]
|
||||
== Version 4.0.1 (2023-06-30)
|
||||
|
||||
Bug fixes::
|
||||
|
||||
* core: force key "return" to command "/input return" when migrating legacy keys
|
||||
* core: display actual key name and command with key kbd:[Alt+k], remove key kbd:[Alt+K] (grab raw key) and associated commands `/input grab_raw_key` and `/input grab_raw_key_command`
|
||||
* core: check for newline characters in string_is_whitespace_char (issue #1968)
|
||||
* api: do not convert option name to lower case in API functions config_set_plugin and config_set_desc_plugin
|
||||
* guile: fix crash on quit with Guile < 3 (issue #1965)
|
||||
* irc: reply to a CTCP request sent to self nick (issue #1966)
|
||||
* irc: sent "QUIT" message to servers connected with TLS on `/upgrade`
|
||||
|
||||
[[v4.0.0]]
|
||||
== Version 4.0.0 (under dev)
|
||||
== Version 4.0.0 (2023-06-24)
|
||||
|
||||
New features::
|
||||
|
||||
@@ -24,7 +147,7 @@ New features::
|
||||
* core: insert multiple pasted lines in input instead of sending immediately, add keys to move and delete in a single line and whole input, add option weechat.look.input_multiline_lead_linebreak (issue #1502, issue #1503, issue #1504)
|
||||
* core: render newline characters in chat line messages (issue #1908)
|
||||
* core: don't split on newline characters in printf_date_tags when input_multiline is set (issue #1909)
|
||||
* core: add key @kbd:[l] in cursor mode to quote line, add variable "_chat_focused_line" in function hashtable sent to hook_focus callback (issue #1913, issue #1914)
|
||||
* core: add key kbd:[l] (lower `L`) in cursor mode to quote line, add variable "_chat_focused_line" in function hashtable sent to hook_focus callback (issue #1913, issue #1914)
|
||||
* core: add option `split_return` in command `/input` (issue #1916)
|
||||
* core: send all command line parameters not beginning with a dash to all plugins
|
||||
* core: add command `/reset` to reset options to their default values
|
||||
@@ -33,16 +156,18 @@ New features::
|
||||
* core: add access to hashtable properties in evaluation of expressions (issue #1888)
|
||||
* core: display similar command names when a command is unknown (issue #1877)
|
||||
* core: rename option weechat.color.status_name_ssl to weechat.color.status_name_tls
|
||||
* core: add option weechat.color.status_name_insecure to display buffer name with a specific color when not connected with TLS to the server
|
||||
* core, plugins: make many identifiers case sensitive (issue #1872, issue #398, bug #32213)
|
||||
* core: add item "mouse_status" in default status bar, change default color to lightgreen
|
||||
* core, trigger: add options weechat.color.chat_status_disabled and weechat.color.chat_status_enabled, remove options trigger.color.trigger and trigger.color.trigger_disabled, add enabled/disabled status color in output of `/filter list` (issue #1820)
|
||||
* core: add completions "filters_names_disabled" and "filters_names_enabled", used in completion of `/filter disable` and `/filter enable`
|
||||
* api: add function config_set_version (issue #1238)
|
||||
* api: don't split on newline by default in functions `command` and `command_options` when `input_multiline` is set to 0
|
||||
* api: add optional argument with version in info "version_number"
|
||||
* api: add info "auto_load_scripts"
|
||||
* alias: use lower case for default aliases, rename all aliases to lower case on upgrade (issue #1872)
|
||||
* alias: add `$&` to replace all arguments with double quotes escaped (issue #1140, issue #1190)
|
||||
* alias: add option `missing` in command `/alias`
|
||||
* alias: add options `missing` and `rename` in command `/alias`
|
||||
* fifo: add support of escaped chars in text or commands sent (issue #1950)
|
||||
* fset: add options fset.color.color_name and fset.color.color_name_selected (issue #1920)
|
||||
* irc: rename "ssl" options to "tls", connect with TLS and port 6697 by default
|
||||
@@ -71,6 +196,7 @@ New features::
|
||||
* relay: add modifiers "relay_client_irc_in", "relay_client_irc_out1" and "relay_client_irc_out" in irc protocol
|
||||
* relay: add support of capability "echo-message" in irc protocol (issue #1949)
|
||||
* relay: add handshake option "escape_commands" in weechat protocol
|
||||
* trigger: add completions "trigger_names_disabled" and "trigger_names_enabled", used in completion of `/trigger disable` and `/trigger enable`
|
||||
|
||||
Bug fixes::
|
||||
|
||||
@@ -90,7 +216,9 @@ Bug fixes::
|
||||
* core: fix infinite loop on startup when running some gui commands before the switch to core buffer is performed (issue #1917)
|
||||
* api: readjust string size in function string_dyn_free when string is not freed
|
||||
* buflist: do not display keys added in default context on first load
|
||||
* exec: remove trailing "M" (carriage return) in output of commands
|
||||
* fset: remove scroll to top of fset buffer when options are added or removed (issue #1892)
|
||||
* guile: fix crash when plugin is loaded on GNU/Hurd (issue #1951)
|
||||
* irc: fix format of IRC tags displayed in messages (use "=" to separate key from value, do not convert "_" to "-") (issue #1929)
|
||||
* irc: reset all internal servers variables when disconnecting
|
||||
* irc: start from the beginning of nicks at automatic reconnection (issue #337, issue #965)
|
||||
@@ -107,6 +235,7 @@ Bug fixes::
|
||||
* irc: remove extra space in CTCP ACTION message sent without arguments
|
||||
* logger: fix display of multiline messages in backlog (issue #1926)
|
||||
* lua: fix crash with print when the value to print is not a string (issue #1904, issue #1905)
|
||||
* relay: fix crash on `/upgrade` when at least a client is connected with weechat protocol
|
||||
* relay: fix connection with IRC clients sending "CAP REQ :" (without capability) and not sending "CAP END" (issue #1040)
|
||||
* ruby: fix crash on quit when a child process is still running (issue #1889, issue #1915)
|
||||
* ruby: fix crash in display of exception backtrace with Ruby 3 (issue #1631, issue #1886)
|
||||
@@ -1632,7 +1761,7 @@ New features::
|
||||
* core: add option weechat.look.hotlist_add_conditions, remove option weechat.look.hotlist_add_buffer_if_away
|
||||
* core: add option weechat.look.hotlist_remove (issue #99)
|
||||
* core: add options `-beep` and `-current` in command `/print`
|
||||
* core: add bare display mode for easy text selection and click on URLs, new key: kbd:[Alt+l] (`L`), new option "bare" in command `/window`, new options: weechat.look.bare_display_exit_on_input and weechat.look.bare_display_time_format
|
||||
* core: add bare display mode for easy text selection and click on URLs, new key: kbd:[Alt+l] (lower `L`), new option "bare" in command `/window`, new options: weechat.look.bare_display_exit_on_input and weechat.look.bare_display_time_format
|
||||
* core: add signals "key_combo_{default|search|cursor}"
|
||||
* core: add terabyte unit for size displayed
|
||||
* core: display a warning in case of inconsistency between the options weechat.look.save_{config|layout}_on_exit
|
||||
|
||||
+4
-4
@@ -29,7 +29,7 @@ please include:
|
||||
_WeeChat 1.7-dev (git: v1.6-6-g997f47f)_. +
|
||||
If WeeChat does not start at all, please include the version displayed by
|
||||
`weechat --help` (or the version installed with your package manager).
|
||||
* Your *operating system*: its name and version (examples: Linux Debian Bullseye,
|
||||
* Your *operating system*: its name and version (examples: Linux Debian Bookworm,
|
||||
FreeBSD 13.0, Windows/Cygwin 64-bit, Windows/Ubuntu 64-bit...).
|
||||
* The *steps to reproduce*: if possible, please include a reproducible example:
|
||||
explain the steps which led you to the problem. +
|
||||
@@ -38,7 +38,7 @@ please include:
|
||||
problem here.
|
||||
* The *gdb's backtrace* (only for a crash): if you can reproduce the crash
|
||||
(or if you have a core file), please include the backtrace from gdb (look at
|
||||
https://weechat.org/doc/user/#report_crashes[User's guide] for more info).
|
||||
https://weechat.org/doc/weechat/user/#report_crashes[User's guide] for more info).
|
||||
* The *actual result*.
|
||||
* The *expected result*: the correct result you are expecting.
|
||||
|
||||
@@ -68,7 +68,7 @@ time, for https://github.com/weechat/weechat[WeeChat] and the website
|
||||
https://github.com/weechat/weechat.org[weechat.org].
|
||||
|
||||
To start a translation in a new language (not yet supported), please look at
|
||||
https://weechat.org/doc/dev/#translations[translations]
|
||||
https://weechat.org/doc/weechat/dev/#translations[translations]
|
||||
in Developer's guide.
|
||||
|
||||
== Feature requests
|
||||
@@ -84,7 +84,7 @@ For major new features, it's better to discuss about it in IRC
|
||||
(server: _irc.libera.chat_, channel _#weechat_).
|
||||
|
||||
Before submitting any pull request, be sure you have read the
|
||||
https://weechat.org/doc/dev/#coding_rules[coding rules]
|
||||
https://weechat.org/doc/weechat/dev/#coding_rules[coding rules]
|
||||
in Developer's guide, which contains info about styles used, naming convention
|
||||
and other useful info.
|
||||
|
||||
|
||||
+3
-3
@@ -23,13 +23,13 @@ Homepage: https://weechat.org/
|
||||
|
||||
== Features
|
||||
|
||||
* *Modular chat client*: WeeChat has a lightweight core and optional https://weechat.org/doc/user/#plugins[plugins]. All plugins (including https://weechat.org/doc/user/#irc[IRC]) are independent and can be unloaded.
|
||||
* *Modular chat client*: WeeChat has a lightweight core and optional https://weechat.org/doc/weechat/user/#plugins[plugins]. All plugins (including https://weechat.org/doc/weechat/user/#irc[IRC]) are independent and can be unloaded.
|
||||
* *Multi-platform*: WeeChat runs on GNU/Linux, *BSD, GNU/Hurd, Haiku, macOS and Windows (Bash/Ubuntu and Cygwin).
|
||||
* *Multi-protocols*: WeeChat is designed to support multiple protocols by plugins, like IRC.
|
||||
* *Standards-compliant*: the IRC plugin is compliant with RFCs https://datatracker.ietf.org/doc/html/rfc1459[1459], https://datatracker.ietf.org/doc/html/rfc2810[2810], https://datatracker.ietf.org/doc/html/rfc2811[2811], https://datatracker.ietf.org/doc/html/rfc2812[2812], https://datatracker.ietf.org/doc/html/rfc2813[2813] and https://datatracker.ietf.org/doc/html/rfc7194[7194].
|
||||
* *Small, fast, and very light*: the core is and should stay as light and fast as possible.
|
||||
* *Customizable and extensible*: there are a lot of options to customize WeeChat, and it is extensible with C plugins and https://weechat.org/scripts/[scripts] (https://weechat.org/scripts/language/perl/[Perl], https://weechat.org/scripts/language/python/[Python], https://weechat.org/scripts/language/ruby[Ruby], https://weechat.org/scripts/language/lua/[Lua], https://weechat.org/scripts/language/tcl/[Tcl], https://weechat.org/scripts/language/guile/[Scheme], https://weechat.org/scripts/language/javascript/[JavaScript] and https://weechat.org/scripts/language/php/[PHP]).
|
||||
* *Fully documented*: there is comprehensive https://weechat.org/doc/[documentation], which is https://weechat.org/doc/dev/#translations[translated] into several languages.
|
||||
* *Fully documented*: there is comprehensive https://weechat.org/doc/weechat/[documentation], which is https://weechat.org/doc/weechat/dev/#translations[translated] into several languages.
|
||||
* *Developed from scratch*: WeeChat was built from scratch and is not based on any other client.
|
||||
* *Free software*: WeeChat is released under https://www.gnu.org/licenses/gpl-3.0.html[GPLv3].
|
||||
|
||||
@@ -41,7 +41,7 @@ On WeeChat's website you can find https://weechat.org/about/screenshots/[more sc
|
||||
|
||||
WeeChat can be installed using your favorite package manager (recommended) or by compiling it yourself.
|
||||
|
||||
For detailed instructions, please check the https://weechat.org/doc/user/#install[WeeChat user's guide].
|
||||
For detailed instructions, please check the https://weechat.org/doc/weechat/user/#install[WeeChat user's guide].
|
||||
|
||||
== Semantic versioning
|
||||
|
||||
|
||||
+173
-83
@@ -11,11 +11,97 @@ It is recommended to read it when upgrading to a new stable version. +
|
||||
For a complete list of changes, please look at ChangeLog.
|
||||
|
||||
|
||||
[[v4.0.7]]
|
||||
== Version 4.0.7 (2023-12-03)
|
||||
|
||||
No release notes.
|
||||
|
||||
[[v4.0.6]]
|
||||
== Version 4.0.6 (2023-10-26)
|
||||
|
||||
[[v4.0.6_custom_bar_items]]
|
||||
=== Custom bar items
|
||||
|
||||
Custom bar items must now have a different name than default bar items
|
||||
(for example the custom bar item name `time` is now forbidden).
|
||||
|
||||
If you have such names in your config, WeeChat will now fail to load them
|
||||
(this should not happen anyway, since such bar items can not be properly used
|
||||
and can cause a crash of WeeChat).
|
||||
|
||||
[[v4.0.5]]
|
||||
== Version 4.0.5 (2023-09-24)
|
||||
|
||||
No release notes.
|
||||
|
||||
[[v4.0.4]]
|
||||
== Version 4.0.4 (2023-08-22)
|
||||
|
||||
No release notes.
|
||||
|
||||
[[v4.0.3]]
|
||||
== Version 4.0.3 (2023-08-08)
|
||||
|
||||
No release notes.
|
||||
|
||||
[[v4.0.2]]
|
||||
== Version 4.0.2 (2023-07-12)
|
||||
|
||||
No release notes.
|
||||
|
||||
[[v4.0.1]]
|
||||
== Version 4.0.1 (2023-06-30)
|
||||
|
||||
[[v4.0.1_config_set_plugin]]
|
||||
=== Functions config_set_plugin and config_set_desc_plugin
|
||||
|
||||
The functions link:https://weechat.org/doc/weechat/plugin/#_config_set_plugin[config_set_plugin]
|
||||
and link:https://weechat.org/doc/weechat/plugin/#_config_set_desc_plugin[config_set_desc_plugin]
|
||||
are not converting any more the option name to lower case because since version 4.0.0,
|
||||
the name of options is case sensitive.
|
||||
|
||||
[[v4.0.1_grab_raw_key]]
|
||||
=== Grab raw key and command
|
||||
|
||||
Key kbd:[Alt+K] (upper case) has been removed, as well as commands
|
||||
`/input grab_raw_key` and `/input grab_raw_key_command`.
|
||||
|
||||
Now the key kbd:[Alt+k] displays the actual key name and command, possibly
|
||||
raw key.
|
||||
|
||||
[[v4.0.0]]
|
||||
== Version 4.0.0 (under dev)
|
||||
== Version 4.0.0 (2023-06-24)
|
||||
|
||||
This is a major version that includes breaking changes described below.
|
||||
|
||||
[[v4.0.0_irc_capabilities]]
|
||||
=== Support of new IRC capabilities
|
||||
|
||||
Support of new capabilities has been introduced in this version and are all
|
||||
enabled by default, if the server supports them:
|
||||
|
||||
* batch
|
||||
* draft/multiline
|
||||
* echo-message
|
||||
|
||||
When the capability "echo-message" is enabled, you may notice time before your
|
||||
own IRC messages are displayed in the buffer, this is normal : the capability
|
||||
forces the server to sent back messages, and WeeChat displays messages only
|
||||
when they are received from the server.
|
||||
|
||||
If you want to disable this capability on all servers, you can do:
|
||||
|
||||
----
|
||||
/set irc.server_default.capabilities "*,!echo-message"
|
||||
----
|
||||
|
||||
If you are already connected to a server with echo-message enabled, just ask
|
||||
the server to disable the capability on-the-fly (no need to reconnect):
|
||||
|
||||
----
|
||||
/cap req -echo-message
|
||||
----
|
||||
|
||||
[[v4.0.0_config_files]]
|
||||
=== Configuration file version
|
||||
|
||||
@@ -154,6 +240,10 @@ Alias converted to lower case: "CLOSE" => "close"
|
||||
[[v4.0.0_tls]]
|
||||
=== TLS options and connections
|
||||
|
||||
Option `weechat.color.status_name_insecure` has been added, the buffer name
|
||||
is now displayed with color `lightmagenta` by default if the connection with
|
||||
the server is *NOT* made with TLS.
|
||||
|
||||
Options, commands and documentation have been updated to "TLS" instead of "SSL":
|
||||
|
||||
* core option:
|
||||
@@ -284,12 +374,12 @@ in this format.
|
||||
=== Function bar_new
|
||||
|
||||
When the bar name already exists, the API function
|
||||
link:https://weechat.org/doc/plugin/#_bar_new[bar_new] returns the pointer to
|
||||
link:https://weechat.org/doc/weechat/plugin/#_bar_new[bar_new] returns the pointer to
|
||||
the bar (instead of NULL) and sets the default value for all options with the
|
||||
values received. +
|
||||
If you don't want to set default values in an existing bar, it is recommended
|
||||
to first check if the bar exists with the API function
|
||||
link:https://weechat.org/doc/plugin/#_bar_search[bar_search].
|
||||
link:https://weechat.org/doc/weechat/plugin/#_bar_search[bar_search].
|
||||
|
||||
[[v3.8]]
|
||||
== Version 3.8 (2023-01-08)
|
||||
@@ -372,8 +462,8 @@ int diff = string_strcasecmp ("aaa", "CCC"); /* == -1 */
|
||||
[[v3.8_api_string_lower_upper]]
|
||||
=== API functions string_tolower and string_toupper
|
||||
|
||||
The functions link:https://weechat.org/doc/plugin/#_string_tolower[string_tolower]
|
||||
and link:https://weechat.org/doc/plugin/#_string_toupper[string_toupper]
|
||||
The functions link:https://weechat.org/doc/weechat/plugin/#_string_tolower[string_tolower]
|
||||
and link:https://weechat.org/doc/weechat/plugin/#_string_toupper[string_toupper]
|
||||
now return newly allocated string instead of doing the change in place. +
|
||||
The returned string must then be freed after use.
|
||||
|
||||
@@ -421,7 +511,7 @@ now any return value is ignored (like it has always been in the C API).
|
||||
[[v3.7.1]]
|
||||
== Version 3.7.1 (2022-10-21)
|
||||
|
||||
Bug fix and maintenance release.
|
||||
No release notes.
|
||||
|
||||
[[v3.7]]
|
||||
== Version 3.7 (2022-10-09)
|
||||
@@ -482,7 +572,7 @@ And add the new key kbd:[Alt+Backspace] with this command:
|
||||
=== Function string_rebuild_split_string
|
||||
|
||||
The API function string_build_with_split_string has been renamed to
|
||||
link:https://weechat.org/doc/plugin/#_string_rebuild_split_string[string_rebuild_split_string]
|
||||
link:https://weechat.org/doc/weechat/plugin/#_string_rebuild_split_string[string_rebuild_split_string]
|
||||
and two new arguments have been added: _index_start_ and _index_end_.
|
||||
|
||||
To stay compatible, the existing calls to the function must be done with the
|
||||
@@ -526,11 +616,11 @@ which allows better compression and is much faster than zlib for both compressio
|
||||
|
||||
The new compression type is `zstd`, and the default compression is now `off`
|
||||
instead of `zlib`: the compression must now be explicitly given in the
|
||||
link:https://weechat.org/doc/relay/#command_handshake[handshake] command.
|
||||
link:https://weechat.org/doc/weechat/relay/#command_handshake[handshake] command.
|
||||
|
||||
The option `compression` in link:https://weechat.org/doc/relay/#command_handshake[init]
|
||||
The option `compression` in link:https://weechat.org/doc/weechat/relay/#command_handshake[init]
|
||||
command has been removed, it is now ignored and must be given in the
|
||||
link:https://weechat.org/doc/relay/#command_handshake[handshake] command
|
||||
link:https://weechat.org/doc/weechat/relay/#command_handshake[handshake] command
|
||||
(it was deprecated since WeeChat 2.9).
|
||||
|
||||
The option relay.network.compression_level has been renamed to relay.network.compression
|
||||
@@ -543,7 +633,7 @@ and is now a percentage between `0` and `100`:
|
||||
[[v3.4.1]]
|
||||
== Version 3.4.1 (2022-03-13)
|
||||
|
||||
Bug fix and maintenance release.
|
||||
No release notes.
|
||||
|
||||
[[v3.4]]
|
||||
== Version 3.4 (2021-12-18)
|
||||
@@ -565,11 +655,11 @@ You can restore the default triggers with the following command:
|
||||
=== New parameters in function hdata_search
|
||||
|
||||
New parameters have been added in function
|
||||
link:https://weechat.org/doc/plugin/#_hdata_search[hdata_search], used for the
|
||||
link:https://weechat.org/doc/weechat/plugin/#_hdata_search[hdata_search], used for the
|
||||
evaluation of expression.
|
||||
|
||||
New parameters are the same as function
|
||||
link:https://weechat.org/doc/plugin/#_string_eval_expression[string_eval_expression]:
|
||||
link:https://weechat.org/doc/weechat/plugin/#_string_eval_expression[string_eval_expression]:
|
||||
|
||||
* pointers: hashtable with pointers (pointers)
|
||||
* extra_vars: hashtable with extra variables (strings)
|
||||
@@ -591,7 +681,7 @@ WeeChat versions:
|
||||
|
||||
Support of static array in hdata has been added.
|
||||
For pointers to arrays, a prefix `*,` must be added in parameter `array_size`
|
||||
of API function link:https://weechat.org/doc/plugin/#_hdata_new_var[hdata_new_var].
|
||||
of API function link:https://weechat.org/doc/weechat/plugin/#_hdata_new_var[hdata_new_var].
|
||||
|
||||
[[v3.3]]
|
||||
== Version 3.3 (2021-09-19)
|
||||
@@ -701,7 +791,7 @@ For example:
|
||||
[[v3.2.1]]
|
||||
== Version 3.2.1 (2021-09-04)
|
||||
|
||||
Bug fix and maintenance release.
|
||||
No release notes.
|
||||
|
||||
[[v3.2]]
|
||||
== Version 3.2 (2021-06-13)
|
||||
@@ -931,7 +1021,7 @@ must adjust the value of the new option, which defaults to 1:
|
||||
[[v3.0.1]]
|
||||
== Version 3.0.1 (2021-01-31)
|
||||
|
||||
Bug fix and maintenance release.
|
||||
No release notes.
|
||||
|
||||
[[v3.0]]
|
||||
== Version 3.0 (2020-11-11)
|
||||
@@ -1016,7 +1106,7 @@ bars, so if you want to use the new default settings, you can do:
|
||||
If you changed the option "color_bg" in some bars, you should also adjust
|
||||
the new option "color_bg_inactive", depending on your needs.
|
||||
|
||||
The function link:https://weechat.org/doc/plugin/#_bar_new[bar_new] in API is updated,
|
||||
The function link:https://weechat.org/doc/weechat/plugin/#_bar_new[bar_new] in API is updated,
|
||||
so this is an incompatible change: all plugins and scripts calling this function must be updated.
|
||||
|
||||
The following scripts are updated consequently to be compatible with all
|
||||
@@ -1082,8 +1172,8 @@ plugins/scripts to complete a string, without using the buffer input.
|
||||
Therefore two functions have been renamed in API and moved to the new
|
||||
"completion" category:
|
||||
|
||||
* hook_completion_get_string -> link:https://weechat.org/doc/plugin/#_completion_get_string[completion_get_string]
|
||||
* hook_completion_list_add -> link:https://weechat.org/doc/plugin/#_completion_list_add[completion_list_add]
|
||||
* hook_completion_get_string -> link:https://weechat.org/doc/weechat/plugin/#_completion_get_string[completion_get_string]
|
||||
* hook_completion_list_add -> link:https://weechat.org/doc/weechat/plugin/#_completion_list_add[completion_list_add]
|
||||
|
||||
[NOTE]
|
||||
The old names are still valid for compatibility reasons, but it is recommended
|
||||
@@ -1181,7 +1271,7 @@ A `handshake` command has been added in weechat relay protocol. +
|
||||
The client should send this command before the `init` to negotiate the way to
|
||||
authenticate with the relay server.
|
||||
|
||||
See the link:https://weechat.org/doc/relay/#command_handshake[handshake command]
|
||||
See the link:https://weechat.org/doc/weechat/relay/#command_handshake[handshake command]
|
||||
in Relay protocol doc for more information.
|
||||
|
||||
==== Server "nonce"
|
||||
@@ -1199,7 +1289,7 @@ So the hash is computed on: (`server nonce` + `client nonce` + `password`).
|
||||
This salt is now mandatory even for algorithms `SHA256` and `SHA512`; this is
|
||||
a breaking change in protocol, needed for security reasons.
|
||||
|
||||
See the link:https://weechat.org/doc/relay/#command_init[init command]
|
||||
See the link:https://weechat.org/doc/weechat/relay/#command_init[init command]
|
||||
in Relay protocol doc for more information.
|
||||
|
||||
[[v2.8]]
|
||||
@@ -1210,7 +1300,7 @@ in Relay protocol doc for more information.
|
||||
|
||||
The command line option `-a` (or `--no-connect`), which can also be used in the
|
||||
`/plugin` command, is now used to set a new info called `auto_connect`
|
||||
(see the function link:https://weechat.org/doc/plugin/#_info_get[info_get] in the Plugin API reference).
|
||||
(see the function link:https://weechat.org/doc/weechat/plugin/#_info_get[info_get] in the Plugin API reference).
|
||||
|
||||
Therefore, the option is not sent any more to the function `weechat_plugin_init`
|
||||
of plugins. +
|
||||
@@ -1239,7 +1329,7 @@ version:
|
||||
[[v2.7.1]]
|
||||
== Version 2.7.1 (2020-02-20)
|
||||
|
||||
Bug fix and maintenance release.
|
||||
No release notes.
|
||||
|
||||
[[v2.7]]
|
||||
== Version 2.7 (2019-12-08)
|
||||
@@ -1472,8 +1562,8 @@ base 16, 32, and 64.
|
||||
|
||||
New functions in C API, supporting base 16, 32, and 64:
|
||||
|
||||
* link:https://weechat.org/doc/plugin/#_string_base_encode[string_base_encode]
|
||||
* link:https://weechat.org/doc/plugin/#_string_base_decode[string_base_decode]
|
||||
* link:https://weechat.org/doc/weechat/plugin/#_string_base_encode[string_base_encode]
|
||||
* link:https://weechat.org/doc/weechat/plugin/#_string_base_decode[string_base_decode]
|
||||
|
||||
Functions removed from C API:
|
||||
|
||||
@@ -1483,7 +1573,7 @@ Functions removed from C API:
|
||||
[[v2.3]]
|
||||
== Version 2.3 (2018-10-21)
|
||||
|
||||
No release note.
|
||||
No release notes.
|
||||
|
||||
[[v2.2]]
|
||||
== Version 2.2 (2018-07-14)
|
||||
@@ -1549,7 +1639,7 @@ See issue #787 for more information.
|
||||
|
||||
[NOTE]
|
||||
It is recommended for plugins and scripts to use the WeeChat IRC parser:
|
||||
see the function link:https://weechat.org/doc/plugin/#_info_get_hashtable[info_get_hashtable]
|
||||
see the function link:https://weechat.org/doc/weechat/plugin/#_info_get_hashtable[info_get_hashtable]
|
||||
in the Plugin API reference.
|
||||
|
||||
Now the whole IRC message is received by the signal callback, for example:
|
||||
@@ -1619,7 +1709,7 @@ List of options moved:
|
||||
[[v2.0.1]]
|
||||
== Version 2.0.1 (2017-12-20)
|
||||
|
||||
Bug fix and maintenance release.
|
||||
No release notes.
|
||||
|
||||
[[v2.0]]
|
||||
== Version 2.0 (2017-12-03)
|
||||
@@ -1714,12 +1804,12 @@ to integer before using it, for example in Python: `int(fd)`.
|
||||
[[v1.9.1]]
|
||||
== Version 1.9.1 (2017-09-23)
|
||||
|
||||
Bug fix and maintenance release.
|
||||
No release notes.
|
||||
|
||||
[[v1.9]]
|
||||
== Version 1.9 (2017-06-25)
|
||||
|
||||
No release note.
|
||||
No release notes.
|
||||
|
||||
[[v1.8]]
|
||||
== Version 1.8 (2017-05-13)
|
||||
@@ -1771,7 +1861,7 @@ Aspell option with color for suggestion on a misspelled word has been renamed:
|
||||
[[v1.7.1]]
|
||||
== Version 1.7.1 (2017-04-22)
|
||||
|
||||
Bug fix and maintenance release.
|
||||
No release notes.
|
||||
|
||||
[[v1.7]]
|
||||
== Version 1.7 (2017-01-15)
|
||||
@@ -1870,33 +1960,33 @@ reduce memory usage).
|
||||
|
||||
Following functions are changed in the C API:
|
||||
|
||||
* link:https://weechat.org/doc/plugin/#_exec_on_files[exec_on_files]
|
||||
* link:https://weechat.org/doc/plugin/#_config_new[config_new]
|
||||
* link:https://weechat.org/doc/plugin/#_config_new_section[config_new_section]
|
||||
* link:https://weechat.org/doc/plugin/#_config_new_option[config_new_option]
|
||||
* link:https://weechat.org/doc/plugin/#_hook_command[hook_command]
|
||||
* link:https://weechat.org/doc/plugin/#_hook_command_run[hook_command_run]
|
||||
* link:https://weechat.org/doc/plugin/#_hook_timer[hook_timer]
|
||||
* link:https://weechat.org/doc/plugin/#_hook_fd[hook_fd]
|
||||
* link:https://weechat.org/doc/plugin/#_hook_process[hook_process]
|
||||
* link:https://weechat.org/doc/plugin/#_hook_process_hashtable[hook_process_hashtable]
|
||||
* link:https://weechat.org/doc/plugin/#_hook_connect[hook_connect]
|
||||
* link:https://weechat.org/doc/plugin/#_hook_print[hook_print]
|
||||
* link:https://weechat.org/doc/plugin/#_hook_signal[hook_signal]
|
||||
* link:https://weechat.org/doc/plugin/#_hook_hsignal[hook_hsignal]
|
||||
* link:https://weechat.org/doc/plugin/#_hook_config[hook_config]
|
||||
* link:https://weechat.org/doc/plugin/#_hook_completion[hook_completion]
|
||||
* link:https://weechat.org/doc/plugin/#_hook_modifier[hook_modifier]
|
||||
* link:https://weechat.org/doc/plugin/#_hook_info[hook_info]
|
||||
* link:https://weechat.org/doc/plugin/#_hook_info_hashtable[hook_info_hashtable]
|
||||
* link:https://weechat.org/doc/plugin/#_hook_infolist[hook_infolist]
|
||||
* link:https://weechat.org/doc/plugin/#_hook_hdata[hook_hdata]
|
||||
* link:https://weechat.org/doc/plugin/#_hook_focus[hook_focus]
|
||||
* link:https://weechat.org/doc/plugin/#_unhook_all[unhook_all]
|
||||
* link:https://weechat.org/doc/plugin/#_buffer_new[buffer_new]
|
||||
* link:https://weechat.org/doc/plugin/#_bar_item_new[bar_item_new]
|
||||
* link:https://weechat.org/doc/plugin/#_upgrade_new[upgrade_new]
|
||||
* link:https://weechat.org/doc/plugin/#_upgrade_read[upgrade_read]
|
||||
* link:https://weechat.org/doc/weechat/plugin/#_exec_on_files[exec_on_files]
|
||||
* link:https://weechat.org/doc/weechat/plugin/#_config_new[config_new]
|
||||
* link:https://weechat.org/doc/weechat/plugin/#_config_new_section[config_new_section]
|
||||
* link:https://weechat.org/doc/weechat/plugin/#_config_new_option[config_new_option]
|
||||
* link:https://weechat.org/doc/weechat/plugin/#_hook_command[hook_command]
|
||||
* link:https://weechat.org/doc/weechat/plugin/#_hook_command_run[hook_command_run]
|
||||
* link:https://weechat.org/doc/weechat/plugin/#_hook_timer[hook_timer]
|
||||
* link:https://weechat.org/doc/weechat/plugin/#_hook_fd[hook_fd]
|
||||
* link:https://weechat.org/doc/weechat/plugin/#_hook_process[hook_process]
|
||||
* link:https://weechat.org/doc/weechat/plugin/#_hook_process_hashtable[hook_process_hashtable]
|
||||
* link:https://weechat.org/doc/weechat/plugin/#_hook_connect[hook_connect]
|
||||
* link:https://weechat.org/doc/weechat/plugin/#_hook_print[hook_print]
|
||||
* link:https://weechat.org/doc/weechat/plugin/#_hook_signal[hook_signal]
|
||||
* link:https://weechat.org/doc/weechat/plugin/#_hook_hsignal[hook_hsignal]
|
||||
* link:https://weechat.org/doc/weechat/plugin/#_hook_config[hook_config]
|
||||
* link:https://weechat.org/doc/weechat/plugin/#_hook_completion[hook_completion]
|
||||
* link:https://weechat.org/doc/weechat/plugin/#_hook_modifier[hook_modifier]
|
||||
* link:https://weechat.org/doc/weechat/plugin/#_hook_info[hook_info]
|
||||
* link:https://weechat.org/doc/weechat/plugin/#_hook_info_hashtable[hook_info_hashtable]
|
||||
* link:https://weechat.org/doc/weechat/plugin/#_hook_infolist[hook_infolist]
|
||||
* link:https://weechat.org/doc/weechat/plugin/#_hook_hdata[hook_hdata]
|
||||
* link:https://weechat.org/doc/weechat/plugin/#_hook_focus[hook_focus]
|
||||
* link:https://weechat.org/doc/weechat/plugin/#_unhook_all[unhook_all]
|
||||
* link:https://weechat.org/doc/weechat/plugin/#_buffer_new[buffer_new]
|
||||
* link:https://weechat.org/doc/weechat/plugin/#_bar_item_new[bar_item_new]
|
||||
* link:https://weechat.org/doc/weechat/plugin/#_upgrade_new[upgrade_new]
|
||||
* link:https://weechat.org/doc/weechat/plugin/#_upgrade_read[upgrade_read]
|
||||
|
||||
The function `unhook_all` has a new argument `const char *subplugin` to remove
|
||||
only hooks created by this "subplugin" (script).
|
||||
@@ -2018,7 +2108,7 @@ command:
|
||||
[[v1.1.1]]
|
||||
== Version 1.1.1 (2015-01-25)
|
||||
|
||||
Bug fix and maintenance release.
|
||||
No release notes.
|
||||
|
||||
[[v1.1]]
|
||||
== Version 1.1 (2015-01-11)
|
||||
@@ -2067,7 +2157,7 @@ You can restore the default "beep" trigger with the following command:
|
||||
[[v1.1_commands_return_code]]
|
||||
=== Return code of commands
|
||||
|
||||
The API function link:https://weechat.org/doc/plugin/#_command[command]
|
||||
The API function link:https://weechat.org/doc/weechat/plugin/#_command[command]
|
||||
now sends the value returned return by command callback.
|
||||
|
||||
WeeChat does not display any more an error when a command returns
|
||||
@@ -2130,15 +2220,15 @@ the old behavior in command `/connect`:
|
||||
The API functions using timeval are now using or returning microseconds,
|
||||
instead of milliseconds:
|
||||
|
||||
* function link:https://weechat.org/doc/plugin/#_util_timeval_diff[util_timeval_diff]:
|
||||
* function link:https://weechat.org/doc/weechat/plugin/#_util_timeval_diff[util_timeval_diff]:
|
||||
returns microseconds
|
||||
* function link:https://weechat.org/doc/plugin/#_util_timeval_add[util_timeval_add]:
|
||||
* function link:https://weechat.org/doc/weechat/plugin/#_util_timeval_add[util_timeval_add]:
|
||||
the argument "interval" is now expressed in microseconds.
|
||||
|
||||
[[v1.0.1]]
|
||||
== Version 1.0.1 (2014-09-28)
|
||||
|
||||
Bug fix and maintenance release.
|
||||
No release notes.
|
||||
|
||||
[[v1.0]]
|
||||
== Version 1.0 (2014-08-15)
|
||||
@@ -2636,7 +2726,7 @@ disable IPv6 in relay if you don't plan to use it at all:
|
||||
== Version 0.3.9.2 (2012-11-18)
|
||||
|
||||
This version fixes a security vulnerability when a plugin/script gives
|
||||
untrusted command to API function link:https://weechat.org/doc/plugin/#_hook_process[hook_process].
|
||||
untrusted command to API function link:https://weechat.org/doc/weechat/plugin/#_hook_process[hook_process].
|
||||
|
||||
[[v0.3.9.1]]
|
||||
== Version 0.3.9.1 (2012-11-09)
|
||||
@@ -2964,17 +3054,17 @@ This version fixes a major bug: crash with some special chars in IRC messages.
|
||||
[[v0.2.6]]
|
||||
== Version 0.2.6 (2007-09-06)
|
||||
|
||||
No release note.
|
||||
No release notes.
|
||||
|
||||
[[v0.2.5]]
|
||||
== Version 0.2.5 (2007-06-07)
|
||||
|
||||
No release note.
|
||||
No release notes.
|
||||
|
||||
[[v0.2.4]]
|
||||
== Version 0.2.4 (2007-03-29)
|
||||
|
||||
No release note.
|
||||
No release notes.
|
||||
|
||||
[[v0.2.3]]
|
||||
== Version 0.2.3 (2007-01-10)
|
||||
@@ -3033,7 +3123,7 @@ Which gives something like:
|
||||
[[v0.2.1]]
|
||||
== Version 0.2.1 (2006-10-01)
|
||||
|
||||
No release note.
|
||||
No release notes.
|
||||
|
||||
[[v0.2.0]]
|
||||
== Version 0.2.0 (2006-08-19)
|
||||
@@ -3147,74 +3237,74 @@ at startup.
|
||||
[[v0.1.5]]
|
||||
== Version 0.1.5 (2005-09-24)
|
||||
|
||||
No release note.
|
||||
No release notes.
|
||||
|
||||
[[v0.1.4]]
|
||||
== Version 0.1.4 (2005-07-30)
|
||||
|
||||
No release note.
|
||||
No release notes.
|
||||
|
||||
[[v0.1.3]]
|
||||
== Version 0.1.3 (2005-07-02)
|
||||
|
||||
No release note.
|
||||
No release notes.
|
||||
|
||||
[[v0.1.2]]
|
||||
== Version 0.1.2 (2005-05-21)
|
||||
|
||||
No release note.
|
||||
No release notes.
|
||||
|
||||
[[v0.1.1]]
|
||||
== Version 0.1.1 (2005-03-20)
|
||||
|
||||
No release note.
|
||||
No release notes.
|
||||
|
||||
[[v0.1.0]]
|
||||
== Version 0.1.0 (2005-02-12)
|
||||
|
||||
No release note.
|
||||
No release notes.
|
||||
|
||||
[[v0.0.9]]
|
||||
== Version 0.0.9 (2005-01-01)
|
||||
|
||||
No release note.
|
||||
No release notes.
|
||||
|
||||
[[v0.0.8]]
|
||||
== Version 0.0.8 (2004-10-30)
|
||||
|
||||
No release note.
|
||||
No release notes.
|
||||
|
||||
[[v0.0.7]]
|
||||
== Version 0.0.7 (2004-08-08)
|
||||
|
||||
No release note.
|
||||
No release notes.
|
||||
|
||||
[[v0.0.6]]
|
||||
== Version 0.0.6 (2004-06-05)
|
||||
|
||||
No release note.
|
||||
No release notes.
|
||||
|
||||
[[v0.0.5]]
|
||||
== Version 0.0.5 (2004-02-07)
|
||||
|
||||
No release note.
|
||||
No release notes.
|
||||
|
||||
[[v0.0.4]]
|
||||
== Version 0.0.4 (2004-01-01)
|
||||
|
||||
No release note.
|
||||
No release notes.
|
||||
|
||||
[[v0.0.3]]
|
||||
== Version 0.0.3 (2003-11-03)
|
||||
|
||||
No release note.
|
||||
No release notes.
|
||||
|
||||
[[v0.0.2]]
|
||||
== Version 0.0.2 (2003-10-05)
|
||||
|
||||
No release note.
|
||||
No release notes.
|
||||
|
||||
[[v0.0.1]]
|
||||
== Version 0.0.1 (2003-09-27)
|
||||
|
||||
No release note.
|
||||
No release notes.
|
||||
|
||||
+22
-20
@@ -45,26 +45,28 @@ set(CMAKE_REQUIRED_INCLUDES ${LIBINTL_INCLUDE})
|
||||
|
||||
check_include_files(libintl.h HAVE_LIBINTL_H)
|
||||
|
||||
if(HAVE_LIBINTL_H)
|
||||
check_function_exists(dgettext LIBC_HAS_DGETTEXT)
|
||||
if(LIBC_HAS_DGETTEXT)
|
||||
set(GETTEXT_FOUND TRUE)
|
||||
else()
|
||||
find_library(LIBINTL_LIBRARY NAMES intl
|
||||
PATHS
|
||||
/usr/local/lib
|
||||
/usr/lib
|
||||
)
|
||||
if(LIBINTL_LIBRARY)
|
||||
if(${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
|
||||
set(CMAKE_REQUIRED_LIBRARIES "iconv")
|
||||
check_library_exists(${LIBINTL_LIBRARY} "libintl_dgettext" "" LIBINTL_HAS_DGETTEXT)
|
||||
else()
|
||||
check_library_exists(${LIBINTL_LIBRARY} "dgettext" "" LIBINTL_HAS_DGETTEXT)
|
||||
endif()
|
||||
if(LIBINTL_HAS_DGETTEXT)
|
||||
set(GETTEXT_FOUND TRUE)
|
||||
endif()
|
||||
if(NOT HAVE_LIBINTL_H)
|
||||
message(SEND_ERROR "Header libintl.h not found, required if ENABLE_NLS is enabled")
|
||||
endif()
|
||||
|
||||
check_function_exists(dgettext LIBC_HAS_DGETTEXT)
|
||||
if(LIBC_HAS_DGETTEXT)
|
||||
set(GETTEXT_FOUND TRUE)
|
||||
else()
|
||||
find_library(LIBINTL_LIBRARY NAMES intl
|
||||
PATHS
|
||||
/usr/local/lib
|
||||
/usr/lib
|
||||
)
|
||||
if(LIBINTL_LIBRARY)
|
||||
if(${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
|
||||
set(CMAKE_REQUIRED_LIBRARIES "iconv")
|
||||
check_library_exists(${LIBINTL_LIBRARY} "libintl_dgettext" "" LIBINTL_HAS_DGETTEXT)
|
||||
else()
|
||||
check_library_exists(${LIBINTL_LIBRARY} "dgettext" "" LIBINTL_HAS_DGETTEXT)
|
||||
endif()
|
||||
if(LIBINTL_HAS_DGETTEXT)
|
||||
set(GETTEXT_FOUND TRUE)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
+1
-1
@@ -48,7 +48,7 @@ if(NOT PHP_FOUND)
|
||||
execute_process(COMMAND ${PHP_CONFIG_EXECUTABLE} --version OUTPUT_VARIABLE PHP_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
if(${PHP_VERSION} MATCHES "^[78]")
|
||||
find_library(PHP_LIB
|
||||
NAMES php8.2 php8.1 php8.0 php8 php7.4 php7.3 php7.2 php7.1 php7.0 php7 php
|
||||
NAMES php8.2 php82 php8.1 php81 php8.0 php80 php8 php7.4 php74 php7.3 php73 php7.2 php72 php7.1 php71 php7.0 php70 php7 php
|
||||
HINTS ${PHP_LIB_PREFIX} ${PHP_LIB_PREFIX}/lib ${PHP_LIB_PREFIX}/lib64
|
||||
)
|
||||
if(PHP_LIB)
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
#cmakedefine HAVE_LIBINTL_H
|
||||
#cmakedefine HAVE_SYS_RESOURCE_H
|
||||
#cmakedefine HAVE_FLOCK
|
||||
#cmakedefine HAVE_LANGINFO_CODESET
|
||||
|
||||
@@ -1,3 +1,13 @@
|
||||
weechat (3.8-1) unstable; urgency=medium
|
||||
|
||||
* New upstream release
|
||||
* Add a patch remove some autotools leftovers
|
||||
* Update debian/copyright (new year)
|
||||
* Update debian/rules to remove workarounds which avoid issues with
|
||||
autotools build system
|
||||
|
||||
-- Emmanuel Bouthenot <kolter@debian.org> Sun, 15 Jan 2023 08:34:04 +0000
|
||||
|
||||
weechat (3.7.1-1) unstable; urgency=medium
|
||||
|
||||
* New upstream release
|
||||
|
||||
+6
-6
@@ -53,7 +53,7 @@ if(ENABLE_MAN OR ENABLE_DOC)
|
||||
-a toc=left
|
||||
-a toclevels=3
|
||||
-a sectnums
|
||||
-a sectnumlevels=1
|
||||
-a sectnumlevels=2
|
||||
-a docinfo1
|
||||
)
|
||||
|
||||
@@ -71,7 +71,7 @@ if(ENABLE_MAN OR ENABLE_DOC)
|
||||
-a toc=left
|
||||
-a toclevels=3
|
||||
-a sectnums
|
||||
-a sectnumlevels=1
|
||||
-a sectnumlevels=2
|
||||
-a docinfo1
|
||||
)
|
||||
|
||||
@@ -87,9 +87,9 @@ if(ENABLE_MAN OR ENABLE_DOC)
|
||||
# asciidoctor arguments for quickstart
|
||||
set(ASCIIDOCTOR_QUICKSTART_ARGS
|
||||
-a toc=left
|
||||
-a toclevels=1
|
||||
-a toclevels=2
|
||||
-a sectnums
|
||||
-a sectnumlevels=1
|
||||
-a sectnumlevels=2
|
||||
-a docinfo1
|
||||
)
|
||||
|
||||
@@ -98,7 +98,7 @@ if(ENABLE_MAN OR ENABLE_DOC)
|
||||
-a toc=left
|
||||
-a toclevels=3
|
||||
-a sectnums
|
||||
-a sectnumlevels=1
|
||||
-a sectnumlevels=2
|
||||
-a docinfo1
|
||||
)
|
||||
|
||||
@@ -107,7 +107,7 @@ if(ENABLE_MAN OR ENABLE_DOC)
|
||||
-a toc=left
|
||||
-a toclevels=3
|
||||
-a sectnums
|
||||
-a sectnumlevels=1
|
||||
-a sectnumlevels=2
|
||||
-a docinfo1
|
||||
)
|
||||
|
||||
|
||||
@@ -142,7 +142,7 @@ Die folgende Tabelle zeigt eine Auflistung der Pakete, die zum Erstellen von Wee
|
||||
|===
|
||||
|
||||
[NOTE]
|
||||
^(1)^ Der Name stammt von der Debian GNU/Linux Bullseye-Distribution,
|
||||
^(1)^ Der Name stammt von der Debian GNU/Linux Bookworm-Distribution,
|
||||
Version und Name können in anderen Distributionen anders lauten. +
|
||||
^(2)^ Es wird empfohlen WeeChat mit libncurses**w**5-dev (das *w* ist
|
||||
entscheidend) zu kompilieren. Eine Kompilierung kann auch mit libncurses5-dev erfolgen,
|
||||
@@ -163,10 +163,10 @@ WeeChat optional sind:
|
||||
| libaspell-dev / libenchant-dev | | Spell Erweiterung.
|
||||
| python3-dev | ≥ 3.0 | Python Erweiterung.
|
||||
| libperl-dev | | Perl Erweiterung.
|
||||
| ruby2.7, ruby2.7-dev | ≥ 1.9.1 | Ruby Erweiterung.
|
||||
| ruby3.1, ruby3.1-dev | ≥ 1.9.1 | Ruby Erweiterung.
|
||||
| liblua5.4-dev | | Lua Erweiterung.
|
||||
| tcl-dev | ≥ 8.5 | Tcl Erweiterung.
|
||||
| guile-2.2-dev | ≥ 2.0 | Guile (scheme) Erweiterung.
|
||||
| guile-3.0-dev | ≥ 2.0 | Guile (scheme) Erweiterung.
|
||||
| libv8-dev | ≤ 3.24.3 | JavaScript Erweiterung.
|
||||
| php-dev | ≥ 7.0 | PHP Erweiterung.
|
||||
| libphp-embed | ≥ 7.0 | PHP Erweiterung.
|
||||
@@ -179,7 +179,7 @@ WeeChat optional sind:
|
||||
|===
|
||||
|
||||
[NOTE]
|
||||
^(1)^ Der Name stammt von der Debian GNU/Linux Bullseye-Distribution,
|
||||
^(1)^ Der Name stammt von der Debian GNU/Linux Bookworm-Distribution,
|
||||
Version und Name können in anderen Distributionen anders lauten.
|
||||
|
||||
Falls eine Debian/Ubuntu basierte Distribution genutzt wird und man einen
|
||||
@@ -1172,8 +1172,8 @@ Im normalen Modus sieht WeeChat wie folgt aus:
|
||||
│4. #def │12:52:27 -- | Channel created on Tue Jan 27 06:30:17 2009 │peter │
|
||||
│5. #ghi │12:54:15 peter | hey! │ │
|
||||
│ │12:55:01 @joe | peter: hook_process: https://weechat.org/files/doc │ │
|
||||
│ │ | /devel/weechat_plugin_api.en.html#_weechat_hook_pr │ │
|
||||
│ │ | ocess │ │
|
||||
│ │ | /weechat/devel/weechat_plugin_api.en.html#_weechat │ │
|
||||
│ │ | _hook_process │ │
|
||||
│ │ │ │
|
||||
│ │ │ │
|
||||
│ │ │ │
|
||||
@@ -1216,8 +1216,8 @@ Der selbe Bildschirm sieht im vereinfachten Anzeigemodus wie folgt aus:
|
||||
│12:52 -- Channel #abc: 4 nicks (2 ops, 1 voice, 1 normal) │
|
||||
│12:52 -- Channel created on Tue Jan 27 06:30:17 2009 │
|
||||
│12:54 <peter> hey! │
|
||||
│12:55 <@joe> peter: hook_process: https://weechat.org/files/doc/devel/weechat_plugin_a│
|
||||
│pi.en.html#_weechat_hook_process │
|
||||
│12:55 <@joe> peter: hook_process: https://weechat.org/files/doc/weechat/devel/weechat_│
|
||||
│plugin_api.en.html#_weechat_hook_process │
|
||||
└──────────────────────────────────────────────────────────────────────────────────────┘
|
||||
....
|
||||
|
||||
@@ -1670,7 +1670,7 @@ in einem Buffer nach einem Text zu suchen).
|
||||
| kbd:[Enter] +
|
||||
kbd:[Ctrl+j] +
|
||||
kbd:[Ctrl+m] | beendet Suche ab aktueller Position. | `+/input search_stop_here+`
|
||||
| kbd:[Ctrl+q] | beendet Suche und blättert zum Ende des Buffers. | `+/input search_stop+`
|
||||
| kbd:[Ctrl+q] | Suche wird abgebrochen und der Bildlauf wird auf die Vortextsuche zurückgesetzt. | `+/input search_stop+`
|
||||
|===
|
||||
|
||||
[[key_bindings_cursor_context]]
|
||||
|
||||
@@ -6796,7 +6796,7 @@ def config_new_section(config_file: str, name: str,
|
||||
callback_delete_option: str, callback_delete_option_data: str) -> str: ...
|
||||
|
||||
# example
|
||||
def my_section_read_cb(data: str, config_file: str, section: str, option_name: str, value: str | None) -> int:
|
||||
def my_section_read_cb(data: str, config_file: str, section: str, option_name: str, value: Union[str, None]) -> int:
|
||||
# ...
|
||||
return weechat.WEECHAT_CONFIG_OPTION_SET_OK_CHANGED
|
||||
# return weechat.WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE
|
||||
@@ -6815,7 +6815,7 @@ def my_section_write_default_cb(data: str, config_file: str, section_name: str)
|
||||
# return weechat.WEECHAT_CONFIG_WRITE_ERROR
|
||||
# return weechat.WEECHAT_CONFIG_WRITE_MEMORY_ERROR
|
||||
|
||||
def my_section_create_option_cb(data: str, config_file: str, section: str, option_name: str, value: str | None) -> int:
|
||||
def my_section_create_option_cb(data: str, config_file: str, section: str, option_name: str, value: Union[str, None]) -> int:
|
||||
# ...
|
||||
return weechat.WEECHAT_CONFIG_OPTION_SET_OK_CHANGED
|
||||
# return weechat.WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE
|
||||
@@ -7056,7 +7056,7 @@ Script (Python):
|
||||
# prototype
|
||||
def config_new_option(config_file: str, section: str, name: str, type: str, description: str,
|
||||
string_values: str, min: int, max: int,
|
||||
default_value: str | None, value: str | None, null_value_allowed: int,
|
||||
default_value: Union[str, None], value: Union[str, None], null_value_allowed: int,
|
||||
callback_check_value: str, callback_check_value_data: str,
|
||||
callback_change: str, callback_change_data: str,
|
||||
callback_delete: str, callback_delete_data: str) -> str: ...
|
||||
|
||||
@@ -177,6 +177,9 @@ WeeChat replies with a hashtable containing the following keys and values:
|
||||
** _off_: messages are not compressed
|
||||
** _zlib_: messages are compressed with https://zlib.net/[zlib ^↗^^]
|
||||
** _zstd_: messages are compressed with https://facebook.github.io/zstd/[Zstandard ^↗^^]
|
||||
* _escape_commands_:
|
||||
** _on_: all backslashes are interpreted in the client messages
|
||||
** _off_: backslashes are *NOT* interpreted in the client messages and used as-is
|
||||
|
||||
[TIP]
|
||||
With WeeChat ≤ 2.8, the command _handshake_ is not implemented, WeeChat silently
|
||||
@@ -203,6 +206,28 @@ htb: {
|
||||
'totp': 'on',
|
||||
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
|
||||
'compression': 'off',
|
||||
'escape_commands': 'off',
|
||||
}
|
||||
----
|
||||
|
||||
* Escape of commands enabled by the client _(WeeChat ≥ 4.0.0)_:
|
||||
|
||||
----
|
||||
(handshake) handshake escape_commands=on
|
||||
----
|
||||
|
||||
Response:
|
||||
|
||||
[source,python]
|
||||
----
|
||||
id: 'handshake'
|
||||
htb: {
|
||||
'password_hash_algo': 'plain',
|
||||
'password_hash_iterations': '100000',
|
||||
'totp': 'on',
|
||||
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
|
||||
'compression': 'off',
|
||||
'escape_commands': 'on',
|
||||
}
|
||||
----
|
||||
|
||||
@@ -223,6 +248,7 @@ htb: {
|
||||
'totp': 'on',
|
||||
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
|
||||
'compression': 'off',
|
||||
'escape_commands': 'off',
|
||||
}
|
||||
----
|
||||
|
||||
@@ -243,6 +269,7 @@ htb: {
|
||||
'totp': 'on',
|
||||
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
|
||||
'compression': 'off',
|
||||
'escape_commands': 'off',
|
||||
}
|
||||
----
|
||||
|
||||
@@ -272,6 +299,7 @@ htb: {
|
||||
'totp': 'on',
|
||||
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
|
||||
'compression': 'zstd',
|
||||
'escape_commands': 'off',
|
||||
}
|
||||
----
|
||||
|
||||
|
||||
@@ -137,7 +137,7 @@ WeeChat:
|
||||
|===
|
||||
|
||||
[NOTE]
|
||||
^(1)^ Name comes from the Debian GNU/Linux Bullseye distribution, version and
|
||||
^(1)^ Name comes from the Debian GNU/Linux Bookworm distribution, version and
|
||||
name can be different in other distributions. +
|
||||
^(2)^ It is recommended to compile with libncurses**w**5-dev (the *w* is
|
||||
important). WeeChat can compile with libncurses5-dev, but it is *NOT* recommended:
|
||||
@@ -157,10 +157,10 @@ WeeChat:
|
||||
| libaspell-dev / libenchant-dev | | Spell plugin.
|
||||
| python3-dev | ≥ 3.0 | Python plugin.
|
||||
| libperl-dev | | Perl plugin.
|
||||
| ruby2.7, ruby2.7-dev | ≥ 1.9.1 | Ruby plugin.
|
||||
| ruby3.1, ruby3.1-dev | ≥ 1.9.1 | Ruby plugin.
|
||||
| liblua5.4-dev | | Lua plugin.
|
||||
| tcl-dev | ≥ 8.5 | Tcl plugin.
|
||||
| guile-2.2-dev | ≥ 2.0 | Guile (scheme) plugin.
|
||||
| guile-3.0-dev | ≥ 2.0 | Guile (scheme) plugin.
|
||||
| libv8-dev | ≤ 3.24.3 | JavaScript plugin.
|
||||
| php-dev | ≥ 7.0 | PHP plugin.
|
||||
| libphp-embed | ≥ 7.0 | PHP plugin.
|
||||
@@ -173,7 +173,7 @@ WeeChat:
|
||||
|===
|
||||
|
||||
[NOTE]
|
||||
^(1)^ Name comes from the Debian GNU/Linux Bullseye distribution, version and
|
||||
^(1)^ Name comes from the Debian GNU/Linux Bookworm distribution, version and
|
||||
name can be different in other distributions.
|
||||
|
||||
If you are using a Debian/Ubuntu based distribution, and if you have some
|
||||
@@ -1156,8 +1156,8 @@ If WeeChat looks like that:
|
||||
│4. #def │12:52:27 -- | Channel created on Tue Jan 27 06:30:17 2009 │peter │
|
||||
│5. #ghi │12:54:15 peter | hey! │ │
|
||||
│ │12:55:01 @joe | peter: hook_process: https://weechat.org/files/doc │ │
|
||||
│ │ | /devel/weechat_plugin_api.en.html#_weechat_hook_pr │ │
|
||||
│ │ | ocess │ │
|
||||
│ │ | /weechat/devel/weechat_plugin_api.en.html#_weechat │ │
|
||||
│ │ | _hook_process │ │
|
||||
│ │ │ │
|
||||
│ │ │ │
|
||||
│ │ │ │
|
||||
@@ -1200,8 +1200,8 @@ The screen will look like that in bare display:
|
||||
│12:52 -- Channel #abc: 4 nicks (2 ops, 1 voice, 1 normal) │
|
||||
│12:52 -- Channel created on Tue Jan 27 06:30:17 2009 │
|
||||
│12:54 <peter> hey! │
|
||||
│12:55 <@joe> peter: hook_process: https://weechat.org/files/doc/devel/weechat_plugin_a│
|
||||
│pi.en.html#_weechat_hook_process │
|
||||
│12:55 <@joe> peter: hook_process: https://weechat.org/files/doc/weechat/devel/weechat_│
|
||||
│plugin_api.en.html#_weechat_hook_process │
|
||||
└──────────────────────────────────────────────────────────────────────────────────────┘
|
||||
....
|
||||
|
||||
@@ -1655,7 +1655,7 @@ text in buffer).
|
||||
| kbd:[Enter] +
|
||||
kbd:[Ctrl+j] +
|
||||
kbd:[Ctrl+m] | Stop search at current position. | `+/input search_stop_here+`
|
||||
| kbd:[Ctrl+q] | Stop search and scroll to bottom of buffer. | `+/input search_stop+`
|
||||
| kbd:[Ctrl+q] | Stop search and reset scroll to pre-text search state. | `+/input search_stop+`
|
||||
|===
|
||||
|
||||
[[key_bindings_cursor_context]]
|
||||
|
||||
@@ -6819,9 +6819,10 @@ my_section_read_cb (const void *pointer, void *data,
|
||||
{
|
||||
/* ... */
|
||||
|
||||
return WEECHAT_CONFIG_READ_OK;
|
||||
/* return WEECHAT_CONFIG_READ_MEMORY_ERROR; */
|
||||
/* return WEECHAT_CONFIG_READ_FILE_NOT_FOUND; */
|
||||
return WEECHAT_CONFIG_OPTION_SET_OK_CHANGED;
|
||||
/* return WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE; */
|
||||
/* return WEECHAT_CONFIG_OPTION_SET_ERROR; */
|
||||
/* return WEECHAT_CONFIG_OPTION_SET_OPTION_NOT_FOUND; */
|
||||
}
|
||||
|
||||
int
|
||||
@@ -6911,7 +6912,7 @@ def config_new_section(config_file: str, name: str,
|
||||
callback_delete_option: str, callback_delete_option_data: str) -> str: ...
|
||||
|
||||
# exemple
|
||||
def my_section_read_cb(data: str, config_file: str, section: str, option_name: str, value: str | None) -> int:
|
||||
def my_section_read_cb(data: str, config_file: str, section: str, option_name: str, value: Union[str, None]) -> int:
|
||||
# ...
|
||||
return weechat.WEECHAT_CONFIG_OPTION_SET_OK_CHANGED
|
||||
# return weechat.WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE
|
||||
@@ -6930,7 +6931,7 @@ def my_section_write_default_cb(data: str, config_file: str, section_name: str)
|
||||
# return weechat.WEECHAT_CONFIG_WRITE_ERROR
|
||||
# return weechat.WEECHAT_CONFIG_WRITE_MEMORY_ERROR
|
||||
|
||||
def my_section_create_option_cb(data: str, config_file: str, section: str, option_name: str, value: str | None) -> int:
|
||||
def my_section_create_option_cb(data: str, config_file: str, section: str, option_name: str, value: Union[str, None]) -> int:
|
||||
# ...
|
||||
return weechat.WEECHAT_CONFIG_OPTION_SET_OK_CHANGED
|
||||
# return weechat.WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE
|
||||
@@ -7176,7 +7177,7 @@ Script (Python) :
|
||||
# prototype
|
||||
def config_new_option(config_file: str, section: str, name: str, type: str, description: str,
|
||||
string_values: str, min: int, max: int,
|
||||
default_value: str | None, value: str | None, null_value_allowed: int,
|
||||
default_value: Union[str, None], value: Union[str, None], null_value_allowed: int,
|
||||
callback_check_value: str, callback_check_value_data: str,
|
||||
callback_change: str, callback_change_data: str,
|
||||
callback_delete: str, callback_delete_data: str) -> str: ...
|
||||
|
||||
@@ -188,6 +188,11 @@ suivantes :
|
||||
** _off_ : les messages ne sont pas compressés
|
||||
** _zlib_ : les messages sont compressés avec https://zlib.net/[zlib ^↗^^]
|
||||
** _zstd_ : les messages sont compressés avec https://facebook.github.io/zstd/[Zstandard ^↗^^]
|
||||
* _escape_commands_ :
|
||||
** _on_ : toutes les barres obliques inverses sont interprétées dans les messages
|
||||
du client
|
||||
** _off_ : les barres obliques inverses ne sont *PAS* interprétées dans les messages
|
||||
du client et sont utilisées telles quelles
|
||||
|
||||
[TIP]
|
||||
Avec WeeChat ≤ 2.8, la commande _handshake_ n'est pas implémentée, WeeChat ignore
|
||||
@@ -213,6 +218,28 @@ htb: {
|
||||
'totp': 'on',
|
||||
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
|
||||
'compression': 'off',
|
||||
'escape_commands': 'off',
|
||||
}
|
||||
----
|
||||
|
||||
* Échappement des commandes activé par le client _(WeeChat ≥ 4.0.0)_ :
|
||||
|
||||
----
|
||||
(handshake) handshake escape_commands=on
|
||||
----
|
||||
|
||||
Réponse :
|
||||
|
||||
[source,python]
|
||||
----
|
||||
id: 'handshake'
|
||||
htb: {
|
||||
'password_hash_algo': 'plain',
|
||||
'password_hash_iterations': '100000',
|
||||
'totp': 'on',
|
||||
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
|
||||
'compression': 'off',
|
||||
'escape_commands': 'on',
|
||||
}
|
||||
----
|
||||
|
||||
@@ -233,6 +260,7 @@ htb: {
|
||||
'totp': 'on',
|
||||
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
|
||||
'compression': 'off',
|
||||
'escape_commands': 'off',
|
||||
}
|
||||
----
|
||||
|
||||
@@ -253,6 +281,7 @@ htb: {
|
||||
'totp': 'on',
|
||||
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
|
||||
'compression': 'off',
|
||||
'escape_commands': 'off',
|
||||
}
|
||||
----
|
||||
|
||||
@@ -282,6 +311,7 @@ htb: {
|
||||
'totp': 'on',
|
||||
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
|
||||
'compression': 'zstd',
|
||||
'escape_commands': 'off',
|
||||
}
|
||||
----
|
||||
|
||||
|
||||
+10
-10
@@ -137,7 +137,7 @@ Le tableau suivant liste les paquets *requis* pour construire WeeChat :
|
||||
|===
|
||||
|
||||
[NOTE]
|
||||
^(1)^ Le nom provient de la distribution GNU/Linux Debian Bullseye, la version
|
||||
^(1)^ Le nom provient de la distribution GNU/Linux Debian Bookworm, la version
|
||||
et le nom peuvent être différents dans les autres distributions.
|
||||
^(2)^ Il est recommandé de compiler avec libncurses**w**5-dev (le *w* est
|
||||
important). WeeChat peut compiler avec libncurses5-dev, mais ce n'est *PAS*
|
||||
@@ -157,10 +157,10 @@ Le tableau suivant liste les paquets optionnels pour compiler WeeChat :
|
||||
| libaspell-dev / libenchant-dev | | Extension spell.
|
||||
| python3-dev | ≥ 3.0 | Extension python.
|
||||
| libperl-dev | | Extension perl.
|
||||
| ruby2.7, ruby2.7-dev | ≥ 1.9.1 | Extension ruby.
|
||||
| ruby3.1, ruby3.1-dev | ≥ 1.9.1 | Extension ruby.
|
||||
| liblua5.4-dev | | Extension lua.
|
||||
| tcl-dev | ≥ 8.5 | Extension tcl.
|
||||
| guile-2.2-dev | ≥ 2.0 | Extension guile (scheme).
|
||||
| guile-3.0-dev | ≥ 2.0 | Extension guile (scheme).
|
||||
| libv8-dev | ≤ 3.24.3 | Extension javascript.
|
||||
| php-dev | ≥ 7.0 | Extension PHP.
|
||||
| libphp-embed | ≥ 7.0 | Extension PHP.
|
||||
@@ -173,7 +173,7 @@ Le tableau suivant liste les paquets optionnels pour compiler WeeChat :
|
||||
|===
|
||||
|
||||
[NOTE]
|
||||
^(1)^ Le nom provient de la distribution GNU/Linux Debian Bullseye, la version
|
||||
^(1)^ Le nom provient de la distribution GNU/Linux Debian Bookworm, la version
|
||||
et le nom peuvent être différents dans les autres distributions.
|
||||
|
||||
Si vous utilisez une distribution basée sur Debian ou Ubuntu, et si vous avez
|
||||
@@ -1179,8 +1179,8 @@ Si WeeChat ressemble à ceci :
|
||||
│4. #def │12:52:27 -- | Canal créé le Tue Jan 27 06:30:17 2009 │peter │
|
||||
│5. #ghi │12:54:15 peter | bonjour ! │ │
|
||||
│ │12:55:01 @joe | peter: hook_process: https://weechat.org/files/doc │ │
|
||||
│ │ | /devel/weechat_plugin_api.en.html#_weechat_hook_pr │ │
|
||||
│ │ | ocess │ │
|
||||
│ │ | /weechat/devel/weechat_plugin_api.en.html#_weechat │ │
|
||||
│ │ | _hook_process │ │
|
||||
│ │ │ │
|
||||
│ │ │ │
|
||||
│ │ │ │
|
||||
@@ -1223,8 +1223,8 @@ L'écran ressemblera à ça en mode dépouillé :
|
||||
│12:52 -- Canal #abc: 4 pseudos (2 ops, 1 voice, 1 normal) │
|
||||
│12:52 -- Canal créé le Tue Jan 27 06:30:17 2009 │
|
||||
│12:54 <peter> bonjour ! │
|
||||
│12:55 <@joe> peter: hook_process: https://weechat.org/files/doc/devel/weechat_plugin_a│
|
||||
│pi.en.html#_weechat_hook_process │
|
||||
│12:55 <@joe> peter: hook_process: https://weechat.org/files/doc/weechat/devel/weechat_│
|
||||
│plugin_api.en.html#_weechat_hook_process │
|
||||
└──────────────────────────────────────────────────────────────────────────────────────┘
|
||||
....
|
||||
|
||||
@@ -1691,7 +1691,7 @@ pressé pour chercher du texte dans le tampon).
|
||||
| kbd:[Enter] +
|
||||
kbd:[Ctrl+j] +
|
||||
kbd:[Ctrl+m] | Arrêter la recherche à la position courante. | `+/input search_stop_here+`
|
||||
| kbd:[Ctrl+q] | Arrêter la recherche et aller à la fin du tampon. | `+/input search_stop+`
|
||||
| kbd:[Ctrl+q] | Arrêter la recherche et réinitialiser le défilement à l'état antérieur à la recherche de texte. | `+/input search_stop+`
|
||||
|===
|
||||
|
||||
[[key_bindings_cursor_context]]
|
||||
@@ -3901,7 +3901,7 @@ Spécification : https://ircv3.net/specs/extensions/message-tags[message-tags
|
||||
Cette capacité autorise l'envoi de méta-données dans les messages. +
|
||||
Ces étiquettes peuvent être affichées avec la commande `/debug tags`.
|
||||
|
||||
Elle doit être activer pour utiliser les <<typing_notifications,notifications de saisie>>.
|
||||
Elle doit être activée pour utiliser les <<typing_notifications,notifications de saisie>>.
|
||||
|
||||
[[irc_ircv3_monitor]]
|
||||
==== monitor
|
||||
|
||||
@@ -6980,9 +6980,10 @@ my_section_read_cb (const void *pointer, void *data,
|
||||
{
|
||||
/* ... */
|
||||
|
||||
return WEECHAT_CONFIG_READ_OK;
|
||||
/* return WEECHAT_CONFIG_READ_MEMORY_ERROR; */
|
||||
/* return WEECHAT_CONFIG_READ_FILE_NOT_FOUND; */
|
||||
return WEECHAT_CONFIG_OPTION_SET_OK_CHANGED;
|
||||
/* return WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE; */
|
||||
/* return WEECHAT_CONFIG_OPTION_SET_ERROR; */
|
||||
/* return WEECHAT_CONFIG_OPTION_SET_OPTION_NOT_FOUND; */
|
||||
}
|
||||
|
||||
int
|
||||
@@ -7072,7 +7073,7 @@ def config_new_section(config_file: str, name: str,
|
||||
callback_delete_option: str, callback_delete_option_data: str) -> str: ...
|
||||
|
||||
# esempio
|
||||
def my_section_read_cb(data: str, config_file: str, section: str, option_name: str, value: str | None) -> int:
|
||||
def my_section_read_cb(data: str, config_file: str, section: str, option_name: str, value: Union[str, None]) -> int:
|
||||
# ...
|
||||
return weechat.WEECHAT_CONFIG_OPTION_SET_OK_CHANGED
|
||||
# return weechat.WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE
|
||||
@@ -7091,7 +7092,7 @@ def my_section_write_default_cb(data: str, config_file: str, section_name: str)
|
||||
# return weechat.WEECHAT_CONFIG_WRITE_ERROR
|
||||
# return weechat.WEECHAT_CONFIG_WRITE_MEMORY_ERROR
|
||||
|
||||
def my_section_create_option_cb(data: str, config_file: str, section: str, option_name: str, value: str | None) -> int:
|
||||
def my_section_create_option_cb(data: str, config_file: str, section: str, option_name: str, value: Union[str, None]) -> int:
|
||||
# ...
|
||||
return weechat.WEECHAT_CONFIG_OPTION_SET_OK_CHANGED
|
||||
# return weechat.WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE
|
||||
@@ -7337,7 +7338,7 @@ Script (Python):
|
||||
# prototipo
|
||||
def config_new_option(config_file: str, section: str, name: str, type: str, description: str,
|
||||
string_values: str, min: int, max: int,
|
||||
default_value: str | None, value: str | None, null_value_allowed: int,
|
||||
default_value: Union[str, None], value: Union[str, None], null_value_allowed: int,
|
||||
callback_check_value: str, callback_check_value_data: str,
|
||||
callback_change: str, callback_change_data: str,
|
||||
callback_delete: str, callback_delete_data: str) -> str: ...
|
||||
|
||||
@@ -168,7 +168,7 @@ WeeChat:
|
||||
|
||||
[NOTE]
|
||||
// TRANSLATION MISSING
|
||||
^(1)^ Name comes from the Debian GNU/Linux Bullseye distribution, version and
|
||||
^(1)^ Name comes from the Debian GNU/Linux Bookworm distribution, version and
|
||||
name can be different in other distributions. +
|
||||
// TRANSLATION MISSING
|
||||
^(2)^ It is recommended to compile with libncurses**w**5-dev (the *w* is
|
||||
@@ -193,10 +193,10 @@ WeeChat:
|
||||
| libaspell-dev / libenchant-dev | | Plugin spell.
|
||||
| python3-dev | ≥ 3.0 | Plugin python.
|
||||
| libperl-dev | | Plugin perl.
|
||||
| ruby2.7, ruby2.7-dev | ≥ 1.9.1 | Plugin ruby.
|
||||
| ruby3.1, ruby3.1-dev | ≥ 1.9.1 | Plugin ruby.
|
||||
| liblua5.4-dev | | Plugin lua.
|
||||
| tcl-dev | ≥ 8.5 | Plugin tcl.
|
||||
| guile-2.2-dev | ≥ 2.0 | Plugin guile (scheme).
|
||||
| guile-3.0-dev | ≥ 2.0 | Plugin guile (scheme).
|
||||
| libv8-dev | ≤ 3.24.3 | Plugin javascript.
|
||||
| php-dev | ≥ 7.0 | Plugin php.
|
||||
| libphp-embed | ≥ 7.0 | Plugin php.
|
||||
@@ -215,7 +215,7 @@ WeeChat:
|
||||
|
||||
[NOTE]
|
||||
// TRANSLATION MISSING
|
||||
^(1)^ Name comes from the Debian GNU/Linux Bullseye distribution, version and
|
||||
^(1)^ Name comes from the Debian GNU/Linux Bookworm distribution, version and
|
||||
name can be different in other distributions.
|
||||
|
||||
// TRANSLATION MISSING
|
||||
@@ -1265,8 +1265,8 @@ If WeeChat looks like that:
|
||||
│4. #def │12:52:27 -- | Channel created on Tue Jan 27 06:30:17 2009 │peter │
|
||||
│5. #ghi │12:54:15 peter | hey! │ │
|
||||
│ │12:55:01 @joe | peter: hook_process: https://weechat.org/files/doc │ │
|
||||
│ │ | /devel/weechat_plugin_api.en.html#_weechat_hook_pr │ │
|
||||
│ │ | ocess │ │
|
||||
│ │ | /weechat/devel/weechat_plugin_api.en.html#_weechat │ │
|
||||
│ │ | _hook_process │ │
|
||||
│ │ │ │
|
||||
│ │ │ │
|
||||
│ │ │ │
|
||||
@@ -1309,8 +1309,8 @@ The screen will look like that in bare display:
|
||||
│12:52 -- Channel #abc: 4 nicks (2 ops, 1 voice, 1 normal) │
|
||||
│12:52 -- Channel created on Tue Jan 27 06:30:17 2009 │
|
||||
│12:54 <peter> hey! │
|
||||
│12:55 <@joe> peter: hook_process: https://weechat.org/files/doc/devel/weechat_plugin_a│
|
||||
│pi.en.html#_weechat_hook_process │
|
||||
│12:55 <@joe> peter: hook_process: https://weechat.org/files/doc/weechat/devel/weechat_│
|
||||
│plugin_api.en.html#_weechat_hook_process │
|
||||
└──────────────────────────────────────────────────────────────────────────────────────┘
|
||||
....
|
||||
|
||||
@@ -1825,7 +1825,7 @@ kbd:[Ctrl+r] per cercare del testo nel buffer).
|
||||
kbd:[Ctrl+j] +
|
||||
kbd:[Ctrl+m] | Stop search at current position. | `+/input search_stop_here+`
|
||||
// TRANSLATION MISSING
|
||||
| kbd:[Ctrl+q] | Stop search and scroll to bottom of buffer. | `+/input search_stop+`
|
||||
| kbd:[Ctrl+q] | Stop search and reset scroll to pre-text search state. | `+/input search_stop+`
|
||||
|===
|
||||
|
||||
// TRANSLATION MISSING
|
||||
|
||||
@@ -6784,9 +6784,10 @@ my_section_read_cb (const void *pointer, void *data,
|
||||
{
|
||||
/* ... */
|
||||
|
||||
return WEECHAT_CONFIG_READ_OK;
|
||||
/* return WEECHAT_CONFIG_READ_MEMORY_ERROR; */
|
||||
/* return WEECHAT_CONFIG_READ_FILE_NOT_FOUND; */
|
||||
return WEECHAT_CONFIG_OPTION_SET_OK_CHANGED;
|
||||
/* return WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE; */
|
||||
/* return WEECHAT_CONFIG_OPTION_SET_ERROR; */
|
||||
/* return WEECHAT_CONFIG_OPTION_SET_OPTION_NOT_FOUND; */
|
||||
}
|
||||
|
||||
int
|
||||
@@ -6876,7 +6877,7 @@ def config_new_section(config_file: str, name: str,
|
||||
callback_delete_option: str, callback_delete_option_data: str) -> str: ...
|
||||
|
||||
# 例
|
||||
def my_section_read_cb(data: str, config_file: str, section: str, option_name: str, value: str | None) -> int:
|
||||
def my_section_read_cb(data: str, config_file: str, section: str, option_name: str, value: Union[str, None]) -> int:
|
||||
# ...
|
||||
return weechat.WEECHAT_CONFIG_OPTION_SET_OK_CHANGED
|
||||
# return weechat.WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE
|
||||
@@ -6895,7 +6896,7 @@ def my_section_write_default_cb(data: str, config_file: str, section_name: str)
|
||||
# return weechat.WEECHAT_CONFIG_WRITE_ERROR
|
||||
# return weechat.WEECHAT_CONFIG_WRITE_MEMORY_ERROR
|
||||
|
||||
def my_section_create_option_cb(data: str, config_file: str, section: str, option_name: str, value: str | None) -> int:
|
||||
def my_section_create_option_cb(data: str, config_file: str, section: str, option_name: str, value: Union[str, None]) -> int:
|
||||
# ...
|
||||
return weechat.WEECHAT_CONFIG_OPTION_SET_OK_CHANGED
|
||||
# return weechat.WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE
|
||||
@@ -7136,7 +7137,7 @@ struct t_config_option *option5 =
|
||||
# プロトタイプ
|
||||
def config_new_option(config_file: str, section: str, name: str, type: str, description: str,
|
||||
string_values: str, min: int, max: int,
|
||||
default_value: str | None, value: str | None, null_value_allowed: int,
|
||||
default_value: Union[str, None], value: Union[str, None], null_value_allowed: int,
|
||||
callback_check_value: str, callback_check_value_data: str,
|
||||
callback_change: str, callback_change_data: str,
|
||||
callback_delete: str, callback_delete_data: str) -> str: ...
|
||||
|
||||
@@ -188,6 +188,10 @@ WeeChat replies with a hashtable containing the following keys and values:
|
||||
** _off_: messages are not compressed
|
||||
** _zlib_: messages are compressed with https://zlib.net/[zlib ^↗^^]
|
||||
** _zstd_: messages are compressed with https://facebook.github.io/zstd/[Zstandard ^↗^^]
|
||||
// TRANSLATION MISSING
|
||||
* _escape_commands_:
|
||||
** _on_: all backslashes are interpreted in the client messages
|
||||
** _off_: backslashes are *NOT* interpreted in the client messages and used as-is
|
||||
|
||||
[TIP]
|
||||
With WeeChat ≤ 2.8, the command _handshake_ is not implemented, WeeChat silently
|
||||
@@ -214,6 +218,28 @@ htb: {
|
||||
'totp': 'on',
|
||||
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
|
||||
'compression': 'off',
|
||||
'escape_commands': 'off',
|
||||
}
|
||||
----
|
||||
|
||||
* Escape of commands enabled by the client _(WeeChat ≥ 4.0.0)_:
|
||||
|
||||
----
|
||||
(handshake) handshake escape_commands=on
|
||||
----
|
||||
|
||||
Response:
|
||||
|
||||
[source,python]
|
||||
----
|
||||
id: 'handshake'
|
||||
htb: {
|
||||
'password_hash_algo': 'plain',
|
||||
'password_hash_iterations': '100000',
|
||||
'totp': 'on',
|
||||
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
|
||||
'compression': 'off',
|
||||
'escape_commands': 'on',
|
||||
}
|
||||
----
|
||||
|
||||
@@ -234,6 +260,7 @@ htb: {
|
||||
'totp': 'on',
|
||||
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
|
||||
'compression': 'off',
|
||||
'escape_commands': 'off',
|
||||
}
|
||||
----
|
||||
|
||||
@@ -254,6 +281,7 @@ htb: {
|
||||
'totp': 'on',
|
||||
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
|
||||
'compression': 'off',
|
||||
'escape_commands': 'off',
|
||||
}
|
||||
----
|
||||
|
||||
@@ -283,6 +311,7 @@ htb: {
|
||||
'totp': 'on',
|
||||
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
|
||||
'compression': 'zstd',
|
||||
'escape_commands': 'off',
|
||||
}
|
||||
----
|
||||
|
||||
|
||||
@@ -155,7 +155,7 @@ WeeChat:
|
||||
|
||||
[NOTE]
|
||||
// TRANSLATION MISSING
|
||||
^(1)^ Name comes from the Debian GNU/Linux Bullseye distribution, version and
|
||||
^(1)^ Name comes from the Debian GNU/Linux Bookworm distribution, version and
|
||||
name can be different in other distributions. +
|
||||
^(2)^ WeeChat は libncurses**w**5-dev でコンパイルすることを推奨します
|
||||
(*w* が重要です)。libncurses5-dev でもコンパイル可能ですが、これは推奨
|
||||
@@ -177,10 +177,10 @@ WeeChat:
|
||||
| libaspell-dev / libenchant-dev | | spell プラグイン
|
||||
| python3-dev | 3.0 以上 | python プラグイン
|
||||
| libperl-dev | | perl プラグイン
|
||||
| ruby2.7, ruby2.7-dev | 1.9.1 以上 | ruby プラグイン
|
||||
| ruby3.1, ruby3.1-dev | 1.9.1 以上 | ruby プラグイン
|
||||
| liblua5.4-dev | | lua プラグイン
|
||||
| tcl-dev | 8.5 以上 | tcl プラグイン
|
||||
| guile-2.2-dev | 2.0 以上 | guile (scheme) プラグイン
|
||||
| guile-3.0-dev | 2.0 以上 | guile (scheme) プラグイン
|
||||
| libv8-dev | 3.24.3 以下 | javascript プラグイン
|
||||
| php-dev | 7.0 以上 | PHP プラグイン
|
||||
| libphp-embed | 7.0 以上 | PHP プラグイン
|
||||
@@ -195,7 +195,7 @@ WeeChat:
|
||||
|
||||
[NOTE]
|
||||
// TRANSLATION MISSING
|
||||
^(1)^ Name comes from the Debian GNU/Linux Bullseye distribution, version and
|
||||
^(1)^ Name comes from the Debian GNU/Linux Bookworm distribution, version and
|
||||
name can be different in other distributions.
|
||||
|
||||
Debian および Ubuntu
|
||||
@@ -1229,8 +1229,8 @@ WeeChat が以下のような表示状態の場合:
|
||||
│4. #def │12:52:27 -- | Channel created on Tue Jan 27 06:30:17 2009 │peter │
|
||||
│5. #ghi │12:54:15 peter | hey! │ │
|
||||
│ │12:55:01 @joe | peter: hook_process: https://weechat.org/files/doc │ │
|
||||
│ │ | /devel/weechat_plugin_api.en.html#_weechat_hook_pr │ │
|
||||
│ │ | ocess │ │
|
||||
│ │ | /weechat/devel/weechat_plugin_api.en.html#_weechat │ │
|
||||
│ │ | _hook_process │ │
|
||||
│ │ │ │
|
||||
│ │ │ │
|
||||
│ │ │ │
|
||||
@@ -1273,8 +1273,8 @@ WeeChat が以下のような表示状態の場合:
|
||||
│12:52 -- Channel #abc: 4 nicks (2 ops, 1 voice, 1 normal) │
|
||||
│12:52 -- Channel created on Tue Jan 27 06:30:17 2009 │
|
||||
│12:54 <peter> hey! │
|
||||
│12:55 <@joe> peter: hook_process: https://weechat.org/files/doc/devel/weechat_plugin_a│
|
||||
│pi.en.html#_weechat_hook_process │
|
||||
│12:55 <@joe> peter: hook_process: https://weechat.org/files/doc/weechat/devel/weechat_│
|
||||
│plugin_api.en.html#_weechat_hook_process │
|
||||
└──────────────────────────────────────────────────────────────────────────────────────┘
|
||||
....
|
||||
|
||||
@@ -1769,7 +1769,8 @@ kbd:[Ctrl+r] が押された状態) でのみ有効です。
|
||||
| kbd:[Enter] +
|
||||
kbd:[Ctrl+j] +
|
||||
kbd:[Ctrl+m] | 現在の位置で検索を終了 | `+/input search_stop_here+`
|
||||
| kbd:[Ctrl+q] | 検索を終了してバッファの最後までスクロール | `+/input search_stop+`
|
||||
// TRANSLATION MISSING
|
||||
| kbd:[Ctrl+q] | Stop search and reset scroll to pre-text search state. | `+/input search_stop+`
|
||||
|===
|
||||
|
||||
// TRANSLATION MISSING
|
||||
|
||||
@@ -144,7 +144,7 @@ WeeChat:
|
||||
|===
|
||||
|
||||
[NOTE]
|
||||
^(1)^ Nazwa pochodzi z repozytorium dystrybucji Debian GNU/Linux Bullseye distribution,
|
||||
^(1)^ Nazwa pochodzi z repozytorium dystrybucji Debian GNU/Linux Bookworm distribution,
|
||||
wersja i nazwa mogą się różnić dla innych dystrybucji. +
|
||||
^(2)^ Zaleca się kompilację z użyciem libncurses**w**5-dev (*w* jest istotne).
|
||||
WeeChat można skompilowac używając libncurses5-dev, ale *NIE* jest to zalecane:
|
||||
@@ -164,10 +164,10 @@ WeeChat:
|
||||
| libaspell-dev / libenchant-dev | | Wtyczka spell.
|
||||
| python3-dev | ≥ 3.0 | Wtyczka python.
|
||||
| libperl-dev | | Wtyczka perl.
|
||||
| ruby2.7, ruby2.7-dev | ≥ 1.9.1 | Wtyczka ruby.
|
||||
| ruby3.1, ruby3.1-dev | ≥ 1.9.1 | Wtyczka ruby.
|
||||
| liblua5.4-dev | | Wtyczka lua.
|
||||
| tcl-dev | ≥ 8.5 | Wtyczka tcl.
|
||||
| guile-2.2-dev | ≥ 2.0 | Wtyczka guile (scheme).
|
||||
| guile-3.0-dev | ≥ 2.0 | Wtyczka guile (scheme).
|
||||
| libv8-dev | ≤ 3.24.3 | Wtyczka javascript.
|
||||
| php-dev | ≥ 7.0 | Wtyczka PHP.
|
||||
| libphp-embed | ≥ 7.0 | Wtyczka PHP.
|
||||
@@ -180,7 +180,7 @@ WeeChat:
|
||||
|===
|
||||
|
||||
[NOTE]
|
||||
^(1)^ Nazwa pochodzi z repozytorium dystrybucji Debian GNU/Linux Bullseye distribution,
|
||||
^(1)^ Nazwa pochodzi z repozytorium dystrybucji Debian GNU/Linux Bookworm distribution,
|
||||
wersja i nazwa mogą się różnić dla innych dystrybucji. +
|
||||
|
||||
Jeśli używasz dystrybujci bazującej na Debianie/Ubuntu, oraz jeśli posiadasz wpisy
|
||||
@@ -1168,8 +1168,8 @@ Jeśłi WeeChat wygląda następująco:
|
||||
│4. #def │12:52:27 -- | Channel created on Tue Jan 27 06:30:17 2009 │peter │
|
||||
│5. #ghi │12:54:15 peter | hey! │ │
|
||||
│ │12:55:01 @joe | peter: hook_process: https://weechat.org/files/doc │ │
|
||||
│ │ | /devel/weechat_plugin_api.en.html#_weechat_hook_pr │ │
|
||||
│ │ | ocess │ │
|
||||
│ │ | /weechat/devel/weechat_plugin_api.en.html#_weechat │ │
|
||||
│ │ | _hook_process │ │
|
||||
│ │ │ │
|
||||
│ │ │ │
|
||||
│ │ │ │
|
||||
@@ -1212,8 +1212,8 @@ Ekran w trybie niesformatowanego wyświetlania będzie wyglądać tak:
|
||||
│12:52 -- Channel #abc: 4 nicks (2 ops, 1 voice, 1 normal) │
|
||||
│12:52 -- Channel created on Tue Jan 27 06:30:17 2009 │
|
||||
│12:54 <peter> hey! │
|
||||
│12:55 <@joe> peter: hook_process: https://weechat.org/files/doc/devel/weechat_plugin_a│
|
||||
│pi.en.html#_weechat_hook_process │
|
||||
│12:55 <@joe> peter: hook_process: https://weechat.org/files/doc/weechat/devel/weechat_│
|
||||
│plugin_api.en.html#_weechat_hook_process │
|
||||
└──────────────────────────────────────────────────────────────────────────────────────┘
|
||||
....
|
||||
|
||||
@@ -1682,7 +1682,8 @@ zostanie wciśnięta w buforze tekstowym).
|
||||
| kbd:[Enter] +
|
||||
kbd:[Ctrl+j] +
|
||||
kbd:[Ctrl+m] | Zatrzymaj wyszukiwanie na obecnej pozycji. | `+/input search_stop_here+`
|
||||
| kbd:[Ctrl+q] | Zatrzymaj wyszukiwanie i przewin na spód bufora. | `+/input search_stop+`
|
||||
// TRANSLATION MISSING
|
||||
| kbd:[Ctrl+q] | Stop search and reset scroll to pre-text search state. | `+/input search_stop+`
|
||||
|===
|
||||
|
||||
[[key_bindings_cursor_context]]
|
||||
|
||||
+2
-2
@@ -37,7 +37,7 @@ STUB_HEADER = """\
|
||||
# DO NOT EDIT BY HAND!
|
||||
#
|
||||
|
||||
from typing import Dict
|
||||
from typing import Dict, Union
|
||||
"""
|
||||
|
||||
CONSTANT_RE = (
|
||||
@@ -81,7 +81,7 @@ def print_stub_functions() -> None:
|
||||
encoding="utf-8") as api_doc_file:
|
||||
api_doc = api_doc_file.read()
|
||||
for match in function_pattern.finditer(api_doc):
|
||||
url = f'https://weechat.org/doc/api/#_{match["function"]}'
|
||||
url = f'https://weechat.org/doc/weechat/api/#_{match["function"]}'
|
||||
example = (
|
||||
f'\n ::\n\n{indent(match["example"].lstrip(), " " * 8)}'
|
||||
if match["example"]
|
||||
|
||||
@@ -6509,9 +6509,10 @@ my_section_read_cb (const void *pointer, void *data,
|
||||
{
|
||||
/* ... */
|
||||
|
||||
return WEECHAT_CONFIG_READ_OK;
|
||||
/* return WEECHAT_CONFIG_READ_MEMORY_ERROR; */
|
||||
/* return WEECHAT_CONFIG_READ_FILE_NOT_FOUND; */
|
||||
return WEECHAT_CONFIG_OPTION_SET_OK_CHANGED;
|
||||
/* return WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE; */
|
||||
/* return WEECHAT_CONFIG_OPTION_SET_ERROR; */
|
||||
/* return WEECHAT_CONFIG_OPTION_SET_OPTION_NOT_FOUND; */
|
||||
}
|
||||
|
||||
int
|
||||
@@ -6601,7 +6602,7 @@ def config_new_section(config_file: str, name: str,
|
||||
callback_delete_option: str, callback_delete_option_data: str) -> str: ...
|
||||
|
||||
# пример
|
||||
def my_section_read_cb(data: str, config_file: str, section: str, option_name: str, value: str | None) -> int:
|
||||
def my_section_read_cb(data: str, config_file: str, section: str, option_name: str, value: Union[str, None]) -> int:
|
||||
# ...
|
||||
return weechat.WEECHAT_CONFIG_OPTION_SET_OK_CHANGED
|
||||
# return weechat.WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE
|
||||
@@ -6620,7 +6621,7 @@ def my_section_write_default_cb(data: str, config_file: str, section_name: str)
|
||||
# return weechat.WEECHAT_CONFIG_WRITE_ERROR
|
||||
# return weechat.WEECHAT_CONFIG_WRITE_MEMORY_ERROR
|
||||
|
||||
def my_section_create_option_cb(data: str, config_file: str, section: str, option_name: str, value: str | None) -> int:
|
||||
def my_section_create_option_cb(data: str, config_file: str, section: str, option_name: str, value: Union[str, None]) -> int:
|
||||
# ...
|
||||
return weechat.WEECHAT_CONFIG_OPTION_SET_OK_CHANGED
|
||||
# return weechat.WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE
|
||||
@@ -6844,7 +6845,7 @@ struct t_config_option *option5 =
|
||||
# прототип
|
||||
def config_new_option(config_file: str, section: str, name: str, type: str, description: str,
|
||||
string_values: str, min: int, max: int,
|
||||
default_value: str | None, value: str | None, null_value_allowed: int,
|
||||
default_value: Union[str, None], value: Union[str, None], null_value_allowed: int,
|
||||
callback_check_value: str, callback_check_value_data: str,
|
||||
callback_change: str, callback_change_data: str,
|
||||
callback_delete: str, callback_delete_data: str) -> str: ...
|
||||
|
||||
@@ -158,6 +158,10 @@ _WeeChat ≥ 2.9, updated in versions 3.5, 4.0.0._
|
||||
** _off_: поруке се не компресују
|
||||
** _zlib_: поруке су компресоване са https://zlib.net/[zlib ^↗^^]
|
||||
** _zstd_: поруке су компресоване са https://facebook.github.io/zstd/[Zstandard ^↗^^]
|
||||
// TRANSLATION MISSING
|
||||
* _escape_commands_:
|
||||
** _on_: all backslashes are interpreted in the client messages
|
||||
** _off_: backslashes are *NOT* interpreted in the client messages and used as-is
|
||||
|
||||
[TIP]
|
||||
У програму WeeChat верзије ≤ 2.8, команда _handshake_ није имплементирана, програм WeeChat једноставно игнорише ову команду, чак и ако се пошаље пре _init_ команде. +
|
||||
@@ -182,6 +186,28 @@ htb: {
|
||||
'totp': 'on',
|
||||
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
|
||||
'compression': 'off',
|
||||
'escape_commands': 'off',
|
||||
}
|
||||
----
|
||||
|
||||
* Escape of commands enabled by the client _(WeeChat ≥ 4.0.0)_:
|
||||
|
||||
----
|
||||
(handshake) handshake escape_commands=on
|
||||
----
|
||||
|
||||
Response:
|
||||
|
||||
[source,python]
|
||||
----
|
||||
id: 'handshake'
|
||||
htb: {
|
||||
'password_hash_algo': 'plain',
|
||||
'password_hash_iterations': '100000',
|
||||
'totp': 'on',
|
||||
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
|
||||
'compression': 'off',
|
||||
'escape_commands': 'on',
|
||||
}
|
||||
----
|
||||
|
||||
@@ -202,6 +228,7 @@ htb: {
|
||||
'totp': 'on',
|
||||
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
|
||||
'compression': 'off',
|
||||
'escape_commands': 'off',
|
||||
}
|
||||
----
|
||||
|
||||
@@ -222,6 +249,7 @@ htb: {
|
||||
'totp': 'on',
|
||||
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
|
||||
'compression': 'off',
|
||||
'escape_commands': 'off',
|
||||
}
|
||||
----
|
||||
|
||||
@@ -248,6 +276,7 @@ htb: {
|
||||
'totp': 'on',
|
||||
'nonce': '85B1EE00695A5B254E14F4885538DF0D',
|
||||
'compression': 'zstd',
|
||||
'escape_commands': 'off',
|
||||
}
|
||||
----
|
||||
|
||||
|
||||
+34
-33
@@ -136,7 +136,7 @@ WeeChat мора да се изгради са CMake.
|
||||
|===
|
||||
|
||||
[NOTE]
|
||||
^(1)^ Име долази из Debian GNU/Linux Bullseye дистрибуције, верзија и
|
||||
^(1)^ Име долази из Debian GNU/Linux Bookworm дистрибуције, верзија и
|
||||
име могу да буду другачији у осталим дитрибуцијама. +
|
||||
^(2)^ Препоручује се компајлирање са libncurses**w**5-dev (битно је *w*). Програм WeeChat може да се компајлира са libncurses5-dev, али се то *НЕ* препоручује: можете имати багове код приказа широких карактера. +
|
||||
^(3)^ GnuTLS ≥ 3.0.21 је неопходан за IRC SASL аутентификацију механизмом ECDSA-NIST256P-CHALLENGE.
|
||||
@@ -152,10 +152,10 @@ WeeChat мора да се изгради са CMake.
|
||||
| libaspell-dev / libenchant-dev | | Spell додатак.
|
||||
| python3-dev | ≥ 3.0 | Python додатак.
|
||||
| libperl-dev | | Perl додатак.
|
||||
| ruby2.7, ruby2.7-dev | ≥ 1.9.1 | Ruby додатак.
|
||||
| ruby3.1, ruby3.1-dev | ≥ 1.9.1 | Ruby додатак.
|
||||
| liblua5.4-dev | | Lua додатак.
|
||||
| tcl-dev | ≥ 8.5 | Tcl додатак.
|
||||
| guile-2.2-dev | ≥ 2.0 | Guile (scheme) додатак.
|
||||
| guile-3.0-dev | ≥ 2.0 | Guile (scheme) додатак.
|
||||
| libv8-dev | ≤ 3.24.3 | JavaScript додатак.
|
||||
| php-dev | ≥ 7.0 | PHP додатак.
|
||||
| libphp-embed | ≥ 7.0 | PHP додатак.
|
||||
@@ -168,7 +168,7 @@ WeeChat мора да се изгради са CMake.
|
||||
|===
|
||||
|
||||
[NOTE]
|
||||
^(1)^ Име долази из Debian GNU/Linux Bullseye дистрибуције, верзија и
|
||||
^(1)^ Име долази из Debian GNU/Linux Bookworm дистрибуције, верзија и
|
||||
име могу да буду другачији у осталим дистрибуцијама.
|
||||
|
||||
Ако користите дистрибуцију базирану на Debian/Ubuntu и ако имате неке „deb-src” изворне ставке у фајлу _/etc/apt/sources.list_, можете инсталирати све зависности командом:
|
||||
@@ -1075,9 +1075,9 @@ _прозор_ је површина екрана која приказује б
|
||||
│3. #abc │12:52:27 -- | Канал #abc: 4 надимка (2 опа, 1 глас, 1 обични) │+weebot│
|
||||
│4. #def │12:52:27 -- | Канал је креиран у Уто Јан 27 06:30:17 2009 │peter │
|
||||
│5. #ghi │12:54:15 peter | hey! │ │
|
||||
│ │12:55:01 @joe | peter: hook_process: https://weechat.org/files/do │ │
|
||||
│ │ | c/devel/weechat_plugin_api.en.html#_weechat_hook_ │ │
|
||||
│ │ | process │ │
|
||||
│ │12:55:01 @joe | peter: hook_process: https://weechat.org/files/doc │ │
|
||||
│ │ | /weechat/devel/weechat_plugin_api.en.html#_weechat │ │
|
||||
│ │ | _hook_process │ │
|
||||
│ │ │ │
|
||||
│ │ │ │
|
||||
│ │ │ │
|
||||
@@ -1098,31 +1098,31 @@ _прозор_ је површина екрана која приказује б
|
||||
Екран у огољеном приказу ће изгледати овако:
|
||||
|
||||
....
|
||||
┌───────────────────────────────────────────────────────────────────────────────────────┐
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│12:52 --> Flashy (flashcode@weechat.org) је приступио у #abc │
|
||||
│12:52 -- Надимци #abc: [@Flashy @joe +weebot peter] │
|
||||
│12:52 -- Канал #abc: 4 надимка (2 опа, 1 глас, 1 обичан) │
|
||||
│12:52 -- Канал је креиран у Уто Јан 27 06:30:17 2009 │
|
||||
│12:54 <peter> hey! │
|
||||
│12:55 <@joe> peter: hook_process: https://weechat.org/files/doc/devel/weechat_plugin_ap│
|
||||
│i.en.html#_weechat_hook_process │
|
||||
└───────────────────────────────────────────────────────────────────────────────────────┘
|
||||
┌──────────────────────────────────────────────────────────────────────────────────────┐
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│12:52 --> Flashy (flashcode@weechat.org) је приступио у #abc │
|
||||
│12:52 -- Надимци #abc: [@Flashy @joe +weebot peter] │
|
||||
│12:52 -- Канал #abc: 4 надимка (2 опа, 1 глас, 1 обичан) │
|
||||
│12:52 -- Канал је креиран у Уто Јан 27 06:30:17 2009 │
|
||||
│12:54 <peter> hey! │
|
||||
│12:55 <@joe> peter: hook_process: https://weechat.org/files/doc/weechat/devel/weechat_│
|
||||
│plugin_api.en.html#_weechat_hook_process │
|
||||
└──────────────────────────────────────────────────────────────────────────────────────┘
|
||||
....
|
||||
|
||||
Тако да у свом терминалу без проблема можете кликнути на URL адресу од надимка _joe_ (наравно, ово претпоставља да ваш терминал подржава кликове на URL адресе).
|
||||
@@ -1567,7 +1567,8 @@ WeeChat нуди доста подразумеваних тастерских п
|
||||
| kbd:[Enter] +
|
||||
kbd:[Ctrl+j] +
|
||||
kbd:[Ctrl+m] | Заустављање претраге на текућој позицији. | `+/input search_stop_here+`
|
||||
| kbd:[Ctrl+q] | Заустављање претраге и скроловање на дно бафера. | `+/input search_stop+`
|
||||
// TRANSLATION MISSING
|
||||
| kbd:[Ctrl+q] | Stop search and reset scroll to pre-text search state. | `+/input search_stop+`
|
||||
|===
|
||||
|
||||
[[key_bindings_cursor_context]]
|
||||
|
||||
+52
-56
@@ -17,6 +17,11 @@
|
||||
# along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
# Check for programs xgettext, msgmerge and msgfmt
|
||||
find_program(XGETTEXT_EXECUTABLE xgettext REQUIRED)
|
||||
find_program(MSGMERGE_EXECUTABLE msgmerge REQUIRED)
|
||||
find_program(MSGFMT_EXECUTABLE msgfmt REQUIRED)
|
||||
|
||||
set(PO_FILES
|
||||
cs.po
|
||||
de.po
|
||||
@@ -39,70 +44,61 @@ set(POT_FILE_PATH "${CMAKE_CURRENT_BINARY_DIR}/${POT_FILE}")
|
||||
|
||||
include(srcfiles.cmake)
|
||||
|
||||
# Looking for xgettext, msgmerge and msgfmt
|
||||
find_program(XGETTEXT_EXECUTABLE xgettext)
|
||||
find_program(MSGMERGE_EXECUTABLE msgmerge)
|
||||
find_program(MSGFMT_EXECUTABLE msgfmt)
|
||||
# Create PO template file weechat.pot
|
||||
set(SRC_FILES)
|
||||
set(POT_DEPENDS)
|
||||
|
||||
if(XGETTEXT_EXECUTABLE AND MSGMERGE_EXECUTABLE AND MSGFMT_EXECUTABLE)
|
||||
foreach(srcfile ${WEECHAT_SOURCES})
|
||||
set(SRC_FILES ${SRC_FILES} ${srcfile})
|
||||
set(POT_DEPENDS ${POT_DEPENDS} "${CMAKE_SOURCE_DIR}/${srcfile}")
|
||||
endforeach()
|
||||
|
||||
# Create PO template file weechat.pot
|
||||
set(SRC_FILES)
|
||||
set(POT_DEPENDS)
|
||||
add_custom_command(
|
||||
OUTPUT "${POT_FILE_PATH}"
|
||||
COMMAND "${XGETTEXT_EXECUTABLE}"
|
||||
ARGS -o "${POT_FILE_PATH}" --add-comments='TRANSLATORS:' --keyword='_' --keyword='weechat_gettext' --keyword='N_' --keyword='NG_:1,2' --keyword='weechat_ngettext:1,2' --no-location --from-code=UTF-8 --directory="${CMAKE_SOURCE_DIR}" --package-name='WeeChat' --package-version=${VERSION} --msgid-bugs-address=${BUGS_ADDRESS} --copyright-holder='NAME' ${SRC_FILES}
|
||||
DEPENDS ${POT_DEPENDS}
|
||||
COMMENT "Generating ${POT_FILE}"
|
||||
)
|
||||
|
||||
foreach(srcfile ${WEECHAT_SOURCES})
|
||||
set(SRC_FILES ${SRC_FILES} ${srcfile})
|
||||
set(POT_DEPENDS ${POT_DEPENDS} "${CMAKE_SOURCE_DIR}/${srcfile}")
|
||||
endforeach()
|
||||
set(MO_FILES)
|
||||
set(UPDATE_PO_TARGETS)
|
||||
foreach(pofile ${PO_FILES})
|
||||
get_filename_component(polang ${pofile} NAME_WE)
|
||||
|
||||
# Compile .po files in build directory (to binary .mo files)
|
||||
set(modir "${CMAKE_CURRENT_BINARY_DIR}/${polang}/LC_MESSAGES")
|
||||
file(MAKE_DIRECTORY "${modir}")
|
||||
set(mofile "${modir}/${PROJECT_NAME}.mo")
|
||||
add_custom_command(
|
||||
OUTPUT "${POT_FILE_PATH}"
|
||||
COMMAND "${XGETTEXT_EXECUTABLE}"
|
||||
ARGS -o "${POT_FILE_PATH}" --add-comments='TRANSLATORS:' --keyword='_' --keyword='weechat_gettext' --keyword='N_' --keyword='NG_:1,2' --keyword='weechat_ngettext:1,2' --no-location --from-code=UTF-8 --directory="${CMAKE_SOURCE_DIR}" --package-name='WeeChat' --package-version=${VERSION} --msgid-bugs-address=${BUGS_ADDRESS} --copyright-holder='NAME' ${SRC_FILES}
|
||||
DEPENDS ${POT_DEPENDS}
|
||||
COMMENT "Generating ${POT_FILE}"
|
||||
OUTPUT "${mofile}"
|
||||
COMMAND "${MSGMERGE_EXECUTABLE}" ARGS --quiet -o "${CMAKE_CURRENT_BINARY_DIR}/${pofile}" "${CMAKE_CURRENT_SOURCE_DIR}/${pofile}" ${POT_FILE_PATH}
|
||||
COMMAND "${MSGFMT_EXECUTABLE}" ARGS -o "${mofile}" "${CMAKE_CURRENT_BINARY_DIR}/${pofile}"
|
||||
COMMAND "${MSGFMT_EXECUTABLE}" ARGS -c --statistics --verbose --output-file=/dev/null "${CMAKE_CURRENT_BINARY_DIR}/${pofile}"
|
||||
DEPENDS "${POT_FILE_PATH}" "${CMAKE_CURRENT_SOURCE_DIR}/${pofile}"
|
||||
COMMENT "Compiling ${polang}.po"
|
||||
)
|
||||
|
||||
set(MO_FILES)
|
||||
set(UPDATE_PO_TARGETS)
|
||||
foreach(pofile ${PO_FILES})
|
||||
get_filename_component(polang ${pofile} NAME_WE)
|
||||
|
||||
# Compile .po files in build directory (to binary .mo files)
|
||||
set(modir "${CMAKE_CURRENT_BINARY_DIR}/${polang}/LC_MESSAGES")
|
||||
file(MAKE_DIRECTORY "${modir}")
|
||||
set(mofile "${modir}/${PROJECT_NAME}.mo")
|
||||
add_custom_command(
|
||||
OUTPUT "${mofile}"
|
||||
COMMAND "${MSGMERGE_EXECUTABLE}" ARGS --quiet -o "${CMAKE_CURRENT_BINARY_DIR}/${pofile}" "${CMAKE_CURRENT_SOURCE_DIR}/${pofile}" ${POT_FILE_PATH}
|
||||
COMMAND "${MSGFMT_EXECUTABLE}" ARGS -o "${mofile}" "${CMAKE_CURRENT_BINARY_DIR}/${pofile}"
|
||||
COMMAND "${MSGFMT_EXECUTABLE}" ARGS -c --statistics --verbose --output-file=/dev/null "${CMAKE_CURRENT_BINARY_DIR}/${pofile}"
|
||||
DEPENDS "${POT_FILE_PATH}" "${CMAKE_CURRENT_SOURCE_DIR}/${pofile}"
|
||||
COMMENT "Compiling ${polang}.po"
|
||||
)
|
||||
|
||||
# Update .po files in source directory (if needed)
|
||||
add_custom_target(
|
||||
update-${pofile}
|
||||
COMMAND "${MSGMERGE_EXECUTABLE}" --quiet --update --previous --backup=none "${CMAKE_CURRENT_SOURCE_DIR}/${pofile}" "${POT_FILE_PATH}"
|
||||
COMMENT "Updating ${polang}.po"
|
||||
)
|
||||
set(UPDATE_PO_TARGETS ${UPDATE_PO_TARGETS} update-${pofile})
|
||||
|
||||
install(FILES "${mofile}" DESTINATION "${LOCALEDIR}/${polang}/LC_MESSAGES")
|
||||
set(MO_FILES ${MO_FILES} ${mofile})
|
||||
endforeach()
|
||||
|
||||
add_custom_target(translations ALL DEPENDS ${MO_FILES})
|
||||
|
||||
# Update weechat.pot in source directory (if needed)
|
||||
# Update .po files in source directory (if needed)
|
||||
add_custom_target(
|
||||
update-${POT_FILE}
|
||||
COMMAND "${MSGMERGE_EXECUTABLE}" --quiet --update --backup=none "${CMAKE_CURRENT_SOURCE_DIR}/${POT_FILE}" "${POT_FILE_PATH}"
|
||||
COMMENT "Updating ${POT_FILE}"
|
||||
update-${pofile}
|
||||
COMMAND "${MSGMERGE_EXECUTABLE}" --quiet --update --previous --backup=none "${CMAKE_CURRENT_SOURCE_DIR}/${pofile}" "${POT_FILE_PATH}"
|
||||
COMMENT "Updating ${polang}.po"
|
||||
)
|
||||
set(UPDATE_PO_TARGETS ${UPDATE_PO_TARGETS} update-${pofile})
|
||||
|
||||
# Update all .po and weechat.pot in source directory (if needed)
|
||||
add_custom_target(update-po DEPENDS update-${POT_FILE} ${UPDATE_PO_TARGETS})
|
||||
install(FILES "${mofile}" DESTINATION "${LOCALEDIR}/${polang}/LC_MESSAGES")
|
||||
set(MO_FILES ${MO_FILES} ${mofile})
|
||||
endforeach()
|
||||
|
||||
endif()
|
||||
add_custom_target(translations ALL DEPENDS ${MO_FILES})
|
||||
|
||||
# Update weechat.pot in source directory (if needed)
|
||||
add_custom_target(
|
||||
update-${POT_FILE}
|
||||
COMMAND "${MSGMERGE_EXECUTABLE}" --quiet --update --backup=none "${CMAKE_CURRENT_SOURCE_DIR}/${POT_FILE}" "${POT_FILE_PATH}"
|
||||
COMMENT "Updating ${POT_FILE}"
|
||||
)
|
||||
|
||||
# Update all .po and weechat.pot in source directory (if needed)
|
||||
add_custom_target(update-po DEPENDS update-${POT_FILE} ${UPDATE_PO_TARGETS})
|
||||
|
||||
@@ -21,8 +21,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2023-06-03 21:06+0200\n"
|
||||
"PO-Revision-Date: 2023-05-01 20:23+0200\n"
|
||||
"POT-Creation-Date: 2023-10-30 23:09+0100\n"
|
||||
"PO-Revision-Date: 2023-06-25 00:48+0200\n"
|
||||
"Last-Translator: Ondřej Súkup <mimi.vx@gmail.com>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
"Language: cs\n"
|
||||
@@ -54,7 +54,7 @@ msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "End of command '%s', timeout reached (%.1fs)"
|
||||
msgstr "Konec příkazu '%s', vypršel časový limit (%.lfs)"
|
||||
msgstr "Konec příkazu '%s', vypršel časový limit (%.1fs)"
|
||||
|
||||
#, c-format
|
||||
msgid "System clock skew detected (%+ld seconds), reinitializing all timers"
|
||||
@@ -2043,6 +2043,10 @@ msgid ""
|
||||
"then k), and then press the key to bind: this will insert key name in "
|
||||
"command line.\n"
|
||||
"\n"
|
||||
"For some keys you might need to use /debug key, this displays the raw key "
|
||||
"code that can be used (for example the key ctrl+backspace could be \"ctrl-"
|
||||
"h\" or \"ctrl-?\", depending on your terminal and other settings).\n"
|
||||
"\n"
|
||||
"Modifiers allowed (in this order when multiple are used):\n"
|
||||
" meta- (alt key)\n"
|
||||
" ctrl- (control key)\n"
|
||||
@@ -3014,6 +3018,16 @@ msgstr ""
|
||||
msgid "names of filters"
|
||||
msgstr "jména filtrů"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "names of filters"
|
||||
msgid "names of disabled filters"
|
||||
msgstr "jména filtrů"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "names of filters"
|
||||
msgid "names of enabled filters"
|
||||
msgstr "jména filtrů"
|
||||
|
||||
msgid ""
|
||||
"commands (weechat and plugins); optional argument: prefix to add before the "
|
||||
"commands"
|
||||
@@ -4413,6 +4427,22 @@ msgstr "%sChyba: nemohu vytvořit soubor \"%s\""
|
||||
msgid "%sError writing configuration file \"%s\""
|
||||
msgstr "%sChyba při zápisu konfiguračního souboru \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: server %s%s%s has been copied to %s%s%s"
|
||||
msgid "%sFile %s has been backed up as %s"
|
||||
msgstr "%s: server %s%s%s byl zkopírován do %s%s%s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to load file \"%s\""
|
||||
msgid "%sError: unable to backup file %s"
|
||||
msgstr "%s%s: nemůžu načíst soubor \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sImportant: file %s has been updated from version %d to %d, it is not "
|
||||
"compatible and can not be loaded any more with any older version"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sWARNING: failed to read configuration file \"%s\" (%s)"
|
||||
msgstr "%sVAROVÁNÍ: selhalo čtení konfiguračního souboru \"%s\" (%s)"
|
||||
@@ -4437,14 +4467,16 @@ msgstr "%sUpozornění: %s, řádek %d: nevalidní syntaxe, chybí \"]\""
|
||||
msgid "%sWarning: %s, line %d: unknown section identifier (\"%s\")"
|
||||
msgstr "%sUpozornění: %s, řádek %d: neznámý identifikátor sekce (\"%s\")"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sWarning: %s, line %d: invalid config version: %s"
|
||||
msgstr "%sUpozornění: %s, řádek %d: nevalidní syntaxe, chybí \"]\""
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sError: %s, line %d: invalid config version: \"%s\" => rest of file is "
|
||||
"IGNORED, default options are used"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sWarning: %s, version read (%d) is newer than supported version (%d), "
|
||||
"options may be broken!"
|
||||
"%sError: %s, version read (%d) is newer than supported version (%d) => rest "
|
||||
"of file is IGNORED, default options are used"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
@@ -4506,6 +4538,11 @@ msgid ""
|
||||
"Error: unable to create a temporary home directory (using template: \"%s\")\n"
|
||||
msgstr "%s%s: nemohu vytvořit adresář pro logy (\"%s\")"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Environment variable \"%s\" is not defined"
|
||||
msgid "Error: environment variable \"HOME\" is not defined\n"
|
||||
msgstr "Proměnná prostředí \"%s\" není definována"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "Error: \"%s\" is not a directory\n"
|
||||
msgstr "Chyba: domovský adresář (%s) není adresářem\n"
|
||||
@@ -5855,7 +5892,7 @@ msgid ""
|
||||
" /exec -n ls -l /tmp\n"
|
||||
" /exec -sh -n ps xu | grep weechat\n"
|
||||
" /exec -n -norc url:https://pastebin.com/raw.php?i=xxxxxxxx\n"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/devel/"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/weechat/devel/"
|
||||
"weechat_user.en.html\n"
|
||||
" /exec -o uptime\n"
|
||||
" /exec -pipe \"/print Machine uptime:\" uptime\n"
|
||||
@@ -9191,6 +9228,10 @@ msgstr ""
|
||||
"když se změní status nepřítomnosti přezdívky (výsledek příkazu whois), "
|
||||
"například: \"notify_highlight\", \"notify_message\" or \"notify_private\""
|
||||
|
||||
msgid ""
|
||||
"open a private buffer on self message when capability echo-message is enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "close buffer when /part is issued on a channel"
|
||||
msgstr "zavřít buffer, když je na kanálu spuštěn /part"
|
||||
|
||||
@@ -11995,9 +12036,14 @@ msgid ""
|
||||
"set to \"authentication failed\" (0 = wait forever)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "address for bind (if empty, connection is possible on all interfaces, use "
|
||||
#| "\"127.0.0.1\" to allow connections from local machine only)"
|
||||
msgid ""
|
||||
"address for bind (if empty, connection is possible on all interfaces, use "
|
||||
"\"127.0.0.1\" to allow connections from local machine only)"
|
||||
"\"127.0.0.1\" to allow connections from local machine only with IPv4 and \"::"
|
||||
"ffff:127.0.0.1\" with IPv6)"
|
||||
msgstr ""
|
||||
"adresa, kterou napojit (pokud není uvedeno, je možné připojení na všech "
|
||||
"rozhranních, použijte \"127.0.0.1\" pro povolení připojení pouze z lokálního "
|
||||
@@ -13509,6 +13555,14 @@ msgstr "Seznam trigerů:"
|
||||
msgid "default triggers"
|
||||
msgstr "Seznam trigerů:"
|
||||
|
||||
#, fuzzy
|
||||
msgid "disabled triggers"
|
||||
msgstr "Seznam trigerů:"
|
||||
|
||||
#, fuzzy
|
||||
msgid "enabled triggers"
|
||||
msgstr "zapni podporu myši"
|
||||
|
||||
#, fuzzy
|
||||
msgid "options for triggers"
|
||||
msgstr "Seznam trigerů:"
|
||||
@@ -14126,8 +14180,3 @@ msgstr "%s%s: vypršel časový limit \"%s\" pro %s"
|
||||
#, c-format
|
||||
msgid "%s%s: unable to connect: unexpected error (%d)"
|
||||
msgstr "%s%s: nemohu se připojit\" neočekávaná chyba (%d)"
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "send message to a nick or channel"
|
||||
#~ msgid "send action message to a nick or channel"
|
||||
#~ msgstr "poslat zprávu přezdívce nebo kanálu"
|
||||
|
||||
@@ -26,8 +26,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2023-06-03 21:06+0200\n"
|
||||
"PO-Revision-Date: 2023-06-04 11:12+0200\n"
|
||||
"POT-Creation-Date: 2023-10-30 23:09+0100\n"
|
||||
"PO-Revision-Date: 2023-07-05 21:25+0200\n"
|
||||
"Last-Translator: Nils Görs <weechatter@arcor.de>\n"
|
||||
"Language-Team: German <kde-i18n-de@kde.org>\n"
|
||||
"Language: de_DE\n"
|
||||
@@ -2540,6 +2540,10 @@ msgid ""
|
||||
"then k), and then press the key to bind: this will insert key name in "
|
||||
"command line.\n"
|
||||
"\n"
|
||||
"For some keys you might need to use /debug key, this displays the raw key "
|
||||
"code that can be used (for example the key ctrl+backspace could be \"ctrl-"
|
||||
"h\" or \"ctrl-?\", depending on your terminal and other settings).\n"
|
||||
"\n"
|
||||
"Modifiers allowed (in this order when multiple are used):\n"
|
||||
" meta- (alt key)\n"
|
||||
" ctrl- (control key)\n"
|
||||
@@ -2611,6 +2615,11 @@ msgstr ""
|
||||
"damit die zu belegende Taste zu ermitteln. Durch diesen Schritt wird der "
|
||||
"benötigte Tasten-Code in die Befehlszeile übernommen.\n"
|
||||
"\n"
|
||||
"Für einige Tasten müssen Sie möglicherweise /debug key verwenden. Dadurch "
|
||||
"wird der Wert des Rohschlüssels angezeigt, der verwendet werden kann (zum "
|
||||
"Beispiel könnte die Taste Strg+Rücktaste \"ctrl-H\" sein \"ctrl-?\", "
|
||||
"abhängig von Ihrem Terminal und anderen Einstellungen).\n"
|
||||
"\n"
|
||||
"Zulässige Modifikatortasten (in dieser Reihenfolge, wenn mehrere verwendet "
|
||||
"werden):\n"
|
||||
" meta- (Alt-Taste)\n"
|
||||
@@ -3881,6 +3890,12 @@ msgstr ""
|
||||
msgid "names of filters"
|
||||
msgstr "Liste der Filter"
|
||||
|
||||
msgid "names of disabled filters"
|
||||
msgstr "Namen der deaktivierten Filter"
|
||||
|
||||
msgid "names of enabled filters"
|
||||
msgstr "Namen der aktivierten Filter"
|
||||
|
||||
msgid ""
|
||||
"commands (weechat and plugins); optional argument: prefix to add before the "
|
||||
"commands"
|
||||
@@ -5570,6 +5585,22 @@ msgid "%sError writing configuration file \"%s\""
|
||||
msgstr ""
|
||||
"%sEs ist ein Fehler beim Speichern der Konfigurationsdatei \"%s\" aufgetreten"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: server %s%s%s has been copied to %s%s%s"
|
||||
msgid "%sFile %s has been backed up as %s"
|
||||
msgstr "%s: Server %s%s%s wurde nach %s%s%s kopiert"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to load file \"%s\""
|
||||
msgid "%sError: unable to backup file %s"
|
||||
msgstr "%s%s: Kann die Datei \"%s\" nicht laden"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sImportant: file %s has been updated from version %d to %d, it is not "
|
||||
"compatible and can not be loaded any more with any older version"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sWARNING: failed to read configuration file \"%s\" (%s)"
|
||||
msgstr "%sWARNUNG: Konfigurationsdatei \"%s\" konnte nicht geladen werden (%s)"
|
||||
@@ -5595,16 +5626,21 @@ msgid "%sWarning: %s, line %d: unknown section identifier (\"%s\")"
|
||||
msgstr "%sWarnung: %s, Zeile %d: unbekannte Sektion (\"%s\")"
|
||||
|
||||
#, c-format
|
||||
msgid "%sWarning: %s, line %d: invalid config version: %s"
|
||||
msgstr "%sWarnung: %s, Zeile %d: ungültige Konfigurationsversion: %s"
|
||||
msgid ""
|
||||
"%sError: %s, line %d: invalid config version: \"%s\" => rest of file is "
|
||||
"IGNORED, default options are used"
|
||||
msgstr ""
|
||||
"%sFehler: %s, Zeile %d: Ungültige Konfigurationsversion: \"%s\" => Der Rest "
|
||||
"der Datei wird IGNORIERT, es werden Standardoptionen verwendet"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sWarning: %s, version read (%d) is newer than supported version (%d), "
|
||||
"options may be broken!"
|
||||
"%sError: %s, version read (%d) is newer than supported version (%d) => rest "
|
||||
"of file is IGNORED, default options are used"
|
||||
msgstr ""
|
||||
"%sWarnung: %s, verwendete Version (%d) ist neuer als die unterstützte "
|
||||
"Version (%d), Optionen sind möglicherweise defekt!"
|
||||
"%sFehler: %s, verwendete Version (%d) ist neuer als die unterstützte Version "
|
||||
"(%d) => Der Rest der Datei wird IGNORIERT, es werden Standardoptionen "
|
||||
"verwendet"
|
||||
|
||||
#, c-format
|
||||
msgid "%sWarning: %s, line %d: option outside section: %s"
|
||||
@@ -5673,6 +5709,11 @@ msgstr ""
|
||||
"Fehler: es kann kein temporäres Heimatverzeichnis angelegt werden (mit "
|
||||
"Befehl: \"%s\")\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Environment variable \"%s\" is not defined"
|
||||
msgid "Error: environment variable \"HOME\" is not defined\n"
|
||||
msgstr "Umgebungsvariable \"%s\" ist nicht definiert"
|
||||
|
||||
#, c-format
|
||||
msgid "Error: \"%s\" is not a directory\n"
|
||||
msgstr "Fehler: \"%s\" ist kein Verzeichnis\n"
|
||||
@@ -7264,7 +7305,7 @@ msgid ""
|
||||
" /exec -n ls -l /tmp\n"
|
||||
" /exec -sh -n ps xu | grep weechat\n"
|
||||
" /exec -n -norc url:https://pastebin.com/raw.php?i=xxxxxxxx\n"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/devel/"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/weechat/devel/"
|
||||
"weechat_user.en.html\n"
|
||||
" /exec -o uptime\n"
|
||||
" /exec -pipe \"/print Machine uptime:\" uptime\n"
|
||||
@@ -7363,7 +7404,7 @@ msgstr ""
|
||||
" /exec -n ls -l /tmp\n"
|
||||
" /exec -sh -n ps xu | grep weechat\n"
|
||||
" /exec -n -norc url:https://pastebin.com/raw.php?i=xxxxxxxx\n"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/devel/"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/weechat/devel/"
|
||||
"weechat_user.en.html\n"
|
||||
" /exec -o uptime\n"
|
||||
" /exec -pipe \"/print Machine uptime:\" uptime\n"
|
||||
@@ -11171,7 +11212,6 @@ msgstr "zeigt den Host innerhalb einer join Nachricht an"
|
||||
msgid "display host in join messages from local client"
|
||||
msgstr "zeigt den Host innerhalb einer join Nachrichten des lokalen Client an"
|
||||
|
||||
#| msgid "display host in join messages"
|
||||
msgid "display host in notice messages"
|
||||
msgstr "zeigt den Host innerhalb einer notice Nachricht an"
|
||||
|
||||
@@ -11425,6 +11465,10 @@ msgstr ""
|
||||
"(Rückgabe durch Befehl whois), zum Beispiel: \"notify_message\", "
|
||||
"\"notify_private\" oder \"notify_highlight\""
|
||||
|
||||
msgid ""
|
||||
"open a private buffer on self message when capability echo-message is enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "close buffer when /part is issued on a channel"
|
||||
msgstr "schließt den Buffer wenn \"/part\" im Kanal ausgeführt wird"
|
||||
|
||||
@@ -14453,11 +14497,13 @@ msgstr ""
|
||||
|
||||
msgid ""
|
||||
"address for bind (if empty, connection is possible on all interfaces, use "
|
||||
"\"127.0.0.1\" to allow connections from local machine only)"
|
||||
"\"127.0.0.1\" to allow connections from local machine only with IPv4 and \"::"
|
||||
"ffff:127.0.0.1\" with IPv6)"
|
||||
msgstr ""
|
||||
"Adresse für Bind (falls nicht gesetzt ist eine Verbindung zu allen "
|
||||
"Interfaces möglich. Wird die Adresse \"127.0.0.1\" genutzt kann nur eine "
|
||||
"Verbindung mit dem lokalen Rechner hergestellt werden)"
|
||||
"Adresse für bind (falls nicht gesetzt, ist die Verbindung auf allen "
|
||||
"Schnittstellen möglich. Wird die Adresse \"127.0.0.1\" verwendet, können "
|
||||
"Verbindungen von einem lokalen Computer über IPv4 genutzt werden und mittels "
|
||||
"\"ffff:127.0.0.1\" via IPv6)"
|
||||
|
||||
msgid ""
|
||||
"delay for purging disconnected clients (in minutes, 0 = purge clients "
|
||||
@@ -16011,8 +16057,7 @@ msgstr "verwaltet Trigger, das Schweizer Armeemesser für WeeChat"
|
||||
|
||||
msgid ""
|
||||
"list|listfull|listdefault || add|addoff|addreplace <name> <hook> "
|
||||
"[\"<arguments>\" [\"<conditions>\" [\"<regex>\" [\"<command>\" [\"<"
|
||||
"return_code>\" [\"<post_action>\"]]]]]] "
|
||||
"[\"<arguments>\" [\"<conditions>\" [\"<regex>\" [\"<command>\" [\"<return_code>\" [\"<post_action>\"]]]]]] "
|
||||
"|| addinput [<hook>] || input|output|recreate <name> || set <name> <option> "
|
||||
"<value> || rename|copy <name> <new_name> || enable|disable|toggle [<name>|-"
|
||||
"all [<name>...]] || restart <name>|-all [<name>...] || show <name> || del "
|
||||
@@ -16020,8 +16065,7 @@ msgid ""
|
||||
"monitor [<filter>]"
|
||||
msgstr ""
|
||||
"list|listfull|listdefault || add|addoff|addreplace <name> <hook> "
|
||||
"[\"<arguments>\" [\"<conditions>\" [\"<regex>\" [\"<command>\" [\"<"
|
||||
"return_code>\" [\"<post_action>\"]]]]]] "
|
||||
"[\"<arguments>\" [\"<conditions>\" [\"<regex>\" [\"<command>\" [\"<return_code>\" [\"<post_action>\"]]]]]] "
|
||||
"|| addinput [<hook>] || input|output|recreate <name> || set <name> <option> "
|
||||
"<value> || rename|copy <name> <new_name> || enable|disable|toggle [<name>|-"
|
||||
"all [<name>...]] || restart <name>|-all [<name>...] || show <name> || del "
|
||||
@@ -16239,6 +16283,12 @@ msgstr "trigger"
|
||||
msgid "default triggers"
|
||||
msgstr "voreingestellte Trigger"
|
||||
|
||||
msgid "disabled triggers"
|
||||
msgstr "deaktivierte Trigger"
|
||||
|
||||
msgid "enabled triggers"
|
||||
msgstr "aktivierte Trigger"
|
||||
|
||||
msgid "options for triggers"
|
||||
msgstr "Einstellungen für Trigger"
|
||||
|
||||
@@ -16914,8 +16964,3 @@ msgstr "%s%s: Zeitüberschreitung für \"%s\" mit %s"
|
||||
msgid "%s%s: unable to connect: unexpected error (%d)"
|
||||
msgstr ""
|
||||
"%s%s: Verbindung konnte nicht hergestellt werden: unerwarteter Fehler (%d)"
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "send message to a nick or channel"
|
||||
#~ msgid "send action message to a nick or channel"
|
||||
#~ msgstr "Nachricht an Nick/Kanal verschicken"
|
||||
|
||||
@@ -22,8 +22,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2023-06-03 21:06+0200\n"
|
||||
"PO-Revision-Date: 2023-05-01 20:23+0200\n"
|
||||
"POT-Creation-Date: 2023-10-30 23:09+0100\n"
|
||||
"PO-Revision-Date: 2023-06-17 11:47+0200\n"
|
||||
"Last-Translator: Santiago Forero <santiago@forero.xyz>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
"Language: es\n"
|
||||
@@ -2537,6 +2537,10 @@ msgid ""
|
||||
"then k), and then press the key to bind: this will insert key name in "
|
||||
"command line.\n"
|
||||
"\n"
|
||||
"For some keys you might need to use /debug key, this displays the raw key "
|
||||
"code that can be used (for example the key ctrl+backspace could be \"ctrl-"
|
||||
"h\" or \"ctrl-?\", depending on your terminal and other settings).\n"
|
||||
"\n"
|
||||
"Modifiers allowed (in this order when multiple are used):\n"
|
||||
" meta- (alt key)\n"
|
||||
" ctrl- (control key)\n"
|
||||
@@ -3565,6 +3569,16 @@ msgstr ""
|
||||
msgid "names of filters"
|
||||
msgstr "nombre de los filtros"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "names of filters"
|
||||
msgid "names of disabled filters"
|
||||
msgstr "nombre de los filtros"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "names of filters"
|
||||
msgid "names of enabled filters"
|
||||
msgstr "nombre de los filtros"
|
||||
|
||||
msgid ""
|
||||
"commands (weechat and plugins); optional argument: prefix to add before the "
|
||||
"commands"
|
||||
@@ -5038,6 +5052,22 @@ msgstr "%sError: no es posible crear el archivo \"%s\""
|
||||
msgid "%sError writing configuration file \"%s\""
|
||||
msgstr "%sError al escribir el archivo de configuración \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: server %s%s%s has been copied to %s%s%s"
|
||||
msgid "%sFile %s has been backed up as %s"
|
||||
msgstr "%s: servidor %s%s%s copiado como %s%s%s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to load file \"%s\""
|
||||
msgid "%sError: unable to backup file %s"
|
||||
msgstr "%s%s: no es posible cargar el archivo \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sImportant: file %s has been updated from version %d to %d, it is not "
|
||||
"compatible and can not be loaded any more with any older version"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sWARNING: failed to read configuration file \"%s\" (%s)"
|
||||
msgstr "Guardando archivo de configuración %s %s"
|
||||
@@ -5061,15 +5091,16 @@ msgid "%sWarning: %s, line %d: unknown section identifier (\"%s\")"
|
||||
msgstr ""
|
||||
"%sAtención: %s, línea %d: identificador de sección desconocido (\"%s\")"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sWarning: %s, line %d: invalid value for option: %s"
|
||||
msgid "%sWarning: %s, line %d: invalid config version: %s"
|
||||
msgstr "%sAtención: %s, línea %d: valor inválido para la opción: %s"
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sError: %s, line %d: invalid config version: \"%s\" => rest of file is "
|
||||
"IGNORED, default options are used"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sWarning: %s, version read (%d) is newer than supported version (%d), "
|
||||
"options may be broken!"
|
||||
"%sError: %s, version read (%d) is newer than supported version (%d) => rest "
|
||||
"of file is IGNORED, default options are used"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
@@ -5132,6 +5163,11 @@ msgid ""
|
||||
"Error: unable to create a temporary home directory (using template: \"%s\")\n"
|
||||
msgstr "%s%s: imposible crear directorio para registros (\"%s\")"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Environment variable \"%s\" is not defined"
|
||||
msgid "Error: environment variable \"HOME\" is not defined\n"
|
||||
msgstr "Variable \"%s\" no definida"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "Error: \"%s\" is not a directory\n"
|
||||
msgstr "Error: home (%s) no es un directorio\n"
|
||||
@@ -6480,7 +6516,7 @@ msgid ""
|
||||
" /exec -n ls -l /tmp\n"
|
||||
" /exec -sh -n ps xu | grep weechat\n"
|
||||
" /exec -n -norc url:https://pastebin.com/raw.php?i=xxxxxxxx\n"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/devel/"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/weechat/devel/"
|
||||
"weechat_user.en.html\n"
|
||||
" /exec -o uptime\n"
|
||||
" /exec -pipe \"/print Machine uptime:\" uptime\n"
|
||||
@@ -9891,6 +9927,10 @@ msgstr ""
|
||||
"cuando un apodo cambia su estado de ausencia (resultado del comando whois), "
|
||||
"por ejemplo: \"notify_highlight\", \"notify_message\" o \"notify_private\""
|
||||
|
||||
msgid ""
|
||||
"open a private buffer on self message when capability echo-message is enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "close buffer when /part is issued on a channel"
|
||||
msgstr "cerrar el buffer cuando /part es usado en un canal"
|
||||
|
||||
@@ -12746,9 +12786,14 @@ msgid ""
|
||||
"set to \"authentication failed\" (0 = wait forever)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "address for bind (if empty, connection is possible on all interfaces, use "
|
||||
#| "\"127.0.0.1\" to allow connections from local machine only)"
|
||||
msgid ""
|
||||
"address for bind (if empty, connection is possible on all interfaces, use "
|
||||
"\"127.0.0.1\" to allow connections from local machine only)"
|
||||
"\"127.0.0.1\" to allow connections from local machine only with IPv4 and \"::"
|
||||
"ffff:127.0.0.1\" with IPv6)"
|
||||
msgstr ""
|
||||
"dirección a escuchar (si está vacío, conexión es posible en todas las "
|
||||
"interfaces, usa \"127.0.0.1\" para permitir conexiones de la máquina local "
|
||||
@@ -14176,6 +14221,14 @@ msgstr ""
|
||||
msgid "default triggers"
|
||||
msgstr "Lista de alias:"
|
||||
|
||||
#, fuzzy
|
||||
msgid "disabled triggers"
|
||||
msgstr "Lista de alias:"
|
||||
|
||||
#, fuzzy
|
||||
msgid "enabled triggers"
|
||||
msgstr "habilitar soporte para ratón"
|
||||
|
||||
#, fuzzy
|
||||
msgid "options for triggers"
|
||||
msgstr "opciones para proxies"
|
||||
@@ -14798,8 +14851,3 @@ msgstr "%s%s: tiempo de espera máximo para \"%s\" con %s"
|
||||
#, c-format
|
||||
msgid "%s%s: unable to connect: unexpected error (%d)"
|
||||
msgstr "%s%s: no es posible conectarse: error (%d)"
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "send message to a nick or channel"
|
||||
#~ msgid "send action message to a nick or channel"
|
||||
#~ msgstr "envía mensaje a un usuario o canal"
|
||||
|
||||
@@ -21,8 +21,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2023-06-03 21:06+0200\n"
|
||||
"PO-Revision-Date: 2023-06-03 21:09+0200\n"
|
||||
"POT-Creation-Date: 2023-10-30 23:09+0100\n"
|
||||
"PO-Revision-Date: 2023-10-30 23:23+0100\n"
|
||||
"Last-Translator: Sébastien Helleu <flashcode@flashtux.org>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
"Language: fr\n"
|
||||
@@ -2491,6 +2491,10 @@ msgid ""
|
||||
"then k), and then press the key to bind: this will insert key name in "
|
||||
"command line.\n"
|
||||
"\n"
|
||||
"For some keys you might need to use /debug key, this displays the raw key "
|
||||
"code that can be used (for example the key ctrl+backspace could be \"ctrl-"
|
||||
"h\" or \"ctrl-?\", depending on your terminal and other settings).\n"
|
||||
"\n"
|
||||
"Modifiers allowed (in this order when multiple are used):\n"
|
||||
" meta- (alt key)\n"
|
||||
" ctrl- (control key)\n"
|
||||
@@ -2558,6 +2562,11 @@ msgstr ""
|
||||
"d'utiliser la touche alt+k (ou Échap puis k), et puis de presser la touche à "
|
||||
"associer : cela insère le code de la touche dans la ligne de commande.\n"
|
||||
"\n"
|
||||
"Pour certaines touches vous pourriez avoir besoin d'utiliser /debug key, "
|
||||
"cela affiche le code brut de la touche qui peut être utilisé (par exemple "
|
||||
"ctrl+backspace pourrait être \"ctrl-h\" ou \"ctrl-?\", selon votre terminal "
|
||||
"et d'autres paramètres).\n"
|
||||
"\n"
|
||||
"Modificateurs autorisés (dans cet ordre lorsque plusieurs sont utilisés) :\n"
|
||||
" meta- (touche alt)\n"
|
||||
" ctrl- (touche control)\n"
|
||||
@@ -3791,6 +3800,12 @@ msgstr ""
|
||||
msgid "names of filters"
|
||||
msgstr "noms des filtres"
|
||||
|
||||
msgid "names of disabled filters"
|
||||
msgstr "noms des filtres désactivés"
|
||||
|
||||
msgid "names of enabled filters"
|
||||
msgstr "noms des filtres activés"
|
||||
|
||||
msgid ""
|
||||
"commands (weechat and plugins); optional argument: prefix to add before the "
|
||||
"commands"
|
||||
@@ -3926,7 +3941,7 @@ msgstr "Ancienne touche convertie : \"%s\" => \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid "Command converted for key \"%s\": \"%s\" => \"%s\""
|
||||
msgstr "Commande convertie pour la touche\"%s\" : \"%s\" => \"%s\""
|
||||
msgstr "Commande convertie pour la touche \"%s\" : \"%s\" => \"%s\""
|
||||
|
||||
msgid "debug level for plugin (\"core\" for WeeChat core)"
|
||||
msgstr "niveau de debug pour l'extension (\"core\" pour le cœur de WeeChat)"
|
||||
@@ -5437,6 +5452,22 @@ msgstr "%sImpossible de créer le fichier \"%s\""
|
||||
msgid "%sError writing configuration file \"%s\""
|
||||
msgstr "%sErreur d'écriture du fichier de configuration \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid "%sFile %s has been backed up as %s"
|
||||
msgstr "%sLe fichier %s a été sauvegardé sous le nom %s"
|
||||
|
||||
#, c-format
|
||||
msgid "%sError: unable to backup file %s"
|
||||
msgstr "%sErreur : impossible de sauvegarder le fichier %s"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sImportant: file %s has been updated from version %d to %d, it is not "
|
||||
"compatible and can not be loaded any more with any older version"
|
||||
msgstr ""
|
||||
"%sImportant : le fichier %s a été mis à jour de la version %d à %d, il n'est "
|
||||
"plus compatible et ne peut plus être chargé avec toute version plus ancienne"
|
||||
|
||||
#, c-format
|
||||
msgid "%sWARNING: failed to read configuration file \"%s\" (%s)"
|
||||
msgstr "%sATTENTION : échec de lecture du fichier de configuration \"%s\" (%s)"
|
||||
@@ -5463,16 +5494,20 @@ msgid "%sWarning: %s, line %d: unknown section identifier (\"%s\")"
|
||||
msgstr "%sAttention : %s, ligne %d : section inconnue (\"%s\")"
|
||||
|
||||
#, c-format
|
||||
msgid "%sWarning: %s, line %d: invalid config version: %s"
|
||||
msgstr "%sAttention : %s, ligne %d : version de configuration invalide : %s"
|
||||
msgid ""
|
||||
"%sError: %s, line %d: invalid config version: \"%s\" => rest of file is "
|
||||
"IGNORED, default options are used"
|
||||
msgstr ""
|
||||
"%sErreur : %s, linge %d : version de configuration invalide : \"%s\" => le "
|
||||
"reste du fichier est IGNORÉ, les options par défaut sont utilisées"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sWarning: %s, version read (%d) is newer than supported version (%d), "
|
||||
"options may be broken!"
|
||||
"%sError: %s, version read (%d) is newer than supported version (%d) => rest "
|
||||
"of file is IGNORED, default options are used"
|
||||
msgstr ""
|
||||
"%sAttention : %s, la version lue (%d) est plus récente que la version "
|
||||
"supportée (%d), les options peuvent être cassées !"
|
||||
"%sErreur : %s, la version lue (%d) est plus récente que la version supportée "
|
||||
"(%d) => le reste du fichier est IGNORÉ, les options par défaut sont utilisées"
|
||||
|
||||
#, c-format
|
||||
msgid "%sWarning: %s, line %d: option outside section: %s"
|
||||
@@ -5542,6 +5577,9 @@ msgstr ""
|
||||
"Erreur : impossible de créer le répertoire de base temporaire (en utilisant "
|
||||
"le modèle : \"%s\")\n"
|
||||
|
||||
msgid "Error: environment variable \"HOME\" is not defined\n"
|
||||
msgstr "Erreur : la variable d'environnement \"HOME\" n'est pas définie\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Error: \"%s\" is not a directory\n"
|
||||
msgstr "Erreur : \"%s\" n'est pas un répertoire\n"
|
||||
@@ -7115,7 +7153,7 @@ msgid ""
|
||||
" /exec -n ls -l /tmp\n"
|
||||
" /exec -sh -n ps xu | grep weechat\n"
|
||||
" /exec -n -norc url:https://pastebin.com/raw.php?i=xxxxxxxx\n"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/devel/"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/weechat/devel/"
|
||||
"weechat_user.en.html\n"
|
||||
" /exec -o uptime\n"
|
||||
" /exec -pipe \"/print Machine uptime:\" uptime\n"
|
||||
@@ -7208,7 +7246,7 @@ msgstr ""
|
||||
" /exec -n ls -l /tmp\n"
|
||||
" /exec -sh -n ps xu | grep weechat\n"
|
||||
" /exec -n -norc url:https://pastebin.com/raw.php?i=xxxxxxxx\n"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/devel/"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/weechat/devel/"
|
||||
"weechat_user.en.html\n"
|
||||
" /exec -o uptime\n"
|
||||
" /exec -pipe \"/print Durée de fonctionnement de la machine :\" uptime\n"
|
||||
@@ -11207,6 +11245,12 @@ msgstr ""
|
||||
"de la commande whois), par exemple : \"notify_message\", \"notify_private\" "
|
||||
"ou \"notify_highlight\""
|
||||
|
||||
msgid ""
|
||||
"open a private buffer on self message when capability echo-message is enabled"
|
||||
msgstr ""
|
||||
"ouvrir un tampon privé sur son propre message quand la capacité echo-message "
|
||||
"est activée"
|
||||
|
||||
msgid "close buffer when /part is issued on a channel"
|
||||
msgstr "fermer le tampon lorsque /part est exécuté sur un canal"
|
||||
|
||||
@@ -14180,11 +14224,12 @@ msgstr ""
|
||||
|
||||
msgid ""
|
||||
"address for bind (if empty, connection is possible on all interfaces, use "
|
||||
"\"127.0.0.1\" to allow connections from local machine only)"
|
||||
"\"127.0.0.1\" to allow connections from local machine only with IPv4 and \"::"
|
||||
"ffff:127.0.0.1\" with IPv6)"
|
||||
msgstr ""
|
||||
"adresse pour le bind (si vide, la connexion est possible sur toutes les "
|
||||
"interfaces, utiliser \"127.0.0.1\" pour autoriser les connections depuis la "
|
||||
"machine locale seulement)"
|
||||
"machine locale seulement avec IPv4 et \"::ffff:127.0.0.1\" avec IPv6)"
|
||||
|
||||
msgid ""
|
||||
"delay for purging disconnected clients (in minutes, 0 = purge clients "
|
||||
@@ -15925,6 +15970,12 @@ msgstr "triggers"
|
||||
msgid "default triggers"
|
||||
msgstr "triggers par défaut"
|
||||
|
||||
msgid "disabled triggers"
|
||||
msgstr "triggers désactivés"
|
||||
|
||||
msgid "enabled triggers"
|
||||
msgstr "triggers activés"
|
||||
|
||||
msgid "options for triggers"
|
||||
msgstr "options pour les triggers"
|
||||
|
||||
|
||||
@@ -20,8 +20,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2023-06-03 21:06+0200\n"
|
||||
"PO-Revision-Date: 2023-05-01 20:23+0200\n"
|
||||
"POT-Creation-Date: 2023-10-30 23:09+0100\n"
|
||||
"PO-Revision-Date: 2023-06-17 11:47+0200\n"
|
||||
"Last-Translator: Andras Voroskoi <voroskoi@frugalware.org>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
"Language: hu\n"
|
||||
@@ -1868,6 +1868,10 @@ msgid ""
|
||||
"then k), and then press the key to bind: this will insert key name in "
|
||||
"command line.\n"
|
||||
"\n"
|
||||
"For some keys you might need to use /debug key, this displays the raw key "
|
||||
"code that can be used (for example the key ctrl+backspace could be \"ctrl-"
|
||||
"h\" or \"ctrl-?\", depending on your terminal and other settings).\n"
|
||||
"\n"
|
||||
"Modifiers allowed (in this order when multiple are used):\n"
|
||||
" meta- (alt key)\n"
|
||||
" ctrl- (control key)\n"
|
||||
@@ -2657,6 +2661,14 @@ msgstr ""
|
||||
msgid "names of filters"
|
||||
msgstr "Aliaszok listája:\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "names of disabled filters"
|
||||
msgstr "Aliaszok listája:\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "names of enabled filters"
|
||||
msgstr "Aliaszok listája:\n"
|
||||
|
||||
msgid ""
|
||||
"commands (weechat and plugins); optional argument: prefix to add before the "
|
||||
"commands"
|
||||
@@ -3960,6 +3972,20 @@ msgstr "%s nem sikerült a \"%s\" fájlt létrehozni\n"
|
||||
msgid "%sError writing configuration file \"%s\""
|
||||
msgstr "szerver konfigurációs fájljának újraolvastatása"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sFile %s has been backed up as %s"
|
||||
msgstr "A %s%s%s szerver másolva lett %s%s néven\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sError: unable to backup file %s"
|
||||
msgstr "Nem sikerült a(z) \"%s\" naplófájlt írni\n"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sImportant: file %s has been updated from version %d to %d, it is not "
|
||||
"compatible and can not be loaded any more with any older version"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sWARNING: failed to read configuration file \"%s\" (%s)"
|
||||
msgstr "beállítások mentése kilépéskor"
|
||||
@@ -3982,14 +4008,16 @@ msgstr "%s %s, %d. sor: érvénytelen szintaxis, hiányzó \"]\"\n"
|
||||
msgid "%sWarning: %s, line %d: unknown section identifier (\"%s\")"
|
||||
msgstr "%s %s, %d. sor: ismeretlen csoportazonosító (\"%s\")\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sWarning: %s, line %d: invalid config version: %s"
|
||||
msgstr "%s %s, %d. sor: érvénytelen opció: \"%s\"\n"
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sError: %s, line %d: invalid config version: \"%s\" => rest of file is "
|
||||
"IGNORED, default options are used"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sWarning: %s, version read (%d) is newer than supported version (%d), "
|
||||
"options may be broken!"
|
||||
"%sError: %s, version read (%d) is newer than supported version (%d) => rest "
|
||||
"of file is IGNORED, default options are used"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
@@ -4052,6 +4080,10 @@ msgid ""
|
||||
"Error: unable to create a temporary home directory (using template: \"%s\")\n"
|
||||
msgstr "%s nem sikerült a szervert létrehozni\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Error: environment variable \"HOME\" is not defined\n"
|
||||
msgstr " . típus: szám\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "Error: \"%s\" is not a directory\n"
|
||||
msgstr "%s nem sikerült a \"%s\" könyvtárat létrehozni\n"
|
||||
@@ -5371,7 +5403,7 @@ msgid ""
|
||||
" /exec -n ls -l /tmp\n"
|
||||
" /exec -sh -n ps xu | grep weechat\n"
|
||||
" /exec -n -norc url:https://pastebin.com/raw.php?i=xxxxxxxx\n"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/devel/"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/weechat/devel/"
|
||||
"weechat_user.en.html\n"
|
||||
" /exec -o uptime\n"
|
||||
" /exec -pipe \"/print Machine uptime:\" uptime\n"
|
||||
@@ -8652,6 +8684,10 @@ msgid ""
|
||||
"\"notify_message\", \"notify_private\" or \"notify_highlight\""
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"open a private buffer on self message when capability echo-message is enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "close buffer when /part is issued on a channel"
|
||||
msgstr ""
|
||||
|
||||
@@ -11382,7 +11418,8 @@ msgstr ""
|
||||
|
||||
msgid ""
|
||||
"address for bind (if empty, connection is possible on all interfaces, use "
|
||||
"\"127.0.0.1\" to allow connections from local machine only)"
|
||||
"\"127.0.0.1\" to allow connections from local machine only with IPv4 and \"::"
|
||||
"ffff:127.0.0.1\" with IPv6)"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
@@ -12776,6 +12813,14 @@ msgstr ""
|
||||
msgid "default triggers"
|
||||
msgstr "Aliaszok listája:\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "disabled triggers"
|
||||
msgstr "Aliaszok listája:\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "enabled triggers"
|
||||
msgstr "Aliaszok listája:\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "options for triggers"
|
||||
msgstr "Aliaszok listája:\n"
|
||||
@@ -13396,8 +13441,3 @@ msgstr "%s hiányzó argumentum a(z) \"%s\" opciónak\n"
|
||||
#, fuzzy, c-format
|
||||
msgid "%s%s: unable to connect: unexpected error (%d)"
|
||||
msgstr "%s DCC: nem sikerült kapcsolódni a küldőhöz\n"
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "send message to a nick or channel"
|
||||
#~ msgid "send action message to a nick or channel"
|
||||
#~ msgstr "üzenet küldése egy felhasználónak vagy szobának"
|
||||
|
||||
@@ -20,8 +20,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2023-06-03 21:06+0200\n"
|
||||
"PO-Revision-Date: 2023-05-01 20:23+0200\n"
|
||||
"POT-Creation-Date: 2023-10-30 23:09+0100\n"
|
||||
"PO-Revision-Date: 2023-06-17 11:47+0200\n"
|
||||
"Last-Translator: Esteban I. Ruiz Moreno <exio4.com@gmail.com>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
"Language: it\n"
|
||||
@@ -2125,6 +2125,10 @@ msgid ""
|
||||
"then k), and then press the key to bind: this will insert key name in "
|
||||
"command line.\n"
|
||||
"\n"
|
||||
"For some keys you might need to use /debug key, this displays the raw key "
|
||||
"code that can be used (for example the key ctrl+backspace could be \"ctrl-"
|
||||
"h\" or \"ctrl-?\", depending on your terminal and other settings).\n"
|
||||
"\n"
|
||||
"Modifiers allowed (in this order when multiple are used):\n"
|
||||
" meta- (alt key)\n"
|
||||
" ctrl- (control key)\n"
|
||||
@@ -3170,6 +3174,16 @@ msgstr ""
|
||||
msgid "names of filters"
|
||||
msgstr "nomi dei filtri"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "names of filters"
|
||||
msgid "names of disabled filters"
|
||||
msgstr "nomi dei filtri"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "names of filters"
|
||||
msgid "names of enabled filters"
|
||||
msgstr "nomi dei filtri"
|
||||
|
||||
msgid ""
|
||||
"commands (weechat and plugins); optional argument: prefix to add before the "
|
||||
"commands"
|
||||
@@ -4675,6 +4689,22 @@ msgstr "%sErrore: impossibile creare il file \"%s\""
|
||||
msgid "%sError writing configuration file \"%s\""
|
||||
msgstr "%sErrore: impossibile scrivere sul file di configurazione \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: server %s%s%s has been copied to %s%s%s"
|
||||
msgid "%sFile %s has been backed up as %s"
|
||||
msgstr "%s: il server %s%s%s è stato copiato in %s%s%s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to load file \"%s\""
|
||||
msgid "%sError: unable to backup file %s"
|
||||
msgstr "%s%s: impossibile caricare il file \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sImportant: file %s has been updated from version %d to %d, it is not "
|
||||
"compatible and can not be loaded any more with any older version"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sWARNING: failed to read configuration file \"%s\" (%s)"
|
||||
msgstr "Salvataggio del file di configurazione %s %s"
|
||||
@@ -4698,15 +4728,16 @@ msgid "%sWarning: %s, line %d: unknown section identifier (\"%s\")"
|
||||
msgstr ""
|
||||
"%sAttenzione: %s, riga %d: identificatore di sezione sconosciuto (\"%s\")"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sWarning: %s, line %d: invalid value for option: %s"
|
||||
msgid "%sWarning: %s, line %d: invalid config version: %s"
|
||||
msgstr "%sAttenzione: %s, riga %d: valore non valido per l'opzione: %s"
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sError: %s, line %d: invalid config version: \"%s\" => rest of file is "
|
||||
"IGNORED, default options are used"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sWarning: %s, version read (%d) is newer than supported version (%d), "
|
||||
"options may be broken!"
|
||||
"%sError: %s, version read (%d) is newer than supported version (%d) => rest "
|
||||
"of file is IGNORED, default options are used"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
@@ -4769,6 +4800,10 @@ msgid ""
|
||||
"Error: unable to create a temporary home directory (using template: \"%s\")\n"
|
||||
msgstr "%s%s: impossibile creare la directory per i log (\"%s\")"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Error: environment variable \"HOME\" is not defined\n"
|
||||
msgstr "Variabili"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "Error: \"%s\" is not a directory\n"
|
||||
msgstr "Errore: home (%s) non è una directory\n"
|
||||
@@ -6174,7 +6209,7 @@ msgid ""
|
||||
" /exec -n ls -l /tmp\n"
|
||||
" /exec -sh -n ps xu | grep weechat\n"
|
||||
" /exec -n -norc url:https://pastebin.com/raw.php?i=xxxxxxxx\n"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/devel/"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/weechat/devel/"
|
||||
"weechat_user.en.html\n"
|
||||
" /exec -o uptime\n"
|
||||
" /exec -pipe \"/print Machine uptime:\" uptime\n"
|
||||
@@ -9616,6 +9651,10 @@ msgstr ""
|
||||
"whois), ad esempio: \"notify_message\", \"notify_private\" o "
|
||||
"\"notify_highlight\""
|
||||
|
||||
msgid ""
|
||||
"open a private buffer on self message when capability echo-message is enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "close buffer when /part is issued on a channel"
|
||||
msgstr "chiude buffer quando viene digitato /part nel canale"
|
||||
|
||||
@@ -12481,9 +12520,14 @@ msgid ""
|
||||
"set to \"authentication failed\" (0 = wait forever)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "address for bind (if empty, connection is possible on all interfaces, use "
|
||||
#| "\"127.0.0.1\" to allow connections from local machine only)"
|
||||
msgid ""
|
||||
"address for bind (if empty, connection is possible on all interfaces, use "
|
||||
"\"127.0.0.1\" to allow connections from local machine only)"
|
||||
"\"127.0.0.1\" to allow connections from local machine only with IPv4 and \"::"
|
||||
"ffff:127.0.0.1\" with IPv6)"
|
||||
msgstr ""
|
||||
"indirizzo per l'associazione (se vuoto, la connessione è possibile su tutte "
|
||||
"le interfacce, usare \"127.0.0.1\" per consentire le connessioni solo dalla "
|
||||
@@ -13953,6 +13997,14 @@ msgstr ""
|
||||
msgid "default triggers"
|
||||
msgstr "Elenco degli alias:"
|
||||
|
||||
#, fuzzy
|
||||
msgid "disabled triggers"
|
||||
msgstr "Elenco degli alias:"
|
||||
|
||||
#, fuzzy
|
||||
msgid "enabled triggers"
|
||||
msgstr "abilita il supporto del mouse"
|
||||
|
||||
#, fuzzy
|
||||
msgid "options for triggers"
|
||||
msgstr "opzioni per i proxy"
|
||||
@@ -14570,8 +14622,3 @@ msgstr "%s%s: timeout per \"%s\" con %s"
|
||||
#, fuzzy, c-format
|
||||
msgid "%s%s: unable to connect: unexpected error (%d)"
|
||||
msgstr "%s%s: impossibile connettersi al mittente"
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "send message to a nick or channel"
|
||||
#~ msgid "send action message to a nick or channel"
|
||||
#~ msgstr "invia un messaggio ad un nick o a un canale"
|
||||
|
||||
@@ -20,8 +20,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2023-06-03 21:06+0200\n"
|
||||
"PO-Revision-Date: 2023-05-01 20:23+0200\n"
|
||||
"POT-Creation-Date: 2023-10-30 23:09+0100\n"
|
||||
"PO-Revision-Date: 2023-06-17 11:47+0200\n"
|
||||
"Last-Translator: AYANOKOUZI, Ryuunosuke <i38w7i3@yahoo.co.jp>\n"
|
||||
"Language-Team: Japanese <https://github.com/l/weechat/tree/master/"
|
||||
"translation/ja_JP>\n"
|
||||
@@ -2506,6 +2506,10 @@ msgid ""
|
||||
"then k), and then press the key to bind: this will insert key name in "
|
||||
"command line.\n"
|
||||
"\n"
|
||||
"For some keys you might need to use /debug key, this displays the raw key "
|
||||
"code that can be used (for example the key ctrl+backspace could be \"ctrl-"
|
||||
"h\" or \"ctrl-?\", depending on your terminal and other settings).\n"
|
||||
"\n"
|
||||
"Modifiers allowed (in this order when multiple are used):\n"
|
||||
" meta- (alt key)\n"
|
||||
" ctrl- (control key)\n"
|
||||
@@ -3739,6 +3743,16 @@ msgstr ""
|
||||
msgid "names of filters"
|
||||
msgstr "フィルタ名"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "names of filters"
|
||||
msgid "names of disabled filters"
|
||||
msgstr "フィルタ名"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "names of filters"
|
||||
msgid "names of enabled filters"
|
||||
msgstr "フィルタ名"
|
||||
|
||||
msgid ""
|
||||
"commands (weechat and plugins); optional argument: prefix to add before the "
|
||||
"commands"
|
||||
@@ -5280,6 +5294,22 @@ msgstr "%sエラー: ファイル \"%s\" の作成に失敗"
|
||||
msgid "%sError writing configuration file \"%s\""
|
||||
msgstr "%s設定ファイル \"%s\" の書き込み中にエラー"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: server %s%s%s has been copied to %s%s%s"
|
||||
msgid "%sFile %s has been backed up as %s"
|
||||
msgstr "%s: サーバ %s%s%s を %s%s%s にコピーしました"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to load file \"%s\""
|
||||
msgid "%sError: unable to backup file %s"
|
||||
msgstr "%s%s: ファイル \"%s\" をロードできません"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sImportant: file %s has been updated from version %d to %d, it is not "
|
||||
"compatible and can not be loaded any more with any older version"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sWARNING: failed to read configuration file \"%s\" (%s)"
|
||||
msgstr "%s警告: 設定ファイル \"%s\" (%s) の読み込みに失敗"
|
||||
@@ -5304,15 +5334,16 @@ msgstr "%s警告: %s、行 %d: 無効な構文、\"]\" が足りません"
|
||||
msgid "%sWarning: %s, line %d: unknown section identifier (\"%s\")"
|
||||
msgstr "%s警告: %s、行 %d: セクションインジケータ (\"%s\") は未定義"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sWarning: %s, line %d: invalid value for option: %s"
|
||||
msgid "%sWarning: %s, line %d: invalid config version: %s"
|
||||
msgstr "%s警告: %s、行 %d: オプションに対する無効な値: %s"
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sError: %s, line %d: invalid config version: \"%s\" => rest of file is "
|
||||
"IGNORED, default options are used"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sWarning: %s, version read (%d) is newer than supported version (%d), "
|
||||
"options may be broken!"
|
||||
"%sError: %s, version read (%d) is newer than supported version (%d) => rest "
|
||||
"of file is IGNORED, default options are used"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
@@ -5376,6 +5407,11 @@ msgid ""
|
||||
msgstr ""
|
||||
"エラー: 一時的なホームディレクリ (テンプレート: \"%s\") を作成できません\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Environment variable \"%s\" is not defined"
|
||||
msgid "Error: environment variable \"HOME\" is not defined\n"
|
||||
msgstr "環境変数 \"%s\" が定義されていません"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "Error: \"%s\" is not a directory\n"
|
||||
msgstr "エラー: ホーム (%s) はディレクトリではありません\n"
|
||||
@@ -6888,7 +6924,7 @@ msgid ""
|
||||
" /exec -n ls -l /tmp\n"
|
||||
" /exec -sh -n ps xu | grep weechat\n"
|
||||
" /exec -n -norc url:https://pastebin.com/raw.php?i=xxxxxxxx\n"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/devel/"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/weechat/devel/"
|
||||
"weechat_user.en.html\n"
|
||||
" /exec -o uptime\n"
|
||||
" /exec -pipe \"/print Machine uptime:\" uptime\n"
|
||||
@@ -10796,6 +10832,10 @@ msgstr ""
|
||||
"よって表示されたメッセージに使われたタグのコンマ区切りリスト、例: "
|
||||
"\"notify_message\"、\"notify_private\"、\"notify_highlight\""
|
||||
|
||||
msgid ""
|
||||
"open a private buffer on self message when capability echo-message is enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "close buffer when /part is issued on a channel"
|
||||
msgstr "/part を実行した場合にバッファを閉じる"
|
||||
|
||||
@@ -13732,9 +13772,14 @@ msgid ""
|
||||
"set to \"authentication failed\" (0 = wait forever)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "address for bind (if empty, connection is possible on all interfaces, use "
|
||||
#| "\"127.0.0.1\" to allow connections from local machine only)"
|
||||
msgid ""
|
||||
"address for bind (if empty, connection is possible on all interfaces, use "
|
||||
"\"127.0.0.1\" to allow connections from local machine only)"
|
||||
"\"127.0.0.1\" to allow connections from local machine only with IPv4 and \"::"
|
||||
"ffff:127.0.0.1\" with IPv6)"
|
||||
msgstr ""
|
||||
"割り当てるアドレス (空の場合、全てのインターフェースからの接続を受け付け"
|
||||
"る、\"127.0.0.1\" を使えばローカルマシンからの接続のみ許可)"
|
||||
@@ -15401,6 +15446,16 @@ msgstr "トリガ"
|
||||
msgid "default triggers"
|
||||
msgstr "デフォルトトリガ"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "default triggers"
|
||||
msgid "disabled triggers"
|
||||
msgstr "デフォルトトリガ"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "enable trigger support"
|
||||
msgid "enabled triggers"
|
||||
msgstr "トリガサポートの有効化"
|
||||
|
||||
msgid "options for triggers"
|
||||
msgstr "トリガに対するオプション"
|
||||
|
||||
@@ -16020,8 +16075,3 @@ msgstr "%s%s: \"%s\" のタイムアウト %s"
|
||||
#, c-format
|
||||
msgid "%s%s: unable to connect: unexpected error (%d)"
|
||||
msgstr "%s%s: 接続できません: 未定義のエラー (%d)"
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "send message to a nick or channel"
|
||||
#~ msgid "send action message to a nick or channel"
|
||||
#~ msgstr "ニックネームかチャンネルにメッセージを送る"
|
||||
|
||||
@@ -22,8 +22,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2023-06-03 21:06+0200\n"
|
||||
"PO-Revision-Date: 2023-05-01 20:23+0200\n"
|
||||
"POT-Creation-Date: 2023-10-30 23:09+0100\n"
|
||||
"PO-Revision-Date: 2023-06-17 11:47+0200\n"
|
||||
"Last-Translator: Krzysztof Korościk <soltys@soltys.info>\n"
|
||||
"Language-Team: Polish <kde-i18n-doc@kde.org>\n"
|
||||
"Language: pl\n"
|
||||
@@ -2838,6 +2838,10 @@ msgid ""
|
||||
"then k), and then press the key to bind: this will insert key name in "
|
||||
"command line.\n"
|
||||
"\n"
|
||||
"For some keys you might need to use /debug key, this displays the raw key "
|
||||
"code that can be used (for example the key ctrl+backspace could be \"ctrl-"
|
||||
"h\" or \"ctrl-?\", depending on your terminal and other settings).\n"
|
||||
"\n"
|
||||
"Modifiers allowed (in this order when multiple are used):\n"
|
||||
" meta- (alt key)\n"
|
||||
" ctrl- (control key)\n"
|
||||
@@ -4115,6 +4119,16 @@ msgstr ""
|
||||
msgid "names of filters"
|
||||
msgstr "nazwy filtrów"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "names of filters"
|
||||
msgid "names of disabled filters"
|
||||
msgstr "nazwy filtrów"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "names of filters"
|
||||
msgid "names of enabled filters"
|
||||
msgstr "nazwy filtrów"
|
||||
|
||||
msgid ""
|
||||
"commands (weechat and plugins); optional argument: prefix to add before the "
|
||||
"commands"
|
||||
@@ -5717,6 +5731,22 @@ msgstr "%sNie można utworzyć pliku \"%s\""
|
||||
msgid "%sError writing configuration file \"%s\""
|
||||
msgstr "%sBłąd podczas zapisu pliku konfiguracyjnego \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: server %s%s%s has been copied to %s%s%s"
|
||||
msgid "%sFile %s has been backed up as %s"
|
||||
msgstr "%s: serwer %s%s%s został skopiowany do %s%s%s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to load file \"%s\""
|
||||
msgid "%sError: unable to backup file %s"
|
||||
msgstr "%s%s: nie można wczytać pliku \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sImportant: file %s has been updated from version %d to %d, it is not "
|
||||
"compatible and can not be loaded any more with any older version"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sWARNING: failed to read configuration file \"%s\" (%s)"
|
||||
msgstr "%sUWAGA: nie powiódł się odczyt pliku konfiguracyjnego \"%s\" (%s)"
|
||||
@@ -5741,15 +5771,16 @@ msgstr "%sOstrzeżenie: %s, w linii %d: błędna składnia, brakuje \"]\""
|
||||
msgid "%sWarning: %s, line %d: unknown section identifier (\"%s\")"
|
||||
msgstr "%sOstrzeżenie: %s, w linii %d: nieznany identyfikator sekcji (\"%s\")"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sWarning: %s, line %d: invalid value for option: %s"
|
||||
msgid "%sWarning: %s, line %d: invalid config version: %s"
|
||||
msgstr "%sOstrzeżenie: %s, linai %d: nieprawidłowa wartość dla opcji: %s"
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sError: %s, line %d: invalid config version: \"%s\" => rest of file is "
|
||||
"IGNORED, default options are used"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sWarning: %s, version read (%d) is newer than supported version (%d), "
|
||||
"options may be broken!"
|
||||
"%sError: %s, version read (%d) is newer than supported version (%d) => rest "
|
||||
"of file is IGNORED, default options are used"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
@@ -5819,6 +5850,11 @@ msgstr ""
|
||||
"Błąd: nie można utworzyć tymczasowego katalogu domowego (używając szablonu: "
|
||||
"\"%s\")\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Environment variable \"%s\" is not defined"
|
||||
msgid "Error: environment variable \"HOME\" is not defined\n"
|
||||
msgstr "Zmienna środowiskowa \"%s\" nie jest zdefiniowana"
|
||||
|
||||
#, c-format
|
||||
msgid "Error: \"%s\" is not a directory\n"
|
||||
msgstr "Błąd: „%s” nie jest katalogiem\n"
|
||||
@@ -7406,7 +7442,7 @@ msgid ""
|
||||
" /exec -n ls -l /tmp\n"
|
||||
" /exec -sh -n ps xu | grep weechat\n"
|
||||
" /exec -n -norc url:https://pastebin.com/raw.php?i=xxxxxxxx\n"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/devel/"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/weechat/devel/"
|
||||
"weechat_user.en.html\n"
|
||||
" /exec -o uptime\n"
|
||||
" /exec -pipe \"/print Machine uptime:\" uptime\n"
|
||||
@@ -7491,7 +7527,7 @@ msgstr ""
|
||||
" /exec -n ls -l /tmp\n"
|
||||
" /exec -sh -n ps xu | grep weechat\n"
|
||||
" /exec -n -norc url:http://pastebin.com/raw.php?i=xxxxxxxx\n"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/devel/"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/weechat/devel/"
|
||||
"weechat_user.en.html\n"
|
||||
" /exec -o uptime\n"
|
||||
" /exec -pipe \"/print Machine uptime:\" uptime\n"
|
||||
@@ -11792,6 +11828,10 @@ msgstr ""
|
||||
"komendy whois), na przykład: \"notify_message\", \"notify_private\" or "
|
||||
"\"notify_highlight\""
|
||||
|
||||
msgid ""
|
||||
"open a private buffer on self message when capability echo-message is enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "close buffer when /part is issued on a channel"
|
||||
msgstr "zamyka bufor, kiedy na kanale wykonamy /part"
|
||||
|
||||
@@ -14819,9 +14859,14 @@ msgstr ""
|
||||
"zamykane jeśli klient się nie uwierzytelni w tym czasie oraz status klienta "
|
||||
"jest ustawiany na „authentication failed” (0 = brak limitu)"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "address for bind (if empty, connection is possible on all interfaces, use "
|
||||
#| "\"127.0.0.1\" to allow connections from local machine only)"
|
||||
msgid ""
|
||||
"address for bind (if empty, connection is possible on all interfaces, use "
|
||||
"\"127.0.0.1\" to allow connections from local machine only)"
|
||||
"\"127.0.0.1\" to allow connections from local machine only with IPv4 and \"::"
|
||||
"ffff:127.0.0.1\" with IPv6)"
|
||||
msgstr ""
|
||||
"adres do przypisania (jeśli puste, połączenie jest możliwe na wszystkich "
|
||||
"interfejsach, użyj \"127.0.0.1\", aby pozwolić tylko na połączenia z tej "
|
||||
@@ -16545,6 +16590,16 @@ msgstr "triggery"
|
||||
msgid "default triggers"
|
||||
msgstr "domyślne triggery"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "default triggers"
|
||||
msgid "disabled triggers"
|
||||
msgstr "domyślne triggery"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "enable trigger support"
|
||||
msgid "enabled triggers"
|
||||
msgstr "włącza wsparcie dla triggerów"
|
||||
|
||||
msgid "options for triggers"
|
||||
msgstr "opcje dla triggerów"
|
||||
|
||||
@@ -17195,8 +17250,3 @@ msgstr "%s%s: przekroczono czas na \"%s\" z %s"
|
||||
#, c-format
|
||||
msgid "%s%s: unable to connect: unexpected error (%d)"
|
||||
msgstr "%s%s: nie można połączyć: niespodziewany błąd (%d)"
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "send message to a nick or channel"
|
||||
#~ msgid "send action message to a nick or channel"
|
||||
#~ msgstr "wysyła wiadomość do użytkownika albo kanału"
|
||||
|
||||
@@ -20,8 +20,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2023-06-03 21:06+0200\n"
|
||||
"PO-Revision-Date: 2023-05-01 20:23+0200\n"
|
||||
"POT-Creation-Date: 2023-10-30 23:09+0100\n"
|
||||
"PO-Revision-Date: 2023-06-17 11:47+0200\n"
|
||||
"Last-Translator: Vasco Almeida <vascomalmeida@sapo.pt>\n"
|
||||
"Language-Team: Portuguese <>\n"
|
||||
"Language: pt\n"
|
||||
@@ -2499,6 +2499,10 @@ msgid ""
|
||||
"then k), and then press the key to bind: this will insert key name in "
|
||||
"command line.\n"
|
||||
"\n"
|
||||
"For some keys you might need to use /debug key, this displays the raw key "
|
||||
"code that can be used (for example the key ctrl+backspace could be \"ctrl-"
|
||||
"h\" or \"ctrl-?\", depending on your terminal and other settings).\n"
|
||||
"\n"
|
||||
"Modifiers allowed (in this order when multiple are used):\n"
|
||||
" meta- (alt key)\n"
|
||||
" ctrl- (control key)\n"
|
||||
@@ -3723,6 +3727,16 @@ msgstr ""
|
||||
msgid "names of filters"
|
||||
msgstr "nomes dos filtros"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "names of filters"
|
||||
msgid "names of disabled filters"
|
||||
msgstr "nomes dos filtros"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "names of filters"
|
||||
msgid "names of enabled filters"
|
||||
msgstr "nomes dos filtros"
|
||||
|
||||
msgid ""
|
||||
"commands (weechat and plugins); optional argument: prefix to add before the "
|
||||
"commands"
|
||||
@@ -5310,6 +5324,22 @@ msgstr "%sErro: não é possível criar o ficheiro \"%s\""
|
||||
msgid "%sError writing configuration file \"%s\""
|
||||
msgstr "%sErro ao escrever o ficheiro de configuração \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: server %s%s%s has been copied to %s%s%s"
|
||||
msgid "%sFile %s has been backed up as %s"
|
||||
msgstr "%s: o servidor %s%s%s foi copiado para %s%s%s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to load file \"%s\""
|
||||
msgid "%sError: unable to backup file %s"
|
||||
msgstr "%s%s: não foi possível carregar o ficheiro \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sImportant: file %s has been updated from version %d to %d, it is not "
|
||||
"compatible and can not be loaded any more with any older version"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sWARNING: failed to read configuration file \"%s\" (%s)"
|
||||
msgstr "%sAVISO: falha ao ler o ficheiro de configuração \"%s\" (%s)"
|
||||
@@ -5335,15 +5365,16 @@ msgstr "%sAviso: %s, linha %d: sintaxe inválida, falta ']'"
|
||||
msgid "%sWarning: %s, line %d: unknown section identifier (\"%s\")"
|
||||
msgstr "%sAviso: %s, linha %d: identificador de secção desconhecido (\"%s\")"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sWarning: %s, line %d: invalid value for option: %s"
|
||||
msgid "%sWarning: %s, line %d: invalid config version: %s"
|
||||
msgstr "%sAviso: %s, linha %d: valor inválido na opção: %s"
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sError: %s, line %d: invalid config version: \"%s\" => rest of file is "
|
||||
"IGNORED, default options are used"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sWarning: %s, version read (%d) is newer than supported version (%d), "
|
||||
"options may be broken!"
|
||||
"%sError: %s, version read (%d) is newer than supported version (%d) => rest "
|
||||
"of file is IGNORED, default options are used"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
@@ -5406,6 +5437,11 @@ msgid ""
|
||||
"Error: unable to create a temporary home directory (using template: \"%s\")\n"
|
||||
msgstr "%s%s: não foi possível criar diretório para registos (\"%s\")"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Environment variable \"%s\" is not defined"
|
||||
msgid "Error: environment variable \"HOME\" is not defined\n"
|
||||
msgstr "A variável de ambiente \"%s\" não está definida"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "Error: \"%s\" is not a directory\n"
|
||||
msgstr "Erro: a base (%s) não é um diretório\n"
|
||||
@@ -6829,7 +6865,7 @@ msgid ""
|
||||
" /exec -n ls -l /tmp\n"
|
||||
" /exec -sh -n ps xu | grep weechat\n"
|
||||
" /exec -n -norc url:https://pastebin.com/raw.php?i=xxxxxxxx\n"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/devel/"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/weechat/devel/"
|
||||
"weechat_user.en.html\n"
|
||||
" /exec -o uptime\n"
|
||||
" /exec -pipe \"/print Machine uptime:\" uptime\n"
|
||||
@@ -10563,6 +10599,10 @@ msgstr ""
|
||||
"whois), por exemplo: \"notify_message\", \"notify_private\" ou "
|
||||
"\"notify_highlight\""
|
||||
|
||||
msgid ""
|
||||
"open a private buffer on self message when capability echo-message is enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "close buffer when /part is issued on a channel"
|
||||
msgstr "fechar o buffer ao executar /part num canal"
|
||||
|
||||
@@ -13477,9 +13517,14 @@ msgid ""
|
||||
"set to \"authentication failed\" (0 = wait forever)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "address for bind (if empty, connection is possible on all interfaces, use "
|
||||
#| "\"127.0.0.1\" to allow connections from local machine only)"
|
||||
msgid ""
|
||||
"address for bind (if empty, connection is possible on all interfaces, use "
|
||||
"\"127.0.0.1\" to allow connections from local machine only)"
|
||||
"\"127.0.0.1\" to allow connections from local machine only with IPv4 and \"::"
|
||||
"ffff:127.0.0.1\" with IPv6)"
|
||||
msgstr ""
|
||||
"endereço a ligar (se vazio, a conexão é possível em todas as interfaces, use "
|
||||
"\"127.0.0.1\" para permitir conexões só a partir máquina local)"
|
||||
@@ -15158,6 +15203,16 @@ msgstr "acionadores"
|
||||
msgid "default triggers"
|
||||
msgstr "acionadores predefinidos"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "default triggers"
|
||||
msgid "disabled triggers"
|
||||
msgstr "acionadores predefinidos"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "enable trigger support"
|
||||
msgid "enabled triggers"
|
||||
msgstr "ativar suporte de acionadores"
|
||||
|
||||
msgid "options for triggers"
|
||||
msgstr "opções de acionadores"
|
||||
|
||||
@@ -15788,8 +15843,3 @@ msgstr "%s%s: tempo limite de \"%s\" com %s"
|
||||
#, c-format
|
||||
msgid "%s%s: unable to connect: unexpected error (%d)"
|
||||
msgstr "%s%s: não foi possível conectar: erro inesperado (%d)"
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "send message to a nick or channel"
|
||||
#~ msgid "send action message to a nick or channel"
|
||||
#~ msgstr "enviar mensagem para um nick ou canal"
|
||||
|
||||
+62
-15
@@ -21,8 +21,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2023-06-03 21:06+0200\n"
|
||||
"PO-Revision-Date: 2023-05-01 20:23+0200\n"
|
||||
"POT-Creation-Date: 2023-10-30 23:09+0100\n"
|
||||
"PO-Revision-Date: 2023-06-17 11:47+0200\n"
|
||||
"Last-Translator: Érico Nogueira <ericonr@disroot.org>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
"Language: pt_BR\n"
|
||||
@@ -2202,6 +2202,10 @@ msgid ""
|
||||
"then k), and then press the key to bind: this will insert key name in "
|
||||
"command line.\n"
|
||||
"\n"
|
||||
"For some keys you might need to use /debug key, this displays the raw key "
|
||||
"code that can be used (for example the key ctrl+backspace could be \"ctrl-"
|
||||
"h\" or \"ctrl-?\", depending on your terminal and other settings).\n"
|
||||
"\n"
|
||||
"Modifiers allowed (in this order when multiple are used):\n"
|
||||
" meta- (alt key)\n"
|
||||
" ctrl- (control key)\n"
|
||||
@@ -3258,6 +3262,16 @@ msgstr ""
|
||||
msgid "names of filters"
|
||||
msgstr "nomes dos filtros"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "names of filters"
|
||||
msgid "names of disabled filters"
|
||||
msgstr "nomes dos filtros"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "names of filters"
|
||||
msgid "names of enabled filters"
|
||||
msgstr "nomes dos filtros"
|
||||
|
||||
msgid ""
|
||||
"commands (weechat and plugins); optional argument: prefix to add before the "
|
||||
"commands"
|
||||
@@ -4684,6 +4698,22 @@ msgstr "%sErro: não foi possível criar arquivo \"%s\""
|
||||
msgid "%sError writing configuration file \"%s\""
|
||||
msgstr "%sErro escrevendo arquivo de configuração \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Layout \"%s\" has been renamed to \"%s\""
|
||||
msgid "%sFile %s has been backed up as %s"
|
||||
msgstr "Disposição \"%s\" renomeado para \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to load file \"%s\""
|
||||
msgid "%sError: unable to backup file %s"
|
||||
msgstr "%s%s: não foi possível carregar arquivo \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sImportant: file %s has been updated from version %d to %d, it is not "
|
||||
"compatible and can not be loaded any more with any older version"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sWARNING: failed to read configuration file \"%s\" (%s)"
|
||||
msgstr "Escrevendo arquivo de configurações %s %s"
|
||||
@@ -4706,15 +4736,16 @@ msgstr "%sAviso: %s, linha %d: sintaxe inválida, faltando \"]\""
|
||||
msgid "%sWarning: %s, line %d: unknown section identifier (\"%s\")"
|
||||
msgstr "%sAviso: %s, linha %d: identificador de seção desconhecido (\"%s\")"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sWarning: %s, line %d: invalid value for option: %s"
|
||||
msgid "%sWarning: %s, line %d: invalid config version: %s"
|
||||
msgstr "%sAviso: %s, linha %d: valor \"%s\" inválido para opção"
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sError: %s, line %d: invalid config version: \"%s\" => rest of file is "
|
||||
"IGNORED, default options are used"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sWarning: %s, version read (%d) is newer than supported version (%d), "
|
||||
"options may be broken!"
|
||||
"%sError: %s, version read (%d) is newer than supported version (%d) => rest "
|
||||
"of file is IGNORED, default options are used"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
@@ -4776,6 +4807,10 @@ msgid ""
|
||||
"Error: unable to create a temporary home directory (using template: \"%s\")\n"
|
||||
msgstr "%s%s: não foi possível criar diretório para registros (\"%s\")"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Error: environment variable \"HOME\" is not defined\n"
|
||||
msgstr "Variáveis"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "Error: \"%s\" is not a directory\n"
|
||||
msgstr "Erro: (%s) não é um diretório\n"
|
||||
@@ -6100,7 +6135,7 @@ msgid ""
|
||||
" /exec -n ls -l /tmp\n"
|
||||
" /exec -sh -n ps xu | grep weechat\n"
|
||||
" /exec -n -norc url:https://pastebin.com/raw.php?i=xxxxxxxx\n"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/devel/"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/weechat/devel/"
|
||||
"weechat_user.en.html\n"
|
||||
" /exec -o uptime\n"
|
||||
" /exec -pipe \"/print Machine uptime:\" uptime\n"
|
||||
@@ -9194,6 +9229,10 @@ msgid ""
|
||||
"\"notify_message\", \"notify_private\" or \"notify_highlight\""
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"open a private buffer on self message when capability echo-message is enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "close buffer when /part is issued on a channel"
|
||||
msgstr "fechar buffer quando o comando /part é executado em um canal"
|
||||
|
||||
@@ -11949,9 +11988,14 @@ msgid ""
|
||||
"set to \"authentication failed\" (0 = wait forever)"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "address for bind (if empty, connection is possible on all interfaces, use "
|
||||
#| "\"127.0.0.1\" to allow connections from local machine only)"
|
||||
msgid ""
|
||||
"address for bind (if empty, connection is possible on all interfaces, use "
|
||||
"\"127.0.0.1\" to allow connections from local machine only)"
|
||||
"\"127.0.0.1\" to allow connections from local machine only with IPv4 and \"::"
|
||||
"ffff:127.0.0.1\" with IPv6)"
|
||||
msgstr ""
|
||||
"endereço para associação (se vazio, a conexão será possível em todas as "
|
||||
"interfaces, use \"127.0.0.1\" para permitir somente conexões locais)"
|
||||
@@ -13379,6 +13423,14 @@ msgstr ""
|
||||
msgid "default triggers"
|
||||
msgstr "lista de atalhos"
|
||||
|
||||
#, fuzzy
|
||||
msgid "disabled triggers"
|
||||
msgstr "lista de atalhos"
|
||||
|
||||
#, fuzzy
|
||||
msgid "enabled triggers"
|
||||
msgstr "habilita suporte à mouse"
|
||||
|
||||
#, fuzzy
|
||||
msgid "options for triggers"
|
||||
msgstr "opções para proxys"
|
||||
@@ -13993,8 +14045,3 @@ msgstr "%s%s: tempo esgotado para \"%s\" com %s"
|
||||
#, fuzzy, c-format
|
||||
msgid "%s%s: unable to connect: unexpected error (%d)"
|
||||
msgstr "%s%s: não foi possível conectar ao remetente"
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "send a private message to a nick"
|
||||
#~ msgid "send action message to a nick or channel"
|
||||
#~ msgstr "enviar mensagem privada a um nick"
|
||||
|
||||
@@ -21,8 +21,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2023-06-03 21:06+0200\n"
|
||||
"PO-Revision-Date: 2023-05-01 20:23+0200\n"
|
||||
"POT-Creation-Date: 2023-10-30 23:09+0100\n"
|
||||
"PO-Revision-Date: 2023-06-17 11:47+0200\n"
|
||||
"Last-Translator: Aleksey V Zapparov AKA ixti <ixti@member.fsf.org>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
"Language: ru\n"
|
||||
@@ -1889,6 +1889,10 @@ msgid ""
|
||||
"then k), and then press the key to bind: this will insert key name in "
|
||||
"command line.\n"
|
||||
"\n"
|
||||
"For some keys you might need to use /debug key, this displays the raw key "
|
||||
"code that can be used (for example the key ctrl+backspace could be \"ctrl-"
|
||||
"h\" or \"ctrl-?\", depending on your terminal and other settings).\n"
|
||||
"\n"
|
||||
"Modifiers allowed (in this order when multiple are used):\n"
|
||||
" meta- (alt key)\n"
|
||||
" ctrl- (control key)\n"
|
||||
@@ -2679,6 +2683,14 @@ msgstr ""
|
||||
msgid "names of filters"
|
||||
msgstr "Список сокращений:\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "names of disabled filters"
|
||||
msgstr "Список сокращений:\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "names of enabled filters"
|
||||
msgstr "Список сокращений:\n"
|
||||
|
||||
msgid ""
|
||||
"commands (weechat and plugins); optional argument: prefix to add before the "
|
||||
"commands"
|
||||
@@ -3988,6 +4000,20 @@ msgstr "%s не могу создать файл \"%s\"\n"
|
||||
msgid "%sError writing configuration file \"%s\""
|
||||
msgstr "перезагрузить конфигурационный файл сервера"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sFile %s has been backed up as %s"
|
||||
msgstr "Сервер %s%s%s скопирован в %s%s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sError: unable to backup file %s"
|
||||
msgstr "Не могу записать лог-файл \"%s\"\n"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sImportant: file %s has been updated from version %d to %d, it is not "
|
||||
"compatible and can not be loaded any more with any older version"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sWARNING: failed to read configuration file \"%s\" (%s)"
|
||||
msgstr "сохранять конфигурационный файл при выходе"
|
||||
@@ -4010,14 +4036,16 @@ msgstr "%s %s, строка %d: некорректный синтаксис, н
|
||||
msgid "%sWarning: %s, line %d: unknown section identifier (\"%s\")"
|
||||
msgstr "%s %s, строка %d: неизвестный идентификатор секции (\"%s\")\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%sWarning: %s, line %d: invalid config version: %s"
|
||||
msgstr "%s %s, строка %d: некорректный параметр \"%s\"\n"
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sError: %s, line %d: invalid config version: \"%s\" => rest of file is "
|
||||
"IGNORED, default options are used"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sWarning: %s, version read (%d) is newer than supported version (%d), "
|
||||
"options may be broken!"
|
||||
"%sError: %s, version read (%d) is newer than supported version (%d) => rest "
|
||||
"of file is IGNORED, default options are used"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
@@ -4080,6 +4108,10 @@ msgid ""
|
||||
"Error: unable to create a temporary home directory (using template: \"%s\")\n"
|
||||
msgstr "%s не могу создать сервер \"%s\"\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Error: environment variable \"HOME\" is not defined\n"
|
||||
msgstr " . тип: целочисленный\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "Error: \"%s\" is not a directory\n"
|
||||
msgstr "%s домашний каталог (%s) не является директорией\n"
|
||||
@@ -5408,7 +5440,7 @@ msgid ""
|
||||
" /exec -n ls -l /tmp\n"
|
||||
" /exec -sh -n ps xu | grep weechat\n"
|
||||
" /exec -n -norc url:https://pastebin.com/raw.php?i=xxxxxxxx\n"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/devel/"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/weechat/devel/"
|
||||
"weechat_user.en.html\n"
|
||||
" /exec -o uptime\n"
|
||||
" /exec -pipe \"/print Machine uptime:\" uptime\n"
|
||||
@@ -8684,6 +8716,10 @@ msgid ""
|
||||
"\"notify_message\", \"notify_private\" or \"notify_highlight\""
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"open a private buffer on self message when capability echo-message is enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "close buffer when /part is issued on a channel"
|
||||
msgstr ""
|
||||
|
||||
@@ -11420,7 +11456,8 @@ msgstr ""
|
||||
|
||||
msgid ""
|
||||
"address for bind (if empty, connection is possible on all interfaces, use "
|
||||
"\"127.0.0.1\" to allow connections from local machine only)"
|
||||
"\"127.0.0.1\" to allow connections from local machine only with IPv4 and \"::"
|
||||
"ffff:127.0.0.1\" with IPv6)"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
@@ -12813,6 +12850,14 @@ msgstr ""
|
||||
msgid "default triggers"
|
||||
msgstr "Список сокращений:\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "disabled triggers"
|
||||
msgstr "Список сокращений:\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "enabled triggers"
|
||||
msgstr "Список сокращений:\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "options for triggers"
|
||||
msgstr "Список сокращений:\n"
|
||||
@@ -13430,8 +13475,3 @@ msgstr "%s нет аргумента для параметра \"%s\"\n"
|
||||
#, fuzzy, c-format
|
||||
msgid "%s%s: unable to connect: unexpected error (%d)"
|
||||
msgstr "%s DCC: не могу соединиться с отправителем\n"
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "send message to a nick or channel"
|
||||
#~ msgid "send action message to a nick or channel"
|
||||
#~ msgstr "отправить сообщение нику или на канал"
|
||||
|
||||
@@ -20,8 +20,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2023-06-03 21:06+0200\n"
|
||||
"PO-Revision-Date: 2023-05-14 15:29+0200\n"
|
||||
"POT-Creation-Date: 2023-10-30 23:09+0100\n"
|
||||
"PO-Revision-Date: 2023-06-17 11:47+0200\n"
|
||||
"Last-Translator: Ivan Pešić <ivan.pesic@gmail.com>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
"Language: sr\n"
|
||||
@@ -2424,6 +2424,71 @@ msgstr ""
|
||||
"<контекст> <тастер> || resetall -yes [<контекст>] || missing [<контекст>] || "
|
||||
"legacy <тастер> [<тастер>...]"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| " list: list all current keys\n"
|
||||
#| "listdefault: list default keys\n"
|
||||
#| " listdiff: list differences between current and default keys (keys "
|
||||
#| "added, redefined or deleted)\n"
|
||||
#| " context: name of context (\"default\" or \"search\")\n"
|
||||
#| " bind: bind a command to a key or display command bound to key (for "
|
||||
#| "context \"default\")\n"
|
||||
#| " bindctxt: bind a command to a key or display command bound to key, for "
|
||||
#| "given context\n"
|
||||
#| " command: command (many commands can be separated by semicolons)\n"
|
||||
#| " unbind: remove a key binding (for context \"default\")\n"
|
||||
#| " unbindctxt: remove a key binding for given context\n"
|
||||
#| " reset: reset a key to default binding (for context \"default\")\n"
|
||||
#| " resetctxt: reset a key to default binding, for given context\n"
|
||||
#| " resetall: restore bindings to the default values and delete ALL "
|
||||
#| "personal bindings (use carefully!)\n"
|
||||
#| " missing: add missing keys (using default bindings), useful after "
|
||||
#| "installing new WeeChat version\n"
|
||||
#| " legacy: display new name for legacy keys\n"
|
||||
#| "\n"
|
||||
#| "When binding a command to a key, it is recommended to use key alt+k (or "
|
||||
#| "Esc then k), and then press the key to bind: this will insert key name in "
|
||||
#| "command line.\n"
|
||||
#| "\n"
|
||||
#| "Modifiers allowed (in this order when multiple are used):\n"
|
||||
#| " meta- (alt key)\n"
|
||||
#| " ctrl- (control key)\n"
|
||||
#| " shift- (shift key, can only be used with key names below)\n"
|
||||
#| "\n"
|
||||
#| "Key names allowed: f0 to f20, home, insert, delete, end, backspace, pgup, "
|
||||
#| "pgdn, up, down, right, left, tab, return, comma, space.\n"
|
||||
#| "\n"
|
||||
#| "Combo of keys must be separated by a comma.\n"
|
||||
#| "\n"
|
||||
#| "For context \"mouse\" (possible in context \"cursor\" too), key has "
|
||||
#| "format: \"@area:key\" or \"@area1>area2:key\" where area can be:\n"
|
||||
#| " *: any area on screen\n"
|
||||
#| " chat: chat area (any buffer)\n"
|
||||
#| " chat(xxx): chat area for buffer with name \"xxx\" (full name including "
|
||||
#| "plugin)\n"
|
||||
#| " bar(*): any bar\n"
|
||||
#| " bar(xxx): bar \"xxx\"\n"
|
||||
#| " item(*): any bar item\n"
|
||||
#| " item(xxx): bar item \"xxx\"\n"
|
||||
#| "Wildcard \"*\" is allowed in key to match many mouse events.\n"
|
||||
#| "A special value for command with format \"hsignal:name\" can be used for "
|
||||
#| "context mouse, this will send the hsignal \"name\" with the focus "
|
||||
#| "hashtable as argument.\n"
|
||||
#| "Another special value \"-\" can be used to disable key (it will be "
|
||||
#| "ignored when looking for keys).\n"
|
||||
#| "\n"
|
||||
#| "Examples:\n"
|
||||
#| " key alt-r to jump to #weechat IRC channel:\n"
|
||||
#| " /key bind meta-r /buffer #weechat\n"
|
||||
#| " restore default binding for key alt-r:\n"
|
||||
#| " /key reset meta-r\n"
|
||||
#| " key meta-v then f1 to run /help:\n"
|
||||
#| " /key bind meta-v,f1 /help\n"
|
||||
#| " key \"tab\" to stop search in buffer:\n"
|
||||
#| " /key bindctxt search tab /input search_stop\n"
|
||||
#| " middle button of mouse on a nick to retrieve info on nick:\n"
|
||||
#| " /key bindctxt mouse @item(buffer_nicklist):button3 /msg nickserv info "
|
||||
#| "${nick}"
|
||||
msgid ""
|
||||
" list: list all current keys\n"
|
||||
"listdefault: list default keys\n"
|
||||
@@ -2449,6 +2514,10 @@ msgid ""
|
||||
"then k), and then press the key to bind: this will insert key name in "
|
||||
"command line.\n"
|
||||
"\n"
|
||||
"For some keys you might need to use /debug key, this displays the raw key "
|
||||
"code that can be used (for example the key ctrl+backspace could be \"ctrl-"
|
||||
"h\" or \"ctrl-?\", depending on your terminal and other settings).\n"
|
||||
"\n"
|
||||
"Modifiers allowed (in this order when multiple are used):\n"
|
||||
" meta- (alt key)\n"
|
||||
" ctrl- (control key)\n"
|
||||
@@ -3723,6 +3792,16 @@ msgstr ""
|
||||
msgid "names of filters"
|
||||
msgstr "имена филтера"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "names of filters"
|
||||
msgid "names of disabled filters"
|
||||
msgstr "имена филтера"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "names of filters"
|
||||
msgid "names of enabled filters"
|
||||
msgstr "имена филтера"
|
||||
|
||||
msgid ""
|
||||
"commands (weechat and plugins); optional argument: prefix to add before the "
|
||||
"commands"
|
||||
@@ -5298,6 +5377,22 @@ msgstr "%sНе може да се креира фајл „%s”"
|
||||
msgid "%sError writing configuration file \"%s\""
|
||||
msgstr "%sГрешка при уписивању конфигурационог фајла „%s”"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: server %s%s%s has been copied to %s%s%s"
|
||||
msgid "%sFile %s has been backed up as %s"
|
||||
msgstr "%s: сервер %s%s%s је копиран у %s%s%s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to load file \"%s\""
|
||||
msgid "%sError: unable to backup file %s"
|
||||
msgstr "%s%s: фајл „%s” не може да се учита"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sImportant: file %s has been updated from version %d to %d, it is not "
|
||||
"compatible and can not be loaded any more with any older version"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sWARNING: failed to read configuration file \"%s\" (%s)"
|
||||
msgstr "%sУПОЗОРЕЊЕ: није могао да се прочита конфигурациони фајл „%s” (%s)"
|
||||
@@ -5323,14 +5418,19 @@ msgstr "%sУпозорење: %s, линија %d: неважећа синтак
|
||||
msgid "%sWarning: %s, line %d: unknown section identifier (\"%s\")"
|
||||
msgstr "%sУпозорење: %s, линија %d: непознати идентификатор одељка („%s”)"
|
||||
|
||||
#, c-format
|
||||
msgid "%sWarning: %s, line %d: invalid config version: %s"
|
||||
msgstr "%sУпозорење: %s, линија %d: неважећа конфиг верзија: %s"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sWarning: %s, version read (%d) is newer than supported version (%d), "
|
||||
"options may be broken!"
|
||||
"%sError: %s, line %d: invalid config version: \"%s\" => rest of file is "
|
||||
"IGNORED, default options are used"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid ""
|
||||
#| "%sWarning: %s, version read (%d) is newer than supported version (%d), "
|
||||
#| "options may be broken!"
|
||||
msgid ""
|
||||
"%sError: %s, version read (%d) is newer than supported version (%d) => rest "
|
||||
"of file is IGNORED, default options are used"
|
||||
msgstr ""
|
||||
"%sУпозорење: %s, прочитана верзија (%d) је новија од подржане верзије (%d), "
|
||||
"опције можда неће радити!"
|
||||
@@ -5404,6 +5504,11 @@ msgstr ""
|
||||
"Грешка: не може да се креира привремени почетни директоријум (користећи "
|
||||
"шаблон: \"%s\")\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Environment variable \"%s\" is not defined"
|
||||
msgid "Error: environment variable \"HOME\" is not defined\n"
|
||||
msgstr "Није дефинисана променљива окружења „%s”"
|
||||
|
||||
#, c-format
|
||||
msgid "Error: \"%s\" is not a directory\n"
|
||||
msgstr "Грешка: „%s” није директоријум\n"
|
||||
@@ -6944,7 +7049,7 @@ msgid ""
|
||||
" /exec -n ls -l /tmp\n"
|
||||
" /exec -sh -n ps xu | grep weechat\n"
|
||||
" /exec -n -norc url:https://pastebin.com/raw.php?i=xxxxxxxx\n"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/devel/"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/weechat/devel/"
|
||||
"weechat_user.en.html\n"
|
||||
" /exec -o uptime\n"
|
||||
" /exec -pipe \"/print Machine uptime:\" uptime\n"
|
||||
@@ -7033,7 +7138,7 @@ msgstr ""
|
||||
" /exec -n ls -l /tmp\n"
|
||||
" /exec -sh -n ps xu | grep weechat\n"
|
||||
" /exec -n -norc url:https://pastebin.com/raw.php?i=xxxxxxxx\n"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/devel/"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/weechat/devel/"
|
||||
"weechat_user.en.html\n"
|
||||
" /exec -o uptime\n"
|
||||
" /exec -pipe „/print Машина ради:” uptime\n"
|
||||
@@ -10928,6 +11033,10 @@ msgstr ""
|
||||
"се статус одсуства надимка промени (резултат команде whois), на пример: "
|
||||
"„notify_message”, „notify_private” или „notify_highlight”"
|
||||
|
||||
msgid ""
|
||||
"open a private buffer on self message when capability echo-message is enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "close buffer when /part is issued on a channel"
|
||||
msgstr "затварање бафера када се на каналу изврши /part"
|
||||
|
||||
@@ -13849,9 +13958,14 @@ msgstr ""
|
||||
"клијент не аутентификује након протека овог времена и статус клијента се "
|
||||
"поставља на „аутентификација није успела” (0 = чека се довека)"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "address for bind (if empty, connection is possible on all interfaces, use "
|
||||
#| "\"127.0.0.1\" to allow connections from local machine only)"
|
||||
msgid ""
|
||||
"address for bind (if empty, connection is possible on all interfaces, use "
|
||||
"\"127.0.0.1\" to allow connections from local machine only)"
|
||||
"\"127.0.0.1\" to allow connections from local machine only with IPv4 and \"::"
|
||||
"ffff:127.0.0.1\" with IPv6)"
|
||||
msgstr ""
|
||||
"адреса на коју се везује (ако је празно, веза може да се успостави на свим "
|
||||
"интерфејсима, употребите „127.0.0.1” ако желите да дозволите успостављање "
|
||||
@@ -15546,6 +15660,16 @@ msgstr "окидачи"
|
||||
msgid "default triggers"
|
||||
msgstr "подразумевани окидачи"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "default triggers"
|
||||
msgid "disabled triggers"
|
||||
msgstr "подразумевани окидачи"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "enable trigger support"
|
||||
msgid "enabled triggers"
|
||||
msgstr "укључивање подршке за окидаче"
|
||||
|
||||
msgid "options for triggers"
|
||||
msgstr "опције за окидаче"
|
||||
|
||||
@@ -16191,8 +16315,3 @@ msgstr "%s%s: тајмаут за „%s” са %s"
|
||||
#, c-format
|
||||
msgid "%s%s: unable to connect: unexpected error (%d)"
|
||||
msgstr "%s%s: повезивање није успело: неочекивана грешка (%d)"
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "send message to a nick or channel"
|
||||
#~ msgid "send action message to a nick or channel"
|
||||
#~ msgstr "слање поруке надимку или каналу"
|
||||
|
||||
@@ -20,8 +20,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2023-06-03 21:06+0200\n"
|
||||
"PO-Revision-Date: 2023-05-01 20:23+0200\n"
|
||||
"POT-Creation-Date: 2023-10-30 23:09+0100\n"
|
||||
"PO-Revision-Date: 2023-06-17 11:47+0200\n"
|
||||
"Last-Translator: Emir SARI <emir_sari@icloud.com>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
"Language: tr\n"
|
||||
@@ -2536,6 +2536,10 @@ msgid ""
|
||||
"then k), and then press the key to bind: this will insert key name in "
|
||||
"command line.\n"
|
||||
"\n"
|
||||
"For some keys you might need to use /debug key, this displays the raw key "
|
||||
"code that can be used (for example the key ctrl+backspace could be \"ctrl-"
|
||||
"h\" or \"ctrl-?\", depending on your terminal and other settings).\n"
|
||||
"\n"
|
||||
"Modifiers allowed (in this order when multiple are used):\n"
|
||||
" meta- (alt key)\n"
|
||||
" ctrl- (control key)\n"
|
||||
@@ -3792,6 +3796,16 @@ msgstr ""
|
||||
msgid "names of filters"
|
||||
msgstr "süzgeçlerin adları"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "names of filters"
|
||||
msgid "names of disabled filters"
|
||||
msgstr "süzgeçlerin adları"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "names of filters"
|
||||
msgid "names of enabled filters"
|
||||
msgstr "süzgeçlerin adları"
|
||||
|
||||
msgid ""
|
||||
"commands (weechat and plugins); optional argument: prefix to add before the "
|
||||
"commands"
|
||||
@@ -5361,6 +5375,22 @@ msgstr "%s\"%s\" dosyası oluşturulamıyor"
|
||||
msgid "%sError writing configuration file \"%s\""
|
||||
msgstr "%s\"%s\" yapılandırma dosyası yazılırken hata"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: server %s%s%s has been copied to %s%s%s"
|
||||
msgid "%sFile %s has been backed up as %s"
|
||||
msgstr "%s: %s%s%s sunucusu %s%s%s konumuna kopyalandı"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s%s: unable to load file \"%s\""
|
||||
msgid "%sError: unable to backup file %s"
|
||||
msgstr "%s%s: \"%s\" dosyası yüklenemiyor"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sImportant: file %s has been updated from version %d to %d, it is not "
|
||||
"compatible and can not be loaded any more with any older version"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sWARNING: failed to read configuration file \"%s\" (%s)"
|
||||
msgstr "%sUYARI: \"%s\" yapılandırma dosyası okunamadı (%s)"
|
||||
@@ -5385,15 +5415,16 @@ msgstr "%sUyarı: %s, %d. satır: Geçersiz sözdizim, \"!\" eksik"
|
||||
msgid "%sWarning: %s, line %d: unknown section identifier (\"%s\")"
|
||||
msgstr "%sUyarı: %s, %d. satır: Bilinmeyen bölüm tanımlayıcısı (\"%s\")"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%sWarning: %s, line %d: invalid value for option: %s"
|
||||
msgid "%sWarning: %s, line %d: invalid config version: %s"
|
||||
msgstr "%sUyarı: %s, %d. satır: Seçenek için geçersiz değer: %s"
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sError: %s, line %d: invalid config version: \"%s\" => rest of file is "
|
||||
"IGNORED, default options are used"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sWarning: %s, version read (%d) is newer than supported version (%d), "
|
||||
"options may be broken!"
|
||||
"%sError: %s, version read (%d) is newer than supported version (%d) => rest "
|
||||
"of file is IGNORED, default options are used"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
@@ -5457,6 +5488,11 @@ msgid ""
|
||||
msgstr ""
|
||||
"Hata: Geçici bir ev dizini oluşturulamıyor (kullanılan şablon: \"%s\")\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Environment variable \"%s\" is not defined"
|
||||
msgid "Error: environment variable \"HOME\" is not defined\n"
|
||||
msgstr "Ortam değişkeni \"%s\" tanımlanmamış"
|
||||
|
||||
#, c-format
|
||||
msgid "Error: \"%s\" is not a directory\n"
|
||||
msgstr "Hata: \"%s\" bir dizin değil\n"
|
||||
@@ -7020,7 +7056,7 @@ msgid ""
|
||||
" /exec -n ls -l /tmp\n"
|
||||
" /exec -sh -n ps xu | grep weechat\n"
|
||||
" /exec -n -norc url:https://pastebin.com/raw.php?i=xxxxxxxx\n"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/devel/"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/weechat/devel/"
|
||||
"weechat_user.en.html\n"
|
||||
" /exec -o uptime\n"
|
||||
" /exec -pipe \"/print Machine uptime:\" uptime\n"
|
||||
@@ -7105,7 +7141,7 @@ msgstr ""
|
||||
" /exec -n ls -l /tmp\n"
|
||||
" /exec -sh -n ps xu | grep weechat\n"
|
||||
" /exec -n -norc url:https://pastebin.com/raw.php?i=xxxxxxxx\n"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/devel/"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/weechat/devel/"
|
||||
"weechat_user.en.html\n"
|
||||
" /exec -o uptime\n"
|
||||
" /exec -pipe \"/print Machine uptime:\" uptime\n"
|
||||
@@ -11362,6 +11398,10 @@ msgstr ""
|
||||
"kullanılan etiketlerin virgülle ayrılmış listesi (komut whois'inin sonucu); "
|
||||
"örneğin: \"notify_message\", \"notify_private\" veya \"notify_highlight\""
|
||||
|
||||
msgid ""
|
||||
"open a private buffer on self message when capability echo-message is enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "close buffer when /part is issued on a channel"
|
||||
msgstr "bir kanalda /part verildiğinde arabelleği kapat"
|
||||
|
||||
@@ -14347,9 +14387,14 @@ msgstr ""
|
||||
"sonrasında hâlâ bağlanmamışsa bağlantı kapatılır ve istemci durumu \"kimlik "
|
||||
"doğrulama başarısız\" olarak ayarlanır (0 = sonsuza dek bekler)"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "address for bind (if empty, connection is possible on all interfaces, use "
|
||||
#| "\"127.0.0.1\" to allow connections from local machine only)"
|
||||
msgid ""
|
||||
"address for bind (if empty, connection is possible on all interfaces, use "
|
||||
"\"127.0.0.1\" to allow connections from local machine only)"
|
||||
"\"127.0.0.1\" to allow connections from local machine only with IPv4 and \"::"
|
||||
"ffff:127.0.0.1\" with IPv6)"
|
||||
msgstr ""
|
||||
"bağıntılama adresi (boş ise tüm arabirimlerde bağlantı olanaklıdır, yalnızca "
|
||||
"yerel makinelerden bağlantılara izin vermek için \"127.0.0.1\" kullanın)"
|
||||
@@ -16034,6 +16079,16 @@ msgstr "tetikler"
|
||||
msgid "default triggers"
|
||||
msgstr "öntanımlı tetikler"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "default triggers"
|
||||
msgid "disabled triggers"
|
||||
msgstr "öntanımlı tetikler"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "enable trigger support"
|
||||
msgid "enabled triggers"
|
||||
msgstr "tetik desteğini etkinleştir"
|
||||
|
||||
msgid "options for triggers"
|
||||
msgstr "tetik seçenekleri"
|
||||
|
||||
@@ -16672,8 +16727,3 @@ msgstr "%s%s: \"%s\" için %s ile zaman aşımı"
|
||||
#, c-format
|
||||
msgid "%s%s: unable to connect: unexpected error (%d)"
|
||||
msgstr "%s%s: Bağlanılamıyor: Beklenmedik hata (%d)"
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "send message to a nick or channel"
|
||||
#~ msgid "send action message to a nick or channel"
|
||||
#~ msgstr "bir takma ada veya kanala ileti gönder"
|
||||
|
||||
+46
-6
@@ -21,7 +21,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2023-06-03 21:06+0200\n"
|
||||
"POT-Creation-Date: 2023-10-30 23:09+0100\n"
|
||||
"PO-Revision-Date: 2014-08-16 10:27+0200\n"
|
||||
"Last-Translator: Sébastien Helleu <flashcode@flashtux.org>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
@@ -1726,6 +1726,10 @@ msgid ""
|
||||
"then k), and then press the key to bind: this will insert key name in "
|
||||
"command line.\n"
|
||||
"\n"
|
||||
"For some keys you might need to use /debug key, this displays the raw key "
|
||||
"code that can be used (for example the key ctrl+backspace could be \"ctrl-"
|
||||
"h\" or \"ctrl-?\", depending on your terminal and other settings).\n"
|
||||
"\n"
|
||||
"Modifiers allowed (in this order when multiple are used):\n"
|
||||
" meta- (alt key)\n"
|
||||
" ctrl- (control key)\n"
|
||||
@@ -2449,6 +2453,12 @@ msgstr ""
|
||||
msgid "names of filters"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of disabled filters"
|
||||
msgstr ""
|
||||
|
||||
msgid "names of enabled filters"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"commands (weechat and plugins); optional argument: prefix to add before the "
|
||||
"commands"
|
||||
@@ -3614,6 +3624,20 @@ msgstr ""
|
||||
msgid "%sError writing configuration file \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sFile %s has been backed up as %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sError: unable to backup file %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sImportant: file %s has been updated from version %d to %d, it is not "
|
||||
"compatible and can not be loaded any more with any older version"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sWARNING: failed to read configuration file \"%s\" (%s)"
|
||||
msgstr ""
|
||||
@@ -3637,13 +3661,15 @@ msgid "%sWarning: %s, line %d: unknown section identifier (\"%s\")"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%sWarning: %s, line %d: invalid config version: %s"
|
||||
msgid ""
|
||||
"%sError: %s, line %d: invalid config version: \"%s\" => rest of file is "
|
||||
"IGNORED, default options are used"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%sWarning: %s, version read (%d) is newer than supported version (%d), "
|
||||
"options may be broken!"
|
||||
"%sError: %s, version read (%d) is newer than supported version (%d) => rest "
|
||||
"of file is IGNORED, default options are used"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
@@ -3704,6 +3730,9 @@ msgid ""
|
||||
"Error: unable to create a temporary home directory (using template: \"%s\")\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Error: environment variable \"HOME\" is not defined\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Error: \"%s\" is not a directory\n"
|
||||
msgstr ""
|
||||
@@ -4944,7 +4973,7 @@ msgid ""
|
||||
" /exec -n ls -l /tmp\n"
|
||||
" /exec -sh -n ps xu | grep weechat\n"
|
||||
" /exec -n -norc url:https://pastebin.com/raw.php?i=xxxxxxxx\n"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/devel/"
|
||||
" /exec -nf -noln links -dump https://weechat.org/files/doc/weechat/devel/"
|
||||
"weechat_user.en.html\n"
|
||||
" /exec -o uptime\n"
|
||||
" /exec -pipe \"/print Machine uptime:\" uptime\n"
|
||||
@@ -7763,6 +7792,10 @@ msgid ""
|
||||
"\"notify_message\", \"notify_private\" or \"notify_highlight\""
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"open a private buffer on self message when capability echo-message is enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "close buffer when /part is issued on a channel"
|
||||
msgstr ""
|
||||
|
||||
@@ -10294,7 +10327,8 @@ msgstr ""
|
||||
|
||||
msgid ""
|
||||
"address for bind (if empty, connection is possible on all interfaces, use "
|
||||
"\"127.0.0.1\" to allow connections from local machine only)"
|
||||
"\"127.0.0.1\" to allow connections from local machine only with IPv4 and \"::"
|
||||
"ffff:127.0.0.1\" with IPv6)"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
@@ -11599,6 +11633,12 @@ msgstr ""
|
||||
msgid "default triggers"
|
||||
msgstr ""
|
||||
|
||||
msgid "disabled triggers"
|
||||
msgstr ""
|
||||
|
||||
msgid "enabled triggers"
|
||||
msgstr ""
|
||||
|
||||
msgid "options for triggers"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -146,6 +146,7 @@ hook_process_hashtable (struct t_weechat_plugin *plugin,
|
||||
ptr_value = hashtable_get (options, "buffer_flush");
|
||||
if (ptr_value && ptr_value[0])
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (ptr_value, &error, 10);
|
||||
if (error && !error[0]
|
||||
&& (number >= 1) && (number <= HOOK_PROCESS_BUFFER_SIZE))
|
||||
|
||||
+11
-19
@@ -736,6 +736,7 @@ COMMAND_CALLBACK(buffer)
|
||||
else
|
||||
{
|
||||
ptr_buffer = gui_buffer_search_by_number_or_name (argv[i]);
|
||||
error = NULL;
|
||||
(void) strtol (argv[i], &error, 10);
|
||||
clear_number = (error && !error[0]);
|
||||
}
|
||||
@@ -971,6 +972,7 @@ COMMAND_CALLBACK(buffer)
|
||||
ptr_buffer = gui_buffer_search_by_number_or_name (argv[i]);
|
||||
if (ptr_buffer)
|
||||
{
|
||||
error = NULL;
|
||||
(void) strtol (argv[i], &error, 10);
|
||||
if (error && !error[0])
|
||||
{
|
||||
@@ -1009,6 +1011,7 @@ COMMAND_CALLBACK(buffer)
|
||||
ptr_buffer = gui_buffer_search_by_number_or_name (argv[i]);
|
||||
if (ptr_buffer)
|
||||
{
|
||||
error = NULL;
|
||||
(void) strtol (argv[i], &error, 10);
|
||||
if (error && !error[0])
|
||||
{
|
||||
@@ -3534,28 +3537,12 @@ COMMAND_CALLBACK(input)
|
||||
else if (string_strcmp (argv[1], "grab_key") == 0)
|
||||
{
|
||||
gui_input_grab_key (buffer,
|
||||
0, /* raw_key */
|
||||
0, /* command */
|
||||
(argc > 2) ? argv[2] : NULL);
|
||||
}
|
||||
else if (string_strcmp (argv[1], "grab_raw_key") == 0)
|
||||
{
|
||||
gui_input_grab_key (buffer,
|
||||
1, /* raw_key */
|
||||
0, /* command */
|
||||
(argc > 2) ? argv[2] : NULL);
|
||||
}
|
||||
else if (string_strcmp (argv[1], "grab_key_command") == 0)
|
||||
{
|
||||
gui_input_grab_key (buffer,
|
||||
0, /* raw_key */
|
||||
1, /* command */
|
||||
(argc > 2) ? argv[2] : NULL);
|
||||
}
|
||||
else if (string_strcmp (argv[1], "grab_raw_key_command") == 0)
|
||||
{
|
||||
gui_input_grab_key (buffer,
|
||||
1, /* raw_key */
|
||||
1, /* command */
|
||||
(argc > 2) ? argv[2] : NULL);
|
||||
}
|
||||
@@ -8294,8 +8281,8 @@ command_init ()
|
||||
"all buffers:\n"
|
||||
" /filter add sucks2 * * (?-i)^WeeChat sucks$"),
|
||||
"list"
|
||||
" || enable %(filters_names)|@"
|
||||
" || disable %(filters_names)|@"
|
||||
" || enable %(filters_names_disabled)|@"
|
||||
" || disable %(filters_names_enabled)|@"
|
||||
" || toggle %(filters_names)|@"
|
||||
" || add|addreplace %(filters_names) %(buffers_plugins_names)|*"
|
||||
" || rename %(filters_names) %(filters_names)"
|
||||
@@ -8433,7 +8420,7 @@ command_init ()
|
||||
"move_next_word || move_previous_line || move_next_line || "
|
||||
"history_previous || history_next || history_global_previous || "
|
||||
"history_global_next || "
|
||||
"grab_key || grab_raw_key || grab_raw_key_command || grab_key_command || "
|
||||
"grab_key || grab_key_command || "
|
||||
"grab_mouse || grab_mouse_area || "
|
||||
"insert || send",
|
||||
&command_input, NULL, NULL);
|
||||
@@ -8538,6 +8525,11 @@ command_init ()
|
||||
"(or Esc then k), and then press the key to bind: this will insert "
|
||||
"key name in command line.\n"
|
||||
"\n"
|
||||
"For some keys you might need to use /debug key, this displays "
|
||||
"the raw key code that can be used (for example the key "
|
||||
"ctrl+backspace could be \"ctrl-h\" or \"ctrl-?\", depending on your "
|
||||
"terminal and other settings).\n"
|
||||
"\n"
|
||||
"Modifiers allowed (in this order when multiple are used):\n"
|
||||
" meta- (alt key)\n"
|
||||
" ctrl- (control key)\n"
|
||||
|
||||
@@ -861,6 +861,68 @@ completion_list_add_filters_cb (const void *pointer, void *data,
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* Adds disabled filter names to completion list.
|
||||
*/
|
||||
|
||||
int
|
||||
completion_list_add_filters_disabled_cb (const void *pointer, void *data,
|
||||
const char *completion_item,
|
||||
struct t_gui_buffer *buffer,
|
||||
struct t_gui_completion *completion)
|
||||
{
|
||||
struct t_gui_filter *ptr_filter;
|
||||
|
||||
/* make C compiler happy */
|
||||
(void) pointer;
|
||||
(void) data;
|
||||
(void) completion_item;
|
||||
(void) buffer;
|
||||
|
||||
for (ptr_filter = gui_filters; ptr_filter;
|
||||
ptr_filter = ptr_filter->next_filter)
|
||||
{
|
||||
if (!ptr_filter->enabled)
|
||||
{
|
||||
gui_completion_list_add (completion, ptr_filter->name,
|
||||
0, WEECHAT_LIST_POS_SORT);
|
||||
}
|
||||
}
|
||||
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* Adds enabled filter names to completion list.
|
||||
*/
|
||||
|
||||
int
|
||||
completion_list_add_filters_enabled_cb (const void *pointer, void *data,
|
||||
const char *completion_item,
|
||||
struct t_gui_buffer *buffer,
|
||||
struct t_gui_completion *completion)
|
||||
{
|
||||
struct t_gui_filter *ptr_filter;
|
||||
|
||||
/* make C compiler happy */
|
||||
(void) pointer;
|
||||
(void) data;
|
||||
(void) completion_item;
|
||||
(void) buffer;
|
||||
|
||||
for (ptr_filter = gui_filters; ptr_filter;
|
||||
ptr_filter = ptr_filter->next_filter)
|
||||
{
|
||||
if (ptr_filter->enabled)
|
||||
{
|
||||
gui_completion_list_add (completion, ptr_filter->name,
|
||||
0, WEECHAT_LIST_POS_SORT);
|
||||
}
|
||||
}
|
||||
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* Adds command hooks to completion list.
|
||||
*/
|
||||
@@ -1991,6 +2053,12 @@ completion_init ()
|
||||
hook_completion (NULL, "filters_names", /* formerly "%F" */
|
||||
N_("names of filters"),
|
||||
&completion_list_add_filters_cb, NULL, NULL);
|
||||
hook_completion (NULL, "filters_names_disabled",
|
||||
N_("names of disabled filters"),
|
||||
&completion_list_add_filters_disabled_cb, NULL, NULL);
|
||||
hook_completion (NULL, "filters_names_enabled",
|
||||
N_("names of enabled filters"),
|
||||
&completion_list_add_filters_enabled_cb, NULL, NULL);
|
||||
hook_completion (NULL, "commands", /* formerly "%h" */
|
||||
N_("commands (weechat and plugins); "
|
||||
"optional argument: prefix to add before the commands"),
|
||||
|
||||
+127
-22
@@ -37,6 +37,7 @@
|
||||
#include "wee-config-file.h"
|
||||
#include "wee-arraylist.h"
|
||||
#include "wee-config.h"
|
||||
#include "wee-dir.h"
|
||||
#include "wee-hashtable.h"
|
||||
#include "wee-hdata.h"
|
||||
#include "wee-hook.h"
|
||||
@@ -1527,22 +1528,22 @@ config_file_option_set (struct t_config_option *option, const char *value,
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value + 2, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (error && !error[0]
|
||||
&& (long)old_value + number <= (long)(option->max))
|
||||
{
|
||||
value_int = old_value + number;
|
||||
if (value_int <= option->max)
|
||||
new_value_ok = 1;
|
||||
new_value_ok = 1;
|
||||
}
|
||||
}
|
||||
else if (strncmp (value, "--", 2) == 0)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (value + 2, &error, 10);
|
||||
if (error && !error[0])
|
||||
if (error && !error[0]
|
||||
&& (long)old_value - number >= (long)(option->min))
|
||||
{
|
||||
value_int = old_value - number;
|
||||
if (value_int >= option->min)
|
||||
new_value_ok = 1;
|
||||
new_value_ok = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -3018,7 +3019,7 @@ config_file_write_internal (struct t_config_file *config_file,
|
||||
"#\n"
|
||||
"# Use commands like /set or /fset to change settings in WeeChat.\n"
|
||||
"#\n"
|
||||
"# For more info, see: https://weechat.org/doc/quickstart/\n"
|
||||
"# For more info, see: https://weechat.org/doc/weechat/quickstart/\n"
|
||||
"#\n",
|
||||
version_get_name (),
|
||||
config_file->filename))
|
||||
@@ -3154,6 +3155,10 @@ config_file_parse_version (const char *version)
|
||||
long number;
|
||||
char *error;
|
||||
|
||||
if (!version)
|
||||
return -1;
|
||||
|
||||
error = NULL;
|
||||
number = strtoll (version, &error, 10);
|
||||
if (!error || error[0])
|
||||
return -1;
|
||||
@@ -3161,6 +3166,66 @@ config_file_parse_version (const char *version)
|
||||
return (number < 1) ? -1 : (int)number;
|
||||
}
|
||||
|
||||
/*
|
||||
* Backups a configuration file if its version is unsupported and cannot be
|
||||
* loaded.
|
||||
*/
|
||||
|
||||
void
|
||||
config_file_backup (const char *filename)
|
||||
{
|
||||
char *filename_backup, str_time[32], str_index[32];
|
||||
int length, index;
|
||||
struct tm *local_time;
|
||||
time_t date;
|
||||
|
||||
if (!filename)
|
||||
return;
|
||||
|
||||
length = strlen (filename) + 128;
|
||||
|
||||
filename_backup = malloc (length);
|
||||
if (!filename_backup)
|
||||
return;
|
||||
|
||||
date = time (NULL);
|
||||
local_time = localtime (&date);
|
||||
if (strftime (str_time, sizeof (str_time), ".%Y%m%d.%H%M%S", local_time) == 0)
|
||||
str_time[0] = '\0';
|
||||
|
||||
index = 1;
|
||||
while (1)
|
||||
{
|
||||
if (index == 1)
|
||||
str_index[0] = '\0';
|
||||
else
|
||||
snprintf (str_index, sizeof (str_index), ".%d", index);
|
||||
snprintf (filename_backup, length,
|
||||
"%s.backup%s%s",
|
||||
filename, str_time, str_index);
|
||||
if (access (filename_backup, F_OK) != 0)
|
||||
break;
|
||||
index++;
|
||||
}
|
||||
|
||||
if (dir_file_copy (filename, filename_backup))
|
||||
{
|
||||
gui_chat_printf (NULL,
|
||||
_("%sFile %s has been backed up as %s"),
|
||||
gui_chat_prefix[GUI_CHAT_PREFIX_ERROR],
|
||||
filename, filename_backup);
|
||||
}
|
||||
else
|
||||
{
|
||||
gui_chat_printf (NULL,
|
||||
_("%sError: unable to backup file %s"),
|
||||
gui_chat_prefix[GUI_CHAT_PREFIX_ERROR],
|
||||
filename);
|
||||
}
|
||||
|
||||
free (filename_backup);
|
||||
}
|
||||
|
||||
/*
|
||||
* Updates data read from config file: either section or option + value.
|
||||
* The update callback (if defined in config) is called if the config version
|
||||
@@ -3173,16 +3238,22 @@ config_file_parse_version (const char *version)
|
||||
*
|
||||
* Section can be updated only if option and value are NULL (ie if we are
|
||||
* reading a section line like "[section]").
|
||||
*
|
||||
* Integer warning_update_displayed is set to 1 if a warning is displayed,
|
||||
* when the file is updated to a newer version (then it's not compatible any
|
||||
* more with previous versions).
|
||||
*/
|
||||
|
||||
void
|
||||
config_file_update_data_read (struct t_config_file *config_file,
|
||||
const char *filename,
|
||||
const char *section,
|
||||
const char *option,
|
||||
const char *value,
|
||||
char **ret_section,
|
||||
char **ret_option,
|
||||
char **ret_value)
|
||||
char **ret_value,
|
||||
int *warning_update_displayed)
|
||||
{
|
||||
struct t_hashtable *data_read, *hashtable;
|
||||
const char *ptr_section, *ptr_option, *ptr_value;
|
||||
@@ -3192,6 +3263,21 @@ config_file_update_data_read (struct t_config_file *config_file,
|
||||
if (config_file->version_read >= config_file->version)
|
||||
return;
|
||||
|
||||
if (!*warning_update_displayed
|
||||
&& (config_file->version_read < config_file->version))
|
||||
{
|
||||
gui_chat_printf (
|
||||
NULL,
|
||||
_("%sImportant: file %s has been updated from version %d to %d, "
|
||||
"it is not compatible and can not be loaded any more with any "
|
||||
"older version"),
|
||||
gui_chat_prefix[GUI_CHAT_PREFIX_ERROR],
|
||||
filename,
|
||||
config_file->version_read,
|
||||
config_file->version);
|
||||
*warning_update_displayed = 1;
|
||||
}
|
||||
|
||||
/* do nothing if there's no update callback */
|
||||
if (!config_file->callback_update)
|
||||
return;
|
||||
@@ -3289,6 +3375,7 @@ int
|
||||
config_file_read_internal (struct t_config_file *config_file, int reload)
|
||||
{
|
||||
int filename_length, line_number, rc, length, version;
|
||||
int warning_update_displayed;
|
||||
char *filename, *section, *option, *value;
|
||||
struct t_config_section *ptr_section;
|
||||
struct t_config_option *ptr_option;
|
||||
@@ -3298,6 +3385,7 @@ config_file_read_internal (struct t_config_file *config_file, int reload)
|
||||
return WEECHAT_CONFIG_READ_FILE_NOT_FOUND;
|
||||
|
||||
config_file->version_read = 1;
|
||||
warning_update_displayed = 0;
|
||||
|
||||
/* build filename */
|
||||
filename_length = strlen (weechat_config_dir) + strlen (DIR_SEPARATOR) +
|
||||
@@ -3396,9 +3484,10 @@ config_file_read_internal (struct t_config_file *config_file, int reload)
|
||||
section = string_strndup (ptr_line + 1, pos - ptr_line - 1);
|
||||
if (section)
|
||||
{
|
||||
config_file_update_data_read (config_file,
|
||||
config_file_update_data_read (config_file, filename,
|
||||
section, NULL, NULL,
|
||||
§ion, NULL, NULL);
|
||||
§ion, NULL, NULL,
|
||||
&warning_update_displayed);
|
||||
ptr_section = config_file_search_section (config_file,
|
||||
section);
|
||||
if (!ptr_section)
|
||||
@@ -3474,25 +3563,39 @@ config_file_read_internal (struct t_config_file *config_file, int reload)
|
||||
{
|
||||
gui_chat_printf (
|
||||
NULL,
|
||||
_("%sWarning: %s, line %d: invalid config "
|
||||
"version: %s"),
|
||||
_("%sError: %s, line %d: invalid config "
|
||||
"version: \"%s\" => "
|
||||
"rest of file is IGNORED, default options are used"),
|
||||
gui_chat_prefix[GUI_CHAT_PREFIX_ERROR],
|
||||
filename, line_number,
|
||||
line);
|
||||
config_file_backup (filename);
|
||||
if (option)
|
||||
free (option);
|
||||
if (value)
|
||||
free (value);
|
||||
goto end_file;
|
||||
}
|
||||
else
|
||||
{
|
||||
config_file->version_read = version;
|
||||
if (config_file->version_read > config_file->version)
|
||||
{
|
||||
gui_chat_printf (NULL,
|
||||
_("%sWarning: %s, version read (%d) is "
|
||||
"newer than supported version (%d), "
|
||||
"options may be broken!"),
|
||||
gui_chat_prefix[GUI_CHAT_PREFIX_ERROR],
|
||||
filename,
|
||||
config_file->version_read,
|
||||
config_file->version);
|
||||
gui_chat_printf (
|
||||
NULL,
|
||||
_("%sError: %s, version read (%d) is newer than "
|
||||
"supported version (%d) => "
|
||||
"rest of file is IGNORED, default options are used"),
|
||||
gui_chat_prefix[GUI_CHAT_PREFIX_ERROR],
|
||||
filename,
|
||||
config_file->version_read,
|
||||
config_file->version);
|
||||
config_file_backup (filename);
|
||||
if (option)
|
||||
free (option);
|
||||
if (value)
|
||||
free (value);
|
||||
goto end_file;
|
||||
}
|
||||
}
|
||||
goto end_line;
|
||||
@@ -3509,9 +3612,10 @@ config_file_read_internal (struct t_config_file *config_file, int reload)
|
||||
goto end_line;
|
||||
}
|
||||
|
||||
config_file_update_data_read (config_file,
|
||||
config_file_update_data_read (config_file, filename,
|
||||
ptr_section->name, option, value,
|
||||
NULL, &option, &value);
|
||||
NULL, &option, &value,
|
||||
&warning_update_displayed);
|
||||
|
||||
/* option has been ignored by the update callback? */
|
||||
if (!option || !option[0])
|
||||
@@ -3582,6 +3686,7 @@ config_file_read_internal (struct t_config_file *config_file, int reload)
|
||||
free (value);
|
||||
}
|
||||
|
||||
end_file:
|
||||
fclose (config_file->file);
|
||||
config_file->file = NULL;
|
||||
free (filename);
|
||||
|
||||
+51
-33
@@ -1601,7 +1601,24 @@ config_weechat_update_cb (const void *pointer, void *data,
|
||||
}
|
||||
else
|
||||
{
|
||||
new_option = gui_key_legacy_to_alias (ptr_option);
|
||||
/*
|
||||
* if backspace or ctrl-backspace was manually bound to a
|
||||
* different command, keep the key as-is (in lower case) ;
|
||||
* in all other cases, convert the key to the new name
|
||||
*/
|
||||
if (ptr_section
|
||||
&& (strcmp (ptr_section, "key") == 0)
|
||||
&& ((strcmp (ptr_option, "ctrl-H") == 0)
|
||||
|| (strcmp (ptr_option, "ctrl-?") == 0))
|
||||
&& (ptr_value
|
||||
&& (strcmp (ptr_value, "/input delete_previous_char") != 0)))
|
||||
{
|
||||
new_option = string_tolower (ptr_option);
|
||||
}
|
||||
else
|
||||
{
|
||||
new_option = gui_key_legacy_to_alias (ptr_option);
|
||||
}
|
||||
if (new_option)
|
||||
{
|
||||
if (strcmp (ptr_option, new_option) != 0)
|
||||
@@ -1612,6 +1629,18 @@ config_weechat_update_cb (const void *pointer, void *data,
|
||||
ptr_option, new_option);
|
||||
hashtable_set (data_read, "option", new_option);
|
||||
changes++;
|
||||
if (ptr_section
|
||||
&& (strcmp (ptr_section, "key") == 0)
|
||||
&& (strcmp (new_option, "return") == 0)
|
||||
&& (!ptr_value
|
||||
|| (strcmp (ptr_value, "/input return") != 0)))
|
||||
{
|
||||
gui_chat_printf (
|
||||
NULL,
|
||||
_("Command converted for key \"%s\": \"%s\" => \"%s\""),
|
||||
"return", ptr_value, "/input return");
|
||||
hashtable_set (data_read, "value", "/input return");
|
||||
}
|
||||
}
|
||||
free (new_option);
|
||||
}
|
||||
@@ -2166,17 +2195,20 @@ config_weechat_custom_bar_item_read_cb (const void *pointer, void *data,
|
||||
if (!ptr_temp_item)
|
||||
{
|
||||
/* create new temporary custom bar item */
|
||||
ptr_temp_item = gui_bar_item_custom_alloc (item_name);
|
||||
if (ptr_temp_item)
|
||||
if (gui_bar_item_search_default (item_name) < 0)
|
||||
{
|
||||
/* add new custom bar item at the end */
|
||||
ptr_temp_item->prev_item = last_gui_temp_custom_bar_item;
|
||||
ptr_temp_item->next_item = NULL;
|
||||
if (last_gui_temp_custom_bar_item)
|
||||
last_gui_temp_custom_bar_item->next_item = ptr_temp_item;
|
||||
else
|
||||
gui_temp_custom_bar_items = ptr_temp_item;
|
||||
last_gui_temp_custom_bar_item = ptr_temp_item;
|
||||
ptr_temp_item = gui_bar_item_custom_alloc (item_name);
|
||||
if (ptr_temp_item)
|
||||
{
|
||||
/* add new custom bar item at the end */
|
||||
ptr_temp_item->prev_item = last_gui_temp_custom_bar_item;
|
||||
ptr_temp_item->next_item = NULL;
|
||||
if (last_gui_temp_custom_bar_item)
|
||||
last_gui_temp_custom_bar_item->next_item = ptr_temp_item;
|
||||
else
|
||||
gui_temp_custom_bar_items = ptr_temp_item;
|
||||
last_gui_temp_custom_bar_item = ptr_temp_item;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2197,6 +2229,13 @@ config_weechat_custom_bar_item_read_cb (const void *pointer, void *data,
|
||||
section->name, option_name, value);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
gui_chat_printf (NULL,
|
||||
_("%sUnable to add custom bar item \"%s\""),
|
||||
gui_chat_prefix[GUI_CHAT_PREFIX_ERROR],
|
||||
item_name);
|
||||
}
|
||||
|
||||
free (item_name);
|
||||
|
||||
@@ -2437,27 +2476,6 @@ config_weechat_layout_write_cb (const void *pointer, void *data,
|
||||
return WEECHAT_CONFIG_WRITE_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* Checks notify option value.
|
||||
*
|
||||
* Returns:
|
||||
* 1: value OK
|
||||
* 0: invalid value
|
||||
*/
|
||||
|
||||
int
|
||||
config_weechat_notify_check_cb (const void *pointer, void *data,
|
||||
struct t_config_option *option,
|
||||
const char *value)
|
||||
{
|
||||
/* make C compiler happy */
|
||||
(void) pointer;
|
||||
(void) data;
|
||||
(void) option;
|
||||
|
||||
return (gui_buffer_search_notify (value) >= 0) ? 1 : 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Callback for changes on a notify option.
|
||||
*/
|
||||
@@ -2520,7 +2538,7 @@ config_weechat_notify_create_option_cb (const void *pointer, void *data,
|
||||
option_name, "integer", _("Notify level for buffer"),
|
||||
"none|highlight|message|all",
|
||||
0, 0, "", value, 0,
|
||||
&config_weechat_notify_check_cb, NULL, NULL,
|
||||
NULL, NULL, NULL,
|
||||
&config_weechat_notify_change_cb, NULL, NULL,
|
||||
NULL, NULL, NULL);
|
||||
rc = (ptr_option) ?
|
||||
|
||||
@@ -421,6 +421,10 @@ weecrypto_totp_generate_internal (const char *secret, int length_secret,
|
||||
int rc, offset, length;
|
||||
unsigned long bin_code;
|
||||
|
||||
#if __BYTE_ORDER == __BIG_ENDIAN
|
||||
/* Big endian does not need to swap bytes here! */
|
||||
moving_factor_swapped = moving_factor;
|
||||
#else
|
||||
moving_factor_swapped = (moving_factor >> 56)
|
||||
| ((moving_factor << 40) & 0x00FF000000000000)
|
||||
| ((moving_factor << 24) & 0x0000FF0000000000)
|
||||
@@ -429,6 +433,7 @@ weecrypto_totp_generate_internal (const char *secret, int length_secret,
|
||||
| ((moving_factor >> 24) & 0x0000000000FF0000)
|
||||
| ((moving_factor >> 40) & 0x000000000000FF00)
|
||||
| (moving_factor << 56);
|
||||
#endif
|
||||
|
||||
rc = weecrypto_hmac (secret, length_secret,
|
||||
&moving_factor_swapped, sizeof (moving_factor_swapped),
|
||||
|
||||
@@ -175,7 +175,7 @@ debug_sigsegv_cb ()
|
||||
"*** then issue command: \"bt full\" and send result to developers.\n"
|
||||
"*** See the user's guide for more info about enabling the core files\n"
|
||||
"*** and reporting crashes:\n"
|
||||
"*** https://weechat.org/doc/stable/user/#report_crashes\n"
|
||||
"*** https://weechat.org/doc/weechat/stable/user/#report_crashes\n"
|
||||
"***\n"
|
||||
"*** 2. Otherwise send the backtrace (below), only if it is a complete trace.\n"
|
||||
"*** Keep the crash log file, just in case developers ask you some info\n"
|
||||
|
||||
+16
-5
@@ -440,6 +440,9 @@ dir_find_xdg_dirs (char **config_dir, char **data_dir, char **cache_dir,
|
||||
*runtime_dir = NULL;
|
||||
|
||||
ptr_home = getenv ("HOME");
|
||||
if (!ptr_home)
|
||||
goto error_home;
|
||||
|
||||
xdg_config_home = getenv ("XDG_CONFIG_HOME");
|
||||
xdg_data_home = getenv ("XDG_DATA_HOME");
|
||||
xdg_cache_home = getenv ("XDG_CACHE_HOME");
|
||||
@@ -460,7 +463,7 @@ dir_find_xdg_dirs (char **config_dir, char **data_dir, char **cache_dir,
|
||||
}
|
||||
*config_dir = strdup (path);
|
||||
if (!*config_dir)
|
||||
goto error;
|
||||
goto error_memory;
|
||||
|
||||
/* set data dir: $XDG_DATA_HOME/weechat or $HOME/.local/share/weechat */
|
||||
if (xdg_data_home && xdg_data_home[0])
|
||||
@@ -478,7 +481,7 @@ dir_find_xdg_dirs (char **config_dir, char **data_dir, char **cache_dir,
|
||||
}
|
||||
*data_dir = strdup (path);
|
||||
if (!*data_dir)
|
||||
goto error;
|
||||
goto error_memory;
|
||||
|
||||
/* set cache dir: $XDG_CACHE_HOME/weechat or $HOME/.cache/weechat */
|
||||
if (xdg_cache_home && xdg_cache_home[0])
|
||||
@@ -495,7 +498,7 @@ dir_find_xdg_dirs (char **config_dir, char **data_dir, char **cache_dir,
|
||||
}
|
||||
*cache_dir = strdup (path);
|
||||
if (!*cache_dir)
|
||||
goto error;
|
||||
goto error_memory;
|
||||
|
||||
/* set runtime dir: $XDG_RUNTIME_DIR/weechat or same as cache dir */
|
||||
if (xdg_runtime_dir && xdg_runtime_dir[0])
|
||||
@@ -510,10 +513,19 @@ dir_find_xdg_dirs (char **config_dir, char **data_dir, char **cache_dir,
|
||||
*runtime_dir = strdup (*cache_dir);
|
||||
}
|
||||
if (!*runtime_dir)
|
||||
goto error;
|
||||
goto error_memory;
|
||||
|
||||
return 1;
|
||||
|
||||
error_home:
|
||||
string_fprintf (stderr,
|
||||
_("Error: environment variable \"HOME\" is not defined\n"));
|
||||
goto error;
|
||||
|
||||
error_memory:
|
||||
string_fprintf (stderr, _("Error: not enough memory\n"));
|
||||
goto error;
|
||||
|
||||
error:
|
||||
if (*config_dir)
|
||||
{
|
||||
@@ -535,7 +547,6 @@ error:
|
||||
free (*runtime_dir);
|
||||
*runtime_dir = NULL;
|
||||
}
|
||||
string_fprintf (stderr, _("Error: not enough memory\n"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
+118
-79
@@ -30,6 +30,7 @@
|
||||
#include <libintl.h>
|
||||
#include <locale.h>
|
||||
#include <gcrypt.h>
|
||||
#include <regex.h>
|
||||
|
||||
#include "weechat.h"
|
||||
#include "wee-arraylist.h"
|
||||
@@ -46,7 +47,8 @@
|
||||
#include "wee-utf8.h"
|
||||
#include "../plugins/plugin.h"
|
||||
|
||||
#define ESCAPE(msg) (doc_gen_escape (msg))
|
||||
#define ESCAPE_TABLE(msg) (doc_gen_escape_table (msg))
|
||||
#define ESCAPE_ANCHOR(msg) (doc_gen_escape_anchor_link (msg))
|
||||
#define TRANS(msg) ((msg && msg[0]) ? _(msg) : msg)
|
||||
#define TRANS_DEF(msg, def) ((msg && msg[0]) ? _(msg) : def)
|
||||
#define PLUGIN(plugin) ((plugin) ? plugin->name : "weechat")
|
||||
@@ -62,7 +64,7 @@ char *string_escaped[32];
|
||||
*/
|
||||
|
||||
char *
|
||||
doc_gen_escape (const char *message)
|
||||
doc_gen_escape_table (const char *message)
|
||||
{
|
||||
index_string_escaped = (index_string_escaped + 1) % 32;
|
||||
|
||||
@@ -74,6 +76,31 @@ doc_gen_escape (const char *message)
|
||||
return string_escaped[index_string_escaped];
|
||||
}
|
||||
|
||||
/*
|
||||
* Escapes a string to be used as anchor link: replace ",", "@" and "*" by "-".
|
||||
*/
|
||||
|
||||
char *
|
||||
doc_gen_escape_anchor_link (const char *message)
|
||||
{
|
||||
regex_t regex;
|
||||
|
||||
if (string_regcomp (®ex, "[,@*():&|]+", REG_EXTENDED) != 0)
|
||||
return NULL;
|
||||
|
||||
index_string_escaped = (index_string_escaped + 1) % 32;
|
||||
|
||||
if (string_escaped[index_string_escaped])
|
||||
free (string_escaped[index_string_escaped]);
|
||||
|
||||
string_escaped[index_string_escaped] = string_replace_regex (
|
||||
message, ®ex, "-", '$', NULL, NULL);
|
||||
|
||||
regfree (®ex);
|
||||
|
||||
return string_escaped[index_string_escaped];
|
||||
}
|
||||
|
||||
/*
|
||||
* Opens a file for write using:
|
||||
* - path
|
||||
@@ -99,7 +126,7 @@ doc_gen_open_file (const char *path, const char *doc, const char *name,
|
||||
if (!file)
|
||||
{
|
||||
string_fprintf (stderr,
|
||||
"doc generator: ERROR: unable to write file \"%s\"",
|
||||
"doc generator: ERROR: unable to write file \"%s\"\n",
|
||||
filename);
|
||||
return NULL;
|
||||
}
|
||||
@@ -435,7 +462,7 @@ doc_gen_user_options (const char *path, const char *lang)
|
||||
struct t_config_option *ptr_option;
|
||||
struct t_arraylist *list_options;
|
||||
int i, list_size, index_option;
|
||||
char *name_escaped, *desc_escaped, *values, str_values[256];
|
||||
char *desc_escaped, *values, str_values[256];
|
||||
char *default_value, *tmp;
|
||||
|
||||
file = doc_gen_open_file (path, "user", "options", lang);
|
||||
@@ -489,15 +516,14 @@ doc_gen_user_options (const char *path, const char *lang)
|
||||
}
|
||||
if (index_option > 0)
|
||||
string_fprintf (file, "\n");
|
||||
name_escaped = string_replace (ptr_option->name, ",", "_");
|
||||
desc_escaped = (ptr_option->description) ?
|
||||
string_replace (TRANS(ptr_option->description), "]", "\\]") :
|
||||
strdup ("");
|
||||
string_fprintf (file,
|
||||
"* [[option_%s.%s.%s]] *%s.%s.%s*\n",
|
||||
"* [[option_%s.%s.%s]] *pass:none[%s.%s.%s]*\n",
|
||||
ptr_option->config_file->name,
|
||||
ptr_option->section->name,
|
||||
name_escaped,
|
||||
ESCAPE_ANCHOR(ptr_option->name),
|
||||
ptr_option->config_file->name,
|
||||
ptr_option->section->name,
|
||||
ptr_option->name);
|
||||
@@ -568,8 +594,6 @@ doc_gen_user_options (const char *path, const char *lang)
|
||||
(ptr_option->type == CONFIG_OPTION_TYPE_STRING) ? "\"" : "",
|
||||
default_value,
|
||||
(ptr_option->type == CONFIG_OPTION_TYPE_STRING) ? "\"" : "");
|
||||
if (name_escaped)
|
||||
free (name_escaped);
|
||||
if (desc_escaped)
|
||||
free (desc_escaped);
|
||||
if (values)
|
||||
@@ -578,10 +602,13 @@ doc_gen_user_options (const char *path, const char *lang)
|
||||
free (default_value);
|
||||
}
|
||||
|
||||
string_fprintf (
|
||||
file,
|
||||
"// end::%s_options[]\n",
|
||||
old_config->name);
|
||||
if (old_config)
|
||||
{
|
||||
string_fprintf (
|
||||
file,
|
||||
"// end::%s_options[]\n",
|
||||
old_config->name);
|
||||
}
|
||||
|
||||
arraylist_free (list_options);
|
||||
|
||||
@@ -614,9 +641,9 @@ doc_gen_user_default_aliases (const char *path, const char *lang)
|
||||
"[width=\"100%\",cols=\"2m,5m,5\",options=\"header\"]\n"
|
||||
"|===\n"
|
||||
"| %s | %s | %s\n",
|
||||
ESCAPE(_("Alias")),
|
||||
ESCAPE(_("Command")),
|
||||
ESCAPE(_("Completion")));
|
||||
ESCAPE_TABLE(_("Alias")),
|
||||
ESCAPE_TABLE(_("Command")),
|
||||
ESCAPE_TABLE(_("Completion")));
|
||||
|
||||
ptr_infolist = hook_infolist_get (NULL, "alias_default", NULL, NULL);
|
||||
while (infolist_next (ptr_infolist))
|
||||
@@ -624,10 +651,10 @@ doc_gen_user_default_aliases (const char *path, const char *lang)
|
||||
ptr_completion = infolist_string(ptr_infolist, "completion");
|
||||
string_fprintf (file,
|
||||
"| /%s | /%s | %s\n",
|
||||
ESCAPE(infolist_string(ptr_infolist, "name")),
|
||||
ESCAPE(infolist_string(ptr_infolist, "command")),
|
||||
ESCAPE_TABLE(infolist_string(ptr_infolist, "name")),
|
||||
ESCAPE_TABLE(infolist_string(ptr_infolist, "command")),
|
||||
(ptr_completion && ptr_completion[0]) ?
|
||||
ESCAPE(ptr_completion) : "-");
|
||||
ESCAPE_TABLE(ptr_completion) : "-");
|
||||
}
|
||||
infolist_free (ptr_infolist);
|
||||
|
||||
@@ -663,8 +690,8 @@ doc_gen_user_irc_colors (const char *path, const char *lang)
|
||||
"[width=\"50%\",cols=\"^2m,3\",options=\"header\"]\n"
|
||||
"|===\n"
|
||||
"| %s | %s\n",
|
||||
ESCAPE(_("IRC color")),
|
||||
ESCAPE(_("WeeChat color")));
|
||||
ESCAPE_TABLE(_("IRC color")),
|
||||
ESCAPE_TABLE(_("WeeChat color")));
|
||||
|
||||
ptr_infolist = hook_infolist_get (NULL, "irc_color_weechat", NULL, NULL);
|
||||
while (infolist_next (ptr_infolist))
|
||||
@@ -672,8 +699,8 @@ doc_gen_user_irc_colors (const char *path, const char *lang)
|
||||
string_fprintf (
|
||||
file,
|
||||
"| %s | %s\n",
|
||||
ESCAPE(infolist_string(ptr_infolist, "color_irc")),
|
||||
ESCAPE(infolist_string(ptr_infolist, "color_weechat")));
|
||||
ESCAPE_TABLE(infolist_string(ptr_infolist, "color_irc")),
|
||||
ESCAPE_TABLE(infolist_string(ptr_infolist, "color_weechat")));
|
||||
}
|
||||
infolist_free (ptr_infolist);
|
||||
|
||||
@@ -737,10 +764,10 @@ doc_gen_api_infos (const char *path, const char *lang)
|
||||
"[width=\"100%\",cols=\"^1,^2,6,6\",options=\"header\"]\n"
|
||||
"|===\n"
|
||||
"| %s | %s | %s | %s\n",
|
||||
ESCAPE(_("Plugin")),
|
||||
ESCAPE(_("Name")),
|
||||
ESCAPE(_("Description")),
|
||||
ESCAPE(_("Arguments")));
|
||||
ESCAPE_TABLE(_("Plugin")),
|
||||
ESCAPE_TABLE(_("Name")),
|
||||
ESCAPE_TABLE(_("Description")),
|
||||
ESCAPE_TABLE(_("Arguments")));
|
||||
|
||||
list_hooks = arraylist_new (64, 1, 0,
|
||||
&doc_gen_hook_info_cmp_cb, NULL,
|
||||
@@ -758,10 +785,10 @@ doc_gen_api_infos (const char *path, const char *lang)
|
||||
string_fprintf (
|
||||
file,
|
||||
"| %s | %s | %s | %s\n",
|
||||
ESCAPE(PLUGIN(ptr_hook->plugin)),
|
||||
ESCAPE(HOOK_INFO(ptr_hook, info_name)),
|
||||
ESCAPE(TRANS(HOOK_INFO(ptr_hook, description))),
|
||||
ESCAPE(TRANS_DEF(HOOK_INFO(ptr_hook, args_description), "-")));
|
||||
ESCAPE_TABLE(PLUGIN(ptr_hook->plugin)),
|
||||
ESCAPE_TABLE(HOOK_INFO(ptr_hook, info_name)),
|
||||
ESCAPE_TABLE(TRANS(HOOK_INFO(ptr_hook, description))),
|
||||
ESCAPE_TABLE(TRANS_DEF(HOOK_INFO(ptr_hook, args_description), "-")));
|
||||
}
|
||||
|
||||
arraylist_free (list_hooks);
|
||||
@@ -826,11 +853,11 @@ doc_gen_api_infos_hashtable (const char *path, const char *lang)
|
||||
"[width=\"100%\",cols=\"^1,^2,6,6,8\",options=\"header\"]\n"
|
||||
"|===\n"
|
||||
"| %s | %s | %s | %s | %s\n",
|
||||
ESCAPE(_("Plugin")),
|
||||
ESCAPE(_("Name")),
|
||||
ESCAPE(_("Description")),
|
||||
ESCAPE(_("Hashtable (input)")),
|
||||
ESCAPE(_("Hashtable (output)")));
|
||||
ESCAPE_TABLE(_("Plugin")),
|
||||
ESCAPE_TABLE(_("Name")),
|
||||
ESCAPE_TABLE(_("Description")),
|
||||
ESCAPE_TABLE(_("Hashtable (input)")),
|
||||
ESCAPE_TABLE(_("Hashtable (output)")));
|
||||
|
||||
list_hooks = arraylist_new (64, 1, 0,
|
||||
&doc_gen_hook_info_hashtable_cmp_cb, NULL,
|
||||
@@ -848,10 +875,10 @@ doc_gen_api_infos_hashtable (const char *path, const char *lang)
|
||||
string_fprintf (
|
||||
file,
|
||||
"| %s | %s | %s | %s | %s\n",
|
||||
ESCAPE(PLUGIN(ptr_hook->plugin)),
|
||||
ESCAPE(HOOK_INFO(ptr_hook, info_name)),
|
||||
ESCAPE(TRANS(HOOK_INFO_HASHTABLE(ptr_hook, description))),
|
||||
ESCAPE(TRANS_DEF(HOOK_INFO_HASHTABLE(ptr_hook, args_description), "-")),
|
||||
ESCAPE_TABLE(PLUGIN(ptr_hook->plugin)),
|
||||
ESCAPE_TABLE(HOOK_INFO(ptr_hook, info_name)),
|
||||
ESCAPE_TABLE(TRANS(HOOK_INFO_HASHTABLE(ptr_hook, description))),
|
||||
ESCAPE_TABLE(TRANS_DEF(HOOK_INFO_HASHTABLE(ptr_hook, args_description), "-")),
|
||||
TRANS_DEF(HOOK_INFO_HASHTABLE(ptr_hook, output_description), "-"));
|
||||
}
|
||||
|
||||
@@ -917,11 +944,11 @@ doc_gen_api_infolists (const char *path, const char *lang)
|
||||
"[width=\"100%\",cols=\"^1,^2,5,5,5\",options=\"header\"]\n"
|
||||
"|===\n"
|
||||
"| %s | %s | %s | %s | %s\n",
|
||||
ESCAPE(_("Plugin")),
|
||||
ESCAPE(_("Name")),
|
||||
ESCAPE(_("Description")),
|
||||
ESCAPE(_("Pointer")),
|
||||
ESCAPE(_("Arguments")));
|
||||
ESCAPE_TABLE(_("Plugin")),
|
||||
ESCAPE_TABLE(_("Name")),
|
||||
ESCAPE_TABLE(_("Description")),
|
||||
ESCAPE_TABLE(_("Pointer")),
|
||||
ESCAPE_TABLE(_("Arguments")));
|
||||
|
||||
list_hooks = arraylist_new (64, 1, 0,
|
||||
&doc_gen_hook_infolist_cmp_cb, NULL,
|
||||
@@ -939,11 +966,11 @@ doc_gen_api_infolists (const char *path, const char *lang)
|
||||
string_fprintf (
|
||||
file,
|
||||
"| %s | %s | %s | %s | %s\n",
|
||||
ESCAPE(PLUGIN(ptr_hook->plugin)),
|
||||
ESCAPE(HOOK_INFOLIST(ptr_hook, infolist_name)),
|
||||
ESCAPE(TRANS(HOOK_INFOLIST(ptr_hook, description))),
|
||||
ESCAPE(TRANS_DEF(HOOK_INFOLIST(ptr_hook, pointer_description), "-")),
|
||||
ESCAPE(TRANS_DEF(HOOK_INFOLIST(ptr_hook, args_description), "-")));
|
||||
ESCAPE_TABLE(PLUGIN(ptr_hook->plugin)),
|
||||
ESCAPE_TABLE(HOOK_INFOLIST(ptr_hook, infolist_name)),
|
||||
ESCAPE_TABLE(TRANS(HOOK_INFOLIST(ptr_hook, description))),
|
||||
ESCAPE_TABLE(TRANS_DEF(HOOK_INFOLIST(ptr_hook, pointer_description), "-")),
|
||||
ESCAPE_TABLE(TRANS_DEF(HOOK_INFOLIST(ptr_hook, args_description), "-")));
|
||||
}
|
||||
|
||||
arraylist_free (list_hooks);
|
||||
@@ -1203,11 +1230,11 @@ doc_gen_api_hdata (const char *path, const char *lang)
|
||||
"[width=\"100%\",cols=\"^1,^2,2,2,5\",options=\"header\"]\n"
|
||||
"|===\n"
|
||||
"| %s | %s | %s | %s | %s\n\n",
|
||||
ESCAPE(_("Plugin")),
|
||||
ESCAPE(_("Name")),
|
||||
ESCAPE(_("Description")),
|
||||
ESCAPE(_("Lists")),
|
||||
ESCAPE(_("Variables")));
|
||||
ESCAPE_TABLE(_("Plugin")),
|
||||
ESCAPE_TABLE(_("Name")),
|
||||
ESCAPE_TABLE(_("Description")),
|
||||
ESCAPE_TABLE(_("Lists")),
|
||||
ESCAPE_TABLE(_("Variables")));
|
||||
|
||||
list_hooks = arraylist_new (64, 1, 0,
|
||||
&doc_gen_hook_hdata_cmp_cb, NULL,
|
||||
@@ -1227,15 +1254,15 @@ doc_gen_api_hdata (const char *path, const char *lang)
|
||||
HOOK_HDATA(ptr_hook, hdata_name));
|
||||
string_fprintf (file,
|
||||
"| %s\n",
|
||||
ESCAPE(PLUGIN(ptr_hook->plugin)));
|
||||
ESCAPE_TABLE(PLUGIN(ptr_hook->plugin)));
|
||||
string_fprintf (file,
|
||||
"| [[%s]]<<%s,%s>>\n",
|
||||
ESCAPE(str_anchor),
|
||||
ESCAPE(str_anchor),
|
||||
ESCAPE(HOOK_HDATA(ptr_hook, hdata_name)));
|
||||
ESCAPE_TABLE(str_anchor),
|
||||
ESCAPE_TABLE(str_anchor),
|
||||
ESCAPE_TABLE(HOOK_HDATA(ptr_hook, hdata_name)));
|
||||
string_fprintf (file,
|
||||
"| %s\n",
|
||||
ESCAPE(TRANS(HOOK_HDATA(ptr_hook, description))));
|
||||
ESCAPE_TABLE(TRANS(HOOK_HDATA(ptr_hook, description))));
|
||||
ptr_hdata = hook_hdata_get (NULL, HOOK_HDATA(ptr_hook, hdata_name));
|
||||
if (ptr_hdata)
|
||||
doc_gen_api_hdata_content (file, ptr_hdata);
|
||||
@@ -1303,9 +1330,9 @@ doc_gen_api_completions (const char *path, const char *lang)
|
||||
"[width=\"100%\",cols=\"^1,^2,7\",options=\"header\"]\n"
|
||||
"|===\n"
|
||||
"| %s | %s | %s\n",
|
||||
ESCAPE(_("Plugin")),
|
||||
ESCAPE(_("Name")),
|
||||
ESCAPE(_("Description")));
|
||||
ESCAPE_TABLE(_("Plugin")),
|
||||
ESCAPE_TABLE(_("Name")),
|
||||
ESCAPE_TABLE(_("Description")));
|
||||
|
||||
list_hooks = arraylist_new (64, 1, 0,
|
||||
&doc_gen_hook_completion_cmp_cb, NULL,
|
||||
@@ -1323,9 +1350,9 @@ doc_gen_api_completions (const char *path, const char *lang)
|
||||
string_fprintf (
|
||||
file,
|
||||
"| %s | %s | %s\n",
|
||||
ESCAPE(PLUGIN(ptr_hook->plugin)),
|
||||
ESCAPE(HOOK_COMPLETION(ptr_hook, completion_item)),
|
||||
ESCAPE(TRANS(HOOK_COMPLETION(ptr_hook, description))));
|
||||
ESCAPE_TABLE(PLUGIN(ptr_hook->plugin)),
|
||||
ESCAPE_TABLE(HOOK_COMPLETION(ptr_hook, completion_item)),
|
||||
ESCAPE_TABLE(TRANS(HOOK_COMPLETION(ptr_hook, description))));
|
||||
}
|
||||
|
||||
arraylist_free (list_hooks);
|
||||
@@ -1363,9 +1390,9 @@ doc_gen_api_url_options (const char *path, const char *lang)
|
||||
"[width=\"100%\",cols=\"2,^1,7\",options=\"header\"]\n"
|
||||
"|===\n"
|
||||
"| %s | %s ^(1)^ | %s ^(2)^\n",
|
||||
ESCAPE(_("Option")),
|
||||
ESCAPE(_("Type")),
|
||||
ESCAPE(_("Constants")));
|
||||
ESCAPE_TABLE(_("Option")),
|
||||
ESCAPE_TABLE(_("Type")),
|
||||
ESCAPE_TABLE(_("Constants")));
|
||||
|
||||
for (i = 0; url_options[i].name; i++)
|
||||
{
|
||||
@@ -1373,8 +1400,8 @@ doc_gen_api_url_options (const char *path, const char *lang)
|
||||
string_fprintf (
|
||||
file,
|
||||
"| %s | %s |",
|
||||
ESCAPE(name),
|
||||
ESCAPE(url_type_string[url_options[i].type]));
|
||||
ESCAPE_TABLE(name),
|
||||
ESCAPE_TABLE(url_type_string[url_options[i].type]));
|
||||
if (name)
|
||||
free (name);
|
||||
if (url_options[i].constants)
|
||||
@@ -1450,9 +1477,9 @@ doc_gen_api_plugins_priority (const char *path, const char *lang)
|
||||
"[width=\"30%\",cols=\"1,3,2\",options=\"header\"]\n"
|
||||
"|===\n"
|
||||
"| %s | %s | %s\n",
|
||||
ESCAPE(_("Rank")),
|
||||
ESCAPE(_("Plugin")),
|
||||
ESCAPE(_("Priority")));
|
||||
ESCAPE_TABLE(_("Rank")),
|
||||
ESCAPE_TABLE(_("Plugin")),
|
||||
ESCAPE_TABLE(_("Priority")));
|
||||
|
||||
list_plugins = arraylist_new (64, 1, 0,
|
||||
&doc_gen_plugin_cmp_cb, NULL,
|
||||
@@ -1536,9 +1563,9 @@ doc_gen_api_config_priority (const char *path, const char *lang)
|
||||
"[width=\"30%\",cols=\"1,3,2\",options=\"header\"]\n"
|
||||
"|===\n"
|
||||
"| %s | %s | %s\n",
|
||||
ESCAPE(_("Rank")),
|
||||
ESCAPE(_("File")),
|
||||
ESCAPE(_("Priority")));
|
||||
ESCAPE_TABLE(_("Rank")),
|
||||
ESCAPE_TABLE(_("File")),
|
||||
ESCAPE_TABLE(_("Priority")));
|
||||
|
||||
list_configs = arraylist_new (64, 1, 0,
|
||||
&doc_gen_config_cmp_cb, NULL,
|
||||
@@ -1628,7 +1655,7 @@ doc_generate (const char *path)
|
||||
{
|
||||
string_fprintf (
|
||||
stderr,
|
||||
"doc generator: ERROR: failed to create directory \"%s\")",
|
||||
"doc generator: ERROR: failed to create directory \"%s\")\n",
|
||||
path);
|
||||
goto end;
|
||||
}
|
||||
@@ -1638,14 +1665,26 @@ doc_generate (const char *path)
|
||||
* (this is used to generate documentation without installing WeeChat,
|
||||
* that means no need to run `make install`)
|
||||
*/
|
||||
#ifdef ENABLE_NLS
|
||||
localedir = getenv ("WEECHAT_DOCGEN_LOCALEDIR");
|
||||
if (localedir && localedir[0])
|
||||
bindtextdomain (PACKAGE, localedir);
|
||||
#endif /* ENABLE_NLS */
|
||||
|
||||
for (i = 0; locales[i]; i++)
|
||||
{
|
||||
setenv ("LANGUAGE", locales[i], 1);
|
||||
setlocale (LC_ALL, locales[i]);
|
||||
if (!setlocale (LC_ALL, locales[i]))
|
||||
{
|
||||
/* warning on missing locale */
|
||||
string_fprintf (
|
||||
stderr,
|
||||
"doc generator: WARNING: failed to set locale \"%s\", "
|
||||
"docs will include auto-generated English content\n",
|
||||
locales[i]);
|
||||
/* fallback to English */
|
||||
setlocale (LC_ALL, "C");
|
||||
}
|
||||
memcpy (lang, locales[i], 2);
|
||||
lang[2] = '\0';
|
||||
for (j = 0; doc_gen_functions[j]; j++)
|
||||
|
||||
@@ -413,6 +413,7 @@ eval_string_cut (const char *text, int screen)
|
||||
if (!tmp)
|
||||
return strdup ("");
|
||||
|
||||
error = NULL;
|
||||
number = strtol (tmp, &error, 10);
|
||||
if (!error || error[0] || (number < 0))
|
||||
{
|
||||
@@ -453,6 +454,7 @@ eval_string_repeat (const char *text)
|
||||
if (!tmp)
|
||||
return strdup ("");
|
||||
|
||||
error = NULL;
|
||||
number = strtol (tmp, &error, 10);
|
||||
if (!error || error[0] || (number < 0))
|
||||
{
|
||||
@@ -538,6 +540,7 @@ eval_string_split (const char *text)
|
||||
}
|
||||
else
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (str_number, &error, 10);
|
||||
if (!error || error[0] || (number == 0))
|
||||
goto end;
|
||||
@@ -578,6 +581,7 @@ eval_string_split (const char *text)
|
||||
}
|
||||
else if (strncmp (list_flags[i], "max_items=", 10) == 0)
|
||||
{
|
||||
error = NULL;
|
||||
max_items = strtol (list_flags[i] + 10, &error, 10);
|
||||
if (!error || error[0] || (max_items < 0))
|
||||
goto end;
|
||||
@@ -686,6 +690,7 @@ eval_string_split_shell (const char *text)
|
||||
}
|
||||
else
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (str_number, &error, 10);
|
||||
if (!error || error[0] || (number == 0))
|
||||
goto end;
|
||||
@@ -766,6 +771,7 @@ eval_string_regex_group (const char *text, struct t_eval_context *eval_context)
|
||||
}
|
||||
else
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (text, &error, 10);
|
||||
if (!error || error[0])
|
||||
number = -1;
|
||||
@@ -897,6 +903,7 @@ eval_string_base_encode (const char *text)
|
||||
if (!base)
|
||||
goto end;
|
||||
|
||||
error = NULL;
|
||||
number = strtol (base, &error, 10);
|
||||
if (!error || error[0])
|
||||
goto end;
|
||||
@@ -946,6 +953,7 @@ eval_string_base_decode (const char *text)
|
||||
if (!base)
|
||||
goto end;
|
||||
|
||||
error = NULL;
|
||||
number = strtol (base, &error, 10);
|
||||
if (!error || error[0])
|
||||
goto end;
|
||||
@@ -1087,6 +1095,7 @@ eval_string_random (const char *text)
|
||||
tmp = string_strndup (text, pos - text);
|
||||
if (!tmp)
|
||||
goto error;
|
||||
error = NULL;
|
||||
min_number = strtoll (tmp, &error, 10);
|
||||
if (!error || error[0])
|
||||
{
|
||||
@@ -1095,6 +1104,7 @@ eval_string_random (const char *text)
|
||||
}
|
||||
free (tmp);
|
||||
|
||||
error = NULL;
|
||||
max_number = strtoll (pos + 1, &error, 10);
|
||||
if (!error || error[0])
|
||||
goto error;
|
||||
@@ -2618,6 +2628,7 @@ eval_expression (const char *expr, struct t_hashtable *pointers,
|
||||
ptr_value = hashtable_get (options, "debug");
|
||||
if (ptr_value && ptr_value[0])
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (ptr_value, &error, 10);
|
||||
if (error && !error[0] && (number >= 1))
|
||||
{
|
||||
|
||||
@@ -1312,7 +1312,7 @@ string_convert_escaped_chars (const char *string)
|
||||
}
|
||||
|
||||
/*
|
||||
* Checks if first char of string is a whitespace (space or tab).
|
||||
* Checks if first char of string is a whitespace (space, tab, newline or carriage return).
|
||||
*
|
||||
* Returns:
|
||||
* 1: first char is whitespace
|
||||
@@ -1322,7 +1322,11 @@ string_convert_escaped_chars (const char *string)
|
||||
int
|
||||
string_is_whitespace_char (const char *string)
|
||||
{
|
||||
return (string && ((string[0] == ' ') || string[0] == '\t')) ? 1 : 0;
|
||||
return (string && (
|
||||
(string[0] == ' ')
|
||||
|| (string[0] == '\t')
|
||||
|| (string[0] == '\n')
|
||||
|| (string[0] == '\r'))) ? 1 : 0;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -3275,6 +3279,7 @@ string_parse_size (const char *size)
|
||||
if (!str_number)
|
||||
goto end;
|
||||
|
||||
error = NULL;
|
||||
number = strtoll (str_number, &error, 10);
|
||||
if (!error || error[0])
|
||||
goto end;
|
||||
|
||||
+1
-5
@@ -33,11 +33,7 @@
|
||||
#include <locale.h>
|
||||
|
||||
#if defined(ENABLE_NLS) && !defined(_)
|
||||
#ifdef HAVE_LIBINTL_H
|
||||
#include <libintl.h>
|
||||
#else
|
||||
#include "../../intl/libintl.h"
|
||||
#endif /* HAVE_LIBINTL_H */
|
||||
#include <libintl.h>
|
||||
#define _(string) gettext(string)
|
||||
#define NG_(single,plural,number) ngettext(single,plural,number)
|
||||
#ifdef gettext_noop
|
||||
|
||||
@@ -134,7 +134,6 @@ gui_key_default_bindings (int context, int create_option)
|
||||
BIND("meta-h,meta-r", "/hotlist restore");
|
||||
BIND("meta-h,meta-R", "/hotlist restore -all");
|
||||
BIND("meta-k", "/input grab_key_command");
|
||||
BIND("meta-K", "/input grab_raw_key_command");
|
||||
BIND("meta-s", "/mute spell toggle");
|
||||
BIND("meta-u", "/window scroll_unread");
|
||||
BIND("ctrl-s,ctrl-u", "/allbuf /buffer set unread");
|
||||
@@ -398,11 +397,13 @@ gui_key_flush (int paste)
|
||||
* code which is not UTF-8 valid)
|
||||
*/
|
||||
if (!paste
|
||||
&& (i > gui_key_last_key_pressed_sent)
|
||||
&& (!gui_mouse_event_pending
|
||||
|| utf8_is_valid (key_str, -1, NULL)))
|
||||
{
|
||||
(void) hook_signal_send ("key_pressed",
|
||||
WEECHAT_HOOK_SIGNAL_STRING, key_str);
|
||||
gui_key_last_key_pressed_sent = i;
|
||||
}
|
||||
|
||||
if (gui_current_window->buffer->text_search != GUI_TEXT_SEARCH_DISABLED)
|
||||
|
||||
@@ -439,23 +439,46 @@ gui_bar_item_custom_new (const char *name, const char *conditions,
|
||||
if (gui_bar_item_custom_search (name))
|
||||
return NULL;
|
||||
|
||||
if (gui_bar_item_search_default (name) >= 0)
|
||||
return NULL;
|
||||
|
||||
option_conditions = NULL;
|
||||
option_content = NULL;
|
||||
new_bar_item_custom = NULL;
|
||||
|
||||
option_conditions = gui_bar_item_custom_create_option (
|
||||
name,
|
||||
GUI_BAR_ITEM_CUSTOM_OPTION_CONDITIONS,
|
||||
conditions);
|
||||
if (!option_conditions)
|
||||
goto error;
|
||||
|
||||
option_content = gui_bar_item_custom_create_option (
|
||||
name,
|
||||
GUI_BAR_ITEM_CUSTOM_OPTION_CONTENT,
|
||||
content);
|
||||
if (!option_content)
|
||||
goto error;
|
||||
|
||||
new_bar_item_custom = gui_bar_item_custom_new_with_options (
|
||||
name,
|
||||
option_conditions,
|
||||
option_content);
|
||||
if (!new_bar_item_custom)
|
||||
goto error;
|
||||
|
||||
gui_bar_item_custom_create_bar_item (new_bar_item_custom);
|
||||
if (!new_bar_item_custom->bar_item)
|
||||
goto error;
|
||||
|
||||
gui_bar_item_update (name);
|
||||
|
||||
return new_bar_item_custom;
|
||||
|
||||
error:
|
||||
if (new_bar_item_custom)
|
||||
{
|
||||
gui_bar_item_custom_create_bar_item (new_bar_item_custom);
|
||||
gui_bar_item_update (name);
|
||||
gui_bar_item_custom_free (new_bar_item_custom);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -464,8 +487,7 @@ gui_bar_item_custom_new (const char *name, const char *conditions,
|
||||
if (option_content)
|
||||
config_file_option_free (option_content, 0);
|
||||
}
|
||||
|
||||
return new_bar_item_custom;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -475,12 +497,13 @@ gui_bar_item_custom_new (const char *name, const char *conditions,
|
||||
void
|
||||
gui_bar_item_custom_use_temp_items ()
|
||||
{
|
||||
struct t_gui_bar_item_custom *ptr_temp_item;
|
||||
struct t_gui_bar_item_custom *ptr_temp_item, *ptr_next_temp_item;
|
||||
int i;
|
||||
|
||||
for (ptr_temp_item = gui_temp_custom_bar_items; ptr_temp_item;
|
||||
ptr_temp_item = ptr_temp_item->next_item)
|
||||
ptr_temp_item = gui_temp_custom_bar_items;
|
||||
while (ptr_temp_item)
|
||||
{
|
||||
ptr_next_temp_item = ptr_temp_item->next_item;
|
||||
for (i = 0; i < GUI_BAR_ITEM_CUSTOM_NUM_OPTIONS; i++)
|
||||
{
|
||||
if (!ptr_temp_item->options[i])
|
||||
@@ -492,6 +515,20 @@ gui_bar_item_custom_use_temp_items ()
|
||||
}
|
||||
}
|
||||
gui_bar_item_custom_create_bar_item (ptr_temp_item);
|
||||
if (!ptr_temp_item->bar_item)
|
||||
{
|
||||
if (ptr_temp_item->prev_item)
|
||||
(ptr_temp_item->prev_item)->next_item = ptr_temp_item->next_item;
|
||||
if (ptr_temp_item->next_item)
|
||||
(ptr_temp_item->next_item)->prev_item = ptr_temp_item->prev_item;
|
||||
if (gui_temp_custom_bar_items == ptr_temp_item)
|
||||
gui_temp_custom_bar_items = ptr_temp_item->next_item;
|
||||
if (last_gui_temp_custom_bar_item == ptr_temp_item)
|
||||
last_gui_temp_custom_bar_item = ptr_temp_item->prev_item;
|
||||
gui_bar_item_custom_free_data (ptr_temp_item);
|
||||
free (ptr_temp_item);
|
||||
}
|
||||
ptr_temp_item = ptr_next_temp_item;
|
||||
}
|
||||
|
||||
/* remove any existing custom bar item */
|
||||
@@ -517,24 +554,72 @@ int
|
||||
gui_bar_item_custom_rename (struct t_gui_bar_item_custom *item,
|
||||
const char *new_name)
|
||||
{
|
||||
char *old_name, *option_name;
|
||||
int i, length;
|
||||
|
||||
if (!item || !gui_bar_item_custom_name_valid (new_name))
|
||||
return 0;
|
||||
|
||||
if (gui_bar_item_custom_search (new_name))
|
||||
return 0;
|
||||
|
||||
if (gui_bar_item_search_default (new_name) >= 0)
|
||||
return 0;
|
||||
|
||||
old_name = strdup (item->name);
|
||||
if (!old_name)
|
||||
return 0;
|
||||
|
||||
length = strlen (new_name) + 128;
|
||||
option_name = malloc (length);
|
||||
if (!option_name)
|
||||
{
|
||||
free (old_name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
free (item->bar_item->name);
|
||||
item->bar_item->name = strdup (new_name);
|
||||
|
||||
gui_bar_item_update (item->name);
|
||||
gui_bar_item_update (item->bar_item->name);
|
||||
|
||||
free (item->name);
|
||||
item->name = strdup (new_name);
|
||||
|
||||
for (i = 0; i < GUI_BAR_ITEM_CUSTOM_NUM_OPTIONS; i++)
|
||||
{
|
||||
snprintf (option_name, length,
|
||||
"%s.%s",
|
||||
new_name,
|
||||
gui_bar_item_custom_option_string[i]);
|
||||
config_file_option_rename (item->options[i], option_name);
|
||||
}
|
||||
|
||||
gui_bar_item_update (old_name);
|
||||
gui_bar_item_update (item->name);
|
||||
|
||||
free (old_name);
|
||||
free (option_name);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Frees data in a custom bar item.*
|
||||
*/
|
||||
|
||||
void
|
||||
gui_bar_item_custom_free_data (struct t_gui_bar_item_custom *item)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (item->name)
|
||||
free (item->name);
|
||||
for (i = 0; i < GUI_BAR_ITEM_CUSTOM_NUM_OPTIONS; i++)
|
||||
{
|
||||
if (item->options[i])
|
||||
config_file_option_free (item->options[i], 1);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Deletes a custom bar item.
|
||||
*/
|
||||
@@ -543,7 +628,6 @@ void
|
||||
gui_bar_item_custom_free (struct t_gui_bar_item_custom *item)
|
||||
{
|
||||
char *name;
|
||||
int i;
|
||||
|
||||
if (!item)
|
||||
return;
|
||||
@@ -564,13 +648,7 @@ gui_bar_item_custom_free (struct t_gui_bar_item_custom *item)
|
||||
last_gui_custom_bar_item = item->prev_item;
|
||||
|
||||
/* free data */
|
||||
if (item->name)
|
||||
free (item->name);
|
||||
for (i = 0; i < GUI_BAR_ITEM_CUSTOM_NUM_OPTIONS; i++)
|
||||
{
|
||||
if (item->options[i])
|
||||
config_file_option_free (item->options[i], 1);
|
||||
}
|
||||
gui_bar_item_custom_free_data (item);
|
||||
|
||||
free (item);
|
||||
|
||||
|
||||
@@ -69,6 +69,7 @@ extern struct t_gui_bar_item_custom *gui_bar_item_custom_new (const char *name,
|
||||
extern void gui_bar_item_custom_use_temp_items ();
|
||||
extern int gui_bar_item_custom_rename (struct t_gui_bar_item_custom *item,
|
||||
const char *new_name);
|
||||
extern void gui_bar_item_custom_free_data (struct t_gui_bar_item_custom *item);
|
||||
extern void gui_bar_item_custom_free (struct t_gui_bar_item_custom *item);
|
||||
extern void gui_bar_item_custom_free_all ();
|
||||
|
||||
|
||||
@@ -97,6 +97,30 @@ gui_bar_item_valid (struct t_gui_bar_item *bar_item)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Searches for a default bar item by name.
|
||||
*
|
||||
* Returns index in gui_bar_item_names[], -1 if not found.
|
||||
*/
|
||||
|
||||
int
|
||||
gui_bar_item_search_default (const char *item_name)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (!item_name || !item_name[0])
|
||||
return -1;
|
||||
|
||||
for (i = 0; i < GUI_BAR_NUM_ITEMS; i++)
|
||||
{
|
||||
if (strcmp (gui_bar_item_names[i], item_name) == 0)
|
||||
return i;
|
||||
}
|
||||
|
||||
/* default bar item not found */
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Searches for a bar item by name.
|
||||
*/
|
||||
|
||||
@@ -89,6 +89,7 @@ extern char *gui_bar_item_names[];
|
||||
/* functions */
|
||||
|
||||
extern int gui_bar_item_valid (struct t_gui_bar_item *bar_item);
|
||||
extern int gui_bar_item_search_default (const char *item_name);
|
||||
extern struct t_gui_bar_item *gui_bar_item_search (const char *name);
|
||||
extern int gui_bar_item_used_in_bar (struct t_gui_bar *bar,
|
||||
const char *item_name,
|
||||
|
||||
@@ -2145,6 +2145,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))
|
||||
{
|
||||
@@ -2172,6 +2173,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))
|
||||
{
|
||||
@@ -2197,6 +2199,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))
|
||||
{
|
||||
@@ -2885,6 +2888,7 @@ gui_buffer_search_by_number_or_name (const char *string)
|
||||
|
||||
ptr_buffer = NULL;
|
||||
|
||||
error = NULL;
|
||||
number = strtol (string, &error, 10);
|
||||
if (error && !error[0])
|
||||
{
|
||||
|
||||
+7
-3
@@ -597,6 +597,9 @@ gui_chat_printf_date_tags_internal (struct t_gui_buffer *buffer,
|
||||
char *modifier_data, *string, *new_string, *pos_newline;
|
||||
struct t_gui_line *new_line;
|
||||
|
||||
if (!buffer)
|
||||
return;
|
||||
|
||||
new_line = NULL;
|
||||
string = NULL;
|
||||
modifier_data = NULL;
|
||||
@@ -862,7 +865,7 @@ gui_chat_printf_date_tags (struct t_gui_buffer *buffer, time_t date,
|
||||
{
|
||||
time_t date_printed;
|
||||
char *pos, *pos_end;
|
||||
int one_line = 0;
|
||||
int one_line;
|
||||
|
||||
if (!message)
|
||||
return;
|
||||
@@ -885,9 +888,11 @@ gui_chat_printf_date_tags (struct t_gui_buffer *buffer, time_t date,
|
||||
if (date <= 0)
|
||||
date = date_printed;
|
||||
|
||||
one_line = 0;
|
||||
pos = vbuffer;
|
||||
while (pos)
|
||||
{
|
||||
pos_end = NULL;
|
||||
if (!buffer || !buffer->input_multiline)
|
||||
{
|
||||
/* display until next end of line */
|
||||
@@ -911,9 +916,7 @@ gui_chat_printf_date_tags (struct t_gui_buffer *buffer, time_t date,
|
||||
}
|
||||
|
||||
if (one_line)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
pos = (pos_end && pos_end[1]) ? pos_end + 1 : NULL;
|
||||
}
|
||||
@@ -1076,6 +1079,7 @@ gui_chat_hsignal_quote_line_cb (const void *pointer, void *data,
|
||||
hashtable_get (hashtable, "_chat_line_date") : NULL;
|
||||
if (date)
|
||||
{
|
||||
error = NULL;
|
||||
number = strtol (date, &error, 10);
|
||||
if (error && !error[0])
|
||||
{
|
||||
|
||||
@@ -363,7 +363,7 @@ 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[512];
|
||||
char *pos_tab, *regex_prefix, buf[512], str_error[1024];
|
||||
const char *ptr_start_regex, *pos_regex_message;
|
||||
int rc;
|
||||
|
||||
|
||||
@@ -88,7 +88,7 @@ gui_history_buffer_add (struct t_gui_buffer *buffer, const char *string)
|
||||
free (buffer->last_history->text);
|
||||
free (buffer->last_history);
|
||||
buffer->last_history = ptr_history;
|
||||
buffer->num_history++;
|
||||
buffer->num_history--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+3
-4
@@ -1142,7 +1142,7 @@ gui_input_delete_line (struct t_gui_buffer *buffer)
|
||||
end_of_line = (char *)utf8_end_of_line (start);
|
||||
|
||||
size_deleted = end_of_line - beginning_of_line;
|
||||
length_deleted = utf8_strnlen (start, size_deleted);
|
||||
length_deleted = utf8_strnlen (beginning_of_line, size_deleted);
|
||||
|
||||
memmove (beginning_of_line, end_of_line, strlen (end_of_line));
|
||||
|
||||
@@ -1729,11 +1729,10 @@ gui_input_history_global_next (struct t_gui_buffer *buffer)
|
||||
*/
|
||||
|
||||
void
|
||||
gui_input_grab_key (struct t_gui_buffer *buffer, int raw_key, int command,
|
||||
const char *delay)
|
||||
gui_input_grab_key (struct t_gui_buffer *buffer, int command, const char *delay)
|
||||
{
|
||||
if (buffer->input)
|
||||
gui_key_grab_init (raw_key, command, delay);
|
||||
gui_key_grab_init (command, delay);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
+2
-2
@@ -78,8 +78,8 @@ extern void gui_input_history_local_previous (struct t_gui_buffer *buffer);
|
||||
extern void gui_input_history_local_next (struct t_gui_buffer *buffer);
|
||||
extern void gui_input_history_global_previous (struct t_gui_buffer *buffer);
|
||||
extern void gui_input_history_global_next (struct t_gui_buffer *buffer);
|
||||
extern void gui_input_grab_key (struct t_gui_buffer *buffer, int raw_key,
|
||||
int command, const char *delay);
|
||||
extern void gui_input_grab_key (struct t_gui_buffer *buffer, int command,
|
||||
const char *delay);
|
||||
extern void gui_input_grab_mouse (struct t_gui_buffer *buffer, int area);
|
||||
extern void gui_input_insert (struct t_gui_buffer *buffer, const char *args);
|
||||
extern void gui_input_undo (struct t_gui_buffer *buffer);
|
||||
|
||||
+22
-20
@@ -75,8 +75,8 @@ char *gui_key_modifier_list[] =
|
||||
{ "meta-", "ctrl-", "shift-", NULL };
|
||||
|
||||
char *gui_key_alias_list[] =
|
||||
{ "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9", "f10", "f11",
|
||||
"f12", "f13", "f14", "f15", "f16", "f17", "f18", "f19", "f20",
|
||||
{ "f10", "f11", "f12", "f13", "f14", "f15", "f16", "f17", "f18", "f19", "f20",
|
||||
"f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9",
|
||||
"home", "insert", "delete", "end", "backspace", "pgup", "pgdn",
|
||||
"up", "down", "right", "left", "tab", "return", "comma", "space", NULL };
|
||||
|
||||
@@ -87,7 +87,6 @@ int gui_key_verbose = 0; /* 1 to see some messages */
|
||||
|
||||
char gui_key_combo[1024]; /* buffer used for combos */
|
||||
int gui_key_grab = 0; /* 1 if grab mode enabled (alt-k) */
|
||||
int gui_key_grab_raw = 0; /* grab raw key code? */
|
||||
int gui_key_grab_count = 0; /* number of keys pressed in grab mode */
|
||||
int gui_key_grab_command = 0; /* grab command bound to key? */
|
||||
int gui_key_grab_delay = 0; /* delay for grab (default is 500) */
|
||||
@@ -95,6 +94,7 @@ int gui_key_grab_delay = 0; /* delay for grab (default is 500) */
|
||||
int *gui_key_buffer = NULL; /* input buffer (for paste detection) */
|
||||
int gui_key_buffer_alloc = 0; /* input buffer allocated size */
|
||||
int gui_key_buffer_size = 0; /* input buffer size in bytes */
|
||||
int gui_key_last_key_pressed_sent = -1;
|
||||
|
||||
int gui_key_paste_pending = 0; /* 1 is big paste was detected and */
|
||||
/* WeeChat is asking user what to do */
|
||||
@@ -185,13 +185,12 @@ gui_key_get_current_context ()
|
||||
*/
|
||||
|
||||
void
|
||||
gui_key_grab_init (int grab_raw_key, int grab_command, const char *delay)
|
||||
gui_key_grab_init (int grab_command, const char *delay)
|
||||
{
|
||||
long milliseconds;
|
||||
char *error;
|
||||
|
||||
gui_key_grab = 1;
|
||||
gui_key_grab_raw = grab_raw_key;
|
||||
gui_key_grab_count = 0;
|
||||
gui_key_grab_command = grab_command;
|
||||
|
||||
@@ -217,8 +216,7 @@ int
|
||||
gui_key_grab_end_timer_cb (const void *pointer, void *data, int remaining_calls)
|
||||
{
|
||||
char *key_name, *key_name_alias, *key_utf8;
|
||||
const char *ptr_key_name;
|
||||
struct t_gui_key *ptr_key;
|
||||
struct t_gui_key *ptr_key_raw, *ptr_key;
|
||||
int rc;
|
||||
|
||||
/* make C compiler happy */
|
||||
@@ -264,23 +262,23 @@ gui_key_grab_end_timer_cb (const void *pointer, void *data, int remaining_calls)
|
||||
}
|
||||
}
|
||||
|
||||
ptr_key_name = (gui_key_grab_raw) ? key_name : key_name_alias;
|
||||
|
||||
/* add expanded key to input buffer */
|
||||
if (gui_current_window->buffer->input)
|
||||
{
|
||||
gui_input_insert_string (gui_current_window->buffer, ptr_key_name);
|
||||
if (gui_key_grab_command)
|
||||
ptr_key_raw = gui_key_search (gui_keys[GUI_KEY_CONTEXT_DEFAULT],
|
||||
key_name);
|
||||
ptr_key = gui_key_search (gui_keys[GUI_KEY_CONTEXT_DEFAULT],
|
||||
key_name_alias);
|
||||
gui_input_insert_string (gui_current_window->buffer,
|
||||
(ptr_key_raw) ? key_name : key_name_alias);
|
||||
/* add command bound to key (if found) */
|
||||
if (gui_key_grab_command && (ptr_key_raw || ptr_key))
|
||||
{
|
||||
/* add command bound to key (if found) */
|
||||
ptr_key = gui_key_search (gui_keys[GUI_KEY_CONTEXT_DEFAULT],
|
||||
ptr_key_name);
|
||||
if (ptr_key)
|
||||
{
|
||||
gui_input_insert_string (gui_current_window->buffer, " ");
|
||||
gui_input_insert_string (gui_current_window->buffer,
|
||||
ptr_key->command);
|
||||
}
|
||||
gui_input_insert_string (gui_current_window->buffer, " ");
|
||||
gui_input_insert_string (
|
||||
gui_current_window->buffer,
|
||||
(ptr_key_raw) ?
|
||||
ptr_key_raw->command : ptr_key->command);
|
||||
}
|
||||
gui_input_text_changed_modifier_and_signal (
|
||||
gui_current_window->buffer,
|
||||
@@ -2391,6 +2389,9 @@ gui_key_pressed (const char *key_str)
|
||||
|
||||
rc_expand = gui_key_expand (gui_key_combo, &key_name, &key_name_alias);
|
||||
|
||||
if (!rc_expand)
|
||||
goto end_no_input;
|
||||
|
||||
ptr_key = NULL;
|
||||
exact_match = 0;
|
||||
|
||||
@@ -2693,6 +2694,7 @@ gui_key_buffer_reset ()
|
||||
gui_key_buffer_optimize ();
|
||||
}
|
||||
gui_key_paste_lines = 0;
|
||||
gui_key_last_key_pressed_sent = -1;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
+2
-2
@@ -82,6 +82,7 @@ extern int gui_key_grab;
|
||||
extern int gui_key_grab_count;
|
||||
extern int *gui_key_buffer;
|
||||
extern int gui_key_buffer_size;
|
||||
extern int gui_key_last_key_pressed_sent;
|
||||
extern int gui_key_paste_pending;
|
||||
extern int gui_key_paste_bracketed;
|
||||
extern time_t gui_key_last_activity_time;
|
||||
@@ -90,8 +91,7 @@ extern time_t gui_key_last_activity_time;
|
||||
|
||||
extern void gui_key_init ();
|
||||
extern int gui_key_search_context (const char *context);
|
||||
extern void gui_key_grab_init (int grab_raw_key, int grab_command,
|
||||
const char *delay);
|
||||
extern void gui_key_grab_init (int grab_command, const char *delay);
|
||||
extern int gui_key_expand (const char *key,
|
||||
char **key_name, char **key_name_alias);
|
||||
extern char *gui_key_legacy_to_alias (const char *key);
|
||||
|
||||
@@ -62,6 +62,7 @@ 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;
|
||||
@@ -250,9 +251,11 @@ 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])
|
||||
return WEECHAT_RC_OK;
|
||||
error = NULL;
|
||||
number2 = strtol (ptr_number2, &error, 10);
|
||||
if (!error || error[0])
|
||||
return WEECHAT_RC_OK;
|
||||
|
||||
@@ -933,7 +933,7 @@ exec_command_init ()
|
||||
" /exec -sh -n ps xu | grep weechat\n"
|
||||
" /exec -n -norc url:https://pastebin.com/raw.php?i=xxxxxxxx\n"
|
||||
" /exec -nf -noln links -dump "
|
||||
"https://weechat.org/files/doc/devel/weechat_user.en.html\n"
|
||||
"https://weechat.org/files/doc/weechat/devel/weechat_user.en.html\n"
|
||||
" /exec -o uptime\n"
|
||||
" /exec -pipe \"/print Machine uptime:\" uptime\n"
|
||||
" /exec -n tail -f /var/log/messages\n"
|
||||
|
||||
+10
-4
@@ -379,12 +379,15 @@ exec_concat_output (struct t_exec_cmd *exec_cmd, struct t_gui_buffer *buffer,
|
||||
int out, const char *text)
|
||||
{
|
||||
int length, new_size;
|
||||
const char *ptr_text;
|
||||
char *new_output, *pos, *line;
|
||||
const char *ptr_text, *pos, *pos_next;
|
||||
char *new_output, *line;
|
||||
|
||||
ptr_text = text;
|
||||
|
||||
/* if output is not sent as hsignal, display lines (ending with '\n') */
|
||||
/*
|
||||
* if output is not sent as hsignal, display lines
|
||||
* (ending with "\r\n" or "\n")
|
||||
*/
|
||||
if (!exec_cmd->hsignal)
|
||||
{
|
||||
ptr_text = text;
|
||||
@@ -393,6 +396,9 @@ exec_concat_output (struct t_exec_cmd *exec_cmd, struct t_gui_buffer *buffer,
|
||||
pos = strchr (ptr_text, '\n');
|
||||
if (!pos)
|
||||
break;
|
||||
pos_next = pos + 1;
|
||||
if ((pos > ptr_text) && (ptr_text[pos - ptr_text - 1] == '\r'))
|
||||
pos--;
|
||||
if (exec_cmd->output_size[out] > 0)
|
||||
{
|
||||
length = exec_cmd->output_size[out] + (pos - ptr_text) + 1;
|
||||
@@ -418,7 +424,7 @@ exec_concat_output (struct t_exec_cmd *exec_cmd, struct t_gui_buffer *buffer,
|
||||
exec_cmd->output_size[out] = 0;
|
||||
exec_display_line (exec_cmd, buffer, out, line);
|
||||
free (line);
|
||||
ptr_text = pos + 1;
|
||||
ptr_text = pos_next;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -876,7 +876,7 @@ weechat_guile_command_cb (const void *pointer, void *data,
|
||||
{
|
||||
/* load guile script */
|
||||
path_script = plugin_script_search_path (weechat_guile_plugin,
|
||||
ptr_name);
|
||||
ptr_name, 1);
|
||||
weechat_guile_load ((path_script) ? path_script : ptr_name,
|
||||
NULL);
|
||||
if (path_script)
|
||||
@@ -1230,6 +1230,19 @@ weechat_guile_port_write (SCM port, const void *data, size_t size)
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Callback called by scm_with_guile().
|
||||
*/
|
||||
|
||||
void *
|
||||
weechat_guile_init (void *data)
|
||||
{
|
||||
/* make C compiler happy */
|
||||
(void) data;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Initializes guile plugin.
|
||||
*/
|
||||
@@ -1276,7 +1289,16 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
|
||||
scm_install_gmp_memory_functions = 0;
|
||||
#endif /* defined(HAVE_GUILE_GMP_MEMORY_FUNCTIONS) && (SCM_MAJOR_VERSION < 3 || (SCM_MAJOR_VERSION == 3 && SCM_MINOR_VERSION == 0 && SCM_MICRO_VERSION < 8)) */
|
||||
|
||||
#if defined(__MACH__) || SCM_MAJOR_VERSION < 3
|
||||
/*
|
||||
* on GNU/Hurd or if using Guile < 3, use scm_with_guile() instead of
|
||||
* scm_init_guile() to prevent crash on exit
|
||||
*/
|
||||
scm_with_guile (&weechat_guile_init, NULL);
|
||||
#else
|
||||
/* any other OS (not GNU/Hurd) or Guile >= 3.x */
|
||||
scm_init_guile ();
|
||||
#endif
|
||||
|
||||
guile_module_weechat = scm_c_define_module ("weechat",
|
||||
&weechat_guile_api_module_init,
|
||||
|
||||
@@ -110,7 +110,7 @@ irc_batch_add_to_list (struct t_irc_server *server, struct t_irc_batch *batch)
|
||||
struct t_irc_batch *
|
||||
irc_batch_start_batch (struct t_irc_server *server, const char *reference,
|
||||
const char *parent_ref, const char *type,
|
||||
const char *parameters)
|
||||
const char *parameters, struct t_hashtable *tags)
|
||||
{
|
||||
struct t_irc_batch *ptr_batch;
|
||||
|
||||
@@ -130,6 +130,7 @@ irc_batch_start_batch (struct t_irc_server *server, const char *reference,
|
||||
ptr_batch->parent_ref = (parent_ref) ? strdup (parent_ref) : NULL;
|
||||
ptr_batch->type = strdup (type);
|
||||
ptr_batch->parameters = (parameters) ? strdup (parameters) : NULL;
|
||||
ptr_batch->tags = (tags) ? weechat_hashtable_dup (tags) : NULL;
|
||||
ptr_batch->start_time = time (NULL);
|
||||
ptr_batch->messages = NULL;
|
||||
ptr_batch->end_received = 0;
|
||||
@@ -188,6 +189,8 @@ irc_batch_free (struct t_irc_server *server, struct t_irc_batch *batch)
|
||||
free (batch->type);
|
||||
if (batch->parameters)
|
||||
free (batch->parameters);
|
||||
if (batch->tags)
|
||||
weechat_hashtable_free (batch->tags);
|
||||
if (batch->messages)
|
||||
weechat_string_dyn_free (batch->messages, 1);
|
||||
|
||||
@@ -226,7 +229,7 @@ irc_batch_process_messages (struct t_irc_server *server,
|
||||
struct t_irc_batch *batch)
|
||||
{
|
||||
char **list_messages, *command, *channel, modifier_data[1024], *new_messages;
|
||||
char *message;
|
||||
char *message, *message2;
|
||||
int i, count_messages;
|
||||
|
||||
if (!batch || !batch->messages)
|
||||
@@ -261,8 +264,13 @@ irc_batch_process_messages (struct t_irc_server *server,
|
||||
if (!message)
|
||||
continue;
|
||||
|
||||
message2 = irc_tag_add_tags_to_message (message,
|
||||
batch->tags);
|
||||
if (!message2)
|
||||
continue;
|
||||
|
||||
irc_message_parse (server,
|
||||
message,
|
||||
message2,
|
||||
NULL, /* tags */
|
||||
NULL, /* message_without_tags */
|
||||
NULL, /* nick */
|
||||
@@ -280,13 +288,13 @@ irc_batch_process_messages (struct t_irc_server *server,
|
||||
NULL); /* pos_text */
|
||||
|
||||
/* add raw message */
|
||||
irc_raw_print (server, IRC_RAW_FLAG_RECV, message);
|
||||
irc_raw_print (server, IRC_RAW_FLAG_RECV, message2);
|
||||
|
||||
/* call receive callback, ignoring batch tags */
|
||||
irc_protocol_recv_command (server, message, command, channel, 1);
|
||||
irc_protocol_recv_command (server, message2, command, channel, 1);
|
||||
|
||||
if (message)
|
||||
free (message);
|
||||
free (message);
|
||||
free (message2);
|
||||
if (command)
|
||||
free (command);
|
||||
if (channel)
|
||||
@@ -562,6 +570,10 @@ irc_batch_print_log (struct t_irc_server *server)
|
||||
weechat_log_printf (" parent_ref. . . . . : '%s'", ptr_batch->parent_ref);
|
||||
weechat_log_printf (" type. . . . . . . . : '%s'", ptr_batch->type);
|
||||
weechat_log_printf (" parameters. . . . . : '%s'", ptr_batch->parameters);
|
||||
weechat_log_printf (" tags. . . . . . . . : 0x%lx (hashtable: '%s')",
|
||||
ptr_batch->tags,
|
||||
weechat_hashtable_get_string (ptr_batch->tags,
|
||||
"keys_values"));
|
||||
weechat_log_printf (" start_time. . . . . : %lld", (long long)ptr_batch->start_time);
|
||||
weechat_log_printf (" message . . . . . . : 0x%lx ('%s')",
|
||||
ptr_batch->messages,
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
|
||||
#include <time.h>
|
||||
|
||||
struct t_hashtable;
|
||||
struct t_irc_server;
|
||||
|
||||
struct t_irc_batch
|
||||
@@ -30,6 +31,7 @@ struct t_irc_batch
|
||||
char *parent_ref; /* ref of parent batch (optional) */
|
||||
char *type; /* type */
|
||||
char *parameters; /* parameters */
|
||||
struct t_hashtable *tags; /* batch message tags */
|
||||
time_t start_time; /* start time (to auto-purge if */
|
||||
/* batch end is not received) */
|
||||
char **messages; /* messages separated by '\n' */
|
||||
@@ -46,7 +48,8 @@ extern struct t_irc_batch *irc_batch_start_batch (struct t_irc_server *server,
|
||||
const char *reference,
|
||||
const char *parent_ref,
|
||||
const char *type,
|
||||
const char *parameters);
|
||||
const char *parameters,
|
||||
struct t_hashtable *tags);
|
||||
extern int irc_batch_add_message (struct t_irc_server *server,
|
||||
const char *reference,
|
||||
const char *irc_message);
|
||||
|
||||
@@ -462,7 +462,7 @@ irc_channel_create_buffer (struct t_irc_server *server,
|
||||
if (noswitch
|
||||
|| (!manual_join && !autojoin_join)
|
||||
|| (manual_join && !weechat_config_boolean (irc_config_look_buffer_switch_join))
|
||||
|| (autojoin_join && !weechat_config_boolean (irc_config_look_buffer_switch_autojoin)))
|
||||
|| (!manual_join && autojoin_join && !weechat_config_boolean (irc_config_look_buffer_switch_autojoin)))
|
||||
{
|
||||
switch_to_channel = 0;
|
||||
}
|
||||
|
||||
@@ -385,6 +385,7 @@ irc_command_me_channel_message (struct t_irc_server *server,
|
||||
{
|
||||
irc_input_user_message_display (
|
||||
server,
|
||||
0, /* date */
|
||||
channel_name,
|
||||
NULL, /* address */
|
||||
"privmsg",
|
||||
@@ -1970,6 +1971,7 @@ IRC_COMMAND_CALLBACK(ctcp)
|
||||
{
|
||||
irc_input_user_message_display (
|
||||
ptr_server,
|
||||
0, /* date */
|
||||
ctcp_target,
|
||||
NULL, /* address */
|
||||
"privmsg",
|
||||
@@ -2905,11 +2907,13 @@ irc_command_join_server (struct t_irc_server *server, const char *arguments,
|
||||
pos_keys++;
|
||||
}
|
||||
if (pos_keys[0])
|
||||
{
|
||||
keys = weechat_string_split (pos_keys, ",", NULL,
|
||||
WEECHAT_STRING_SPLIT_STRIP_LEFT
|
||||
| WEECHAT_STRING_SPLIT_STRIP_RIGHT
|
||||
| WEECHAT_STRING_SPLIT_COLLAPSE_SEPS,
|
||||
0, &num_keys);
|
||||
}
|
||||
}
|
||||
else
|
||||
new_args = strdup (arguments);
|
||||
@@ -3023,6 +3027,9 @@ irc_command_join_server (struct t_irc_server *server, const char *arguments,
|
||||
}
|
||||
weechat_string_free_split (channels);
|
||||
}
|
||||
|
||||
if (keys)
|
||||
weechat_string_free_split (keys);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -3735,6 +3742,7 @@ IRC_COMMAND_CALLBACK(msg)
|
||||
{
|
||||
irc_input_user_message_display (
|
||||
ptr_server,
|
||||
0, /* date */
|
||||
ptr_channel->name,
|
||||
NULL, /* address */
|
||||
"privmsg",
|
||||
@@ -3755,6 +3763,7 @@ IRC_COMMAND_CALLBACK(msg)
|
||||
{
|
||||
irc_input_user_message_display (
|
||||
ptr_server,
|
||||
0, /* date */
|
||||
targets[i],
|
||||
NULL, /* address */
|
||||
"privmsg",
|
||||
@@ -3910,6 +3919,7 @@ IRC_COMMAND_CALLBACK(notice)
|
||||
ptr_message = (const char *)weechat_arraylist_get (list_messages, i);
|
||||
irc_input_user_message_display (
|
||||
ptr_server,
|
||||
0, /* date */
|
||||
argv[arg_target],
|
||||
NULL, /* address */
|
||||
"notice",
|
||||
@@ -4439,6 +4449,7 @@ IRC_COMMAND_CALLBACK(query)
|
||||
{
|
||||
irc_input_user_message_display (
|
||||
ptr_server,
|
||||
0, /* date */
|
||||
ptr_channel->name,
|
||||
NULL, /* address */
|
||||
"privmsg",
|
||||
@@ -7070,7 +7081,7 @@ irc_command_init ()
|
||||
" /ignore add toto*@*.domain.com libera #weechat"),
|
||||
"list"
|
||||
" || add %(irc_channel_nicks_hosts) %(irc_servers) %(irc_channels) %-"
|
||||
" || del -all|%(irc_ignores_numbers) %-",
|
||||
" || del %(irc_ignores_numbers)|-all %-",
|
||||
&irc_command_ignore, NULL, NULL);
|
||||
weechat_hook_command (
|
||||
"info",
|
||||
|
||||
@@ -103,6 +103,7 @@ struct t_config_option *irc_config_look_notice_welcome_redirect = NULL;
|
||||
struct t_config_option *irc_config_look_notice_welcome_tags = NULL;
|
||||
struct t_config_option *irc_config_look_notify_tags_ison = NULL;
|
||||
struct t_config_option *irc_config_look_notify_tags_whois = NULL;
|
||||
struct t_config_option *irc_config_look_open_pv_buffer_echo_msg = NULL;
|
||||
struct t_config_option *irc_config_look_part_closes_buffer = NULL;
|
||||
struct t_config_option *irc_config_look_pv_buffer = NULL;
|
||||
struct t_config_option *irc_config_look_pv_tags = NULL;
|
||||
@@ -3266,6 +3267,13 @@ irc_config_init ()
|
||||
"\"notify_highlight\""),
|
||||
NULL, 0, 0, "notify_message", NULL, 0,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||
irc_config_look_open_pv_buffer_echo_msg = weechat_config_new_option (
|
||||
irc_config_file, irc_config_section_look,
|
||||
"open_pv_buffer_echo_msg", "boolean",
|
||||
N_("open a private buffer on self message when capability "
|
||||
"echo-message is enabled"),
|
||||
NULL, 0, 0, "on", NULL, 0,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||
irc_config_look_part_closes_buffer = weechat_config_new_option (
|
||||
irc_config_file, irc_config_section_look,
|
||||
"part_closes_buffer", "boolean",
|
||||
|
||||
@@ -139,6 +139,7 @@ extern struct t_config_option *irc_config_look_notice_welcome_redirect;
|
||||
extern struct t_config_option *irc_config_look_notice_welcome_tags;
|
||||
extern struct t_config_option *irc_config_look_notify_tags_ison;
|
||||
extern struct t_config_option *irc_config_look_notify_tags_whois;
|
||||
extern struct t_config_option *irc_config_look_open_pv_buffer_echo_msg;
|
||||
extern struct t_config_option *irc_config_look_part_closes_buffer;
|
||||
extern struct t_config_option *irc_config_look_pv_buffer;
|
||||
extern struct t_config_option *irc_config_look_pv_tags;
|
||||
|
||||
@@ -62,6 +62,7 @@
|
||||
|
||||
void
|
||||
irc_input_user_message_display (struct t_irc_server *server,
|
||||
time_t date,
|
||||
const char *target,
|
||||
const char *address,
|
||||
const char *command,
|
||||
@@ -162,7 +163,7 @@ irc_input_user_message_display (struct t_irc_server *server,
|
||||
{
|
||||
weechat_printf_date_tags (
|
||||
ptr_buffer,
|
||||
0,
|
||||
date,
|
||||
irc_protocol_tags (
|
||||
server,
|
||||
command,
|
||||
@@ -189,7 +190,7 @@ irc_input_user_message_display (struct t_irc_server *server,
|
||||
{
|
||||
weechat_printf_date_tags (
|
||||
ptr_buffer,
|
||||
0,
|
||||
date,
|
||||
irc_protocol_tags (
|
||||
server,
|
||||
command,
|
||||
@@ -211,7 +212,7 @@ irc_input_user_message_display (struct t_irc_server *server,
|
||||
{
|
||||
weechat_printf_date_tags (
|
||||
ptr_buffer,
|
||||
0,
|
||||
date,
|
||||
irc_protocol_tags (
|
||||
server,
|
||||
command,
|
||||
@@ -235,7 +236,7 @@ irc_input_user_message_display (struct t_irc_server *server,
|
||||
{
|
||||
weechat_printf_date_tags (
|
||||
ptr_buffer,
|
||||
0,
|
||||
date,
|
||||
irc_protocol_tags (
|
||||
server,
|
||||
command,
|
||||
@@ -267,7 +268,7 @@ irc_input_user_message_display (struct t_irc_server *server,
|
||||
{
|
||||
weechat_printf_date_tags (
|
||||
ptr_buffer,
|
||||
0,
|
||||
date,
|
||||
irc_protocol_tags (
|
||||
server,
|
||||
command,
|
||||
@@ -333,6 +334,7 @@ irc_input_send_user_message (struct t_gui_buffer *buffer, int flags,
|
||||
{
|
||||
irc_input_user_message_display (
|
||||
ptr_server,
|
||||
0, /* date */
|
||||
ptr_channel->name,
|
||||
NULL, /* address */
|
||||
"privmsg",
|
||||
|
||||
@@ -20,9 +20,12 @@
|
||||
#ifndef WEECHAT_PLUGIN_IRC_INPUT_H
|
||||
#define WEECHAT_PLUGIN_IRC_INPUT_H
|
||||
|
||||
#include <time.h>
|
||||
|
||||
struct t_gui_buffer;
|
||||
|
||||
extern void irc_input_user_message_display (struct t_irc_server *server,
|
||||
time_t date,
|
||||
const char *target,
|
||||
const char *address,
|
||||
const char *command,
|
||||
|
||||
@@ -529,6 +529,8 @@ irc_message_parse_to_hashtable (struct t_irc_server *server,
|
||||
free (arguments);
|
||||
if (text)
|
||||
free (text);
|
||||
if (params)
|
||||
weechat_string_free_split (params);
|
||||
|
||||
return hashtable;
|
||||
}
|
||||
@@ -623,6 +625,7 @@ 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])
|
||||
server->multiline_max_bytes = number;
|
||||
@@ -631,6 +634,7 @@ irc_message_parse_cap_multiline_value (struct t_irc_server *server,
|
||||
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])
|
||||
server->multiline_max_lines = number;
|
||||
|
||||
@@ -341,6 +341,7 @@ irc_protocol_parse_time (const char *time)
|
||||
pos = strchr (time2, ',');
|
||||
if (pos)
|
||||
pos[0] = '\0';
|
||||
error = NULL;
|
||||
value = strtol (time2, &error, 10);
|
||||
if (error && !error[0] && (value >= 0))
|
||||
time_value = (int)value;
|
||||
@@ -688,7 +689,8 @@ IRC_PROTOCOL_CALLBACK(batch)
|
||||
params[0] + 1, /* reference */
|
||||
weechat_hashtable_get (tags, "batch"), /* parent ref */
|
||||
params[1], /* type */
|
||||
str_params);
|
||||
str_params,
|
||||
tags);
|
||||
if (str_params)
|
||||
free (str_params);
|
||||
}
|
||||
@@ -2454,6 +2456,8 @@ IRC_PROTOCOL_CALLBACK(notice)
|
||||
struct t_irc_channel *ptr_channel;
|
||||
struct t_irc_nick *ptr_nick;
|
||||
int notify_private, is_channel, is_channel_orig, nick_is_me, display_host;
|
||||
int cap_echo_message, msg_already_received;
|
||||
time_t time_now;
|
||||
struct t_gui_buffer *ptr_buffer;
|
||||
|
||||
IRC_PROTOCOL_MIN_PARAMS(2);
|
||||
@@ -2479,8 +2483,23 @@ IRC_PROTOCOL_CALLBACK(notice)
|
||||
|
||||
if (nick && (pos_args[0] == '\01'))
|
||||
{
|
||||
irc_ctcp_display_reply_from_nick (server, date, tags, command, nick,
|
||||
address, pos_args);
|
||||
cap_echo_message = weechat_hashtable_has_key (server->cap_list,
|
||||
"echo-message");
|
||||
msg_already_received = weechat_hashtable_has_key (
|
||||
server->echo_msg_recv, irc_message);
|
||||
if (!msg_already_received && cap_echo_message)
|
||||
{
|
||||
time_now = time (NULL);
|
||||
weechat_hashtable_set (server->echo_msg_recv,
|
||||
irc_message, &time_now);
|
||||
}
|
||||
if (!cap_echo_message || !msg_already_received)
|
||||
{
|
||||
irc_ctcp_display_reply_from_nick (server, date, tags, command, nick,
|
||||
address, pos_args);
|
||||
}
|
||||
if (msg_already_received)
|
||||
weechat_hashtable_remove (server->echo_msg_recv, irc_message);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2488,8 +2507,11 @@ IRC_PROTOCOL_CALLBACK(notice)
|
||||
is_channel = irc_channel_is_channel (server, pos_target);
|
||||
is_channel_orig = is_channel;
|
||||
if (is_channel)
|
||||
{
|
||||
channel = strdup (pos_target);
|
||||
else if (weechat_config_boolean (irc_config_look_notice_welcome_redirect))
|
||||
}
|
||||
else if (weechat_config_boolean (irc_config_look_notice_welcome_redirect)
|
||||
&& (irc_server_strcasecmp (server, server->nick, pos_target) == 0))
|
||||
{
|
||||
end_char = ' ';
|
||||
switch (pos_args[0])
|
||||
@@ -2968,6 +2990,7 @@ IRC_PROTOCOL_CALLBACK(pong)
|
||||
|
||||
void
|
||||
irc_protocol_privmsg_display_ctcp_send (struct t_irc_server *server,
|
||||
time_t date,
|
||||
const char *target,
|
||||
const char *address,
|
||||
const char *arguments)
|
||||
@@ -2978,7 +3001,7 @@ irc_protocol_privmsg_display_ctcp_send (struct t_irc_server *server,
|
||||
if (!arguments || !arguments[0])
|
||||
return;
|
||||
|
||||
pos_end = strchr (arguments + 1, '\01');
|
||||
pos_end = strrchr (arguments + 1, '\01');
|
||||
if (!pos_end)
|
||||
return;
|
||||
|
||||
@@ -2993,6 +3016,7 @@ irc_protocol_privmsg_display_ctcp_send (struct t_irc_server *server,
|
||||
|
||||
irc_input_user_message_display (
|
||||
server,
|
||||
date,
|
||||
target,
|
||||
address,
|
||||
"privmsg",
|
||||
@@ -3024,7 +3048,9 @@ IRC_PROTOCOL_CALLBACK(privmsg)
|
||||
{
|
||||
char *msg_args, *msg_args2, str_tags[1024], *str_color, *color;
|
||||
const char *pos_target, *remote_nick, *pv_tags;
|
||||
int status_msg, is_channel, nick_is_me;
|
||||
int status_msg, is_channel, nick_is_me, cap_echo_message;
|
||||
int msg_already_received;
|
||||
time_t time_now;
|
||||
struct t_irc_channel *ptr_channel;
|
||||
struct t_irc_nick *ptr_nick;
|
||||
|
||||
@@ -3052,6 +3078,9 @@ IRC_PROTOCOL_CALLBACK(privmsg)
|
||||
pos_target++;
|
||||
}
|
||||
|
||||
cap_echo_message = weechat_hashtable_has_key (server->cap_list,
|
||||
"echo-message");
|
||||
|
||||
/* receiver is a channel ? */
|
||||
if (is_channel)
|
||||
{
|
||||
@@ -3070,7 +3099,7 @@ IRC_PROTOCOL_CALLBACK(privmsg)
|
||||
if (nick_is_me)
|
||||
{
|
||||
irc_protocol_privmsg_display_ctcp_send (
|
||||
server, params[0], address, msg_args);
|
||||
server, date, params[0], address, msg_args);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -3175,16 +3204,26 @@ IRC_PROTOCOL_CALLBACK(privmsg)
|
||||
/* CTCP to user */
|
||||
if (msg_args[0] == '\01')
|
||||
{
|
||||
if (nick_is_me)
|
||||
msg_already_received = weechat_hashtable_has_key (
|
||||
server->echo_msg_recv, irc_message);
|
||||
if (!msg_already_received && cap_echo_message)
|
||||
{
|
||||
time_now = time (NULL);
|
||||
weechat_hashtable_set (server->echo_msg_recv,
|
||||
irc_message, &time_now);
|
||||
}
|
||||
if (nick_is_me && cap_echo_message && !msg_already_received)
|
||||
{
|
||||
irc_protocol_privmsg_display_ctcp_send (
|
||||
server, remote_nick, address, msg_args);
|
||||
server, date, remote_nick, address, msg_args);
|
||||
}
|
||||
else
|
||||
{
|
||||
irc_ctcp_recv (server, date, tags, command, NULL, params[0],
|
||||
address, nick, remote_nick, msg_args, irc_message);
|
||||
}
|
||||
if (msg_already_received)
|
||||
weechat_hashtable_remove (server->echo_msg_recv, irc_message);
|
||||
goto end;
|
||||
}
|
||||
|
||||
@@ -3194,7 +3233,8 @@ IRC_PROTOCOL_CALLBACK(privmsg)
|
||||
if (strcmp (ptr_channel->name, remote_nick) != 0)
|
||||
irc_channel_pv_rename (server, ptr_channel, remote_nick);
|
||||
}
|
||||
else
|
||||
else if (!nick_is_me || !cap_echo_message
|
||||
|| weechat_config_boolean (irc_config_look_open_pv_buffer_echo_msg))
|
||||
{
|
||||
ptr_channel = irc_channel_new (server,
|
||||
IRC_CHANNEL_TYPE_PRIVATE,
|
||||
@@ -3210,13 +3250,21 @@ IRC_PROTOCOL_CALLBACK(privmsg)
|
||||
}
|
||||
}
|
||||
|
||||
if (weechat_config_boolean (irc_config_look_typing_status_nicks))
|
||||
if (ptr_channel
|
||||
&& weechat_config_boolean (irc_config_look_typing_status_nicks))
|
||||
{
|
||||
irc_typing_channel_set_nick (ptr_channel, nick,
|
||||
IRC_CHANNEL_TYPING_STATE_OFF);
|
||||
}
|
||||
|
||||
irc_channel_set_topic (ptr_channel, address);
|
||||
if (ptr_channel
|
||||
&& (!nick_is_me
|
||||
|| !cap_echo_message
|
||||
|| (irc_server_strcasecmp (server,
|
||||
server->nick, remote_nick) == 0)))
|
||||
{
|
||||
irc_channel_set_topic (ptr_channel, address);
|
||||
}
|
||||
|
||||
if (nick_is_me)
|
||||
{
|
||||
@@ -3259,20 +3307,35 @@ IRC_PROTOCOL_CALLBACK(privmsg)
|
||||
free (str_color);
|
||||
msg_args2 = (nick_is_me) ?
|
||||
irc_message_hide_password (server, remote_nick, msg_args) : NULL;
|
||||
weechat_printf_date_tags (
|
||||
ptr_channel->buffer,
|
||||
date,
|
||||
irc_protocol_tags (server, command, tags, str_tags, nick, address),
|
||||
"%s%s",
|
||||
irc_nick_as_prefix (
|
||||
server, NULL, nick,
|
||||
(nick_is_me) ?
|
||||
IRC_COLOR_CHAT_NICK_SELF : irc_nick_color_for_pv (ptr_channel, nick)),
|
||||
(msg_args2) ? msg_args2 : msg_args);
|
||||
if (nick_is_me && !ptr_channel)
|
||||
{
|
||||
irc_input_user_message_display (
|
||||
server,
|
||||
date,
|
||||
remote_nick,
|
||||
address,
|
||||
"privmsg",
|
||||
NULL, /* ctcp_type */
|
||||
(msg_args2) ? msg_args2 : msg_args,
|
||||
1); /* decode_colors */
|
||||
}
|
||||
else
|
||||
{
|
||||
weechat_printf_date_tags (
|
||||
ptr_channel->buffer,
|
||||
date,
|
||||
irc_protocol_tags (server, command, tags, str_tags, nick, address),
|
||||
"%s%s",
|
||||
irc_nick_as_prefix (
|
||||
server, NULL, nick,
|
||||
(nick_is_me) ?
|
||||
IRC_COLOR_CHAT_NICK_SELF : irc_nick_color_for_pv (ptr_channel, nick)),
|
||||
(msg_args2) ? msg_args2 : msg_args);
|
||||
}
|
||||
if (msg_args2)
|
||||
free (msg_args2);
|
||||
|
||||
if (ptr_channel->has_quit_server)
|
||||
if (ptr_channel && ptr_channel->has_quit_server)
|
||||
ptr_channel->has_quit_server = 0;
|
||||
|
||||
(void) weechat_hook_signal_send ("irc_pv",
|
||||
@@ -6212,7 +6275,7 @@ IRC_PROTOCOL_CALLBACK(353)
|
||||
free (prefixes);
|
||||
}
|
||||
|
||||
if (!ptr_channel)
|
||||
if (!ptr_channel && str_nicks)
|
||||
{
|
||||
weechat_printf_date_tags (
|
||||
irc_msgbuffer_get_target_buffer (
|
||||
@@ -7781,7 +7844,8 @@ irc_protocol_recv_command (struct t_irc_server *server,
|
||||
IRCB(331, 1, 0, 331), /* no topic for channel */
|
||||
IRCB(332, 0, 1, 332), /* topic of channel */
|
||||
IRCB(333, 1, 0, 333), /* topic info (nick/date) */
|
||||
IRCB(335, 1, 0, whois_nick_msg), /* is a bot on */
|
||||
IRCB(335, 1, 0, whois_nick_msg), /* whois (is a bot on) */
|
||||
IRCB(337, 1, 0, whois_nick_msg), /* whois (is hiding idle time) */
|
||||
IRCB(338, 1, 0, 338), /* whois (host) */
|
||||
IRCB(341, 1, 0, 341), /* inviting */
|
||||
IRCB(343, 1, 0, 330_343), /* is opered as */
|
||||
|
||||
@@ -55,7 +55,7 @@ struct t_irc_redirect_pattern irc_redirect_patterns_default[] =
|
||||
* stop: 323: end of /list
|
||||
* extra: -
|
||||
*/
|
||||
"321",
|
||||
"321,322",
|
||||
"323",
|
||||
NULL,
|
||||
NULL, NULL,
|
||||
@@ -462,6 +462,7 @@ irc_redirect_new_with_commands (struct t_irc_server *server,
|
||||
if (pos)
|
||||
{
|
||||
pos[0] = '\0';
|
||||
error = NULL;
|
||||
value = strtol (pos + 1, &error, 10);
|
||||
if (!error || error[0])
|
||||
value = -1;
|
||||
@@ -1309,6 +1310,7 @@ irc_redirect_pattern_hsignal_cb (const void *pointer, void *data,
|
||||
timeout = 0;
|
||||
if (str_timeout && str_timeout[0])
|
||||
{
|
||||
error = NULL;
|
||||
number = (int)strtol (str_timeout, &error, 10);
|
||||
if (error && !error[0])
|
||||
timeout = number;
|
||||
@@ -1379,6 +1381,7 @@ irc_redirect_command_hsignal_cb (const void *pointer, void *data,
|
||||
count = 1;
|
||||
if (str_count && str_count[0])
|
||||
{
|
||||
error = NULL;
|
||||
number = (int)strtol (str_count, &error, 10);
|
||||
if (error && !error[0])
|
||||
count = number;
|
||||
@@ -1387,6 +1390,7 @@ irc_redirect_command_hsignal_cb (const void *pointer, void *data,
|
||||
timeout = 0;
|
||||
if (str_timeout && str_timeout[0])
|
||||
{
|
||||
error = NULL;
|
||||
number = (int)strtol (str_timeout, &error, 10);
|
||||
if (error && !error[0])
|
||||
timeout = number;
|
||||
|
||||
@@ -131,6 +131,8 @@ char *irc_server_options[IRC_SERVER_NUM_OPTIONS][2] =
|
||||
|
||||
char *irc_server_casemapping_string[IRC_SERVER_NUM_CASEMAPPING] =
|
||||
{ "rfc1459", "strict-rfc1459", "ascii" };
|
||||
int irc_server_casemapping_range[IRC_SERVER_NUM_CASEMAPPING] =
|
||||
{ 30, 29, 26 };
|
||||
|
||||
char *irc_server_utf8mapping_string[IRC_SERVER_NUM_UTF8MAPPING] =
|
||||
{ "none", "rfc8265" };
|
||||
@@ -294,25 +296,15 @@ int
|
||||
irc_server_strcasecmp (struct t_irc_server *server,
|
||||
const char *string1, const char *string2)
|
||||
{
|
||||
int casemapping, rc;
|
||||
int casemapping, range;
|
||||
|
||||
casemapping = (server) ? server->casemapping : IRC_SERVER_CASEMAPPING_RFC1459;
|
||||
switch (casemapping)
|
||||
{
|
||||
case IRC_SERVER_CASEMAPPING_RFC1459:
|
||||
rc = weechat_strcasecmp_range (string1, string2, 30);
|
||||
break;
|
||||
case IRC_SERVER_CASEMAPPING_STRICT_RFC1459:
|
||||
rc = weechat_strcasecmp_range (string1, string2, 29);
|
||||
break;
|
||||
case IRC_SERVER_CASEMAPPING_ASCII:
|
||||
rc = weechat_strcasecmp (string1, string2);
|
||||
break;
|
||||
default:
|
||||
rc = weechat_strcasecmp_range (string1, string2, 30);
|
||||
break;
|
||||
}
|
||||
return rc;
|
||||
casemapping = (server) ? server->casemapping : -1;
|
||||
if ((casemapping < 0) || (casemapping >= IRC_SERVER_NUM_CASEMAPPING))
|
||||
casemapping = IRC_SERVER_CASEMAPPING_RFC1459;
|
||||
|
||||
range = irc_server_casemapping_range[casemapping];
|
||||
|
||||
return weechat_strcasecmp_range (string1, string2, range);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -329,25 +321,15 @@ int
|
||||
irc_server_strncasecmp (struct t_irc_server *server,
|
||||
const char *string1, const char *string2, int max)
|
||||
{
|
||||
int casemapping, rc;
|
||||
int casemapping, range;
|
||||
|
||||
casemapping = (server) ? server->casemapping : IRC_SERVER_CASEMAPPING_RFC1459;
|
||||
switch (casemapping)
|
||||
{
|
||||
case IRC_SERVER_CASEMAPPING_RFC1459:
|
||||
rc = weechat_strncasecmp_range (string1, string2, max, 30);
|
||||
break;
|
||||
case IRC_SERVER_CASEMAPPING_STRICT_RFC1459:
|
||||
rc = weechat_strncasecmp_range (string1, string2, max, 29);
|
||||
break;
|
||||
case IRC_SERVER_CASEMAPPING_ASCII:
|
||||
rc = weechat_strncasecmp (string1, string2, max);
|
||||
break;
|
||||
default:
|
||||
rc = weechat_strncasecmp_range (string1, string2, max, 30);
|
||||
break;
|
||||
}
|
||||
return rc;
|
||||
casemapping = (server) ? server->casemapping : -1;
|
||||
if ((casemapping < 0) || (casemapping >= IRC_SERVER_NUM_CASEMAPPING))
|
||||
casemapping = IRC_SERVER_CASEMAPPING_RFC1459;
|
||||
|
||||
range = irc_server_casemapping_range[casemapping];
|
||||
|
||||
return weechat_strncasecmp_range (string1, string2, max, range);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -418,6 +400,9 @@ irc_server_eval_fingerprint (struct t_irc_server *server)
|
||||
char *fingerprint_eval, **fingerprints, *str_sizes;
|
||||
int i, j, rc, algo, length;
|
||||
|
||||
if (!server)
|
||||
return NULL;
|
||||
|
||||
ptr_fingerprint = IRC_SERVER_OPTION_STRING(server,
|
||||
IRC_SERVER_OPTION_TLS_FINGERPRINT);
|
||||
|
||||
@@ -1611,6 +1596,25 @@ irc_server_buffer_set_input_multiline (struct t_irc_server *server,
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Checks if a server has channels opened.
|
||||
*/
|
||||
|
||||
int
|
||||
irc_server_has_channels (struct t_irc_server *server)
|
||||
{
|
||||
struct t_irc_channel *ptr_channel;
|
||||
|
||||
for (ptr_channel = server->channels; ptr_channel;
|
||||
ptr_channel = ptr_channel->next_channel)
|
||||
{
|
||||
if (ptr_channel->type == IRC_CHANNEL_TYPE_CHANNEL)
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Allocates a new server and adds it to the servers queue.
|
||||
*
|
||||
@@ -1768,6 +1772,11 @@ irc_server_alloc (const char *name)
|
||||
WEECHAT_HASHTABLE_STRING,
|
||||
WEECHAT_HASHTABLE_TIME,
|
||||
NULL, NULL);
|
||||
new_server->echo_msg_recv = weechat_hashtable_new (
|
||||
32,
|
||||
WEECHAT_HASHTABLE_STRING,
|
||||
WEECHAT_HASHTABLE_TIME,
|
||||
NULL, NULL);
|
||||
new_server->batches = NULL;
|
||||
new_server->last_batch = NULL;
|
||||
new_server->buffer = NULL;
|
||||
@@ -2254,6 +2263,7 @@ irc_server_free_data (struct t_irc_server *server)
|
||||
weechat_hashtable_free (server->join_manual);
|
||||
weechat_hashtable_free (server->join_channel_key);
|
||||
weechat_hashtable_free (server->join_noswitch);
|
||||
weechat_hashtable_free (server->echo_msg_recv);
|
||||
|
||||
/* free server data */
|
||||
for (i = 0; i < IRC_SERVER_NUM_OPTIONS; i++)
|
||||
@@ -2808,11 +2818,10 @@ irc_server_outqueue_send (struct t_irc_server *server)
|
||||
'\r');
|
||||
if (pos)
|
||||
pos[0] = '\0';
|
||||
|
||||
irc_raw_print (server, IRC_RAW_FLAG_SEND |
|
||||
((server->outqueue[priority]->modified) ? IRC_RAW_FLAG_MODIFIED : 0),
|
||||
server->outqueue[priority]->message_after_mod);
|
||||
if (pos)
|
||||
pos[0] = '\r';
|
||||
|
||||
/* send signal with command that will be sent to server */
|
||||
(void) irc_server_send_signal (
|
||||
@@ -2830,6 +2839,9 @@ irc_server_outqueue_send (struct t_irc_server *server)
|
||||
if (tags_to_send)
|
||||
free (tags_to_send);
|
||||
|
||||
if (pos)
|
||||
pos[0] = '\r';
|
||||
|
||||
/* send command */
|
||||
irc_server_send (
|
||||
server, server->outqueue[priority]->message_after_mod,
|
||||
@@ -3914,6 +3926,23 @@ irc_server_check_join_smart_filtered_cb (void *data,
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Callback called for each message received with echo-message: deletes old
|
||||
* messages in the hashtable.
|
||||
*/
|
||||
|
||||
void
|
||||
irc_server_check_echo_msg_recv_cb (void *data,
|
||||
struct t_hashtable *hashtable,
|
||||
const void *key, const void *value)
|
||||
{
|
||||
/* make C compiler happy */
|
||||
(void) data;
|
||||
|
||||
if (*((time_t *)value) + (60 * 5) < time (NULL))
|
||||
weechat_hashtable_remove (hashtable, key);
|
||||
}
|
||||
|
||||
/*
|
||||
* Timer called each second to perform some operations on servers.
|
||||
*/
|
||||
@@ -4094,6 +4123,9 @@ irc_server_timer_cb (const void *pointer, void *data, int remaining_calls)
|
||||
NULL);
|
||||
}
|
||||
}
|
||||
weechat_hashtable_map (ptr_server->echo_msg_recv,
|
||||
&irc_server_check_echo_msg_recv_cb,
|
||||
NULL);
|
||||
ptr_batch = ptr_server->batches;
|
||||
while (ptr_batch)
|
||||
{
|
||||
@@ -4196,6 +4228,9 @@ irc_server_close_connection (struct t_irc_server *server)
|
||||
/* remove all keys for joins without switch */
|
||||
weechat_hashtable_remove_all (server->join_noswitch);
|
||||
|
||||
/* remove all messages stored (with capability echo-message) */
|
||||
weechat_hashtable_remove_all (server->echo_msg_recv);
|
||||
|
||||
/* remove all batched events pending */
|
||||
irc_batch_free_all (server);
|
||||
|
||||
@@ -5832,7 +5867,7 @@ irc_server_autojoin_create_buffers (struct t_irc_server *server)
|
||||
* buffers are opened only if auto-join was not already done
|
||||
* and if no channels are currently opened
|
||||
*/
|
||||
if (server->autojoin_done || server->channels)
|
||||
if (server->autojoin_done || irc_server_has_channels (server))
|
||||
return;
|
||||
|
||||
/* evaluate server option "autojoin" */
|
||||
@@ -5993,7 +6028,7 @@ irc_server_autojoin_channels (struct t_irc_server *server)
|
||||
return;
|
||||
}
|
||||
|
||||
if (!server->autojoin_done && !server->channels)
|
||||
if (!server->autojoin_done && !irc_server_has_channels (server))
|
||||
{
|
||||
/* auto-join when connecting to server for first time */
|
||||
autojoin = irc_server_eval_expression (
|
||||
@@ -6007,7 +6042,7 @@ irc_server_autojoin_channels (struct t_irc_server *server)
|
||||
if (autojoin)
|
||||
free (autojoin);
|
||||
}
|
||||
else if (server->channels)
|
||||
else if (irc_server_has_channels (server))
|
||||
{
|
||||
/* auto-join after disconnection (only rejoins opened channels) */
|
||||
autojoin = irc_server_build_autojoin (server);
|
||||
@@ -6476,6 +6511,7 @@ irc_server_hdata_server_cb (const void *pointer, void *data,
|
||||
WEECHAT_HDATA_VAR(struct t_irc_server, join_manual, HASHTABLE, 0, NULL, NULL);
|
||||
WEECHAT_HDATA_VAR(struct t_irc_server, join_channel_key, HASHTABLE, 0, NULL, NULL);
|
||||
WEECHAT_HDATA_VAR(struct t_irc_server, join_noswitch, HASHTABLE, 0, NULL, NULL);
|
||||
WEECHAT_HDATA_VAR(struct t_irc_server, echo_msg_recv, HASHTABLE, 0, NULL, NULL);
|
||||
WEECHAT_HDATA_VAR(struct t_irc_server, batches, POINTER, 0, NULL, "irc_batch");
|
||||
WEECHAT_HDATA_VAR(struct t_irc_server, last_batch, POINTER, 0, NULL, "irc_batch");
|
||||
WEECHAT_HDATA_VAR(struct t_irc_server, buffer, POINTER, 0, NULL, "buffer");
|
||||
@@ -7265,6 +7301,9 @@ irc_server_print_log ()
|
||||
weechat_log_printf (" join_noswitch . . . . . . : 0x%lx (hashtable: '%s')",
|
||||
ptr_server->join_noswitch,
|
||||
weechat_hashtable_get_string (ptr_server->join_noswitch, "keys_values"));
|
||||
weechat_log_printf (" echo_msg_recv . . . . . . : 0x%lx (hashtable: '%s')",
|
||||
ptr_server->echo_msg_recv,
|
||||
weechat_hashtable_get_string (ptr_server->echo_msg_recv, "keys_values"));
|
||||
weechat_log_printf (" batches . . . . . . . . . : 0x%lx", ptr_server->batches);
|
||||
weechat_log_printf (" last_batch. . . . . . . . : 0x%lx", ptr_server->last_batch);
|
||||
weechat_log_printf (" buffer. . . . . . . . . . : 0x%lx", ptr_server->buffer);
|
||||
|
||||
@@ -289,6 +289,7 @@ struct t_irc_server
|
||||
struct t_hashtable *join_manual; /* manual joins pending */
|
||||
struct t_hashtable *join_channel_key; /* keys pending for joins */
|
||||
struct t_hashtable *join_noswitch; /* joins w/o switch to buffer */
|
||||
struct t_hashtable *echo_msg_recv; /* msg received with echo-message */
|
||||
struct t_irc_batch *batches; /* batched events (cap "batch") */
|
||||
struct t_irc_batch *last_batch; /* last batch */
|
||||
struct t_gui_buffer *buffer; /* GUI buffer allocated for server */
|
||||
@@ -386,6 +387,7 @@ extern char *irc_server_get_default_msg (const char *default_msg,
|
||||
const char *target_nick);
|
||||
extern void irc_server_buffer_set_input_multiline (struct t_irc_server *server,
|
||||
int multiline);
|
||||
extern int irc_server_has_channels (struct t_irc_server *server);
|
||||
extern struct t_irc_server *irc_server_alloc (const char *name);
|
||||
extern struct t_irc_server *irc_server_alloc_with_url (const char *irc_url);
|
||||
extern void irc_server_apply_command_line_options (struct t_irc_server *server,
|
||||
|
||||
@@ -283,3 +283,159 @@ irc_tag_parse (const char *tags,
|
||||
|
||||
return num_tags;
|
||||
}
|
||||
|
||||
/*
|
||||
* Adds tags to a dynamic string, separated by semicolons, with escaped
|
||||
* tag values.
|
||||
*/
|
||||
|
||||
void
|
||||
irc_tag_add_to_string_cb (void *data,
|
||||
struct t_hashtable *hashtable,
|
||||
const void *key,
|
||||
const void *value)
|
||||
{
|
||||
char **string, *escaped;
|
||||
|
||||
/* make C compiler happy */
|
||||
(void) hashtable;
|
||||
|
||||
string = (char **)data;
|
||||
|
||||
if (*string[0])
|
||||
weechat_string_dyn_concat (string, ";", -1);
|
||||
|
||||
weechat_string_dyn_concat (string, key, -1);
|
||||
|
||||
if (value)
|
||||
{
|
||||
weechat_string_dyn_concat (string, "=", -1);
|
||||
escaped = irc_tag_escape_value ((const char *)value);
|
||||
weechat_string_dyn_concat (string,
|
||||
(escaped) ? escaped : (const char *)value,
|
||||
-1);
|
||||
if (escaped)
|
||||
free (escaped);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Converts hashtable with tags to a string (tags and values are escaped).
|
||||
*
|
||||
* Note: result must be freed after use.
|
||||
*/
|
||||
|
||||
char *
|
||||
irc_tag_hashtable_to_string (struct t_hashtable *tags)
|
||||
{
|
||||
char **string;
|
||||
|
||||
if (!tags)
|
||||
return NULL;
|
||||
|
||||
string = weechat_string_dyn_alloc (64);
|
||||
if (!string)
|
||||
return NULL;
|
||||
|
||||
weechat_hashtable_map (tags, &irc_tag_add_to_string_cb, string);
|
||||
|
||||
return weechat_string_dyn_free (string, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Adds tags to another hashtable.
|
||||
*/
|
||||
|
||||
void
|
||||
irc_tag_add_to_hashtable_cb (void *data,
|
||||
struct t_hashtable *hashtable,
|
||||
const void *key,
|
||||
const void *value)
|
||||
{
|
||||
/* make C compiler happy */
|
||||
(void) hashtable;
|
||||
|
||||
if (!weechat_hashtable_has_key ((struct t_hashtable *)data, key))
|
||||
weechat_hashtable_set ((struct t_hashtable *)data, key, value);
|
||||
}
|
||||
|
||||
/*
|
||||
* Adds tags to an IRC message.
|
||||
* Existing tags in message are kept unchanged.
|
||||
*
|
||||
* Note: result must be freed after use.
|
||||
*/
|
||||
|
||||
char *
|
||||
irc_tag_add_tags_to_message (const char *message, struct t_hashtable *tags)
|
||||
{
|
||||
char *msg_str_tags, **result, *new_tags;
|
||||
const char *pos_space, *ptr_message;
|
||||
struct t_hashtable *msg_hash_tags;
|
||||
|
||||
if (!message)
|
||||
return NULL;
|
||||
|
||||
if (!tags)
|
||||
return strdup (message);
|
||||
|
||||
result = NULL;
|
||||
msg_str_tags = NULL;
|
||||
msg_hash_tags = NULL;
|
||||
new_tags = NULL;
|
||||
|
||||
if (message[0] == '@')
|
||||
{
|
||||
pos_space = strchr (message, ' ');
|
||||
if (!pos_space)
|
||||
goto end;
|
||||
msg_str_tags = weechat_strndup (message + 1, pos_space - message - 1);
|
||||
ptr_message = pos_space + 1;
|
||||
while (ptr_message[0] == ' ')
|
||||
{
|
||||
ptr_message++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ptr_message = message;
|
||||
}
|
||||
|
||||
msg_hash_tags = weechat_hashtable_new (32,
|
||||
WEECHAT_HASHTABLE_STRING,
|
||||
WEECHAT_HASHTABLE_STRING,
|
||||
NULL, NULL);
|
||||
if (!msg_hash_tags)
|
||||
goto end;
|
||||
|
||||
if (msg_str_tags)
|
||||
irc_tag_parse (msg_str_tags, msg_hash_tags, NULL);
|
||||
|
||||
weechat_hashtable_map (tags, &irc_tag_add_to_hashtable_cb, msg_hash_tags);
|
||||
|
||||
result = weechat_string_dyn_alloc (64);
|
||||
if (!result)
|
||||
goto end;
|
||||
|
||||
new_tags = irc_tag_hashtable_to_string (msg_hash_tags);
|
||||
if (!new_tags)
|
||||
goto end;
|
||||
|
||||
if (new_tags[0])
|
||||
{
|
||||
weechat_string_dyn_concat (result, "@", -1);
|
||||
weechat_string_dyn_concat (result, new_tags, -1);
|
||||
weechat_string_dyn_concat (result, " ", -1);
|
||||
}
|
||||
weechat_string_dyn_concat (result, ptr_message, -1);
|
||||
|
||||
end:
|
||||
if (msg_str_tags)
|
||||
free (msg_str_tags);
|
||||
if (msg_hash_tags)
|
||||
weechat_hashtable_free (msg_hash_tags);
|
||||
if (new_tags)
|
||||
free (new_tags);
|
||||
|
||||
return (result) ? weechat_string_dyn_free (result, 0) : NULL;
|
||||
}
|
||||
|
||||
@@ -30,5 +30,7 @@ extern char *irc_tag_modifier_cb (const void *pointer,
|
||||
extern int irc_tag_parse (const char *tags,
|
||||
struct t_hashtable *hashtable,
|
||||
const char *prefix_key);
|
||||
extern char *irc_tag_add_tags_to_message (const char *message,
|
||||
struct t_hashtable *tags);
|
||||
|
||||
#endif /* WEECHAT_PLUGIN_IRC_TAG_H */
|
||||
|
||||
@@ -149,6 +149,8 @@ irc_signal_upgrade_cb (const void *pointer, void *data,
|
||||
"work for servers connected via TLS"),
|
||||
weechat_prefix ("error"), IRC_PLUGIN_NAME);
|
||||
}
|
||||
/* send QUIT to server, then disconnect */
|
||||
irc_command_quit_server (ptr_server, NULL);
|
||||
irc_server_disconnect (ptr_server, 0, 0);
|
||||
/*
|
||||
* schedule reconnection: WeeChat will reconnect to this server
|
||||
|
||||
@@ -657,7 +657,7 @@ weechat_js_command_cb (const void *pointer, void *data,
|
||||
{
|
||||
/* load javascript script */
|
||||
path_script = plugin_script_search_path (weechat_js_plugin,
|
||||
ptr_name);
|
||||
ptr_name, 1);
|
||||
weechat_js_load ((path_script) ? path_script : ptr_name,
|
||||
NULL);
|
||||
if (path_script)
|
||||
|
||||
@@ -168,7 +168,7 @@ struct t_arraylist *
|
||||
logger_backlog_group_messages (struct t_arraylist *lines)
|
||||
{
|
||||
int i, size, time_found;
|
||||
char **message, **old_message, *str_date, *error;
|
||||
char *message, *new_message, *str_date, *error;
|
||||
const char *ptr_line, *pos_message;
|
||||
struct tm tm_line;
|
||||
struct t_arraylist *messages;
|
||||
@@ -176,27 +176,37 @@ logger_backlog_group_messages (struct t_arraylist *lines)
|
||||
if (!lines)
|
||||
return NULL;
|
||||
|
||||
message = NULL;
|
||||
|
||||
size = weechat_arraylist_size (lines);
|
||||
|
||||
messages = weechat_arraylist_new (size, 0, 1,
|
||||
&logger_backlog_msg_cmp_cb, NULL,
|
||||
&logger_backlog_msg_free_cb, NULL);
|
||||
if (!messages)
|
||||
return NULL;
|
||||
|
||||
message = weechat_string_dyn_alloc (256);
|
||||
old_message = weechat_string_dyn_alloc (256);
|
||||
goto error;
|
||||
|
||||
for (i = size - 1; i >= 0; i--)
|
||||
{
|
||||
ptr_line = (const char *)weechat_arraylist_get (lines, i);
|
||||
|
||||
weechat_string_dyn_copy (old_message, *message);
|
||||
weechat_string_dyn_copy (message, ptr_line);
|
||||
if ((*old_message)[0])
|
||||
if (message)
|
||||
{
|
||||
weechat_string_dyn_concat (message, "\n", -1);
|
||||
weechat_string_dyn_concat (message, *old_message, -1);
|
||||
new_message = malloc (strlen (ptr_line) + 1 + strlen (message) + 1);
|
||||
if (!new_message)
|
||||
goto error;
|
||||
strcpy (new_message, ptr_line);
|
||||
strcat (new_message, "\n");
|
||||
strcat (new_message, message);
|
||||
free (message);
|
||||
message = new_message;
|
||||
}
|
||||
else
|
||||
{
|
||||
message = malloc (strlen (ptr_line) + 1);
|
||||
if (!message)
|
||||
goto error;
|
||||
strcpy (message, ptr_line);
|
||||
}
|
||||
|
||||
time_found = 0;
|
||||
@@ -218,18 +228,26 @@ logger_backlog_group_messages (struct t_arraylist *lines)
|
||||
}
|
||||
if (time_found)
|
||||
{
|
||||
weechat_arraylist_insert (messages, 0, strdup (*message));
|
||||
weechat_string_dyn_copy (message, NULL);
|
||||
/* add message (will be freed when arraylist is destroyed) */
|
||||
weechat_arraylist_insert (messages, 0, message);
|
||||
message = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if ((*message)[0])
|
||||
weechat_arraylist_insert (messages, 0, strdup (*message));
|
||||
|
||||
weechat_string_dyn_free (message, 1);
|
||||
weechat_string_dyn_free (old_message, 1);
|
||||
if (message)
|
||||
{
|
||||
/* add message (will be freed when arraylist is destroyed) */
|
||||
weechat_arraylist_insert (messages, 0, message);
|
||||
}
|
||||
|
||||
return messages;
|
||||
|
||||
error:
|
||||
if (message)
|
||||
free (message);
|
||||
if (messages)
|
||||
weechat_arraylist_free (messages);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -243,7 +261,6 @@ logger_backlog_file (struct t_gui_buffer *buffer, const char *filename,
|
||||
struct t_arraylist *last_lines, *messages;
|
||||
int i, num_msgs, old_input_multiline;
|
||||
|
||||
num_msgs = 0;
|
||||
last_lines = logger_tail_file (filename, lines);
|
||||
if (!last_lines)
|
||||
return;
|
||||
|
||||
@@ -100,7 +100,7 @@ logger_tail_lines_free_cb (void *data, struct t_arraylist *arraylist,
|
||||
struct t_arraylist *
|
||||
logger_tail_file (const char *filename, int lines)
|
||||
{
|
||||
int fd;
|
||||
int fd, count_read;
|
||||
off_t file_length, file_pos;
|
||||
size_t to_read;
|
||||
ssize_t bytes_read;
|
||||
@@ -108,21 +108,30 @@ logger_tail_file (const char *filename, int lines)
|
||||
char *ptr_buf, *pos_eol, *part_of_line, *new_part_of_line, *line;
|
||||
struct t_arraylist *list_lines;
|
||||
|
||||
if (!filename || (lines < 1))
|
||||
if (!filename || !filename[0] || (lines < 1))
|
||||
return NULL;
|
||||
|
||||
fd = -1;
|
||||
part_of_line = 0;
|
||||
list_lines = NULL;
|
||||
|
||||
/* allocate arraylist */
|
||||
list_lines = weechat_arraylist_new (lines, 0, 1,
|
||||
&logger_tail_lines_cmp_cb, NULL,
|
||||
&logger_tail_lines_free_cb, NULL);
|
||||
if (!list_lines)
|
||||
goto error;
|
||||
|
||||
/* open file */
|
||||
fd = open (filename, O_RDONLY);
|
||||
if (fd == -1)
|
||||
return NULL;
|
||||
goto error;
|
||||
|
||||
/* seek to the end of file */
|
||||
count_read = 0;
|
||||
file_length = lseek (fd, (off_t)0, SEEK_END);
|
||||
if (file_length <= 0)
|
||||
{
|
||||
close (fd);
|
||||
return NULL;
|
||||
}
|
||||
goto error;
|
||||
to_read = file_length;
|
||||
file_pos = file_length - LOGGER_TAIL_BUFSIZE;
|
||||
if (file_pos < 0)
|
||||
@@ -132,71 +141,51 @@ logger_tail_file (const char *filename, int lines)
|
||||
lseek (fd, file_pos, SEEK_SET);
|
||||
|
||||
/* loop until we have "lines" lines in list */
|
||||
part_of_line = NULL;
|
||||
list_lines = weechat_arraylist_new (lines, 0, 1,
|
||||
&logger_tail_lines_cmp_cb, NULL,
|
||||
&logger_tail_lines_free_cb, NULL);
|
||||
while (lines > 0)
|
||||
{
|
||||
lseek (fd, file_pos, SEEK_SET);
|
||||
bytes_read = read (fd, buf, to_read);
|
||||
if (bytes_read <= 0)
|
||||
{
|
||||
if (part_of_line)
|
||||
free (part_of_line);
|
||||
weechat_arraylist_free (list_lines);
|
||||
close (fd);
|
||||
return NULL;
|
||||
}
|
||||
goto error;
|
||||
count_read++;
|
||||
buf[bytes_read] = '\0';
|
||||
if ((count_read == 1)
|
||||
&& ((buf[bytes_read - 1] == '\n') || (buf[bytes_read - 1] == '\r')))
|
||||
{
|
||||
/* ignore last new line of the file (on first block read only) */
|
||||
buf[bytes_read - 1] = '\0';
|
||||
bytes_read--;
|
||||
}
|
||||
ptr_buf = buf + bytes_read - 1;
|
||||
while (ptr_buf && (ptr_buf >= buf))
|
||||
{
|
||||
pos_eol = (char *)logger_tail_last_eol (buf, ptr_buf);
|
||||
if ((pos_eol && (pos_eol[1] || part_of_line)) || (file_pos == 0))
|
||||
if (pos_eol)
|
||||
{
|
||||
/* use data and part_of_line (if existing) to build a new line */
|
||||
if (!pos_eol)
|
||||
ptr_buf = pos_eol - 1;
|
||||
pos_eol[0] = '\0';
|
||||
pos_eol++;
|
||||
if (part_of_line)
|
||||
{
|
||||
ptr_buf = NULL;
|
||||
pos_eol = buf;
|
||||
line = malloc ((strlen (pos_eol) +
|
||||
strlen (part_of_line) + 1));
|
||||
if (!line)
|
||||
goto error;
|
||||
strcpy (line, pos_eol);
|
||||
strcat (line, part_of_line);
|
||||
free (part_of_line);
|
||||
part_of_line = NULL;
|
||||
weechat_arraylist_insert (list_lines, 0, line);
|
||||
}
|
||||
else
|
||||
{
|
||||
ptr_buf = pos_eol - 1;
|
||||
pos_eol[0] = '\0';
|
||||
pos_eol++;
|
||||
}
|
||||
if (part_of_line || pos_eol[0])
|
||||
{
|
||||
if (part_of_line)
|
||||
{
|
||||
line = malloc ((strlen (pos_eol) +
|
||||
strlen (part_of_line) + 1));
|
||||
if (!line)
|
||||
{
|
||||
free (part_of_line);
|
||||
weechat_arraylist_free (list_lines);
|
||||
close (fd);
|
||||
return NULL;
|
||||
}
|
||||
strcpy (line, pos_eol);
|
||||
strcat (line, part_of_line);
|
||||
free (part_of_line);
|
||||
part_of_line = NULL;
|
||||
weechat_arraylist_insert (list_lines, 0, line);
|
||||
}
|
||||
else
|
||||
{
|
||||
weechat_arraylist_insert (list_lines, 0,
|
||||
strdup (pos_eol));
|
||||
}
|
||||
lines--;
|
||||
if (lines <= 0)
|
||||
break;
|
||||
weechat_arraylist_insert (list_lines, 0, strdup (pos_eol));
|
||||
}
|
||||
lines--;
|
||||
if (lines <= 0)
|
||||
break;
|
||||
}
|
||||
else if (!pos_eol)
|
||||
else
|
||||
{
|
||||
/*
|
||||
* beginning of read buffer reached without EOL, then we
|
||||
@@ -206,12 +195,7 @@ logger_tail_file (const char *filename, int lines)
|
||||
{
|
||||
new_part_of_line = malloc (strlen (buf) + strlen (part_of_line) + 1);
|
||||
if (!new_part_of_line)
|
||||
{
|
||||
free (part_of_line);
|
||||
weechat_arraylist_free (list_lines);
|
||||
close (fd);
|
||||
return NULL;
|
||||
}
|
||||
goto error;
|
||||
strcpy (new_part_of_line, buf);
|
||||
strcat (new_part_of_line, part_of_line);
|
||||
free (part_of_line);
|
||||
@@ -220,12 +204,12 @@ logger_tail_file (const char *filename, int lines)
|
||||
else
|
||||
{
|
||||
part_of_line = malloc (strlen (buf) + 1);
|
||||
if (!part_of_line)
|
||||
goto error;
|
||||
strcpy (part_of_line, buf);
|
||||
}
|
||||
ptr_buf = NULL;
|
||||
}
|
||||
else
|
||||
ptr_buf = pos_eol - 1;
|
||||
}
|
||||
if (file_pos == 0)
|
||||
break;
|
||||
@@ -238,9 +222,21 @@ logger_tail_file (const char *filename, int lines)
|
||||
}
|
||||
|
||||
if (part_of_line)
|
||||
free (part_of_line);
|
||||
{
|
||||
/* add part of line (will be freed when arraylist is destroyed) */
|
||||
weechat_arraylist_insert (list_lines, 0, part_of_line);
|
||||
}
|
||||
|
||||
close (fd);
|
||||
|
||||
return list_lines;
|
||||
|
||||
error:
|
||||
if (part_of_line)
|
||||
free (part_of_line);
|
||||
if (list_lines)
|
||||
weechat_arraylist_free (list_lines);
|
||||
if (fd >= 0)
|
||||
close (fd);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -975,7 +975,7 @@ weechat_lua_command_cb (const void *pointer, void *data,
|
||||
{
|
||||
/* load lua script */
|
||||
path_script = plugin_script_search_path (weechat_lua_plugin,
|
||||
ptr_name);
|
||||
ptr_name, 1);
|
||||
weechat_lua_load ((path_script) ? path_script : ptr_name,
|
||||
NULL);
|
||||
if (path_script)
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
|
||||
#undef _
|
||||
|
||||
#include <locale.h>
|
||||
#include <EXTERN.h>
|
||||
#include <perl.h>
|
||||
#include <XSUB.h>
|
||||
@@ -567,6 +568,10 @@ weechat_perl_load (const char *filename, const char *code)
|
||||
temp_script.interpreter = (PerlInterpreter *) perl_current_interpreter;
|
||||
perl_parse (perl_current_interpreter, weechat_perl_api_init,
|
||||
perl_args_count, perl_args, NULL);
|
||||
#if PERL_REVISION >= 6 || (PERL_REVISION == 5 && PERL_VERSION >= 38)
|
||||
/* restore the locale that could be changed by Perl >= 5.38 */
|
||||
Perl_setlocale (LC_CTYPE, "");
|
||||
#endif
|
||||
length = strlen (perl_weechat_code) + strlen (str_warning) +
|
||||
strlen (str_error) - 2 + 4 + strlen ((code) ? code : filename) + 4 + 1;
|
||||
perl_code = malloc (length);
|
||||
@@ -958,7 +963,7 @@ weechat_perl_command_cb (const void *pointer, void *data,
|
||||
{
|
||||
/* load perl script */
|
||||
path_script = plugin_script_search_path (weechat_perl_plugin,
|
||||
ptr_name);
|
||||
ptr_name, 1);
|
||||
weechat_perl_load ((path_script) ? path_script : ptr_name,
|
||||
NULL);
|
||||
if (path_script)
|
||||
@@ -1290,6 +1295,10 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
|
||||
perl_construct (perl_main);
|
||||
perl_parse (perl_main, weechat_perl_api_init, perl_args_count,
|
||||
perl_args, NULL);
|
||||
#if PERL_REVISION >= 6 || (PERL_REVISION == 5 && PERL_VERSION >= 38)
|
||||
/* restore the locale that could be changed by Perl >= 5.38 */
|
||||
Perl_setlocale (LC_CTYPE, "");
|
||||
#endif
|
||||
#endif /* MULTIPLICITY */
|
||||
|
||||
perl_data.config_file = &perl_config_file;
|
||||
|
||||
@@ -977,7 +977,7 @@ weechat_php_command_cb (const void *pointer, void *data,
|
||||
{
|
||||
/* load PHP script */
|
||||
path_script = plugin_script_search_path (weechat_php_plugin,
|
||||
ptr_name);
|
||||
ptr_name, 1);
|
||||
weechat_php_load ((path_script) ? path_script : ptr_name,
|
||||
NULL);
|
||||
if (path_script)
|
||||
|
||||
@@ -114,7 +114,7 @@ plugin_config_set (const char *plugin_name, const char *option_name,
|
||||
const char *value)
|
||||
{
|
||||
int length, rc;
|
||||
char *option_full_name, *option_full_name_lower;
|
||||
char *option_full_name;
|
||||
|
||||
rc = WEECHAT_CONFIG_OPTION_SET_ERROR;
|
||||
|
||||
@@ -124,12 +124,7 @@ plugin_config_set (const char *plugin_name, const char *option_name,
|
||||
{
|
||||
snprintf (option_full_name, length, "%s.%s",
|
||||
plugin_name, option_name);
|
||||
option_full_name_lower = string_tolower (option_full_name);
|
||||
if (option_full_name_lower)
|
||||
{
|
||||
rc = plugin_config_set_internal (option_full_name_lower, value);
|
||||
free (option_full_name_lower);
|
||||
}
|
||||
rc = plugin_config_set_internal (option_full_name, value);
|
||||
free (option_full_name);
|
||||
}
|
||||
|
||||
@@ -206,7 +201,7 @@ plugin_config_set_desc (const char *plugin_name, const char *option_name,
|
||||
const char *description)
|
||||
{
|
||||
int length;
|
||||
char *option_full_name, *option_full_name_lower;
|
||||
char *option_full_name;
|
||||
|
||||
length = strlen (plugin_name) + 1 + strlen (option_name) + 1;
|
||||
option_full_name = malloc (length);
|
||||
@@ -214,13 +209,7 @@ plugin_config_set_desc (const char *plugin_name, const char *option_name,
|
||||
{
|
||||
snprintf (option_full_name, length, "%s.%s",
|
||||
plugin_name, option_name);
|
||||
option_full_name_lower = string_tolower (option_full_name);
|
||||
if (option_full_name_lower)
|
||||
{
|
||||
plugin_config_set_desc_internal (option_full_name_lower,
|
||||
description);
|
||||
free (option_full_name_lower);
|
||||
}
|
||||
plugin_config_set_desc_internal (option_full_name, description);
|
||||
free (option_full_name);
|
||||
}
|
||||
}
|
||||
|
||||
+100
-100
@@ -536,7 +536,8 @@ plugin_script_search_by_full_name (struct t_plugin_script *scripts,
|
||||
|
||||
char *
|
||||
plugin_script_search_path (struct t_weechat_plugin *weechat_plugin,
|
||||
const char *filename)
|
||||
const char *filename,
|
||||
int search_system_dir)
|
||||
{
|
||||
char *final_name, *weechat_data_dir, *dir_system;
|
||||
int length;
|
||||
@@ -601,28 +602,31 @@ plugin_script_search_path (struct t_weechat_plugin *weechat_plugin,
|
||||
free (weechat_data_dir);
|
||||
}
|
||||
|
||||
/* try WeeChat system dir */
|
||||
dir_system = weechat_info_get ("weechat_sharedir", "");
|
||||
if (dir_system)
|
||||
if (search_system_dir)
|
||||
{
|
||||
length = strlen (dir_system) + strlen (weechat_plugin->name) +
|
||||
strlen (filename) + 16;
|
||||
final_name = malloc (length);
|
||||
if (final_name)
|
||||
/* try WeeChat system dir */
|
||||
dir_system = weechat_info_get ("weechat_sharedir", "");
|
||||
if (dir_system)
|
||||
{
|
||||
snprintf (final_name,length,
|
||||
"%s/%s/%s", dir_system, weechat_plugin->name, filename);
|
||||
if ((stat (final_name, &st) == 0) && (st.st_size > 0))
|
||||
length = strlen (dir_system) + strlen (weechat_plugin->name) +
|
||||
strlen (filename) + 16;
|
||||
final_name = malloc (length);
|
||||
if (final_name)
|
||||
{
|
||||
free (dir_system);
|
||||
return final_name;
|
||||
snprintf (final_name,length,
|
||||
"%s/%s/%s", dir_system, weechat_plugin->name, filename);
|
||||
if ((stat (final_name, &st) == 0) && (st.st_size > 0))
|
||||
{
|
||||
free (dir_system);
|
||||
return final_name;
|
||||
}
|
||||
free (final_name);
|
||||
}
|
||||
free (final_name);
|
||||
free (dir_system);
|
||||
}
|
||||
free (dir_system);
|
||||
}
|
||||
|
||||
return strdup (filename);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1146,17 +1150,9 @@ plugin_script_remove_file (struct t_weechat_plugin *weechat_plugin,
|
||||
i = 0;
|
||||
while (i < 2)
|
||||
{
|
||||
path_script = plugin_script_search_path (weechat_plugin, name);
|
||||
/*
|
||||
* script not found? (if path_script == name, that means the function
|
||||
* above did not find the script)
|
||||
*/
|
||||
if (!path_script || (strcmp (path_script, name) == 0))
|
||||
{
|
||||
if (path_script)
|
||||
free (path_script);
|
||||
path_script = plugin_script_search_path (weechat_plugin, name, 0);
|
||||
if (!path_script)
|
||||
break;
|
||||
}
|
||||
num_found++;
|
||||
if (unlink (path_script) == 0)
|
||||
{
|
||||
@@ -1216,7 +1212,7 @@ plugin_script_action_install (struct t_weechat_plugin *weechat_plugin,
|
||||
char **list)
|
||||
{
|
||||
char **argv, *name, *ptr_base_name, *base_name, *new_path, *autoload_path;
|
||||
char *symlink_path, str_signal[128], *ptr_list, *weechat_data_dir, *dir_separator;
|
||||
char *symlink_path, str_signal[128], *ptr_name, *weechat_data_dir, *dir_separator;
|
||||
int argc, i, length, rc, autoload, existing_script, script_loaded;
|
||||
struct t_plugin_script *ptr_script;
|
||||
|
||||
@@ -1226,30 +1222,7 @@ plugin_script_action_install (struct t_weechat_plugin *weechat_plugin,
|
||||
/* create again directories, just in case they have been removed */
|
||||
plugin_script_create_dirs (weechat_plugin);
|
||||
|
||||
ptr_list = *list;
|
||||
autoload = 0;
|
||||
*quiet = 0;
|
||||
|
||||
while ((ptr_list[0] == ' ') || (ptr_list[0] == '-'))
|
||||
{
|
||||
if (ptr_list[0] == ' ')
|
||||
ptr_list++;
|
||||
else
|
||||
{
|
||||
switch (ptr_list[1])
|
||||
{
|
||||
case 'a': /* autoload */
|
||||
autoload = 1;
|
||||
break;
|
||||
case 'q': /* quiet mode */
|
||||
*quiet = 1;
|
||||
break;
|
||||
}
|
||||
ptr_list += 2;
|
||||
}
|
||||
}
|
||||
|
||||
argv = weechat_string_split (ptr_list, ",", NULL,
|
||||
argv = weechat_string_split (*list, ",", NULL,
|
||||
WEECHAT_STRING_SPLIT_STRIP_LEFT
|
||||
| WEECHAT_STRING_SPLIT_STRIP_RIGHT
|
||||
| WEECHAT_STRING_SPLIT_COLLAPSE_SEPS,
|
||||
@@ -1258,7 +1231,30 @@ plugin_script_action_install (struct t_weechat_plugin *weechat_plugin,
|
||||
{
|
||||
for (i = 0; i < argc; i++)
|
||||
{
|
||||
name = strdup (argv[i]);
|
||||
autoload = 0;
|
||||
*quiet = 0;
|
||||
ptr_name = argv[i];
|
||||
while ((ptr_name[0] == ' ') || (ptr_name[0] == '-'))
|
||||
{
|
||||
if (ptr_name[0] == ' ')
|
||||
{
|
||||
ptr_name++;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (ptr_name[1])
|
||||
{
|
||||
case 'a': /* autoload */
|
||||
autoload = 1;
|
||||
break;
|
||||
case 'q': /* quiet mode */
|
||||
*quiet = 1;
|
||||
break;
|
||||
}
|
||||
ptr_name += 2;
|
||||
}
|
||||
}
|
||||
name = strdup (ptr_name);
|
||||
if (name)
|
||||
{
|
||||
ptr_base_name = basename (name);
|
||||
@@ -1350,6 +1346,13 @@ plugin_script_action_install (struct t_weechat_plugin *weechat_plugin,
|
||||
free (base_name);
|
||||
if (weechat_data_dir)
|
||||
free (weechat_data_dir);
|
||||
|
||||
/* send signal */
|
||||
snprintf (str_signal, sizeof (str_signal),
|
||||
"%s_script_installed", weechat_plugin->name);
|
||||
(void) weechat_hook_signal_send (str_signal,
|
||||
WEECHAT_HOOK_SIGNAL_STRING,
|
||||
name);
|
||||
}
|
||||
free (name);
|
||||
}
|
||||
@@ -1359,11 +1362,6 @@ plugin_script_action_install (struct t_weechat_plugin *weechat_plugin,
|
||||
|
||||
*quiet = 0;
|
||||
|
||||
snprintf (str_signal, sizeof (str_signal),
|
||||
"%s_script_installed", weechat_plugin->name);
|
||||
(void) weechat_hook_signal_send (str_signal, WEECHAT_HOOK_SIGNAL_STRING,
|
||||
ptr_list);
|
||||
|
||||
free (*list);
|
||||
*list = NULL;
|
||||
}
|
||||
@@ -1383,7 +1381,7 @@ plugin_script_action_remove (struct t_weechat_plugin *weechat_plugin,
|
||||
int *quiet,
|
||||
char **list)
|
||||
{
|
||||
char **argv, str_signal[128], *ptr_list;
|
||||
char **argv, str_signal[128], *ptr_name;
|
||||
int argc, i;
|
||||
struct t_plugin_script *ptr_script;
|
||||
|
||||
@@ -1393,15 +1391,7 @@ plugin_script_action_remove (struct t_weechat_plugin *weechat_plugin,
|
||||
/* create again directories, just in case they have been removed */
|
||||
plugin_script_create_dirs (weechat_plugin);
|
||||
|
||||
ptr_list = *list;
|
||||
*quiet = 0;
|
||||
if (strncmp (ptr_list, "-q ", 3) == 0)
|
||||
{
|
||||
*quiet = 1;
|
||||
ptr_list += 3;
|
||||
}
|
||||
|
||||
argv = weechat_string_split (ptr_list, ",", NULL,
|
||||
argv = weechat_string_split (*list, ",", NULL,
|
||||
WEECHAT_STRING_SPLIT_STRIP_LEFT
|
||||
| WEECHAT_STRING_SPLIT_STRIP_RIGHT
|
||||
| WEECHAT_STRING_SPLIT_COLLAPSE_SEPS,
|
||||
@@ -1410,25 +1400,35 @@ plugin_script_action_remove (struct t_weechat_plugin *weechat_plugin,
|
||||
{
|
||||
for (i = 0; i < argc; i++)
|
||||
{
|
||||
ptr_name = argv[i];
|
||||
*quiet = 0;
|
||||
if (strncmp (ptr_name, "-q ", 3) == 0)
|
||||
{
|
||||
*quiet = 1;
|
||||
ptr_name += 3;
|
||||
}
|
||||
|
||||
/* unload script, if script is loaded */
|
||||
ptr_script = plugin_script_search_by_full_name (scripts, argv[i]);
|
||||
ptr_script = plugin_script_search_by_full_name (scripts, ptr_name);
|
||||
if (ptr_script)
|
||||
(*script_unload) (ptr_script);
|
||||
|
||||
/* remove script file(s) */
|
||||
(void) plugin_script_remove_file (weechat_plugin, argv[i],
|
||||
(void) plugin_script_remove_file (weechat_plugin, ptr_name,
|
||||
*quiet, 1);
|
||||
|
||||
/* send signal */
|
||||
snprintf (str_signal, sizeof (str_signal),
|
||||
"%s_script_removed", weechat_plugin->name);
|
||||
(void) weechat_hook_signal_send (str_signal,
|
||||
WEECHAT_HOOK_SIGNAL_STRING,
|
||||
ptr_name);
|
||||
}
|
||||
weechat_string_free_split (argv);
|
||||
}
|
||||
|
||||
*quiet = 0;
|
||||
|
||||
snprintf (str_signal, sizeof (str_signal),
|
||||
"%s_script_removed", weechat_plugin->name);
|
||||
(void) weechat_hook_signal_send (str_signal, WEECHAT_HOOK_SIGNAL_STRING,
|
||||
ptr_list);
|
||||
|
||||
free (*list);
|
||||
*list = NULL;
|
||||
}
|
||||
@@ -1443,7 +1443,7 @@ plugin_script_action_autoload (struct t_weechat_plugin *weechat_plugin,
|
||||
char **list)
|
||||
{
|
||||
char **argv, *name, *ptr_base_name, *base_name, *autoload_path;
|
||||
char *symlink_path, *ptr_list, *weechat_data_dir, *dir_separator;
|
||||
char *symlink_path, *ptr_name, *weechat_data_dir, *dir_separator;
|
||||
int argc, i, length, rc, autoload;
|
||||
|
||||
if (!*list)
|
||||
@@ -1452,30 +1452,7 @@ plugin_script_action_autoload (struct t_weechat_plugin *weechat_plugin,
|
||||
/* create again directories, just in case they have been removed */
|
||||
plugin_script_create_dirs (weechat_plugin);
|
||||
|
||||
ptr_list = *list;
|
||||
autoload = 0;
|
||||
*quiet = 0;
|
||||
|
||||
while ((ptr_list[0] == ' ') || (ptr_list[0] == '-'))
|
||||
{
|
||||
if (ptr_list[0] == ' ')
|
||||
ptr_list++;
|
||||
else
|
||||
{
|
||||
switch (ptr_list[1])
|
||||
{
|
||||
case 'a': /* no autoload */
|
||||
autoload = 1;
|
||||
break;
|
||||
case 'q': /* quiet mode */
|
||||
*quiet = 1;
|
||||
break;
|
||||
}
|
||||
ptr_list += 2;
|
||||
}
|
||||
}
|
||||
|
||||
argv = weechat_string_split (ptr_list, ",", NULL,
|
||||
argv = weechat_string_split (*list, ",", NULL,
|
||||
WEECHAT_STRING_SPLIT_STRIP_LEFT
|
||||
| WEECHAT_STRING_SPLIT_STRIP_RIGHT
|
||||
| WEECHAT_STRING_SPLIT_COLLAPSE_SEPS,
|
||||
@@ -1484,7 +1461,30 @@ plugin_script_action_autoload (struct t_weechat_plugin *weechat_plugin,
|
||||
{
|
||||
for (i = 0; i < argc; i++)
|
||||
{
|
||||
name = strdup (argv[i]);
|
||||
ptr_name = argv[i];
|
||||
autoload = 0;
|
||||
*quiet = 0;
|
||||
while ((ptr_name[0] == ' ') || (ptr_name[0] == '-'))
|
||||
{
|
||||
if (ptr_name[0] == ' ')
|
||||
{
|
||||
ptr_name++;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (ptr_name[1])
|
||||
{
|
||||
case 'a': /* no autoload */
|
||||
autoload = 1;
|
||||
break;
|
||||
case 'q': /* quiet mode */
|
||||
*quiet = 1;
|
||||
break;
|
||||
}
|
||||
ptr_name += 2;
|
||||
}
|
||||
}
|
||||
name = strdup (ptr_name);
|
||||
if (name)
|
||||
{
|
||||
ptr_base_name = basename (name);
|
||||
|
||||
@@ -135,7 +135,8 @@ extern void plugin_script_auto_load (struct t_weechat_plugin *weechat_plugin,
|
||||
extern struct t_plugin_script *plugin_script_search (struct t_plugin_script *scripts,
|
||||
const char *name);
|
||||
extern char *plugin_script_search_path (struct t_weechat_plugin *weechat_plugin,
|
||||
const char *filename);
|
||||
const char *filename,
|
||||
int search_system_dir);
|
||||
extern struct t_plugin_script *plugin_script_alloc (const char *filename,
|
||||
const char *name,
|
||||
const char *author,
|
||||
|
||||
@@ -80,6 +80,8 @@
|
||||
return PyLong_FromLong((long)__int)
|
||||
#define API_RETURN_LONG(__long) \
|
||||
return PyLong_FromLong(__long)
|
||||
#define API_RETURN_LONGLONG(__longlong) \
|
||||
return PyLong_FromLongLong(__longlong)
|
||||
|
||||
|
||||
/*
|
||||
@@ -374,14 +376,14 @@ API_FUNC(string_parse_size)
|
||||
char *size;
|
||||
unsigned long long value;
|
||||
|
||||
API_INIT_FUNC(1, "string_parse_size", API_RETURN_LONG(0));
|
||||
API_INIT_FUNC(1, "string_parse_size", API_RETURN_LONGLONG(0));
|
||||
size = NULL;
|
||||
if (!PyArg_ParseTuple (args, "s", &size))
|
||||
API_WRONG_ARGS(API_RETURN_LONG(0));
|
||||
API_WRONG_ARGS(API_RETURN_LONGLONG(0));
|
||||
|
||||
value = weechat_string_parse_size (size);
|
||||
|
||||
API_RETURN_LONG(value);
|
||||
API_RETURN_LONGLONG(value);
|
||||
}
|
||||
|
||||
API_FUNC(string_color_code_size)
|
||||
|
||||
@@ -1201,7 +1201,7 @@ weechat_python_command_cb (const void *pointer, void *data,
|
||||
{
|
||||
/* load python script */
|
||||
path_script = plugin_script_search_path (weechat_python_plugin,
|
||||
ptr_name);
|
||||
ptr_name, 1);
|
||||
weechat_python_load ((path_script) ? path_script : ptr_name,
|
||||
NULL);
|
||||
if (path_script)
|
||||
|
||||
+208
-208
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user