[…] though I do think it's weird to have the closure stuff squished in the middle of the arguments list rather than more typical GLib-style _full() functions where the function and data are at the end of the arguments list.

How so? It's at the end, isn't it?:

GeanyKeyBinding *keybindings_set_item_full(GeanyKeyGroup *group, gsize key_id,
        guint key, GdkModifierType mod, const gchar *kf_name, const gchar *label,
        GtkWidget *menu_item, GeanyKeyBindingFunc func, gpointer pdata,
        GDestroyNotify destroy_notify);

GeanyKeyGroup *plugin_set_key_group_full(GeanyPlugin *plugin,
        const gchar *section_name, gsize count,
        GeanyKeyGroupFunc cb, gpointer pdata, GDestroyNotify destroy_notify);


Reply to this email directly or view it on GitHub.