1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-29 22:36:38 +02:00

Add new option irc.look.part_closes_buffer to close buffer when /part is issued on channel (task #10295)

This commit is contained in:
Sebastien Helleu
2010-03-26 20:02:17 +01:00
parent 2bbc228381
commit 485e884751
19 changed files with 84 additions and 28 deletions
+6 -6
View File
@@ -54,7 +54,7 @@ irc_bar_item_away (void *data, struct t_gui_bar_item *item,
if (buffer)
{
irc_buffer_get_server_channel (buffer, &server, NULL);
irc_buffer_get_server_and_channel (buffer, &server, NULL);
if (server && server->is_away)
{
@@ -140,7 +140,7 @@ irc_bar_item_buffer_plugin (void *data, struct t_gui_bar_item *item,
name = weechat_plugin_get_name (ptr_plugin);
if (ptr_plugin == weechat_irc_plugin)
{
irc_buffer_get_server_channel (buffer, &server, &channel);
irc_buffer_get_server_and_channel (buffer, &server, &channel);
if (server && channel
&& (weechat_config_integer (irc_config_look_item_display_server) == IRC_CONFIG_LOOK_ITEM_DISPLAY_SERVER_PLUGIN))
{
@@ -196,7 +196,7 @@ irc_bar_item_buffer_name (void *data, struct t_gui_bar_item *item,
if (buffer)
{
irc_buffer_get_server_channel (buffer, &server, &channel);
irc_buffer_get_server_and_channel (buffer, &server, &channel);
if (server || channel)
{
if (server && !channel)
@@ -305,7 +305,7 @@ irc_bar_item_channel (void *data, struct t_gui_bar_item *item,
if (buffer)
{
irc_buffer_get_server_channel (buffer, &server, &channel);
irc_buffer_get_server_and_channel (buffer, &server, &channel);
if (server || channel)
{
if (server && !channel)
@@ -375,7 +375,7 @@ irc_bar_item_lag (void *data, struct t_gui_bar_item *item,
if (buffer)
{
irc_buffer_get_server_channel (buffer, &server, NULL);
irc_buffer_get_server_and_channel (buffer, &server, NULL);
if (server
&& (server->lag >= weechat_config_integer (irc_config_network_lag_min_show) * 1000))
@@ -417,7 +417,7 @@ irc_bar_item_input_prompt (void *data, struct t_gui_bar_item *item,
if (buffer)
{
irc_buffer_get_server_channel (buffer, &server, &channel);
irc_buffer_get_server_and_channel (buffer, &server, &channel);
if (!server || !server->nick)
return NULL;
+6 -6
View File
@@ -35,15 +35,15 @@
/*
* irc_buffer_get_server_channel: get IRC server and channel pointers with a
* buffer pointer
* (buffer may be a server or a channel)
* irc_buffer_get_server_and_channel: get IRC server and channel pointers with
* a buffer pointer
* (buffer may be a server or a channel)
*/
void
irc_buffer_get_server_channel (struct t_gui_buffer *buffer,
struct t_irc_server **server,
struct t_irc_channel **channel)
irc_buffer_get_server_and_channel (struct t_gui_buffer *buffer,
struct t_irc_server **server,
struct t_irc_channel **channel)
{
struct t_irc_server *ptr_server;
struct t_irc_channel *ptr_channel;
+6 -6
View File
@@ -25,7 +25,7 @@
struct t_irc_server *ptr_server = NULL; \
buffer_plugin = weechat_buffer_get_pointer (__buffer, "plugin"); \
if (buffer_plugin == weechat_irc_plugin) \
irc_buffer_get_server_channel (__buffer, &ptr_server, NULL);
irc_buffer_get_server_and_channel (__buffer, &ptr_server, NULL);
#define IRC_BUFFER_GET_SERVER_CHANNEL(__buffer) \
struct t_weechat_plugin *buffer_plugin = NULL; \
@@ -34,8 +34,8 @@
buffer_plugin = weechat_buffer_get_pointer (__buffer, "plugin"); \
if (buffer_plugin == weechat_irc_plugin) \
{ \
irc_buffer_get_server_channel (__buffer, &ptr_server, \
&ptr_channel); \
irc_buffer_get_server_and_channel (__buffer, &ptr_server, \
&ptr_channel); \
}
#define IRC_BUFFER_RAW_NAME "irc_raw"
@@ -48,9 +48,9 @@ struct t_gui_buffer;
struct t_irc_server;
struct t_irc_channel;
extern void irc_buffer_get_server_channel (struct t_gui_buffer *buffer,
struct t_irc_server **server,
struct t_irc_channel **channel);
extern void irc_buffer_get_server_and_channel (struct t_gui_buffer *buffer,
struct t_irc_server **server,
struct t_irc_channel **channel);
extern char *irc_buffer_build_name (const char *server, const char *channel);
extern int irc_buffer_close_cb (void *data, struct t_gui_buffer *buffer);
extern struct t_gui_buffer *irc_buffer_search_first_for_all_servers ();
+6
View File
@@ -68,6 +68,7 @@ struct t_config_option *irc_config_look_highlight_tags;
struct t_config_option *irc_config_look_item_display_server;
struct t_config_option *irc_config_look_msgbuffer_fallback;
struct t_config_option *irc_config_look_notice_as_pv;
struct t_config_option *irc_config_look_part_closes_buffer;
struct t_config_option *irc_config_look_raw_messages;
struct t_config_option *irc_config_look_show_away_once;
struct t_config_option *irc_config_look_smart_filter;
@@ -1572,6 +1573,11 @@ irc_config_init ()
N_("display notices as private messages (if auto, use private buffer "
"if found)"),
"auto|never|always", 0, 0, "auto", NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL);
irc_config_look_part_closes_buffer = weechat_config_new_option (
irc_config_file, ptr_section,
"part_closes_buffer", "boolean",
N_("close buffer when /part is issued on a channel"),
NULL, 0, 0, "off", NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL);
irc_config_look_topic_strip_colors = weechat_config_new_option (
irc_config_file, ptr_section,
"topic_strip_colors", "boolean",
+1
View File
@@ -90,6 +90,7 @@ extern struct t_config_option *irc_config_look_highlight_tags;
extern struct t_config_option *irc_config_look_item_display_server;
extern struct t_config_option *irc_config_look_msgbuffer_fallback;
extern struct t_config_option *irc_config_look_notice_as_pv;
extern struct t_config_option *irc_config_look_part_closes_buffer;
extern struct t_config_option *irc_config_look_raw_messages;
extern struct t_config_option *irc_config_look_show_away_once;
extern struct t_config_option *irc_config_look_smart_filter;
+5
View File
@@ -1255,6 +1255,11 @@ IRC_PROTOCOL_CALLBACK(part)
else
irc_command_join_server (server, ptr_channel->name);
}
else
{
if (weechat_config_boolean (irc_config_look_part_closes_buffer))
weechat_buffer_close (ptr_channel->buffer);
}
}
else
irc_nick_free (ptr_channel, ptr_nick);