haskell / haskell/lsp

Support multiline and overlapping semantic tokens

Open
#545 3 comments 0 reactions 0 assignees View on GitHub
good first issue
Dominant language
Haskell
Stars
423
Forks
105
PR merge metrics
No merged PRs in 30d

Description

There are client capabilities for if the client supports these. But if they don't, we can still support them gracefully I think. The conversion functions can take the client capabilities and then implement a workaround if the capabilities aren't supported:
- For overlapping tokens, split the overlapped token so into the part before the overlapping token and the part after the overlapping token, so you get something like: `["hello ${a} world"][a]` -> `["hello ${][a][} world"]`
- For multiline tokens, split them at the line breaks into one token per line.

Contributor guide

Open the contributing guide

Research direction

Start by locating the conversion functions that produce semantic tokens and the client-capability data they receive. Check how overlapping and multiline tokens are represented, then verify that unsupported capabilities are handled by splitting overlaps and line breaks into valid per-line tokens.

Written by the indexing model from the issue text.

Assessment

Tech stack
haskell
Domain
tooling
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 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.