microsoft / microsoft/language-server-protocol

Proposal: Semantic Tokens in Markdown

Open
#2,238 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

feature-request semantic tokens
Dominant language
TypeScript
Stars
13k
Forks
1k
Avg merge
6d 1h
Merged PRs (30d)
10

Description

When using a color scheme with significant use of semantic tokens, it becomes very noticible that hover info and other similar features do not include semantic highlighting. For instance, I use a color scheme that makes a color distinction for class/interface/enum, and so usually, I know just by looking at a type which of these it is, however if I look at the type of a variable in a hover popup, this visual information is missing. Sometimes the kind of type it is will be written in text, which may allow coloring the name by syntax in some cases, but generally any documentation examples included in the hover info will lack the usual color information. This is a noticible difference in quality of experience between lsp-based editors and more traditional ides that do their own semantic analysis.

My proposal is to add the ability for clients to advertise that they support semantic tokens in markdown, and for servers to provide semantic tokens with markdown any time they provide markdown.

Contributor guide

No contributing guide indexed for this repository

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

Review the existing semantic-token and Markdown protocol definitions, then trace how client capabilities and server responses are described. Define the capability negotiation and response behavior for semantic tokens embedded in Markdown, with the protocol text serving as the completion criterion.

Written by the indexing model from the issue text.

Assessment

Tech stack
markdown, typescript
Domain
api, developer-experience
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.