haskell / haskell/haskell-language-server

Semantic tokens features trackList

Open
#3,931 24 comments 0 reactions 1 assignee Claimed by @soulomoon View on GitHub
component: semantic-tokens type: enhancement
Dominant language
Haskell
Stars
3k
Forks
455
Avg merge
2d 19h
Merged PRs (30d)
11

Description

Semantic highlighting would give us a great experience on reading the code. It's been a shame that haskell does not have it for all these times. But now we are going to make it happen for haskell in HLS. (Thank @michaelpj for his [pull request that support it in lsp package](https://github.com/haskell/haskell-language-server/issues/1654)), first version of semantic tokens have been made in [this pull request](https://github.com/haskell/haskell-language-server/pull/3892). (Thank @michaelpj @wz1000 for all the help and reviews. )
But since the amount of works it need , not everything in the [LSP semantic tokens specification](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_semanticTokens) is supported yet, we would do them step by step.
Here is the track list of features.
* [x] provide configuration to map between the semantic tokens type and lsp standard tokens. #3940
* [x] #3957
* [ ] provide configurability to the priorities of hs semantic token types #4042
* Support semantic tokens type: done in #3892
- [x] class and class method type family name (data family)
- [x] data constructor name (not distinguishing record and normal data, and GADT)
- [x] type constructor name (GADT)
- [x] record field name
- [x] type synonym
- [x] pattern synonym
- [x] functions
- [x] none-function variables
- [x] infix operator #3969
* Support PluginMethodHandler
- [x] [textDocument/semanticTokens/full](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#semanticTokens_fullRequest). done in #3892
- [x] #4072
- [ ] [workspace/semanticTokens/refresh](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#semanticTokens_refreshRequest)
* Support modifiers:
- [ ] declaration (as in class declearations, type definition and type family)
- [ ] definition (as in class instance declaration, left hand side value binding, and type family instance)
- [ ] modification (as in rec field update)
- [ ] recursion analyze in let binding #2902
* [x] Support unicode, done in #3892
* [x] Support imported name, done in #3892
* [ ] ClientCapabilities, `multilineTokenSupport, overlappingTokenSupport`
* [x] highlight identifiers in doc, but not the first line of nested comment due to a ghc bug. https://gitlab.haskell.org/ghc/ghc/-/issues/24378
* Bug fixing & minor improvement:
- [x] #3966
- [x] https://github.com/haskell/haskell-language-server/issues/3983

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.