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

core: display an error message in case of invalid parameters with command /cursor

This commit is contained in:
Sébastien Helleu
2025-11-10 07:40:14 +01:00
parent 1094e70de2
commit c0116febe5
3 changed files with 58 additions and 51 deletions
+49 -48
View File
@@ -1958,70 +1958,71 @@ COMMAND_CALLBACK(cursor)
if (string_strcmp (argv[1], "go") == 0)
{
if (argc > 2)
COMMAND_MIN_ARGS(3, argv[1]);
pos = strchr (argv[2], ',');
if (pos)
{
pos = strchr (argv[2], ',');
if (pos)
str_x = string_strndup (argv[2], pos - argv[2]);
pos++;
if (str_x)
{
str_x = string_strndup (argv[2], pos - argv[2]);
pos++;
if (str_x)
error = NULL;
x = (int) strtol (str_x, &error, 10);
if (error && !error[0])
{
error = NULL;
x = (int) strtol (str_x, &error, 10);
y = (int) strtol (pos, &error, 10);
if (error && !error[0])
{
error = NULL;
y = (int) strtol (pos, &error, 10);
if (error && !error[0])
{
gui_cursor_move_xy (x, y);
}
gui_cursor_move_xy (x, y);
free (str_x);
return WEECHAT_RC_OK;
}
free (str_x);
}
}
else
{
gui_cursor_move_area (argv[2],
(argc > 3) ? argv_eol[3] : NULL);
free (str_x);
}
}
return WEECHAT_RC_OK;
else
{
if (gui_cursor_move_area (argv[2],
(argc > 3) ? argv_eol[3] : NULL))
return WEECHAT_RC_OK;
}
COMMAND_ERROR;
}
if (string_strcmp (argv[1], "move") == 0)
{
if (argc > 2)
COMMAND_MIN_ARGS(3, argv[1]);
if (string_strcmp (argv[2], "up") == 0)
gui_cursor_move_add_xy (0, -1);
else if (string_strcmp (argv[2], "down") == 0)
gui_cursor_move_add_xy (0, 1);
else if (string_strcmp (argv[2], "left") == 0)
gui_cursor_move_add_xy (-1, 0);
else if (string_strcmp (argv[2], "right") == 0)
gui_cursor_move_add_xy (1, 0);
else if (string_strcmp (argv[2], "area_up") == 0)
gui_cursor_move_area_add_xy (0, -1);
else if (string_strcmp (argv[2], "area_down") == 0)
gui_cursor_move_area_add_xy (0, 1);
else if (string_strcmp (argv[2], "area_left") == 0)
gui_cursor_move_area_add_xy (-1, 0);
else if (string_strcmp (argv[2], "area_right") == 0)
gui_cursor_move_area_add_xy (1, 0);
else if ((string_strcmp (argv[2], "top_left") == 0)
|| (string_strcmp (argv[2], "top_right") == 0)
|| (string_strcmp (argv[2], "bottom_left") == 0)
|| (string_strcmp (argv[2], "bottom_right") == 0)
|| (string_strcmp (argv[2], "edge_top") == 0)
|| (string_strcmp (argv[2], "edge_bottom") == 0)
|| (string_strcmp (argv[2], "edge_left") == 0)
|| (string_strcmp (argv[2], "edge_right") == 0))
{
if (string_strcmp (argv[2], "up") == 0)
gui_cursor_move_add_xy (0, -1);
else if (string_strcmp (argv[2], "down") == 0)
gui_cursor_move_add_xy (0, 1);
else if (string_strcmp (argv[2], "left") == 0)
gui_cursor_move_add_xy (-1, 0);
else if (string_strcmp (argv[2], "right") == 0)
gui_cursor_move_add_xy (1, 0);
else if (string_strcmp (argv[2], "area_up") == 0)
gui_cursor_move_area_add_xy (0, -1);
else if (string_strcmp (argv[2], "area_down") == 0)
gui_cursor_move_area_add_xy (0, 1);
else if (string_strcmp (argv[2], "area_left") == 0)
gui_cursor_move_area_add_xy (-1, 0);
else if (string_strcmp (argv[2], "area_right") == 0)
gui_cursor_move_area_add_xy (1, 0);
else if ((string_strcmp (argv[2], "top_left") == 0)
|| (string_strcmp (argv[2], "top_right") == 0)
|| (string_strcmp (argv[2], "bottom_left") == 0)
|| (string_strcmp (argv[2], "bottom_right") == 0)
|| (string_strcmp (argv[2], "edge_top") == 0)
|| (string_strcmp (argv[2], "edge_bottom") == 0)
|| (string_strcmp (argv[2], "edge_left") == 0)
|| (string_strcmp (argv[2], "edge_right") == 0))
{
gui_cursor_move_position (argv[2]);
}
gui_cursor_move_position (argv[2]);
}
else
COMMAND_ERROR;
return WEECHAT_RC_OK;
}
+8 -2
View File
@@ -388,9 +388,13 @@ gui_cursor_move_area_add_xy (int add_x, int add_y)
*
* Parameter "position" can be "top_left", "top_right", "bottom_left" or
* "bottom_right" (if NULL, top left is the default position).
*
* Returns:
* 1: OK
* 0: area not found
*/
void
int
gui_cursor_move_area (const char *area, const char *position)
{
int area_found, x1, y1, x2, y2, x, y;
@@ -443,7 +447,7 @@ gui_cursor_move_area (const char *area, const char *position)
}
if (!area_found)
return;
return 0;
if (!position || (strcmp (position, "top_left") == 0))
{
@@ -477,4 +481,6 @@ gui_cursor_move_area (const char *area, const char *position)
gui_cursor_y = y;
gui_cursor_display_debug_info ();
gui_window_move_cursor ();
return 1;
}
+1 -1
View File
@@ -38,6 +38,6 @@ extern void gui_cursor_move_xy (int x, int y);
extern void gui_cursor_move_add_xy (int add_x, int add_y);
extern void gui_cursor_move_position (const char *position);
extern void gui_cursor_move_area_add_xy (int add_x, int add_y);
extern void gui_cursor_move_area (const char *area, const char *position);
extern int gui_cursor_move_area (const char *area, const char *position);
#endif /* WEECHAT_GUI_CURSOR_H */