@b4n Ping 2 :-)

Basically this is the API I currently propose. I believe it's quite nice also 
that it doesn't serve for LSP only but it could be used by other plugins too. I 
for instance noticed https://github.com/geany/geany/issues/3858 and if somebody 
wanted they could use this API for implementing a Tree-sitter backend.

What the API does is that it just simply disables the Geany functionality and 
makes the plugin do the work instead. This also reduces the amount of changes 
needed in Geany as Geany doesn't have to care what exactly the plugin does.

While in some cases it might be possible to reduce the number of checks whether 
the plugin implements certain feature, I didn't include it in this PR - such a 
refactoring can come later. Also, there are no docstrings, API bump etc. yet as 
the API may change based on the discussion here.

Now the symbol tree. I came to the conclusion that LSP symbols, which we know 
nothing about and which are only meant to be blindly displayed in the symbol 
tree without any processing, and TM symbols where we really know what they 
contain, are fundamentally incompatible and any form of unification will lead 
to this kind of ugly code everywhere:
```C
if (tag->is_lsp)
    //LSP symbol - do one thing
else
    //TM symbol - do other thing
```
I tried this in the extra patches of https://github.com/geany/geany/pull/3850 
and I don't like the result at all.

So for the symbol tree I propose this:
1. For now, keep using TM for it and wait for users feedback. The thing is that 
TM works very well for it and I kind of suspect that nobody will notice 
anything.
2. If there are complaints that users actually really want LSP-based symbol 
tree, I'd just make a separate "LSP Symbols" tab in the sidebar that would be 
implemented completely in the plugin (by stealing most of Geany's symbol tree 
code). Even though this means some code duplication, it isn't as bad as making 
Geany code ugly and hard to maintain because of the incompatible symbol 
representations.

Thoughts?

-- 
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany/pull/3849#issuecomment-2132172378
You are receiving this because you are subscribed to this thread.

Message ID: <geany/geany/pull/3849/c2132172...@github.com>

Reply via email to