Use above to move TM to plugins, perhaps with LSP like API, see https://github.com/geany/geany/pull/3571#issuecomment-1793696182
I think we always need something like TM to have an in-process cache for symbols/tags. We're still a lightweight IDE so a my requirement would be to not exchange megabytes of json text on every keystroke.
I call it TM2 because it doesn't necessarily need to be API-compatible to the current TM.
So I think my idea would be to keep TM2 in the core and call out to the ctags-server on some suitable opportunities, then cache the response and move forward.
Would have to make sure that TM2 is also compatible with other major language servers.
Question: How does a language server get access to the documents? Does it have to be saved on disk so that the server can `open()` it? If yes, how can LSP possible act on unsaved buffers? If no, do we have to constantly send the entire document via IPC or network?