From 26dfa6b3287ed2e2fc461ccffcb2e30ad5e66b6b Mon Sep 17 00:00:00 2001 From: Tom Feist Date: Sat, 21 Aug 2010 18:55:22 +0100 Subject: added first attempt at a patch for creating bindings accessor. Currently lives in the Irssi::UI::bindings() to avoid poking makefiles too hard --- patches/add_bindings_list_interface.patch | 62 +++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 patches/add_bindings_list_interface.patch (limited to 'patches') diff --git a/patches/add_bindings_list_interface.patch b/patches/add_bindings_list_interface.patch new file mode 100644 index 0000000..8286444 --- /dev/null +++ b/patches/add_bindings_list_interface.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; ++ -- cgit v1.2.3