1
0
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:
Sebastien Helleu
2013-08-05 20:37:59 +02:00
parent 227f8ac604
commit c4773e63d8
21 changed files with 233 additions and 77 deletions
+17 -4
View File
@@ -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);
}
+34
View File
@@ -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.
*/
+1
View File
@@ -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,