mirror of
https://github.com/weechat/weechat.git
synced 2026-06-26 04:46:37 +02:00
rmodifier: add option "missing" for command /rmodifier
This commit is contained in:
@@ -94,17 +94,17 @@ rmodifier_command_cb (void *data, struct t_gui_buffer *buffer, int argc,
|
||||
(void) data;
|
||||
(void) buffer;
|
||||
|
||||
/* list all rmodifiers */
|
||||
if ((argc == 1)
|
||||
|| ((argc == 2) && (weechat_strcasecmp (argv[1], "list") == 0)))
|
||||
{
|
||||
/* list all rmodifiers */
|
||||
rmodifier_command_list (_("List of rmodifiers:"));
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
|
||||
/* list default rmodifiers */
|
||||
if (weechat_strcasecmp (argv[1], "listdefault") == 0)
|
||||
{
|
||||
/* list default rmodifiers */
|
||||
weechat_printf (NULL, "");
|
||||
weechat_printf (NULL, _("Default rmodifiers:"));
|
||||
for (i = 0; rmodifier_config_default_list[i][0]; i++)
|
||||
@@ -117,9 +117,9 @@ rmodifier_command_cb (void *data, struct t_gui_buffer *buffer, int argc,
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
|
||||
/* add a rmodifier */
|
||||
if (weechat_strcasecmp (argv[1], "add") == 0)
|
||||
{
|
||||
/* add a rmodifier */
|
||||
if (argc < 6)
|
||||
{
|
||||
weechat_printf (NULL,
|
||||
@@ -154,9 +154,9 @@ rmodifier_command_cb (void *data, struct t_gui_buffer *buffer, int argc,
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
|
||||
/* delete a rmodifier */
|
||||
if (weechat_strcasecmp (argv[1], "del") == 0)
|
||||
{
|
||||
/* add a rmodifier */
|
||||
if (argc < 3)
|
||||
{
|
||||
weechat_printf (NULL,
|
||||
@@ -220,6 +220,16 @@ rmodifier_command_cb (void *data, struct t_gui_buffer *buffer, int argc,
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
|
||||
/* add missing rmodifiers */
|
||||
if (weechat_strcasecmp (argv[1], "missing") == 0)
|
||||
{
|
||||
count = rmodifier_add_missing ();
|
||||
weechat_printf (NULL,
|
||||
NG_("%d rmodifier added", "%d rmodifiers added", count),
|
||||
count);
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
|
||||
@@ -235,6 +245,7 @@ rmodifier_command_init ()
|
||||
N_("list|listdefault"
|
||||
" || add <name> <modifiers> <groups> <regex>"
|
||||
" || del <name>|-all [<name>...]"
|
||||
" || missing"
|
||||
" || default -yes"),
|
||||
N_(" list: list all rmodifiers\n"
|
||||
"listdefault: list default rmodifiers\n"
|
||||
@@ -249,6 +260,7 @@ rmodifier_command_init ()
|
||||
"can start by \"(?-i)\" to become case sensitive)\n"
|
||||
" del: delete a rmodifier\n"
|
||||
" -all: delete all rmodifiers\n"
|
||||
" missing: add missing rmodifiers\n"
|
||||
" default: restore default rmodifiers\n\n"
|
||||
"Examples:\n"
|
||||
" hide everything typed after a command /password:\n"
|
||||
@@ -261,6 +273,7 @@ rmodifier_command_init ()
|
||||
" || listdefault"
|
||||
" || add %(rmodifier)"
|
||||
" || del %(rmodifier)|-all %(rmodifier)|%*"
|
||||
" || missing"
|
||||
" || default",
|
||||
&rmodifier_command_cb, NULL);
|
||||
}
|
||||
|
||||
@@ -385,6 +385,40 @@ rmodifier_create_default ()
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Adds missing rmodifiers.
|
||||
*
|
||||
* Returns the number of rmodifiers added.
|
||||
*/
|
||||
|
||||
int
|
||||
rmodifier_add_missing ()
|
||||
{
|
||||
int i, count;
|
||||
|
||||
count = 0;
|
||||
|
||||
for (i = 0; rmodifier_config_default_list[i][0]; i++)
|
||||
{
|
||||
if (!rmodifier_search (rmodifier_config_default_list[i][0]))
|
||||
{
|
||||
if (rmodifier_new (rmodifier_config_default_list[i][0],
|
||||
rmodifier_config_default_list[i][1],
|
||||
rmodifier_config_default_list[i][2],
|
||||
rmodifier_config_default_list[i][3]))
|
||||
{
|
||||
rmodifier_config_modifier_new_option (rmodifier_config_default_list[i][0],
|
||||
rmodifier_config_default_list[i][1],
|
||||
rmodifier_config_default_list[i][2],
|
||||
rmodifier_config_default_list[i][3]);
|
||||
count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
/*
|
||||
* Frees a rmodifier and removes it from list.
|
||||
*/
|
||||
|
||||
@@ -53,6 +53,7 @@ struct t_rmodifier *rmodifier_new (const char *name,
|
||||
extern struct t_rmodifier *rmodifier_new_with_string (const char *name,
|
||||
const char *value);
|
||||
extern void rmodifier_create_default ();
|
||||
extern int rmodifier_add_missing ();
|
||||
extern void rmodifier_free (struct t_rmodifier *rmodifier);
|
||||
extern void rmodifier_free_all ();
|
||||
extern int rmodifier_add_to_infolist (struct t_infolist *infolist,
|
||||
|
||||
Reference in New Issue
Block a user