redhat-developer / redhat-developer/lsp4ij

Automatically upgrade existing user-defined language server definitions based on changes to their originating templates

Open
#701 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Java
Stars
344
Forks
113
Avg merge
5h 22m
Merged PRs (30d)
15

Description

In 0.9.0, we've added two key new configuration concepts, configuration JSON schema and client configuration. These enable significant enhancements to the configuration process and runtime behavior respectively. Existing user-defined language server definitions won't immediately benefit from these enhancements, though. LSP4IJ should compare existing user-defined language definitions against their originating templates (would need to determine the best matching logic) and, if the template has a non-empty, non-default value for either of these properties and the definition has an empty or default value for the same property, the definition should be upgraded either automatically or after prompting the user.

For what it's worth, I've already implemented this for my own plugin that creates TypeScript and CSS language server definitions for the end user. Obviously the template/definition matching logic is much easier when you're in full control, but assuming a more general version of that logic was determined -- and I think that prompting the user helps to insulate against incorrect matching if/when it occurs -- I'm happy to port the logic I've already implemented to LSP4IJ as a more general and encapsulated solution.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No files or tests are named. Start by tracing how user-defined language server definitions, originating templates, configuration JSON schema, and client configuration are represented and updated; determine matching and whether prompting is required. Done means existing definitions can safely receive non-empty, non-default template values when their corresponding values are empty or default.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
devtools
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.