diff options
| author | Tom Feist <shabble@cowu.be> | 2010-08-21 17:55:22 +0000 | 
|---|---|---|
| committer | Tom Feist <shabble@cowu.be> | 2010-08-21 17:55:22 +0000 | 
| commit | 26dfa6b3287ed2e2fc461ccffcb2e30ad5e66b6b (patch) | |
| tree | bb73f220692f3cc9d5f00ec81db6dd6799c227e5 /patches | |
| parent | some stuff with colour popups (diff) | |
| download | irssi-scripts-26dfa6b3287ed2e2fc461ccffcb2e30ad5e66b6b.tar.gz irssi-scripts-26dfa6b3287ed2e2fc461ccffcb2e30ad5e66b6b.zip | |
added first attempt at a patch for creating bindings accessor. Currently lives in the Irssi::UI::bindings() to avoid poking makefiles too hard
Diffstat (limited to 'patches')
| -rw-r--r-- | patches/add_bindings_list_interface.patch | 62 | 
1 files changed, 62 insertions, 0 deletions
| 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; ++ | 
