Skip to content

Refactor language service setup and usage #1271

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 13 commits into
base: main
Choose a base branch
from

Conversation

thecrypticace
Copy link
Contributor

Opening this up b/c I ended up accidentally doing a refactor (lol) and don't want to forget to merge it

This sets up architecture that should (eventually) help with more direct testing in the language service itself. My primary goal here is for the majority of language server tests to be able to run against both the language service and language server where it makes sense.

  • After merging, this must be released as major 0.x release (v0.16.x probably)
  • Play has to get updated to the new APIs

Base automatically changed from feat/source-not to main March 19, 2025 14:25
@thecrypticace thecrypticace force-pushed the feat/refactor-language-service-usage branch from bb0d657 to 379df94 Compare March 21, 2025 00:23
@thecrypticace thecrypticace force-pushed the feat/refactor-language-service-usage branch from 379df94 to 19bb723 Compare April 15, 2025 15:59
This will set us up for more direct, language-service specific testing.

This is very much a work in progress but the ultimate goal is for the majority of language server tests to be able to run against both the language service _and_ language server
Protocol v3.17 added support for pull-model diagnostics which are modeled as a “report” that is either a full set of diagnostics for a document (and related documents) or “unchanged”

We can convert these to the push model by pulling the diagnostics like we were doing before and inspecting the report before pushing diagnostics to the client
Most relevant requests are document related in some manner and this will serve a few purposes:
- It centralizes logic common to all providers
- It can help simplify the implementation of providers
- It reduces duplication by moving common actions into the document creation layer (e.g. loading settings)
This uses the new virtual document abstraction to simplify the implementation of the provider. Now it operates only on things it cares about:
- utility class names
- CSS helper functions
@thecrypticace thecrypticace force-pushed the feat/refactor-language-service-usage branch from e98013a to 3072ca5 Compare April 15, 2025 16:43
@thecrypticace thecrypticace changed the title wip: refactor language service setup and usage Refactor language service setup and usage Apr 15, 2025
@thecrypticace thecrypticace force-pushed the feat/refactor-language-service-usage branch from c5e0748 to 0f172a4 Compare April 15, 2025 16:55
@thecrypticace thecrypticace marked this pull request as ready for review April 15, 2025 17:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant