aboutsummaryrefslogtreecommitdiffstats
path: root/patches
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--patches/add_bindings_interface-r5190.patch62
1 files changed, 62 insertions, 0 deletions
diff --git a/patches/add_bindings_interface-r5190.patch b/patches/add_bindings_interface-r5190.patch
new file mode 100644
index 0000000..8286444
--- /dev/null
+++ b/patches/add_bindings_interface-r5190.patch
@@ -0,0 +1,62 @@
+Index: ui/UI.xs
+===================================================================
+--- ui/UI.xs (revision 5190)
++++ ui/UI.xs (working copy)
+@@ -106,3 +106,47 @@
+ irssi_boot(UI__Formats);
+ irssi_boot(UI__Themes);
+ irssi_boot(UI__Window);
++
++HV*
++bindings()
++PREINIT:
++ GSList *info;
++ GSList *key;
++CODE:
++
++ RETVAL = newHV();
++ sv_2mortal((SV*)RETVAL);
++
++ /* loop stolen from keyboard.c#cmd_show_keys */
++
++ for (info = keyinfos; info != NULL; info = info->next) {
++ KEYINFO_REC *rec = info->data;
++ for (key = rec->keys; key != NULL; key = key->next) {
++ KEY_REC *key_rec = key->data;
++
++ /* return value { key => [ info, data ] } */
++ AV* value_array = newAV();
++
++ char *kinfo = key_rec->info->id;
++ char *kdata = key_rec->data;
++
++ /* store info, or undef if it's null */
++ av_push(value_array, kinfo != NULL
++ ? newSVpv(kinfo, strlen(kinfo))
++ : newSV(0));
++
++ /* ditto data */
++ av_push(value_array, kdata != NULL
++ ? newSVpv(kdata, strlen(kdata))
++ : newSV(0));
++
++ /* wedge it all into a reference so we can use it in the hash */
++ SV* value_ref = newRV_inc((SV*)value_array);
++
++ /* and finally, set up the hash */
++ hv_store(RETVAL, key_rec->key, strlen(key_rec->key),
++ value_ref, 0);
++ }
++ }
++OUTPUT:
++ RETVAL
+Index: ui/module.h
+===================================================================
+--- ui/module.h (revision 5190)
++++ ui/module.h (working copy)
+@@ -12,3 +12,5 @@
+ typedef TEXT_DEST_REC *Irssi__UI__TextDest;
+ typedef THEME_REC *Irssi__UI__Theme;
+ typedef KEYINFO_REC *Irssi__UI__Keyinfo;
++typedef KEY_REC *Irssi__UI__Key;
++