OK, TM is still active, but that means I may get different results when using LSP vs TM. I.e. the list of symbols on the GUI may be different to what a plugin gets from quering TM. This potential inconsistency makes me nervous.

This is especially true since LSP may have more build system insights and perhaps knows which ifdefs are active and which are not, leading to some symbols being hidden or different locations for definitions.

Instead I think we should use LSP to augment tagmanager so that we have all the needed bits within our problem space when "goto definition" is triggered. Then we can reason about the result. If TM data store is not suitable we should make the necessary modifications there to make LSP realistic.

I have absolutely no idea what you mean by this. What do you mean by "reason about the result"? The LSP server just returns the file name and line number and I don't know what "reasoning" you want to do about it.

I mean with TM we have all data required to implement the features locally available. We can do smart things before the user triggers things or after based on that. With your LSP proposal we ask the external entity only when the user triggers the action and we have to hope for the best.

I would rather see that we mix-in LSP data (even if that overrides TM) beforehand/in the background. AFAIK you can get all symbols in a document through LSP. Then we can import that to our local data storage and implement goto-definition on-top of that (and here LSP may replace TM's document parsing or we invent some smart combination).

That way other plugins can use LSP data the same way as TM data right now and there's no room for inconsistency.

Basically I'm saying: TM can use LSP data, either exclusively (instead of parsing the file itself) or as an extra data source. Rest of Geany and plugins still interface with TM (may require changes here and there if LSP provides less data and someone was depending on that missing pieces, but I hope not).


Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.Message ID: <geany/geany/pull/3571/c1793228746@github.com>