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 prepend ", "/subject append ", "/subject clear") CMD_DESC( - "Set, append to, or clear room subject.") + "Set, modify, or clear room subject.") CMD_ARGS( - { "set ", "Set the room subject." }, - { "append ", "Append text to the current room subject, use double quotes if a preceeding space is needed." }, - { "clear", "Clear the room subject." }) + { "set ", "Set the room subject." }, + { "prepend ", "Prepend text to the current room subject, use double quotes if a trailing space is needed." }, + { "append ", "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 "); + } + } 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);