Skip to content

Commit

Permalink
Merge pull request #1900 from H3rnand3zzz/enhancement/better-aliases
Browse files Browse the repository at this point in the history
Add params support for aliases
  • Loading branch information
jubalh authored Oct 20, 2023
2 parents 2ab9a30 + 9ecade9 commit 0664491
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 9 deletions.
5 changes: 3 additions & 2 deletions src/command/cmd_defs.c
Original file line number Diff line number Diff line change
Expand Up @@ -1643,12 +1643,13 @@ static const struct cmd_t command_defs[] = {
"Add, remove or list command aliases.")
CMD_ARGS(
{ "list", "List all aliases." },
{ "add <name> <value>", "Add a new command alias." },
{ "add <name> <value>", "Add a new command alias. The alias name must not contain any space characters." },
{ "remove <name>", "Remove a command alias." })
CMD_EXAMPLES(
"/alias add friends /who online friends",
"/alias add /q /quit",
"/alias add a /away \"I'm in a meeting.\"",
"/alias add urg /msg [email protected] [URGENT]",
"/alias add afk /status set away \"Away From Keyboard\"",
"/alias remove q",
"/alias list")
},
Expand Down
23 changes: 16 additions & 7 deletions src/command/cmd_funcs.c
Original file line number Diff line number Diff line change
Expand Up @@ -5091,6 +5091,10 @@ cmd_alias(ProfWin* window, const char* const command, gchar** args)
cons_bad_cmd_usage(command);
return TRUE;
} else {
if (strchr(alias, ' ')) {
cons_bad_cmd_usage(command);
return TRUE;
}
char* alias_p = alias;
GString* ac_value = g_string_new("");
if (alias[0] == '/') {
Expand Down Expand Up @@ -8565,15 +8569,20 @@ _cmd_execute_alias(ProfWin* window, const char* const inp, gboolean* ran)
}

auto_char char* alias = strdup(inp + 1);
auto_gchar gchar* value = prefs_get_alias(alias);
if (value) {
*ran = TRUE;
gboolean result = cmd_process_input(window, value);
return result;
auto_gcharv char** alias_parts = g_strsplit(alias, " ", 2);
auto_gchar gchar* value = prefs_get_alias(alias_parts[0]);

if (!value) {
*ran = FALSE;
return TRUE;
}

*ran = FALSE;
return TRUE;
char* params = alias_parts[1];
auto_gchar gchar* full_cmd = params ? g_strdup_printf("%s %s", value, params) : g_strdup(value);

*ran = TRUE;
gboolean result = cmd_process_input(window, full_cmd);
return result;
}

// helper function for status change commands
Expand Down

0 comments on commit 0664491

Please sign in to comment.