1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-27 21:36:37 +02:00

script: fix buffer used by command /script list -i|-il|-o|-ol

The command is now executed on the buffer where it is received instead of the
current buffer (in most cases this is the same buffer, but could be different
sometimes).
This commit is contained in:
Sébastien Helleu
2023-06-18 10:37:12 +02:00
parent 6c8d6eef58
commit f811621611
4 changed files with 58 additions and 38 deletions
+44 -28
View File
@@ -100,15 +100,19 @@ script_action_run_list ()
*/
void
script_action_run_list_input (int send_to_buffer, int translated)
script_action_run_list_input (struct t_gui_buffer *buffer,
int send_to_buffer, int translated)
{
int i, length;
char hdata_name[128], **buf, str_pos[16];
char hdata_name[128], **output, str_pos[16];
struct t_hdata *hdata;
void *ptr_script;
buf = weechat_string_dyn_alloc (256);
if (!buf)
if (!buffer)
return;
output = weechat_string_dyn_alloc (256);
if (!output)
return;
for (i = 0; i < SCRIPT_NUM_LANGUAGES; i++)
@@ -119,27 +123,27 @@ script_action_run_list_input (int send_to_buffer, int translated)
ptr_script = weechat_hdata_get_list (hdata, "scripts");
while (ptr_script)
{
if (*buf[0])
if (*output[0])
{
weechat_string_dyn_concat (buf, ", ", -1);
weechat_string_dyn_concat (output, ", ", -1);
}
else
{
weechat_string_dyn_concat (
buf,
output,
(translated) ? _("Scripts loaded:") : "Scripts loaded:",
-1);
weechat_string_dyn_concat (buf, " ", -1);
weechat_string_dyn_concat (output, " ", -1);
}
weechat_string_dyn_concat (buf,
weechat_string_dyn_concat (output,
weechat_hdata_string (hdata,
ptr_script,
"name"),
-1);
weechat_string_dyn_concat (buf, ".", -1);
weechat_string_dyn_concat (buf, script_extension[i], -1);
weechat_string_dyn_concat (buf, " ", -1);
weechat_string_dyn_concat (buf,
weechat_string_dyn_concat (output, ".", -1);
weechat_string_dyn_concat (output, script_extension[i], -1);
weechat_string_dyn_concat (output, " ", -1);
weechat_string_dyn_concat (output,
weechat_hdata_string (hdata,
ptr_script,
"version"),
@@ -148,27 +152,27 @@ script_action_run_list_input (int send_to_buffer, int translated)
}
}
if (!*buf[0])
if (!*output[0])
{
weechat_string_dyn_concat (
buf,
output,
(translated) ? _("No scripts loaded") : "No scripts loaded",
-1);
}
if (send_to_buffer)
{
weechat_command (weechat_current_buffer (), *buf);
weechat_command (buffer, *output);
}
else
{
weechat_buffer_set (weechat_current_buffer (), "input", *buf);
length = weechat_utf8_strlen (*buf);
weechat_buffer_set (buffer, "input", *output);
length = weechat_utf8_strlen (*output);
snprintf (str_pos, sizeof (str_pos), "%d", length);
weechat_buffer_set (weechat_current_buffer (), "input_pos", str_pos);
weechat_buffer_set (buffer, "input_pos", str_pos);
}
weechat_string_dyn_free (buf, 1);
weechat_string_dyn_free (output, 1);
}
/*
@@ -1200,7 +1204,7 @@ script_action_run_showdiff ()
*/
void
script_action_add (const char *action)
script_action_add (struct t_gui_buffer *buffer, const char *action)
{
if (!action)
return;
@@ -1215,6 +1219,9 @@ script_action_add (const char *action)
if (*script_actions[0])
weechat_string_dyn_concat (script_actions, "\n", -1);
weechat_string_dyn_concat (
script_actions, weechat_buffer_get_string (buffer, "full_name"), -1);
weechat_string_dyn_concat (script_actions, "\r", -1);
weechat_string_dyn_concat (script_actions, action, -1);
}
@@ -1243,6 +1250,7 @@ script_action_run_all ()
char **actions, **argv, **argv_eol, *ptr_action;
int num_actions, argc, i, j, quiet, script_found;
struct t_script_repo *ptr_script;
struct t_gui_buffer *ptr_buffer;
if (!script_actions || !script_actions[0])
return 0;
@@ -1259,7 +1267,14 @@ script_action_run_all ()
for (i = 0; i < num_actions; i++)
{
quiet = 0;
ptr_action = actions[i];
ptr_action = strchr (actions[i], '\r');
if (!ptr_action)
continue;
ptr_action[0] = '\0';
ptr_action++;
ptr_buffer = weechat_buffer_search ("==", actions[i]);
if (!ptr_buffer)
ptr_buffer = weechat_current_buffer ();
if (ptr_action[0] == '-')
{
/*
@@ -1318,13 +1333,13 @@ script_action_run_all ()
if (argc > 1)
{
if (weechat_strcmp (argv[1], "-i") == 0)
script_action_run_list_input (0, 0);
script_action_run_list_input (ptr_buffer, 0, 0);
else if (weechat_strcmp (argv[1], "-il") == 0)
script_action_run_list_input (0, 1);
script_action_run_list_input (ptr_buffer, 0, 1);
else if (weechat_strcmp (argv[1], "-o") == 0)
script_action_run_list_input (1, 0);
script_action_run_list_input (ptr_buffer, 1, 0);
else if (weechat_strcmp (argv[1], "-ol") == 0)
script_action_run_list_input (1, 1);
script_action_run_list_input (ptr_buffer, 1, 1);
else
script_action_run_list ();
}
@@ -1527,7 +1542,8 @@ script_action_run_all ()
*/
void
script_action_schedule (const char *action,
script_action_schedule (struct t_gui_buffer *buffer,
const char *action,
int need_repository, int error_repository,
int quiet)
{
@@ -1535,7 +1551,7 @@ script_action_schedule (const char *action,
if (!weechat_mkdir_home ("${weechat_cache_dir}/" SCRIPT_PLUGIN_NAME, 0755))
return;
script_action_add (action);
script_action_add (buffer, action);
if (need_repository)
{
+5 -2
View File
@@ -23,8 +23,11 @@
extern char **script_actions;
extern int script_action_run_all ();
extern void script_action_schedule (const char *action, int need_repository,
int error_repository, int quiet);
extern void script_action_schedule (struct t_gui_buffer *buffer,
const char *action,
int need_repository,
int error_repository,
int quiet);
extern void script_action_end ();
#endif /* WEECHAT_PLUGIN_SCRIPT_ACTION_H */
+8 -8
View File
@@ -72,7 +72,7 @@ script_command_action (struct t_gui_buffer *buffer,
(quiet) ? "-q " : "",
action,
ptr_script->name_with_extension);
script_action_schedule (str_action, need_repository,
script_action_schedule (buffer, str_action, need_repository,
error_repository, quiet);
}
}
@@ -83,7 +83,7 @@ script_command_action (struct t_gui_buffer *buffer,
(quiet) ? "-q " : "",
action,
arguments);
script_action_schedule (str_action, need_repository,
script_action_schedule (buffer, str_action, need_repository,
error_repository, quiet);
}
}
@@ -98,7 +98,7 @@ script_command_action (struct t_gui_buffer *buffer,
snprintf (str_action, sizeof (str_action),
"-q %s",
action);
script_action_schedule (str_action, need_repository,
script_action_schedule (buffer, str_action, need_repository,
error_repository, 1);
}
else
@@ -113,7 +113,7 @@ script_command_action (struct t_gui_buffer *buffer,
"-q %s %s",
action,
ptr_script->name_with_extension);
script_action_schedule (str_action, need_repository,
script_action_schedule (buffer, str_action, need_repository,
error_repository, 1);
}
}
@@ -140,7 +140,7 @@ script_command_script (const void *pointer, void *data,
if (argc == 1)
{
script_action_schedule ("buffer", 1, 1, 0);
script_action_schedule (buffer, "buffer", 1, 1, 0);
return WEECHAT_RC_OK;
}
@@ -164,13 +164,13 @@ script_command_script (const void *pointer, void *data,
script_repo_filter_scripts ((argc > 2) ? argv_eol[2] : NULL);
else
script_repo_set_filter ((argc > 2) ? argv_eol[2] : NULL);
script_action_schedule ("buffer", 1, 1, 0);
script_action_schedule (buffer, "buffer", 1, 1, 0);
return WEECHAT_RC_OK;
}
if (weechat_strcmp (argv[1], "list") == 0)
{
script_action_schedule (argv_eol[1], 1, 0, 0);
script_action_schedule (buffer, argv_eol[1], 1, 0, 0);
return WEECHAT_RC_OK;
}
@@ -206,7 +206,7 @@ script_command_script (const void *pointer, void *data,
if (weechat_strcmp (argv[1], "upgrade") == 0)
{
script_action_schedule ("upgrade", 1, 1, 0);
script_action_schedule (buffer, "upgrade", 1, 1, 0);
return WEECHAT_RC_OK;
}