1
0
mirror of https://github.com/weechat/weechat.git synced 2026-07-10 19:53:13 +02:00

Added server/channel arg to /buffer command for jumping to buffer

This commit is contained in:
Sebastien Helleu
2005-11-29 08:23:03 +00:00
parent 816fac5084
commit c005d8c4d3
32 changed files with 2886 additions and 2794 deletions
+23 -4
View File
@@ -45,12 +45,13 @@ t_weechat_command weechat_commands[] =
"or IRC command, without first '/')\n" "arguments: arguments for command"),
0, MAX_ARGS, NULL, weechat_cmd_alias },
{ "buffer", N_("manage buffers"),
N_("[action | number]"),
N_("[action | number | [[server] [channel]]]"),
N_("action: action to do:\n"
" move: move buffer in the list (may be relative, for example -1)\n"
" close: close buffer (for channel: same as /part without part message)\n"
" list: list opened buffers (no parameter implies this list)\n"
" notify: set notify level for buffer (0=never, 1=highlight, 2=1+msg, 3=2+join/part)\n"
"server,channel: jump to buffer by server and/or channel name\n"
"number: jump to buffer by number"),
0, MAX_ARGS, weechat_cmd_buffer, NULL },
{ "clear", N_("clear window(s)"),
@@ -143,7 +144,7 @@ t_weechat_command weechat_commands[] =
"Without argument, /unignore command lists all defined ignore."),
0, 4, weechat_cmd_unignore, NULL },
{ "uptime", N_("show WeeChat uptime"),
N_("-o"),
N_("[-o]"),
N_("-o: send uptime on current channel as an IRC message"),
0, 1, weechat_cmd_uptime, NULL },
{ "window", N_("manage windows"),
@@ -1186,7 +1187,7 @@ weechat_cmd_buffer (int argc, char **argv)
}
else
{
/* jump to buffer by number */
/* jump to buffer by number or server/channel name */
if (argv[0][0] == '-')
{
@@ -1219,11 +1220,29 @@ weechat_cmd_buffer (int argc, char **argv)
}
else
{
/* absolute jump by number */
/* absolute jump by number, or by server/channel name */
error = NULL;
number = strtol (argv[0], &error, 10);
if ((error) && (error[0] == '\0'))
gui_buffer_switch_by_number (gui_current_window, (int) number);
else
{
ptr_buffer = NULL;
if (argc > 1)
ptr_buffer = gui_buffer_search (argv[0], argv[1]);
else
{
if (string_is_channel (argv[0]))
ptr_buffer = gui_buffer_search (NULL, argv[0]);
else
ptr_buffer = gui_buffer_search (argv[0], NULL);
}
if (ptr_buffer)
{
gui_switch_to_buffer (gui_current_window, ptr_buffer);
gui_redraw_buffer (ptr_buffer);
}
}
}
}
+1 -1
View File
@@ -191,7 +191,7 @@ t_config_option weechat_options_look[] =
{ "look_nick_completion_ignore", N_("chars ignored for nick completion"),
N_("chars ignored for nick completion"),
OPTION_TYPE_STRING, 0, 0, 0,
"[]-", NULL, NULL, &cfg_look_nick_completion_ignore, config_change_noop },
"[]-^", NULL, NULL, &cfg_look_nick_completion_ignore, config_change_noop },
{ "look_infobar", N_("enable info bar"),
N_("enable info bar"),
OPTION_TYPE_BOOLEAN, BOOL_FALSE, BOOL_TRUE, BOOL_TRUE,
+57
View File
@@ -264,6 +264,63 @@ gui_window_new (t_gui_window *parent, int x, int y, int width, int height,
return new_window;
}
/*
* gui_buffer_search: search a buffer by server and channel name
*/
t_gui_buffer *
gui_buffer_search (char *server, char *channel)
{
t_irc_server *ptr_server;
t_irc_channel *ptr_channel;
t_gui_buffer *ptr_buffer;
ptr_server = NULL;
ptr_channel = NULL;
ptr_buffer = NULL;
/* nothing given => print on current buffer */
if ((!server || !server[0]) && (!channel || !channel[0]))
ptr_buffer = gui_current_window->buffer;
else
{
if (server && server[0])
{
ptr_server = server_search (server);
if (!ptr_server)
return NULL;
}
else
{
ptr_server = SERVER(gui_current_window->buffer);
if (!ptr_server)
ptr_server = SERVER(gui_buffers);
}
if (channel && channel[0])
{
if (ptr_server)
{
ptr_channel = channel_search (ptr_server, channel);
if (ptr_channel)
ptr_buffer = ptr_channel->buffer;
}
}
else
{
if (ptr_server)
ptr_buffer = ptr_server->buffer;
else
ptr_buffer = gui_current_window->buffer;
}
}
if (!ptr_buffer)
return NULL;
return (ptr_buffer->dcc) ? gui_buffers : ptr_buffer;
}
/*
* gui_buffer_servers_search: search servers buffer
* (when same buffer is used for all servers)
+1
View File
@@ -401,6 +401,7 @@ extern int gui_window_tree_init (t_gui_window *);
extern void gui_window_tree_node_to_leaf (t_gui_window_tree *, t_gui_window *);
extern void gui_window_tree_free (t_gui_window_tree **);
extern t_gui_window *gui_window_new (t_gui_window *, int, int, int, int, int, int);
extern t_gui_buffer *gui_buffer_search (char *, char *);
extern t_gui_buffer *gui_buffer_new (t_gui_window *, void *, void *, int, int);
extern void gui_buffer_clear (t_gui_buffer *);
extern void gui_buffer_clear_all ();
+2 -1
View File
@@ -37,6 +37,7 @@
#include "../common/command.h"
#include "../common/weeconfig.h"
#include "../irc/irc.h"
#include "../gui/gui.h"
/*
@@ -165,7 +166,7 @@ weechat_plugin_printf (t_weechat_plugin *plugin,
if (!plugin || !message)
return;
ptr_buffer = plugin_find_buffer (server, channel);
ptr_buffer = gui_buffer_search (server, channel);
va_start (argptr, message);
vsnprintf (buf, sizeof (buf) - 1, message, argptr);
va_end (argptr);
-57
View File
@@ -47,63 +47,6 @@ t_weechat_plugin *weechat_plugins = NULL;
t_weechat_plugin *last_weechat_plugin = NULL;
/*
* plugin_find_buffer: find a buffer for text display
*/
t_gui_buffer *
plugin_find_buffer (char *server, char *channel)
{
t_irc_server *ptr_server;
t_irc_channel *ptr_channel;
t_gui_buffer *ptr_buffer;
ptr_server = NULL;
ptr_channel = NULL;
ptr_buffer = NULL;
/* nothing given => print on current buffer */
if ((!server || !server[0]) && (!channel || !channel[0]))
ptr_buffer = gui_current_window->buffer;
else
{
if (server && server[0])
{
ptr_server = server_search (server);
if (!ptr_server)
return NULL;
}
else
{
ptr_server = SERVER(gui_current_window->buffer);
if (!ptr_server)
ptr_server = SERVER(gui_buffers);
}
if (channel && channel[0])
{
if (ptr_server)
{
ptr_channel = channel_search (ptr_server, channel);
if (ptr_channel)
ptr_buffer = ptr_channel->buffer;
}
}
else
{
if (ptr_server)
ptr_buffer = ptr_server->buffer;
else
ptr_buffer = gui_current_window->buffer;
}
}
if (!ptr_buffer)
return NULL;
return (ptr_buffer->dcc) ? gui_buffers : ptr_buffer;
}
/*
* plugin_find_server_channel: find server/channel for command execution
*/
-1
View File
@@ -31,7 +31,6 @@ typedef void (t_weechat_end_func) (t_weechat_plugin *);
extern t_weechat_plugin *weechat_plugins;
extern t_weechat_plugin *last_weechat_plugin;
extern t_gui_buffer *plugin_find_buffer (char *, char *);
extern void plugin_find_server_channel (char *, char *,
t_irc_server **, t_irc_channel **);
extern void plugin_exec_on_files (t_weechat_plugin *, char *,