haskell / haskell/lsp

Should ServerCapabilities depend upon ClientCapabilities?

Open
#503 1 comment 0 reactions 0 assignees View on GitHub
type: discussion - decision needed
Dominant language
Haskell
Stars
423
Forks
105
PR merge metrics
No merged PRs in 30d

Description

Currently, inferCapabilities is passed a version of ClientCapabilities, and the passed client capabilities are used twice, once for RenameOptions and once for CodeActionKinds. That's a very small portion of the capabilities that could depend on ClientCapabilities. I'm of the position that ServerCapabilities shouldn't depend at all upon ClientCapabilities, after all, capabilities mean what we can do, not what we will do (which is to comply with the client capabilities in server code).

As long as no one objects I would like to stop passing ClientCapabilitise to inferCapabilities, and remove any code in there that refers to it.

Contributor guide

Open the contributing guide

Research direction

Start by locating the inferCapabilities entry point and read how ClientCapabilities is used for RenameOptions and CodeActionKinds. Remove the dependency and update its callers; done means ServerCapabilities no longer receives ClientCapabilities or refers to it, with the existing test suite passing.

Written by the indexing model from the issue text.

Assessment

Tech stack
haskell
Domain
api, devtools
Issue type
Refactor
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.