That's just emitting. That doesn't show defining the signal (see geanyobject.c),
Ok, plus a call to g_signal_new(), and don't forget the enum member in geanyobject.h ;-D
or the modifications required to a given feature to be replacable or extensible through a signal (or other means).
Those changes will be the required irrespective of the mechanism for the extension.
I admit that defining an interfaces requires some boilerplate.
This is the part I have concerns about. Please show the indentation example I suggested.
I don't think signals will be right for most of this stuff, though I'm sure we'll add some
Like I said and @kugel- agreed, signals are bad at data passing, what we need is to be as simple to define and use as signals, but with better data transfer capabilities.
(hopefully not jamming more into the GeanyObject singleton god object).
GObjectification of Geany needs to be kept separate from this feature or again it will be bottlenecked on the few contributors with appropriate knowledge. Also I would doubt how incremental the changes to do that would be.
At worst we should use our own NiH virtual functions like we do for the plugin API now, IMO, though as @kugel- mentioned it does make it harder for binding to other languages, even for hand-written bindings like GeanyPy.
Yeah, Plugins already have to be able to call Geany functions and define callbacks, so I suggest we can safely assume that those capabilities are available in whatever plugin language. And agree that it would be a pain to manually add lots of functions to any plugin bindings, its all thats available until @kugel- releases his GIR based plugin language support.
Any thoughts on how to handle asynchronism between Geany and the plugin, for example if the indentation example I suggested above was slow in the plugin (eg querying a separate process) how would the interface operate so Geany is not blocked while the plugin is waiting?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.