summaryrefslogtreecommitdiff
path: root/src/plugins/alias/alias-command.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/alias/alias-command.c')
-rw-r--r--src/plugins/alias/alias-command.c55
1 files changed, 51 insertions, 4 deletions
diff --git a/src/plugins/alias/alias-command.c b/src/plugins/alias/alias-command.c
index e8ac4783e..78d6b159c 100644
--- a/src/plugins/alias/alias-command.c
+++ b/src/plugins/alias/alias-command.c
@@ -80,8 +80,8 @@ alias_command_cb (const void *pointer, void *data,
struct t_gui_buffer *buffer, int argc,
char **argv, char **argv_eol)
{
- char *ptr_alias_name;
- struct t_alias *ptr_alias;
+ char *ptr_alias_name, *ptr_alias_name2;
+ struct t_alias *ptr_alias, *ptr_alias2;
struct t_config_option *ptr_option;
int alias_found, i;
@@ -235,6 +235,48 @@ alias_command_cb (const void *pointer, void *data,
return WEECHAT_RC_OK;
}
+ if (weechat_strcmp (argv[1], "rename") == 0)
+ {
+ WEECHAT_COMMAND_MIN_ARGS(4, "rename");
+
+ ptr_alias_name = (weechat_string_is_command_char (argv[2])) ?
+ (char *)weechat_utf8_next_char (argv[2]) : argv[2];
+ ptr_alias_name2 = (weechat_string_is_command_char (argv[3])) ?
+ (char *)weechat_utf8_next_char (argv[3]) : argv[3];
+
+ ptr_alias = alias_search (ptr_alias_name);
+ if (!ptr_alias)
+ {
+ weechat_printf (NULL,
+ _("%sAlias \"%s\" not found"),
+ weechat_prefix ("error"),
+ ptr_alias_name);
+ }
+ else
+ {
+ /* check if target name already exists */
+ ptr_alias2 = alias_search (ptr_alias_name2);
+ if (ptr_alias2)
+ {
+ weechat_printf (NULL, _("%sAlias \"%s\" already exists"),
+ weechat_prefix ("error"), ptr_alias_name2);
+ }
+ else
+ {
+ /* rename alias */
+ if (alias_rename (ptr_alias, ptr_alias_name2))
+ {
+ weechat_printf (
+ NULL,
+ _("Alias \"%s\" has been renamed to \"%s\""),
+ ptr_alias_name,
+ ptr_alias_name2);
+ }
+ }
+ }
+ return WEECHAT_RC_OK;
+ }
+
WEECHAT_COMMAND_ERROR;
}
@@ -251,13 +293,15 @@ alias_command_init ()
N_("list [<alias>]"
" || add <alias> [<command>[;<command>...]]"
" || addcompletion <completion> <alias> [<command>[;<command>...]]"
- " || del <alias> [<alias>...]"),
+ " || del <alias> [<alias>...]"
+ " || rename <alias> <new_alias>"),
/* xgettext:no-c-format */
N_(" list: list aliases (without argument, this list is "
"displayed)\n"
" add: add an alias\n"
"addcompletion: add an alias with a custom completion\n"
" del: delete an alias\n"
+ " rename: rename an alias\n"
" completion: completion for alias: by default completion is "
"done with target command\n"
" note: you can use %%command to use completion of "
@@ -283,12 +327,15 @@ alias_command_init ()
" alias /hello to say \"hello\" on all channels but not on "
"#weechat:\n"
" /alias add hello /allchan -exclude=#weechat hello\n"
+ " rename alias \"hello\" to \"Hello\":\n"
+ " /alias rename hello Hello\n"
" alias /forcejoin to send IRC command \"forcejoin\" with "
"completion of /sajoin:\n"
" /alias addcompletion %%sajoin forcejoin /quote forcejoin"),
"list %(alias)"
" || add %(alias) %(commands:/)|%(alias_value)"
" || addcompletion %- %(alias) %(commands:/)|%(alias_value)"
- " || del %(alias)|%*",
+ " || del %(alias)|%*"
+ " || rename %(alias) %(alias)",
&alias_command_cb, NULL, NULL);
}