New features
core: add variable "old_full_name" in buffer, set during buffer renaming (issue weechat/weechat#1428)
core: add debug option "-d" in command /eval (issue weechat/weechat#1434)
api: add functions crypto_hash and crypto_hash_pbkdf2
api: add info "auto_connect" (issue weechat/weechat#1453)
api: add info "weechat_headless" (issue weechat/weechat#1433)
buflist: add pointer "window" in bar item evaluation
irc: add support of fake servers (no I/O, for testing purposes)
relay: accept hash of password in init command of weechat protocol with option "password_hash" (PBKDF2, SHA256, SHA512)
relay: reject client with weechat protocol if password or totp is received in init command but not set in WeeChat (issue weechat/weechat#1435)
Bug fixes
core: fix memory leak in completion
core: flush stdout/stderr before forking in hook_process function (issue weechat/weechat#1441)
core: fix evaluation of condition with nested "if" (issue weechat/weechat#1434)
irc: split AUTHENTICATE message in 400-byte chunks (issue weechat/weechat#1459)
irc: copy temporary server flag in command /server copy
irc: add nick changes in the hotlist (except self nick change)
irc: case-insensitive comparison on incoming CTCP command, force upper case on CTCP replies (issue weechat/weechat#1439)
irc: fix memory leak when the channel topic is changed
logger: fix crash when logging is disabled on a buffer and the log file was deleted in the meanwhile, when option logger.file.info_lines is on (issue weechat/weechat#1444)
php: fix crash when loading script with PHP 7.4 (issue weechat/weechat#1452)
relay: update buffers synchronization when buffers are renamed (issue weechat/weechat#1428)
script: fix memory leak in read of script repository file if it has invalid content
script: fix unexpected display of scripts list in buffer with command /script list -i
xfer: send signal "xfer_ended" after the received file has been renamed (issue weechat/weechat#1438)
Tests
scripts: fix generation of test scripts with Python 3.8
unit: add tests on IRC protocol functions and callbacks
unit: add tests on function secure_derive_key
unit: add tests on functions util_get_time_diff and util_file_get_content
Build
core: fix Cygwin build
guile: add detection of Guile 3.0.0 (issue weechat/weechat#1442)
irc: fix build with GnuTLS < 3.1.0 (issue weechat/weechat#1431)
php: add detection of PHP 7.4
ruby: add detection of Ruby 2.7 (issue weechat/weechat#1455)
Release notes:
irc: fix crash when receiving a malformed message 352 (who)
irc: fix crash when a new message 005 is received with longer nick prefixes
irc: fix crash when receiving a malformed message 324 (channel mode) (CVE-2020-8955)
Disables support for Javascript and PHP:
- Javascript requires an old version of v8
- PHP requires a larger number of dependencies in addition to php-embed
Changelog [1]:
New features
- core: add option weechat.look.nick_color_hash_salt to shuffle nick colors (issue #635)
- core: add different icons sizes (16x16 to 512x512) (issue #1347)
- core: add file weechat.desktop
- core: add reverse of string for screen in evaluation of expressions with "revscr:"
- core: add length of string (number of chars and on screen) in evaluation of expressions with "length:xxx" and "lengthscr:xxx"
- core: add calculation of expression in evaluation of expressions with "calc:xxx" (issue #997)
- core: add optional default path (evaluated) in completion "filename"
- core: add support of modifiers in evaluation of expressions with "modifier:name,data,string"
- api: add modifier "color_encode_ansi" (issue #528)
- api: add modifier "eval_path_home"
- irc: add filters on raw buffer (issue #1000)
- irc: add option irc.look.display_pv_warning_address to display a warning in private buffer if the remote nick address has changed (issue #892)
- irc: add server option "ssl_password" (issue #115, issue #1416)
- irc: add "user" in output of irc_message_parse (issue #136)
- irc: add options irc.color.message_kick and irc.color.reason_kick (issue #683, issue #684)
- logger: add option logger.file.color_lines (issue #528, issue #621)
- script: add options "-ol" and "-il" in command "/script list" to send translated string with list of scripts loaded, display "No scripts loaded" if no scripts are loaded
- xfer: add option xfer.file.download_temporary_suffix with default value ".part" (issue #1237)
Bug fixes
- core: set buffer name, short name and title only if the value has changed
- core: fix scrolling up in bare mode when switched to bare mode at the top of the buffer (issue #899, issue #978)
- core: optimize load of configuration files
- core: fix window separators not respecting window splits (issue #630)
- core: fix cursor mode info when prefix_align is none and with words split across lines (issue #610, issue #617, issue #619)
- core: add support of reverse video in ANSI color codes
- core: fixed segfault during excessive evaluation in function string_repeat (issue #1400)
- buflist: fix extra spaces between buffers when conditions are used to hide buffers (regression introduced in version 2.6) (issue #1403)
- irc: do not automatically open a channel with name "0" (issue #1429)
- irc: remove option irc.network.channel_encode, add server option "charset_message" to control which part of the IRC message is decoded/encoded to the target charset (issue #832)
- irc: use path from option xfer.file.upload_path to complete filename in command "/dcc send" (issue #60)
- logger: fix write in log file if it has been deleted or renamed (issue #123)
- python: send "bytes" instead of "str" to callbacks in Python 3 when the string is not UTF-8 valid (issue #1389)
- relay: send message "_buffer_title_changed" to clients only when the title is changed
- xfer: fix memory leak when a xfer is freed and when the plugin is unloaded
Tests
- unit: add tests on GUI color functions
Build
- core: fix build on Haiku (issue #1420)
- core: fix build on Alpine
- core: remove file FindTCL.cmake
- core: display an error on missing dependency in CMake (issue #916, issue #956)
- debian: disable Javascript plugin on Debian Sid and Ubuntu Eoan
- debian: build with Guile 2.2
- guile: add support of Guile 2.2, disable /guile eval (issue #1098)
- python: add detection of Python 3.8
[1] https://weechat.org/files/changelog/ChangeLog-2.7.html
Changelog [1]:
New features
- core: use getopt to parse command line arguments
- core: add option weechat.look.prefix_same_nick_middle
- core: add option weechat.look.buffer_time_same
- core: use seconds by default in /repeat interval, allow unit for the interval
- core: allow text in addition to a command in command /repeat
- core: add option "addreplace" in command /filter
- api: return allocated string in hook_info callback and function info_get
- api: replace argument "keep_eol" by "flags" in function string_split
- api: add function command_options
- api: add function string_match_list
- irc: add bar items "irc_nick", "irc_host" and "irc_nick_host"
- irc: add variable "host" in server structure
- relay: add support of UNIX socket
- relay: add option relay.weechat.commands
- script: use SHA-512 instead of MD5 for script checksum
- spell: rename aspell plugin to spell
- trigger: add hooks "info" and "info_hashtable"
- xfer: rename option xfer.network.speed_limit to xfer.network.speed_limit_send, add option xfer.network.speed_limit_recv
Bug fixes
- core: don’t execute command scheduled by /repeat and /wait if the buffer does not exist any more
- core: set max length to 4096 for /secure passphrase
- core: refilter only affected buffers on filter change
- fset: fix slow refresh of fset buffer during /reload
- irc: fix parsing of MODE command when there are colons after the first mode argument
- irc: fix memory leak in infos "irc_server_isupport" and "irc_server_isupport_value"
- irc: fix length of string for SHA-512, SHA-256 and SHA-1 in help on ssl_fingerprint option
- irc: display an error with /allchan -current or /allpv -current if the current buffer is not an irc buffer
- irc: fix update of channels modes with arguments when joining a channel
- irc: quote NICK command argument sent to the server
- php: fix memory leak in functions string_eval_expression, string_eval_path_home, key_bind, hook_process_hashtable, hook_hsignal_send, info_get_hashtable, hdata_update
- relay: fix crash when a weechat relay client reloads the relay plugin with /plugin reload relay
- spell: fix detection of nick followed by the nick completer
- trigger: fix split of hook arguments
Tests
- unit: add tests on function util_signal_search
Build
- core: fix value of libdir in file weechat.pc
- core: fix generation of man page weechat-headless with autotools
- core: add CMake option "ENABLE_CODE_COVERAGE" to compile with code coverage options (CMake ≥ 3.0 is now required)
- core: fix compilation on Mac OS
- lua: add detection of Lua 5.3 with autotools
- ruby: add detection of Ruby 2.6
- tests: fix compilation of tests on FreeBSD
[1] https://weechat.org/files/changelog/ChangeLog-2.5.html#v2.5
Allows for adding Perl libraries in the same way as for Python. Doesn't
really need to be a function, since there's only one perlPackages in
nixpkgs, but I went for consistency with the python plugin.
In my previous PR I missed that ${sec.foobar} (syntax to retrieve
secrets in a weechat runtime) breaks the shell evaluation.
Furthermore `;` shall be used rather than `\n` to concat scripts and the
init config.
This aims to make the `weechat` package even more configurable. It
allows to specify scripts and commands using the `configure` function
inside a `weechat.override` expression.
The package can be configured like this:
```
with import <nixpkgs> { };
weechat.override {
plugins = { availablePlugins, ... }: {
plugins = builtins.attrValues availablePlugins;
init = ''
/set foo bar
/server add freenode chat.freenode.org
'';
scripts = [ "/path/to/script.py" ];
};
}
```
All commands are passed to `weechat --run-command "/set foo bar;/server ..."`.
The `plugins' attribute is not necessarily required anymore, if it's
sufficient to add `init' commands, the `plugins' will be
`builtins.attrValues availablePlugins' by default.
Additionally the result contains `weechat` and `weechat-headless`
(introduced in WeeChat 2.1) now.
If I have a patch I want to apply to weechat, I can't do that with
overrideAttrs like I can with almost every other package, because that
only applies to the wrapper derivation. For other wrapped packages, one
can usually call the wrapper with any version of the derivation, but the
weechat derivation didn't expose a wrapper creation function.
Taking inspiration from other packages, particularly Firefox, I
extracted the wrapper into its own function, made the default weechat
derivation use that, and added weechat-unwrapped.
Now I can add my custom patch like this:
(wrapWeechat
(weechat-unwrapped.overrideAttrs (oldAttrs: {
patches = [
(fetchpatch {
url = "55767f5f11.patch?full_index=1";
sha256 = "1pkcdsby57diqds1y5hhl0fr4i8j0zax32jb0gqd36siki3lza3d";
})
];
}))
{ configure =
{ availablePlugins, ... }:
{
plugins = with availablePlugins; [
(python.withPackages (packages: with packages; [ potr websocket_client ]))
];
};
})
There is a small backward incompatibility here: previously, it was
possible to get an unwrapped weechat like this:
weechat.override { configure = null; }
This didn't seem too important to keep around since it was also possible
to get an unwrapped weechat in a much more obvious way:
weechat.unwrapped
I could probably make it so that the first way still worked, if that
behavior turns out to really have been important.
Also add a wrapper generator that allows adding the plugins back
conveniently and corresponding documentation in the package notes
section of the nixpkgs manual.
They're still enabled by default, but now can be disabled.
Python has not been made optional due to the additional complexity of:
- python2 vs python3
- pync support on Darwin
Making Python support optional should be revisited at another time.
This reverts commit cd52c04456 and
others.
Managing certificates (including revoking certificates and adding
custom certificates) becomes extremely painful if every package in the
system potentially depends on a different copy of cacert. Also, it
makes updating cacert rather expensive.