From 48ac3c4f989eb5e25105896649e90dd01dcfb9ca Mon Sep 17 00:00:00 2001 From: Sebastien Helleu Date: Fri, 14 Nov 2008 14:43:04 +0100 Subject: [PATCH] Catch signal "buffer_renamed" in logger plugin (restart logging for buffer when name has changed) --- src/plugins/irc/irc-protocol.c | 2 ++ src/plugins/logger/logger.c | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/plugins/irc/irc-protocol.c b/src/plugins/irc/irc-protocol.c index edd4dae7f..6c6c3ed17 100644 --- a/src/plugins/irc/irc-protocol.c +++ b/src/plugins/irc/irc-protocol.c @@ -655,6 +655,8 @@ irc_protocol_cmd_nick (struct t_irc_server *server, const char *command, free (ptr_channel->name); ptr_channel->name = strdup (new_nick); weechat_buffer_set (ptr_channel->buffer, "name", new_nick); + weechat_buffer_set (ptr_channel->buffer, + "localvar_set_channel", new_nick); } break; case IRC_CHANNEL_TYPE_CHANNEL: diff --git a/src/plugins/logger/logger.c b/src/plugins/logger/logger.c index 14236bbab..af534134b 100644 --- a/src/plugins/logger/logger.c +++ b/src/plugins/logger/logger.c @@ -720,6 +720,25 @@ logger_buffer_closing_signal_cb (void *data, const char *signal, return WEECHAT_RC_OK; } +/* + * logger_buffer_renamed_signal_cb: callback for "buffer_closing" signal + */ + +int +logger_buffer_renamed_signal_cb (void *data, const char *signal, + const char *type_data, void *signal_data) +{ + /* make C compiler happy */ + (void) data; + (void) signal; + (void) type_data; + + logger_stop (logger_buffer_search_buffer (signal_data), 1); + logger_start_buffer (signal_data); + + return WEECHAT_RC_OK; +} + /* * logger_backlog: display backlog for a buffer (by reading end of log file) */ @@ -978,6 +997,7 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[]) weechat_hook_signal ("buffer_open", &logger_buffer_open_signal_cb, NULL); weechat_hook_signal ("buffer_closing", &logger_buffer_closing_signal_cb, NULL); + weechat_hook_signal ("buffer_renamed", &logger_buffer_renamed_signal_cb, NULL); weechat_hook_signal ("logger_backlog", &logger_backlog_signal_cb, NULL); weechat_hook_signal ("logger_start", &logger_start_signal_cb, NULL); weechat_hook_signal ("logger_stop", &logger_stop_signal_cb, NULL);