diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/command/command.c | 11 | ||||
-rw-r--r-- | src/command/commands.c | 17 |
2 files changed, 24 insertions, 4 deletions
diff --git a/src/command/command.c b/src/command/command.c index 375d1b26..76890725 100644 --- a/src/command/command.c +++ b/src/command/command.c @@ -561,14 +561,16 @@ static struct cmd_t command_defs[] = CMD_TAG_GROUPCHAT) CMD_SYN( "/subject set <subject>", + "/subject prepend <text>", "/subject append <text>", "/subject clear") CMD_DESC( - "Set, append to, or clear room subject.") + "Set, modify, or clear room subject.") CMD_ARGS( - { "set <subject>", "Set the room subject." }, - { "append <text>", "Append text to the current room subject, use double quotes if a preceeding space is needed." }, - { "clear", "Clear the room subject." }) + { "set <subject>", "Set the room subject." }, + { "prepend <text>", "Prepend text to the current room subject, use double quotes if a trailing space is needed." }, + { "append <text>", "Append text to the current room subject, use double quotes if a preceeding space is needed." }, + { "clear", "Clear the room subject." }) CMD_NOEXAMPLES }, @@ -2137,6 +2139,7 @@ cmd_init(void) subject_ac = autocomplete_new(); autocomplete_add(subject_ac, "set"); + autocomplete_add(subject_ac, "prepend"); autocomplete_add(subject_ac, "append"); autocomplete_add(subject_ac, "clear"); diff --git a/src/command/commands.c b/src/command/commands.c index f17fec42..c8a516cd 100644 --- a/src/command/commands.c +++ b/src/command/commands.c @@ -2851,6 +2851,23 @@ cmd_subject(ProfWin *window, const char *const command, gchar **args) return TRUE; } + if (g_strcmp0(args[0], "prepend") == 0) { + if (args[1]) { + char *old_subject = muc_subject(mucwin->roomjid); + if (old_subject) { + GString *new_subject = g_string_new(args[1]); + g_string_append(new_subject, old_subject); + message_send_groupchat_subject(mucwin->roomjid, new_subject->str); + g_string_free(new_subject, TRUE); + } else { + win_vprint(window, '!', 0, NULL, NO_EOL, THEME_ROOMINFO, "", "Room does not have a subject, use /subject set <subject>"); + } + } else { + cons_bad_cmd_usage(command); + } + return TRUE; + } + if (g_strcmp0(args[0], "append") == 0) { if (args[1]) { char *old_subject = muc_subject(mucwin->roomjid); |