1
0
mirror of https://github.com/weechat/weechat.git synced 2026-07-06 09:43:13 +02:00

Add syntax "*N" for /buffer (where N is a buffer number): jump to buffer number or previous buffer

This will switch to buffer #N or previously displayed buffer if current buffer is #N
(it uses option weechat.look.jump_current_to_previous_buffer).
Default keys alt-1 to alt-0 are now /buffer *N
This commit is contained in:
Sebastien Helleu
2009-05-12 18:16:32 +02:00
parent b860043646
commit 2ab1626fa9
21 changed files with 183 additions and 80 deletions
+30 -3
View File
@@ -713,7 +713,31 @@ command_buffer (void *data, struct t_gui_buffer *buffer,
return WEECHAT_RC_OK;
}
/* smart jump (jump to previous buffer for current number) */
if (argv[1][0] == '*')
{
error = NULL;
number = strtol (argv[1] + 1, &error, 10);
if (error && !error[0])
{
/* buffer is currently displayed ? then jump to previous buffer */
if ((number == gui_current_window->buffer->number)
&& (CONFIG_BOOLEAN(config_look_jump_current_to_previous_buffer))
&& gui_previous_buffer)
{
number = gui_previous_buffer->number;
}
if (number != gui_current_window->buffer->number)
{
gui_buffer_switch_by_number (gui_current_window,
(int) number);
}
}
return WEECHAT_RC_OK;
}
/* jump to buffer by number or name */
error = NULL;
number = strtol (argv[1], &error, 10);
@@ -3688,8 +3712,11 @@ command_init ()
" reset: reset to default value (all)\n"
"localvar: display local variables for current buffer\n"
" set: set a property for current buffer\n"
" number: jump to buffer by number\n"
"server,\n"
" number: jump to buffer by number, possible prefix:\n"
" '+': relative jump, add number to current\n"
" '-': relative jump, sub number to current\n"
" '*': jump to number, using option "
"\"weechat.look.jump_current_to_previous_buffer\"\n"
" name: jump to buffer by (partial) name\n\n"
"Examples:\n"
"clear current buffer: /buffer clear\n"
+2 -2
View File
@@ -1301,8 +1301,8 @@ config_weechat_init_options ()
weechat_config_file, ptr_section,
"jump_current_to_previous_buffer", "boolean",
N_("jump to previous buffer displayed when jumping to current buffer "
"number (to easily switch to another buffer, then come back to "
"current buffer)"),
"number with /buffer *N (where N is a buffer number), to easily "
"switch to another buffer, then come back to current buffer"),
NULL, 0, 0, "on", NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL);
config_look_nickmode = config_file_new_option (
weechat_config_file, ptr_section,
+10 -10
View File
@@ -164,16 +164,16 @@ gui_keyboard_default_bindings ()
gui_keyboard_default_bind (/* m-w,m-right */ "meta-wmeta-meta2-C", "/window right");
gui_keyboard_default_bind (/* m-z */ "meta-z", "/window zoom");
gui_keyboard_default_bind (/* m-= */ "meta-=", "/filter toggle");
gui_keyboard_default_bind (/* m-0 */ "meta-0", "/buffer 10");
gui_keyboard_default_bind (/* m-1 */ "meta-1", "/buffer 1");
gui_keyboard_default_bind (/* m-2 */ "meta-2", "/buffer 2");
gui_keyboard_default_bind (/* m-3 */ "meta-3", "/buffer 3");
gui_keyboard_default_bind (/* m-4 */ "meta-4", "/buffer 4");
gui_keyboard_default_bind (/* m-5 */ "meta-5", "/buffer 5");
gui_keyboard_default_bind (/* m-6 */ "meta-6", "/buffer 6");
gui_keyboard_default_bind (/* m-7 */ "meta-7", "/buffer 7");
gui_keyboard_default_bind (/* m-8 */ "meta-8", "/buffer 8");
gui_keyboard_default_bind (/* m-9 */ "meta-9", "/buffer 9");
gui_keyboard_default_bind (/* m-0 */ "meta-0", "/buffer *10");
gui_keyboard_default_bind (/* m-1 */ "meta-1", "/buffer *1");
gui_keyboard_default_bind (/* m-2 */ "meta-2", "/buffer *2");
gui_keyboard_default_bind (/* m-3 */ "meta-3", "/buffer *3");
gui_keyboard_default_bind (/* m-4 */ "meta-4", "/buffer *4");
gui_keyboard_default_bind (/* m-5 */ "meta-5", "/buffer *5");
gui_keyboard_default_bind (/* m-6 */ "meta-6", "/buffer *6");
gui_keyboard_default_bind (/* m-7 */ "meta-7", "/buffer *7");
gui_keyboard_default_bind (/* m-8 */ "meta-8", "/buffer *8");
gui_keyboard_default_bind (/* m-9 */ "meta-9", "/buffer *9");
/* bind meta-j + {01..99} to switch to buffers # > 10 */
for (i = 1; i < 100; i++)
+1 -13
View File
@@ -1489,21 +1489,9 @@ gui_buffer_switch_by_number (struct t_gui_window *window, int number)
struct t_gui_buffer *ptr_buffer;
/* invalid buffer */
if (number < 0)
if ((number < 0) || (number == window->buffer->number))
return;
/* buffer is currently displayed ? then jump to previous buffer */
if (number == window->buffer->number)
{
if (CONFIG_BOOLEAN(config_look_jump_current_to_previous_buffer)
&& gui_previous_buffer)
{
number = gui_previous_buffer->number;
}
else
return;
}
/* search for buffer in the list */
for (ptr_buffer = gui_buffers; ptr_buffer; ptr_buffer = ptr_buffer->next_buffer)
{