[Geany-devel] Python plugin API
Jonas Haag
jonas at xxxxx
Fri Jun 12 11:06:55 UTC 2009
Am 11.06.2009 16:00, schrieb Mars:
> BTW, there is one big problem with the Geany plugin API as of 0.16:
> Plugins (like Python bindings) can't register other plugins - put
> another way, a there is no plugin registration API published via the
> plugin API. With the geany plugin registration API being wrapped in
> Python, I could easily write pure-Python Geany plugins. Lacking that,
> I had to come up with my own Python plugin registration.
+1
I think additionally to the plugin API there should be some interface
API which has more privileges (like registering and running other plugins).
As this would be probably difficult to implement I propose to add the
possibillity to register a plugin as an "interface" (e.g. to another
language). Having a Python interface, users could put their *.py-files
in the geany plugins directory and geany passes them to that Python
interface. There would be several advantages using such system:
* Plugins offering APIs to other languages wouldn't have to implement
a registration API (or, at least, not the whole stuff)
* Geany could register the plugins itself (I dunno wether it's
important for the plugin system which plugin did what)
I thought about something like this: If a *.py (or *.whatever) file in
the plugin directories is found, geany passes that file (path) to the
according interface plugin, which returns the meta information (like
required API version and stuff) to geany. Whenever geany would call a
function of that Python plugin, it passes all the information to the
interface plugin which acts as a man-in-the-middle (calls the function
in the Python plugin and returns the return-values to geany, if there
are any). The same way, Python plugin calls geany API functions: Passes
the information to the interface handler, the interface handler acts as
man-in-the-middle.
I'm aware of the fact that this would take some effort to implement but
I cannot see any other way to do registration of 3rd-party-language
plugins right now.
Regards,
Jonas
More information about the Devel
mailing list