openlawlibrary / pygls

A pythonic generic language server
https://pygls.readthedocs.io/en/latest/
Apache License 2.0
568 stars 103 forks source link

Add inlay hint support #342

Closed alcarney closed 1 year ago

alcarney commented 1 year ago

Description (e.g. "Related to ...", etc.)

Note: This requires a fix to lsprotocol in order work correctly (microsoft/lsprotocol#219)

Screenshot_20230618_005141

Code review checklist (for code reviewer to complete)

tombh commented 1 year ago

Amazing to see these tests doing their magic, hats off.

So just waiting on that Pyodide test and the lsprotocol fix then?

alcarney commented 1 year ago

that Pyodide test

It's that flaky one we saw before... so it looks like I'll have to revisit the pyodide test runner before long

tombh commented 1 year ago

Ohh yes, right I see. Ok, what are you thinking then? Some pinning?

alcarney commented 1 year ago

Ok, what are you thinking then? Some pinning?

At least a lower version bound on typing-extensions but at this point it's probably useful to see if we can get the installation logs out of the pyodide runtime so we can see what's going on.

lsprotocol 2023.0.0a2 is out which should mean this is ready to go - I've set the version in setup.cfg in line with the discussions in #331

tombh commented 1 year ago

At least a lower version bound on typing-extensions but at this point it's probably useful to see if we can get the installation logs out of the pyodide runtime so we can see what's going on.

Sure ✨

lsprotocol 2023.0.0a2 is out which should mean this is ready to go - I've set the version in setup.cfg in line with the discussions in #331

Greta, and I think I can just close fix: Pin lsprotocol depdency #345 because I'd have to update it to the later version that you need here. A git blame and these comments and issue references are good enough papertrail I think.

Awesome work again Alex 🤓

tombh commented 1 year ago

Oh, BTW, I guess you don't need a Pygls release? But might as well do one anyway? My only hesitancy is the lsprotocol pin, I'll mention it in #345.

alcarney commented 1 year ago

A new release would be nice... though do we want to push and get support for all of v3.17 in first? It would also give a bit of time for the new release of lsprotocol to propagate

tombh commented 1 year ago

I must admit I didn't even think Pygls even supported all of 3.16. I guess we get a lot for free now by depending on lsprotocol? Here's the changelog from the LSP website:

Specify how clients will handle stale requests.
Add support for a completion item label details.
Add support for workspace symbol resolve request.
Add support for label details and insert text mode on completion items.
Add support for shared values on CompletionItemList.
Add support for HTML tags in Markdown.
Add support for collapsed text in folding.
Add support for trigger kinds on code action requests.
Add the following support to semantic tokens:
    server cancelable
    augmentation of syntax tokens
Add support to negotiate the position encoding.
Add support for relative patterns in file watchers.
Add support for type hierarchies
Add support for inline values.
Add support for inlay hints.
Add support for notebook documents.
Add support for diagnostic pull model.

What are the main things you think would be good to get in Pygls?

alcarney commented 1 year ago

I didn't even think Pygls even supported all of 3.16

Well... I'm assuming we do! :sweat_smile: It would be interesting to know if we have any gaps.

What are the main things you think would be good to get in Pygls?

We do get a lot for free now, I think somewhere between 1/2 - 2/3 of that list is just new fields on types coming from lsprotocol.

Work for us to do is the new methods

And these

I would imagine we can do nearly all of that apart from Add support to negotiate the position encoding. since, if I'm honest, I wouldn't know where to start with that one!

tombh commented 1 year ago

Well... I'm assuming we do! sweat_smile It would be interesting to know if we have any gaps.

It was just an assumption. I've come across gaps over the months, and perhaps I mistakenly assumed they were for older versions, whereas in fact they're legitimate gaps in the recent 3.17 spec.

We do get a lot for free now, I think somewhere between 1/2 - 2/3 of that list is just new fields on types coming from lsprotocol.

😏

Great, so I've made a dedicated issue for the remaining 3.17 features https://github.com/openlawlibrary/pygls/issues/346

I would imagine we can do nearly all of that apart from Add support to negotiate the position encoding. since, if I'm honest, I wouldn't know where to start with that one!

I actually am in a good position do that one because of all the detailed work on #304