This pointer is the first argument received by callbacks, and the
existing argument "data" is now automatically freed by WeeChat when the
object containing the callback is removed.
With this new pointer, the linked list of callbacks in scripts has been
removed. This will improve speed of scripts (using a lot of hooks),
reduce memory used by scripts and reduce time to unload scripts.
Following functions are affected in the C API:
* exec_on_files
* config_new
* config_new_section
* config_new_option
* hook_command
* hook_command_run
* hook_timer
* hook_fd
* hook_process
* hook_process_hashtable
* hook_connect
* hook_print
* hook_signal
* hook_hsignal
* hook_config
* hook_completion
* hook_modifier
* hook_info
* hook_info_hashtable
* hook_infolist
* hook_hdata
* hook_focus
* unhook_all_plugin
* buffer_new
* bar_item_new
* upgrade_new
* upgrade_read
The problem was introduced in commit eef3b57075
which was storing split commands inside keys themselves (for optimization).
This causes a problem when weechat.conf is reloaded, because all keys are
then deleted and created again, which removes the array of commands which
is currently used. And then it leads to a crash of WeeChat.
This commit reverts this behavior and the key commands are split when they
are executed.
Changes:
- wait control sequence for end of bracketed paste (and only after, check if
we should ask confirmation to user)
- add option weechat.look.paste_bracketed_timer_delay to force the end of
bracketed paste if the control sequence for end of bracketed paste was not
received in time
- in bracketed paste mode, with paste_max_lines=1, do not ask confirmation for
one line (ask for one line only if paste_max_lines=0)
- fix bugs with mintty: bracketed paste should be ok every time (even if some
codes are sometimes partially received, WeeChat will now handle that properly);
the standard paste often fails (due to bug in mintty, which sends paste very
slowly to remote app); so the bracketed paste mode is highly recommended with
mintty
- after paste in bracketed paste mode, the undo key (ctrl+"_" by default) will
undo whole paste, not chars one by one
New features and bugs fixed:
- mouse support: new command /mouse, new option weechat.look.mouse, new key context "mouse"
- free movement of cursor: new command /cursor, new key context "cursor"
- new hook_focus (used by cursor and mouse)
- info "cursor_mode"
- bugs fixed with key "^"
- allow plugin name in /buffer name
- fix bugs with bar windows: do not create bar windows for hidden bars
- fix completion bug when two words for completion are equal but with different case
- automatic scroll direction in /bar scroll (x/y is now optional)