[Geany-Devel] [FT-plugins] Proposed Design

Colomban Wendling lists.ban at xxxxx
Tue Aug 30 13:24:38 UTC 2016


Le 29/08/2016 à 02:47, Matthew Brush a écrit :
> […]
> 
> To give an idea, the registration function called by plugins might look
> something like this:
> 
>     gboolean ftplugin_register_provider(GeanyPlugin*,
>         GeanyFiletypeID, GeanyFiletypeFeature, GCallback, gpointer);

Maybe we could simply use GSignals?  Something like

> geany_object_signals[GCB_EDITOR_AUTOCOMPLETE] = g_signal_new (
> 	"autocomplete",
> 	G_OBJECT_CLASS_TYPE (g_object_class),
> 	G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION | G_SIGNAL_DETAILED /* filetype */,
> 	0, boolean_handled_accumulator, NULL, NULL,
> 	G_TYPE_BOOLEAN, 3,
> 	GEANY_TYPE_EDITOR, G_TYPE_INT /* position */, G_TYPE_STRING /* stem */);

Plugins wanting to provide completion connect to it:

> plugin_signal_connect(plugin, NULL, "autocomplete::C++", handler, ...)

and return TRUE if they handled it, FALSE otherwise.

In the handler, they would call something like:

> void editor_show_autocomplete(GeanyEditor *editor, gint pos, GPtrArray/*<TMTag>*/ items);

Additionally, an API like `editor_emit_autocomplete(GeanyEditor, gint
pos)` might be useful so a plugin can trigger autocompletion in more
situations.

Just a though, and seeing some of the questions raised further down
might suggest it's not flexible enough, but using the GSignal mechanism
we already have at hand seemed like at least a good idea to consider.

Colomban


More information about the Devel mailing list