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:
+30
-3
@@ -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"
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user