about summary refs log tree commit diff stats
path: root/src/command/cmd_funcs.c
diff options
context:
space:
mode:
authorMichael Vetter <jubalh@iodoru.org>2020-05-14 18:09:54 +0200
committerMichael Vetter <jubalh@iodoru.org>2020-05-14 18:09:54 +0200
commit9243655a223092f8cf74986c4d49542b8b1bbda1 (patch)
tree710a44a359a174adb3c1515910f0a88496e93735 /src/command/cmd_funcs.c
parent5cf6ee1bc6d0b99b01891bc455a657bf022a72b0 (diff)
downloadprofani-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.c36
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.");
             }