changeset 867:7f056c566569

Commands /alias & /bind list the key bindings and aliases
author Mikael Berthe <mikael@lilotux.net>
date Wed, 24 May 2006 23:30:31 +0200
parents b30df2ab457f
children cefdaeb42e67
files mcabber/src/commands.c mcabber/src/settings.c mcabber/src/settings.h
diffstat 3 files changed, 34 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/src/commands.c	Wed May 24 22:29:05 2006 +0200
+++ b/mcabber/src/commands.c	Wed May 24 23:30:31 2006 +0200
@@ -1300,6 +1300,11 @@
   g_free(option_utf8);
 }
 
+static void dump_alias(void *param, char *k, char *v)
+{
+  scr_LogPrint(LPRINT_NORMAL|LPRINT_NOTUTF8, "Alias %s = %s", k, v);
+}
+
 static void do_alias(char *arg)
 {
   guint assign;
@@ -1307,7 +1312,7 @@
 
   assign = parse_assigment(arg, &alias, &value);
   if (!alias) {
-    scr_LogPrint(LPRINT_NORMAL, "Alias what?");
+    settings_foreach(SETTINGS_TYPE_ALIAS, &dump_alias, NULL);
     return;
   }
   if (!assign) {
@@ -1346,6 +1351,11 @@
   }
 }
 
+static void dump_bind(void *param, char *k, char *v)
+{
+  scr_LogPrint(LPRINT_NORMAL, "Key %4s is bound to: %s", k, v);
+}
+
 static void do_bind(char *arg)
 {
   guint assign;
@@ -1353,7 +1363,7 @@
 
   assign = parse_assigment(arg, &keycode, &value);
   if (!keycode) {
-    scr_LogPrint(LPRINT_NORMAL, "Bind what keycode?");
+    settings_foreach(SETTINGS_TYPE_BINDING, &dump_bind, NULL);
     return;
   }
   if (!assign) {
--- a/mcabber/src/settings.c	Wed May 24 22:29:05 2006 +0200
+++ b/mcabber/src/settings.c	Wed May 24 23:30:31 2006 +0200
@@ -323,4 +323,23 @@
   return rstatus;
 }
 
+//  settings_foreach(type, pfunction, param)
+// Call pfunction(param, key, value) for each setting with requested type.
+void settings_foreach(guint type, void (*pfunc)(void *param, char *k, char *v),
+                      void *param)
+{
+  GSList **plist;
+  GSList *ptr;
+  T_setting *setting;
+
+  plist = get_list_ptr(type);
+
+  if (!*plist) return;
+
+  for (ptr = *plist ; ptr; ptr = g_slist_next(ptr)) {
+    setting = ptr->data;
+    pfunc(param, setting->name, setting->value);
+  }
+}
+
 /* vim: set expandtab cindent cinoptions=>2\:2(0:  For Vim users... */
--- a/mcabber/src/settings.h	Wed May 24 22:29:05 2006 +0200
+++ b/mcabber/src/settings.h	Wed May 24 23:30:31 2006 +0200
@@ -26,6 +26,9 @@
 const gchar *settings_get(guint type, const gchar *key);
 int     settings_get_int(guint type, const gchar *key);
 const gchar *settings_get_status_msg(enum imstatus status);
+void    settings_foreach(guint type,
+                         void (*pfunc)(void *param, char *k, char *v),
+                         void *param);
 
 const gchar *isbound(int key);