1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-30 14:56:39 +02:00

core: move /input buffer switch/zoom actions to command /buffer

Actions moved:

* `/input switch_active_buffer` -> `/buffer switch`
* `/input switch_active_buffer_previous` -> `/buffer switch -previous`
* `/input zoom_merged_buffer` -> `/buffer zoom`
This commit is contained in:
Sébastien Helleu
2022-12-25 22:47:18 +01:00
parent 0c29d4c5b6
commit 41fd26fe79
46 changed files with 373 additions and 325 deletions
+33 -11
View File
@@ -976,6 +976,23 @@ COMMAND_CALLBACK(buffer)
return WEECHAT_RC_OK;
}
/* switch to next/previous active buffer */
if (string_strcasecmp (argv[1], "switch") == 0)
{
if ((argc > 2) && (string_strcasecmp (argv[2], "-previous") == 0))
gui_buffer_switch_active_buffer_previous (buffer);
else
gui_buffer_switch_active_buffer (buffer);
return WEECHAT_RC_OK;
}
/* zoom on merged buffer */
if (string_strcasecmp (argv[1], "zoom") == 0)
{
gui_buffer_zoom (buffer);
return WEECHAT_RC_OK;
}
/* renumber buffers */
if (string_strcasecmp (argv[1], "renumber") == 0)
{
@@ -3433,12 +3450,6 @@ COMMAND_CALLBACK(input)
gui_input_grab_mouse (buffer, 0);
else if (string_strcasecmp (argv[1], "grab_mouse_area") == 0)
gui_input_grab_mouse (buffer, 1);
else if (string_strcasecmp (argv[1], "switch_active_buffer") == 0)
gui_input_switch_active_buffer (buffer);
else if (string_strcasecmp (argv[1], "zoom_merged_buffer") == 0)
gui_input_zoom_merged_buffer (buffer);
else if (string_strcasecmp (argv[1], "switch_active_buffer_previous") == 0)
gui_input_switch_active_buffer_previous (buffer);
else if (string_strcasecmp (argv[1], "insert") == 0)
{
if (argc > 2)
@@ -3498,6 +3509,15 @@ COMMAND_CALLBACK(input)
/* since WeeChat 3.8: "/allbuf /buffer set unread" */
else if (string_strcasecmp (argv[1], "set_unread") == 0)
(void) input_data (buffer, "/allbuf /buffer set unread", NULL);
/* since WeeChat 3.8: "/buffer switch" */
else if (string_strcasecmp (argv[1], "switch_active_buffer") == 0)
gui_buffer_switch_active_buffer (buffer);
/* since WeeChat 3.8: "/buffer switch previous" */
else if (string_strcasecmp (argv[1], "switch_active_buffer_previous") == 0)
gui_buffer_switch_active_buffer_previous (buffer);
/* since WeeChat 3.8: "/buffer zoom" */
else if (string_strcasecmp (argv[1], "zoom_merged_buffer") == 0)
gui_buffer_zoom (buffer);
else
COMMAND_ERROR;
}
@@ -7566,6 +7586,8 @@ command_init ()
" || unmerge [<number>|-all]"
" || hide [<number>|<name>|-all [<number>|<name>...]]"
" || unhide [<number>|<name>|-all [<number>|<name>...]]"
" || switch [-previous]"
" || zoom"
" || renumber [<number1> [<number2> [<start>]]]"
" || close [<n1>[-<n2>]|<name>...]"
" || notify [<level>]"
@@ -7593,6 +7615,9 @@ command_init ()
" unmerge: unmerge buffer from other buffers which have same number\n"
" hide: hide the buffer\n"
" unhide: unhide the buffer\n"
" switch: switch to next merged buffer (or to previous buffer "
"with \"-previous\")\n"
" zoom: zoom on merged buffer\n"
"renumber: renumber buffers (works only if option weechat.look."
"buffer_auto_renumber is off)\n"
" close: close buffer (number/range or name is optional)\n"
@@ -7662,6 +7687,8 @@ command_init ()
" || hide %(buffers_numbers)|%(buffers_plugins_names)|-all "
"%(buffers_numbers)|%(buffers_plugins_names)|%*"
" || unhide %(buffers_numbers)|%(buffers_plugins_names)|-all "
" || switch -previous"
" || zoom"
"%(buffers_numbers)|%(buffers_plugins_names)|%*"
" || renumber %(buffers_numbers) %(buffers_numbers) %(buffers_numbers)"
" || close %(buffers_plugins_names)|%*"
@@ -8195,9 +8222,6 @@ command_init ()
"argument: delay for end of grab, default is 500 milliseconds)\n"
" grab_mouse: grab mouse event code\n"
" grab_mouse_area: grab mouse event code with area\n"
" switch_active_buffer: switch to next merged buffer\n"
" switch_active_buffer_previous: switch to previous merged buffer\n"
" zoom_merged_buffer: zoom on merged buffer\n"
" insert: insert text in command line (escaped chars are allowed, "
"see /help print)\n"
" send: send text to the buffer\n"
@@ -8221,8 +8245,6 @@ command_init ()
"history_previous || history_next || history_global_previous || "
"history_global_next || "
"grab_key || grab_key_command || grab_mouse || grab_mouse_area || "
"switch_active_buffer || switch_active_buffer_previous || "
"zoom_merged_buffer || "
"insert || send || "
"paste_start || paste_stop",
&command_input, NULL, NULL);
+2 -2
View File
@@ -95,8 +95,8 @@ gui_key_default_bindings (int context)
BIND(/* ^D */ "ctrl-D", "/input delete_next_char");
BIND(/* ^W */ "ctrl-W", "/input delete_previous_word_whitespace");
BIND(/* m-<backspace> */ "meta-ctrl-?", "/input delete_previous_word");
BIND(/* ^X */ "ctrl-X", "/input switch_active_buffer");
BIND(/* m-x */ "meta-x", "/input zoom_merged_buffer");
BIND(/* ^X */ "ctrl-X", "/buffer switch");
BIND(/* m-x */ "meta-x", "/buffer zoom");
BIND(/* m-d */ "meta-d", "/input delete_next_word");
BIND(/* ^K */ "ctrl-K", "/input delete_end_of_line");
BIND(/* m-r */ "meta-r", "/input delete_line");
+114
View File
@@ -3354,6 +3354,120 @@ gui_buffer_get_previous_active_buffer (struct t_gui_buffer *buffer,
return NULL;
}
/*
* Switches active buffer to next buffer (when many buffers are merged).
*/
void
gui_buffer_switch_active_buffer (struct t_gui_buffer *buffer)
{
struct t_gui_buffer *ptr_buffer;
struct t_gui_window *window;
ptr_buffer = gui_buffer_get_next_active_buffer (buffer, 0);
if (ptr_buffer)
{
gui_buffer_set_active_buffer (ptr_buffer);
window = gui_window_search_with_buffer (buffer);
if (window)
gui_window_switch_to_buffer (window, ptr_buffer, 1);
}
}
/*
* Switches active buffer to previous buffer (when many buffers are merged).
*/
void
gui_buffer_switch_active_buffer_previous (struct t_gui_buffer *buffer)
{
struct t_gui_buffer *ptr_buffer;
struct t_gui_window *window;
ptr_buffer = gui_buffer_get_previous_active_buffer (buffer, 0);
if (ptr_buffer)
{
gui_buffer_set_active_buffer (ptr_buffer);
window = gui_window_search_with_buffer (buffer);
if (window)
gui_window_switch_to_buffer (window, ptr_buffer, 1);
}
}
/*
* Zooms on current active merged buffer, or display all merged buffers if zoom
* was active.
*/
void
gui_buffer_zoom (struct t_gui_buffer *buffer)
{
struct t_gui_window *ptr_window;
struct t_gui_buffer *ptr_buffer;
int buffer_was_zoomed;
/* do nothing if current buffer is not merged with another buffer */
if (gui_buffer_count_merged_buffers (buffer->number) < 2)
return;
buffer_was_zoomed = (buffer->active == 2);
/* reset scroll in all windows displaying this buffer number */
for (ptr_window = gui_windows; ptr_window;
ptr_window = ptr_window->next_window)
{
if ((ptr_window->buffer->number == buffer->number)
&& ptr_window->scroll && ptr_window->scroll->start_line)
{
gui_window_scroll_bottom (ptr_window);
}
}
/* first make buffer active if it is not */
if (!buffer->active)
{
gui_buffer_set_active_buffer (buffer);
ptr_window = gui_window_search_with_buffer (buffer);
if (ptr_window)
gui_window_switch_to_buffer (ptr_window, buffer, 1);
}
/*
* toggle active flag between 1 and 2
* (1 = active with other merged buffers displayed, 2 = the only active)
*/
if (buffer->active == 1)
{
buffer->active = 2;
buffer->lines = buffer->own_lines;
}
else if (buffer->active == 2)
{
buffer->active = 1;
buffer->lines = buffer->mixed_lines;
}
/* set "zoomed" in merged buffers */
for (ptr_buffer = gui_buffers; ptr_buffer;
ptr_buffer = ptr_buffer->next_buffer)
{
if (ptr_buffer->number > buffer->number)
break;
if (ptr_buffer->number == buffer->number)
{
ptr_buffer->zoomed = (buffer->active == 2) ? 1 : 0;
}
}
gui_buffer_compute_num_displayed ();
gui_buffer_ask_chat_refresh (buffer, 2);
(void) hook_signal_send ((buffer_was_zoomed) ?
"buffer_unzoomed" : "buffer_zoomed",
WEECHAT_HOOK_SIGNAL_POINTER, buffer);
}
/*
* Renumbers buffers with consecutive numbers between the range
* number1 -> number2, sarting with new number "start_number".
+3
View File
@@ -361,6 +361,9 @@ extern struct t_gui_buffer *gui_buffer_get_next_active_buffer (struct t_gui_buff
int allow_hidden_buffer);
extern struct t_gui_buffer *gui_buffer_get_previous_active_buffer (struct t_gui_buffer *buffer,
int allow_hidden_buffer);
extern void gui_buffer_switch_active_buffer (struct t_gui_buffer *buffer);
extern void gui_buffer_switch_active_buffer_previous (struct t_gui_buffer *buffer);
extern void gui_buffer_zoom (struct t_gui_buffer *buffer);
extern void gui_buffer_renumber (int number1, int number2, int start_number);
extern void gui_buffer_move_to_number (struct t_gui_buffer *buffer, int number);
extern void gui_buffer_swap (int number1, int number2);
-115
View File
@@ -1484,121 +1484,6 @@ gui_input_grab_mouse (struct t_gui_buffer *buffer, int area)
gui_mouse_grab_init (area);
}
/*
* Switches active buffer to next buffer (when many buffers are merged) (default
* key: ctrl-X).
*/
void
gui_input_switch_active_buffer (struct t_gui_buffer *buffer)
{
struct t_gui_buffer *ptr_buffer;
struct t_gui_window *window;
ptr_buffer = gui_buffer_get_next_active_buffer (buffer, 0);
if (ptr_buffer)
{
gui_buffer_set_active_buffer (ptr_buffer);
window = gui_window_search_with_buffer (buffer);
if (window)
gui_window_switch_to_buffer (window, ptr_buffer, 1);
}
}
/*
* Switches active buffer to previous buffer (when many buffers are merged).
*/
void
gui_input_switch_active_buffer_previous (struct t_gui_buffer *buffer)
{
struct t_gui_buffer *ptr_buffer;
struct t_gui_window *window;
ptr_buffer = gui_buffer_get_previous_active_buffer (buffer, 0);
if (ptr_buffer)
{
gui_buffer_set_active_buffer (ptr_buffer);
window = gui_window_search_with_buffer (buffer);
if (window)
gui_window_switch_to_buffer (window, ptr_buffer, 1);
}
}
/*
* Zooms on current active merged buffer, or display all merged buffers if zoom
* was active (default key: alt-x).
*/
void
gui_input_zoom_merged_buffer (struct t_gui_buffer *buffer)
{
struct t_gui_window *ptr_window;
struct t_gui_buffer *ptr_buffer;
int buffer_was_zoomed;
/* do nothing if current buffer is not merged with another buffer */
if (gui_buffer_count_merged_buffers (buffer->number) < 2)
return;
buffer_was_zoomed = (buffer->active == 2);
/* reset scroll in all windows displaying this buffer number */
for (ptr_window = gui_windows; ptr_window;
ptr_window = ptr_window->next_window)
{
if ((ptr_window->buffer->number == buffer->number)
&& ptr_window->scroll && ptr_window->scroll->start_line)
{
gui_window_scroll_bottom (ptr_window);
}
}
/* first make buffer active if it is not */
if (!buffer->active)
{
gui_buffer_set_active_buffer (buffer);
ptr_window = gui_window_search_with_buffer (buffer);
if (ptr_window)
gui_window_switch_to_buffer (ptr_window, buffer, 1);
}
/*
* toggle active flag between 1 and 2
* (1 = active with other merged buffers displayed, 2 = the only active)
*/
if (buffer->active == 1)
{
buffer->active = 2;
buffer->lines = buffer->own_lines;
}
else if (buffer->active == 2)
{
buffer->active = 1;
buffer->lines = buffer->mixed_lines;
}
/* set "zoomed" in merged buffers */
for (ptr_buffer = gui_buffers; ptr_buffer;
ptr_buffer = ptr_buffer->next_buffer)
{
if (ptr_buffer->number > buffer->number)
break;
if (ptr_buffer->number == buffer->number)
{
ptr_buffer->zoomed = (buffer->active == 2) ? 1 : 0;
}
}
gui_buffer_compute_num_displayed ();
gui_buffer_ask_chat_refresh (buffer, 2);
(void) hook_signal_send ((buffer_was_zoomed) ?
"buffer_unzoomed" : "buffer_zoomed",
WEECHAT_HOOK_SIGNAL_POINTER, buffer);
}
/*
* Inserts a string in command line.
*/
-3
View File
@@ -75,9 +75,6 @@ extern void gui_input_history_global_next (struct t_gui_buffer *buffer);
extern void gui_input_grab_key (struct t_gui_buffer *buffer, int command,
const char *delay);
extern void gui_input_grab_mouse (struct t_gui_buffer *buffer, int area);
extern void gui_input_switch_active_buffer (struct t_gui_buffer *buffer);
extern void gui_input_switch_active_buffer_previous (struct t_gui_buffer *buffer);
extern void gui_input_zoom_merged_buffer (struct t_gui_buffer *buffer);
extern void gui_input_insert (struct t_gui_buffer *buffer, const char *args);
extern void gui_input_undo (struct t_gui_buffer *buffer);
extern void gui_input_redo (struct t_gui_buffer *buffer);