This is my second attempt on the LSP API as originally proposed by #3571.
I changed several things: 1. I renamed the struct `Lsp` to `PluginExtension` - there's nothing LSP-specific in this interface and it could be used by other plugins too (or possibly extended in the future if some plugins wanted to provide another functionality, we could extend this API). 2. I reduced the number of functions in the API to the absolute minimum and tried to do as much as possible in the plugin itself. 3. For this PR I removed the API related to the sidebar symbol tree - this one requires most changes on the Geany side and possibly more discussion and I don't want to block this PR by it. One possible alternative is also just keep using TM for the symbol tree, ignoring the symbols provided by LSP (the symbol tree is the least problematic part of TM IMO and could stay the way it is). I'll post the extra patches to allow sidebar symbols in a separate PR.
I also updated the combined Geany+LSP plugin at https://github.com/techee/geany-lsp to use the new API and also to work even when compiled against unmodified Geany. This is quite clumsy, however - to avoid conflicts between Geany's TM implementation and the plugin, it requires disabling TM by adding ``` [settings] tag_parser= ``` to the filetype config file of the affected filetypes, basically disabling all TM features. It also requires separate keybindings for e.g. tag goto or autocompletion instead of re-using the Geany ones. You can view, comment on, or merge this pull request online at:
https://github.com/geany/geany/pull/3849
-- Commit Summary --
* Add interface used by plugins to replace some Geany functionality with their own implementation * Add Geany code delegating autocompletion to plugins * Add Geany code delegating calltips to plugins * Add Geany code delegating symbol goto to plugins * Add Geany code delegating keyword highlighting to plugins
-- File Changes --
M meson.build (3) M plugins/geanyplugin.h (1) M src/Makefile.am (2) M src/document.c (4) M src/editor.c (34) M src/keybindings.c (13) A src/pluginextension.c (141) A src/pluginextension.h (76) M src/symbols.c (11) M src/symbols.h (2)
-- Patch Links --
https://github.com/geany/geany/pull/3849.patch https://github.com/geany/geany/pull/3849.diff