summaryrefslogtreecommitdiff
path: root/src/core/wee-command.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/wee-command.c')
-rw-r--r--src/core/wee-command.c178
1 files changed, 98 insertions, 80 deletions
diff --git a/src/core/wee-command.c b/src/core/wee-command.c
index 5c7ce293f..bc30cc1fe 100644
--- a/src/core/wee-command.c
+++ b/src/core/wee-command.c
@@ -623,7 +623,7 @@ COMMAND_CALLBACK(buffer)
return WEECHAT_RC_ERROR;
if (strcmp (argv[2], "-") == 0)
{
- gui_buffer_move_to_number (buffer, 1);
+ gui_buffer_move_to_number (buffer, gui_buffers->number);
}
else if (strcmp (argv[2], "+") == 0)
{
@@ -997,47 +997,53 @@ COMMAND_CALLBACK(buffer)
/* relative jump '-' */
if (argv[1][0] == '-')
{
- error = NULL;
- number = strtol (argv[1] + 1, &error, 10);
- if (error && !error[0])
+ if (strcmp (argv[1], "-") == 0)
{
- if (number <= 0)
- return WEECHAT_RC_OK;
- count = 0;
- prev_number = gui_current_window->buffer->number;
- ptr_buffer = gui_current_window->buffer;
- while (1)
+ gui_buffer_switch_by_number (gui_current_window,
+ gui_buffers->number);
+ }
+ else
+ {
+ error = NULL;
+ number = strtol (argv[1] + 1, &error, 10);
+ if (error && !error[0] && (number > 0))
{
- ptr_buffer = ptr_buffer->prev_buffer;
- if (!ptr_buffer)
- ptr_buffer = last_gui_buffer;
+ count = 0;
+ prev_number = gui_current_window->buffer->number;
+ ptr_buffer = gui_current_window->buffer;
+ while (1)
+ {
+ ptr_buffer = ptr_buffer->prev_buffer;
+ if (!ptr_buffer)
+ ptr_buffer = last_gui_buffer;
- /* if we have looped on all buffers, exit the loop */
- if (ptr_buffer == gui_current_window->buffer)
- break;
+ /* if we have looped on all buffers, exit the loop */
+ if (ptr_buffer == gui_current_window->buffer)
+ break;
- if ((ptr_buffer->number != gui_current_window->buffer->number)
- && (ptr_buffer->number != prev_number))
- {
- /* increase count each time we discover a different number */
- count++;
- if (count == number)
+ if ((ptr_buffer->number != gui_current_window->buffer->number)
+ && (ptr_buffer->number != prev_number))
{
- gui_buffer_switch_by_number (gui_current_window,
- ptr_buffer->number);
- break;
+ /* increase count each time we discover a different number */
+ count++;
+ if (count == number)
+ {
+ gui_buffer_switch_by_number (gui_current_window,
+ ptr_buffer->number);
+ break;
+ }
}
+ prev_number = ptr_buffer->number;
}
- prev_number = ptr_buffer->number;
}
- }
- else
- {
- /* invalid number */
- gui_chat_printf (NULL,
- _("%sError: incorrect buffer number"),
- gui_chat_prefix[GUI_CHAT_PREFIX_ERROR]);
- return WEECHAT_RC_OK;
+ else
+ {
+ /* invalid number */
+ gui_chat_printf (NULL,
+ _("%sError: incorrect buffer number"),
+ gui_chat_prefix[GUI_CHAT_PREFIX_ERROR]);
+ return WEECHAT_RC_OK;
+ }
}
return WEECHAT_RC_OK;
}
@@ -1045,47 +1051,53 @@ COMMAND_CALLBACK(buffer)
/* relative jump '+' */
if (argv[1][0] == '+')
{
- error = NULL;
- number = strtol (argv[1] + 1, &error, 10);
- if (error && !error[0])
+ if (strcmp (argv[1], "+") == 0)
{
- if (number <= 0)
- return WEECHAT_RC_OK;
- count = 0;
- prev_number = gui_current_window->buffer->number;
- ptr_buffer = gui_current_window->buffer;
- while (1)
+ gui_buffer_switch_by_number (gui_current_window,
+ last_gui_buffer->number);
+ }
+ else
+ {
+ error = NULL;
+ number = strtol (argv[1] + 1, &error, 10);
+ if (error && !error[0] && (number > 0))
{
- ptr_buffer = ptr_buffer->next_buffer;
- if (!ptr_buffer)
- ptr_buffer = gui_buffers;
+ count = 0;
+ prev_number = gui_current_window->buffer->number;
+ ptr_buffer = gui_current_window->buffer;
+ while (1)
+ {
+ ptr_buffer = ptr_buffer->next_buffer;
+ if (!ptr_buffer)
+ ptr_buffer = gui_buffers;
- /* if we have looped on all buffers, exit the loop */
- if (ptr_buffer == gui_current_window->buffer)
- break;
+ /* if we have looped on all buffers, exit the loop */
+ if (ptr_buffer == gui_current_window->buffer)
+ break;
- if ((ptr_buffer->number != gui_current_window->buffer->number)
- && (ptr_buffer->number != prev_number))
- {
- /* increase count each time we discover a different number */
- count++;
- if (count == number)
+ if ((ptr_buffer->number != gui_current_window->buffer->number)
+ && (ptr_buffer->number != prev_number))
{
- gui_buffer_switch_by_number (gui_current_window,
- ptr_buffer->number);
- break;
+ /* increase count each time we discover a different number */
+ count++;
+ if (count == number)
+ {
+ gui_buffer_switch_by_number (gui_current_window,
+ ptr_buffer->number);
+ break;
+ }
}
+ prev_number = ptr_buffer->number;
}
- prev_number = ptr_buffer->number;
}
- }
- else
- {
- /* invalid number */
- gui_chat_printf (NULL,
- _("%sError: incorrect buffer number"),
- gui_chat_prefix[GUI_CHAT_PREFIX_ERROR]);
- return WEECHAT_RC_OK;
+ else
+ {
+ /* invalid number */
+ gui_chat_printf (NULL,
+ _("%sError: incorrect buffer number"),
+ gui_chat_prefix[GUI_CHAT_PREFIX_ERROR]);
+ return WEECHAT_RC_OK;
+ }
}
return WEECHAT_RC_OK;
}
@@ -2763,8 +2775,9 @@ COMMAND_CALLBACK(input)
gui_input_history_global_next (buffer);
else if (string_strcasecmp (argv[1], "jump_smart") == 0)
gui_input_jump_smart (buffer);
+ /* not used any more in WeeChat >= 0.4.4 (replaced by "/buffer ++") */
else if (string_strcasecmp (argv[1], "jump_last_buffer") == 0)
- gui_input_jump_last_buffer (buffer);
+ input_data (buffer, "/buffer +");
else if (string_strcasecmp (argv[1], "jump_last_buffer_displayed") == 0)
gui_input_jump_last_buffer_displayed (buffer);
else if (string_strcasecmp (argv[1], "jump_previously_visited_buffer") == 0)
@@ -6574,7 +6587,8 @@ command_init ()
N_("manage buffers"),
N_("list"
" || clear [<number>|<name>|-merged|-all]"
- " || move|merge <number>"
+ " || move <number>|-|+"
+ " || merge <number>"
" || swap <number1>|<name1> [<number2>|<name2>]"
" || unmerge [<number>|-all]"
" || renumber [<number1> [<number2> [<start>]]]"
@@ -6583,11 +6597,13 @@ command_init ()
" || localvar"
" || set <property> <value>"
" || get <property>"
- " || <number>|<name>"),
+ " || <number>|-|+|<name>"),
N_(" list: list buffers (without argument, this list is displayed)\n"
" clear: clear buffer content (number for a buffer, -merged for "
"merged buffers, -all for all buffers, or nothing for current buffer)\n"
- " move: move buffer in the list (may be relative, for example -1)\n"
+ " move: move buffer in the list (may be relative, for example -1); "
+ "\"-\" = move to first buffer number, \"+\" = move to last buffer "
+ "number + 1\n"
" swap: swap two buffers (swap with current buffer if only one "
"number/name given)\n"
" merge: merge current buffer to another buffer (chat area will "
@@ -6612,6 +6628,8 @@ command_init ()
" '-': relative jump, sub number to current\n"
" '*': jump to number, using option \"weechat.look."
"jump_current_to_previous_buffer\"\n"
+ " -: jump to first buffer number\n"
+ " +: jump to last buffer number\n"
" name: jump to buffer by (partial) name\n"
"\n"
"Examples:\n"
@@ -6634,7 +6652,9 @@ command_init ()
" jump to #weechat:\n"
" /buffer #weechat\n"
" jump to next buffer:\n"
- " /buffer +1"),
+ " /buffer +1\n"
+ " jump to last buffer number:\n"
+ " /buffer +"),
"clear -merged|-all|%(buffers_numbers)|%(buffers_plugins_names)"
" || move %(buffers_numbers)"
" || swap %(buffers_numbers)"
@@ -6648,7 +6668,7 @@ command_init ()
" || set %(buffer_properties_set)"
" || get %(buffer_properties_get)"
" || %(buffers_plugins_names)|%(buffers_names)|%(irc_channels)|"
- "%(irc_privates)|%(buffers_numbers)",
+ "%(irc_privates)|%(buffers_numbers)|-|-1|+|+1",
&command_buffer, NULL);
hook_command (
NULL, "color",
@@ -6988,7 +7008,6 @@ command_init ()
" history_global_previous: recall previous command in global history\n"
" history_global_next: recall next command in global history\n"
" jump_smart: jump to next buffer with activity\n"
- " jump_last_buffer: jump to last buffer\n"
" jump_last_buffer_displayed: jump to last buffer displayed (before "
"last jump to a buffer)\n"
" jump_previously_visited_buffer: jump to previously visited buffer\n"
@@ -7018,12 +7037,11 @@ command_init ()
"clipboard_paste|transpose_chars|undo|redo|move_beginning_of_line|"
"move_end_of_line|move_previous_char|move_next_char|move_previous_word|"
"move_next_word|history_previous|history_next|history_global_previous|"
- "history_global_next|jump_smart|jump_last_buffer|"
- "jump_previously_visited_buffer|jump_next_visited_buffer|hotlist_clear|"
- "grab_key|grab_key_command|grab_mouse|grab_mouse_area|set_unread|"
- "set_unread_current_buffer|switch_active_buffer|"
- "switch_active_buffer_previous|zoom_merged_buffer|insert|paste_start|"
- "paste_stop",
+ "history_global_next|jump_smart|jump_previously_visited_buffer|"
+ "jump_next_visited_buffer|hotlist_clear|grab_key|grab_key_command|"
+ "grab_mouse|grab_mouse_area|set_unread|set_unread_current_buffer|"
+ "switch_active_buffer|switch_active_buffer_previous|zoom_merged_buffer|"
+ "insert|paste_start|paste_stop",
&command_input, NULL);
hook_command (
NULL, "key",