[Geany-devel] Adding a list of filetypes into devel documentation?
Matthew Brush
mbrush at xxxxx
Tue Aug 16 02:19:35 UTC 2011
On 08/15/2011 03:45 PM, Lex Trotman wrote:
>> If I get some time, I could try and do this. Is anybody opposed to putting
>> the API docs in reStructuredText files and generating the API docs using
>> Sphinx? I've been using this for the Python bindings and it's quite nice
>> and easy, and there's support for C domain as well.
>>
>
> I personally don't care, but being cautious, can you provide a C example?
Sure thing:
http://codebrainz.github.com/geany-sphinx/
It's just the "Plugin Howto" and one function from "dialogs.h", but it
conveys the idea I think.
>
> As we said in another thread there probably needs to be discussion on
> what is exposed of the Geany internal design, otherwise exposing it
> will freeze the design or cause plugin breakage (more than just
> re-compile) every time the Geany internals change.
+1
> Perhaps the call should go out to plugin developers, in general do
> they mind the disruption in return for more access to Geany
> capabilities?
>
Personally, I just want it to be clear what is exposed and what isn't.
Currently since you have to go digging in Geany's header files as well
as the API reference, the line gets blurred. For example these two
members of GeanyApp:
geany_data->app->datadir
geany_data->app->docdir
Why aren't these "part of the API"? They are certainly useful, so is it
just a matter of missing Doxygen comments, or is there a reason plugins
shouldn't know about these?
>>>
>>>> Another thing that would be really helpful is to add something to the
>>>> doxygen comments like '@since' and to put the plugin API number when
>>>> that function/member/struct became available.
>>>
>>> I'm not sure about. The most interesting number is die Geany main
>>> version as you want to build something up to recent Geany version.
>>> However, I do understand your suggestion with API number and IIRC we
>>> had something like this under discussion earlier.
>>>
>
> Providing this information will allow plugin developers to make their
> plugin adapt somewhat to which Geany it is being compiled against.
>
Yep, for example in GeanPy, I could avoid wrapping certain newer
functions since the last release using cpp macros, so that it could
still compile on older releases. Though I have no idea what API version
number relates to what Geany Relase version number.
> How would you show API and ABI info? IIRC the theory is that ABI
> changes don't require unchanged plugins to be recompiled (for example
> if a structure is extended) but API changes require at least
> recompile. But I am not sure it is working that way though?
>
I probably don't understand the topic enough, but to me, it would be
cool to say:
PLUGIN_VERSION_CHECK(0, 20, 42)
To mean: "This plugin will only work on the 42nd API change since the
0.20 release or later". And the Doxygen comments for an API function
could look like:
/**
* Does something to foo with bar.
* @since 0.20.42
*/
void baz(int foo, int bar);
Or at least something along these lines, so that it relates to release
version numbers of Geany. Would be great to then get a macro like
GLib/GTK has:
#if GEANY_VERSION_CHECK(0, 20, 42)
baz(1, 2);
#else
/* Do nothing on older APIs */
#endif
Just some thoughts, I have no idea if it's realistic.
Cheers,
Matthew Brush
More information about the Devel
mailing list