PR: Use pygls for json-rpc language client and add support for lsprotocol#25937
Draft
hlouzada wants to merge 5 commits intospyder-ide:masterfrom
Draft
PR: Use pygls for json-rpc language client and add support for lsprotocol#25937hlouzada wants to merge 5 commits intospyder-ide:masterfrom
hlouzada wants to merge 5 commits intospyder-ide:masterfrom
Conversation
4e31ec0 to
f8e5e3c
Compare
6423b10 to
b6bb32b
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description of Changes
This pull request refactors and updates the LSP client provider infrastructure to support direct use of
lsprotocoltypes, simplifying and clarifying decorator logic, and improving the handling and routing of LSP messages and responses by usingpyglsclient:The decorators
send_request,send_notification, andsend_responseare now marker decorators that tag methods with LSP method names and kinds, instead of wrapping them to send messages directly. The actual sending is now centralized inLSPClient.perform_request(), and theclass_registerdecorator builds registries for handlers and senders, enabling dynamic dispatch.All LSP message construction and handling in providers (
client.py,window.py,workspace.py) now uselsprotocoltypes instead of manually constructed dictionaries. This ensures better type safety and protocol compliance.Updated the
WorkspaceProvidercode for handling workspace folder changes, watched files, and edits to support new types and more robustly assigns results to the correct workspace instances.Affirmation
By submitting this Pull Request or typing my (user)name below,
I affirm the Developer Certificate of Origin
with respect to all commits and content included in this PR,
and understand I am releasing the same under Spyder's MIT (Expat) license.
I certify the above statement is true and correct: @hlouzada