--- a/mcabber/src/commands.c Tue Mar 14 12:22:35 2006 +0100
+++ b/mcabber/src/commands.c Tue Mar 14 12:43:23 2006 +0100
@@ -94,7 +94,7 @@
cmd_add("connect", "Connect to the server", 0, 0, &do_connect);
cmd_add("del", "Delete the current buddy", 0, 0, &do_del);
cmd_add("disconnect", "Disconnect from server", 0, 0, &do_disconnect);
- cmd_add("event", "Process an event", 0, COMPL_EVENTS, &do_event);
+ cmd_add("event", "Process an event", COMPL_EVENTSID, COMPL_EVENTS, &do_event);
cmd_add("group", "Change group display settings", COMPL_GROUP, 0, &do_group);
//cmd_add("help", "Display some help", COMPL_CMD, 0, NULL);
cmd_add("info", "Show basic info on current buddy", 0, 0, &do_info);
--- a/mcabber/src/compl.c Tue Mar 14 12:22:35 2006 +0100
+++ b/mcabber/src/compl.c Tue Mar 14 12:43:23 2006 +0100
@@ -33,6 +33,7 @@
#include "compl.h"
#include "roster.h"
+#include "events.h"
// Completion structure
typedef struct {
@@ -220,6 +221,9 @@
if (cat_flags == COMPL_RESOURCE) {
return buddy_getresources(NULL);
}
+ if (cat_flags == COMPL_EVENTSID) {
+ return evs_geteventscomplist();
+ }
return NULL;
}
--- a/mcabber/src/compl.h Tue Mar 14 12:22:35 2006 +0100
+++ b/mcabber/src/compl.h Tue Mar 14 12:43:23 2006 +0100
@@ -19,6 +19,7 @@
#define COMPL_AUTH (1<<14)
#define COMPL_REQUEST (1<<15)
#define COMPL_EVENTS (1<<16)
+#define COMPL_EVENTSID (1<<17)
void compl_add_category_word(guint, const char *command);
void compl_del_category_word(guint categ, const char *word);
--- a/mcabber/src/events.c Tue Mar 14 12:22:35 2006 +0100
+++ b/mcabber/src/events.c Tue Mar 14 12:43:23 2006 +0100
@@ -149,4 +149,22 @@
scr_LogPrint(LPRINT_LOGNORM, "End of events list.");
}
+// evs_geteventscomplist()
+// Return a singly-linked-list of events ids, for the completion system.
+// Note: the caller should free the list (and data) after use.
+GSList *evs_geteventscomplist(void)
+{
+ GSList *evidlist = NULL, *p;
+ eviqs *i;
+
+ for (p = evs_list; p; p = g_slist_next(p)) {
+ i = p->data;
+ evidlist = g_slist_append(evidlist, g_strdup(i->id));
+ }
+
+ // Last item is the "list" subcommand.
+ evidlist = g_slist_append(evidlist, g_strdup("list"));
+ return evidlist;
+}
+
/* vim: set expandtab cindent cinoptions=>2\:2(0: For Vim users... */
--- a/mcabber/src/events.h Tue Mar 14 12:22:35 2006 +0100
+++ b/mcabber/src/events.h Tue Mar 14 12:43:23 2006 +0100
@@ -27,11 +27,12 @@
char *desc;
} eviqs;
-eviqs *evs_new(guint8 type, time_t timeout);
-int evs_del(const char *evid);
-int evs_callback(const char *evid, guint evcontext);
-void evs_check_timeout(time_t now_t);
-void evs_display_list(void);
+eviqs *evs_new(guint8 type, time_t timeout);
+int evs_del(const char *evid);
+int evs_callback(const char *evid, guint evcontext);
+void evs_check_timeout(time_t now_t);
+void evs_display_list(void);
+GSList *evs_geteventscomplist(void);
#endif /* __EVENTS_H__ */