[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