On Sun, 21 Feb 2010 15:03:01 +0100 Enrico Tröger enrico.troeger@uvena.de wrote:
As I see it there area couple of ways of implementing your suggestion:
- a basic build system in the core and the advanced one in the
plugin, or 2. the two plugins approach
- has the advantage that the basic system is always available even if
Geany is started without plugins, but then the build-in system needs to be able to be completely disabled when the plugin takes over 2. makes the takeover problem simpler,
But both require that everything that the build system needs to do is available through the plugin API, and thats likely to be a big API, much of which no one else will want to use. This includes interface to the preferences and filetype files for saving and restoring settings.
Now as I understand it, what we are trying to achieve is:
- By default Geany provides a set of capabilities roughly equivalent
to 0.18 2. By default Geany provides an easy configuration capability that hides complex capability 3. An alternative that allows "configure everything" control
Now it seems to me that it doesn't matter how complex the internal operation of the build system is, so long as a default user sees functionality as at
- and 2. does not expose that complexity.
So I propose that a build-system with full capability but only a simple configuration dialog be in core, and the full configure dialog be in a plugin.
This makes the plugin interface much narrower, mostly the capability to set the configuration. That interface would be the interface to the "operation" object I defined in the design spec (I'll get you to read it yet ;-)
In the meantime, I realised my idea wasn't the best I ever had...:) But I do like your proposal to have it all in the core except the "heavy" configuration dialog which could be in a plugin.
As long as it works in the end, I'm all for it.
Just go to get it, I don't want to hinder new stuff any longer.
Personally I'm not sure that tying the two implementations together is a good idea. I haven't really studied Lex's build.c implementation but I don't want to have to expose all of it to the plugin API. This will straightjacket any changes we want to make on the core build system.
One option would be for a plugin to completely replace the build system by hiding the build menu and overriding the build keybindings.
Regards, Nick