@techee commented on this pull request.
- void (*calltips_show)(GeanyDocument *doc, gboolean force);
+ + gboolean (*goto_provided)(GeanyDocument *doc); + void (*goto_perform)(GeanyDocument *doc, gint pos, gboolean definition); + + gboolean (*doc_symbols_provided)(GeanyDocument *doc); + GPtrArray *(*doc_symbols_get)(GeanyDocument *doc); + + gboolean (*symbol_highlight_provided)(GeanyDocument *doc); + + gchar _dummy[1024]; +} PluginExtension; + + +void plugin_extension_register(PluginExtension *extension); +void plugin_extension_unregister(PluginExtension *extension);
My point is that at _register() time...
Alright, it was the `_register()` function and I get the example you gave. But I don't understand what global state you mean in the PluginExtension case. When I convert all the `_provided()` and `_perform()` functions to go through the list of registered extensions, we still need to store this list "globally" in the file. And there won't be any other global variable, the "dummy" LSP will disappear.