diff options
author | Michael Vetter <jubalh@iodoru.org> | 2020-05-14 18:09:54 +0200 |
---|---|---|
committer | Michael Vetter <jubalh@iodoru.org> | 2020-05-14 18:09:54 +0200 |
commit | 9243655a223092f8cf74986c4d49542b8b1bbda1 (patch) | |
tree | 710a44a359a174adb3c1515910f0a88496e93735 /src/command/cmd_funcs.c | |
parent | 5cf6ee1bc6d0b99b01891bc455a657bf022a72b0 (diff) | |
download | profani-tty-9243655a223092f8cf74986c4d49542b8b1bbda1.tar.gz |
Have proper autocompletion for /software in chat window
In console autocomplete from roster. In muc autocomplete from occupants lits. In 1:1 regular chat autocomplete from active resources of currently selected user (new). Also give a hint (/help resource) how to set the resource should a user choose that way. Fix https://github.com/profanity-im/profanity/issues/1337
Diffstat (limited to 'src/command/cmd_funcs.c')
-rw-r--r-- | src/command/cmd_funcs.c | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c index e5dc987a..d29244a9 100644 --- a/src/command/cmd_funcs.c +++ b/src/command/cmd_funcs.c @@ -3427,6 +3427,22 @@ cmd_caps(ProfWin *window, const char *const command, gchar **args) return TRUE; } +static void +_send_software_version_iq_to_fulljid(char *request) +{ + Jid *myJid = jid_create(connection_get_fulljid()); + Jid *jid = jid_create(request); + + if (jid == NULL || jid->fulljid == NULL) { + cons_show("You must provide a full jid to the /software command."); + } else if (g_strcmp0(jid->barejid, myJid->barejid) == 0) { + cons_show("Cannot request software version for yourself."); + } else { + iq_send_software_version(jid->fulljid); + } + jid_destroy(myJid); + jid_destroy(jid); +} gboolean cmd_software(ProfWin *window, const char *const command, gchar **args) @@ -3458,7 +3474,8 @@ cmd_software(ProfWin *window, const char *const command, gchar **args) break; case WIN_CHAT: if (args[0]) { - cons_show("No parameter needed to /software when in chat."); + _send_software_version_iq_to_fulljid(args[0]); + break; } else { ProfChatWin *chatwin = (ProfChatWin*)window; assert(chatwin->memcheck == PROFCHATWIN_MEMCHECK); @@ -3477,24 +3494,13 @@ cmd_software(ProfWin *window, const char *const command, gchar **args) iq_send_software_version(fulljid->str); g_string_free(fulljid, TRUE); } else { - win_println(window, THEME_DEFAULT, "-", "Unknown resource for /software command."); + win_println(window, THEME_DEFAULT, "-", "Unknown resource for /software command. See /help resource."); } + break; } - break; case WIN_CONSOLE: if (args[0]) { - Jid *myJid = jid_create(connection_get_fulljid()); - Jid *jid = jid_create(args[0]); - - if (jid == NULL || jid->fulljid == NULL) { - cons_show("You must provide a full jid to the /software command."); - } else if (g_strcmp0(jid->barejid, myJid->barejid) == 0) { - cons_show("Cannot request software version for yourself."); - } else { - iq_send_software_version(jid->fulljid); - } - jid_destroy(myJid); - jid_destroy(jid); + _send_software_version_iq_to_fulljid(args[0]); } else { cons_show("You must provide a jid to the /software command."); } |