[...]
- interface wrapper functions should be used to hide the
implementation and side effects.
What do you mean by "interface wrapper functions"?
In a situation where Geany does something by calling a few local static functions or if it calls a few functions from different modules, don't put the static functions in the API or expect the plugins to call groups of functions, instead make a wrapper function that calls the correct sequence so the exact implementation is hidden and it only needs to be changed in one place.
IMO Geany should use the exact same API than plugins to do one thing.
Of course Geany should call the wrapper too. Basically its ok for Geany to do implementation stuff directly, but only if its in one place. As soon as it is in the API it isn't one place any more.
This would avoid having a broken getter in the API (or whatever) that we don't notice just because the core doesn't use it.
With the past non-proactive adding of things to the API there should not be too much in that category, but over time it may accumulate as we add more but don't remove stuff so we don't break the ABI.
Cheers Lex
PS probably be a week or so before I get time to put stuff in the wiki