Colour the editor view with relocated semantic tokens
The results document only ever got TextMate colouring, because a language server will not serve semantic tokens for a `colored-refs` URI: there is no file and no compilation behind it. So identifiers looked the way a C# file does before the server has analysed it. Instead of tokenizing anything ourselves, fetch the tokens for each *source* file and move them: - vscode.provideDocumentSemanticTokensLegend / provideDocumentSemanticTokens give the legend and the delta-encoded tokens for a real file. Neither is listed by getCommands(), so a test calls them to prove they exist rather than looking them up. - Decode to absolute positions, keep the tokens on displayed lines, and shift each column by CODE_INDENT minus the stripped leading whitespace — the same mapping that places the highlight ranges. Re-encode with the source legend, so the type and modifier numbers stay meaningful. - The legend is only known after a server answers, but registerDocumentSemanticTokensProvider wants it up front, so registration is deferred to the first search and redone if a later legend differs. - Runs after the results are on screen and only changes colours, never text, so nothing waits on it. coloredReferences.semanticTokens turns it off; results over 40 files skip it. Verified against DotRush: every relocated token covers exactly the text it covered in the source file, and `Profiler` comes back typed as `class`. README: drops the claim that semantic tokens would fix the panel's colours. They supply the classification, never the colours, and webviews are not given theme token colours — so only the editor view can be theme-exact. Feeding the panel real token types is now roadmap item 5. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -160,6 +160,11 @@
|
||||
],
|
||||
"default": "bottom",
|
||||
"description": "Where the results panel opens."
|
||||
},
|
||||
"coloredReferences.semanticTokens": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "Colour the editor view with semantic tokens fetched from the source files, so identifiers look the way they do in the real file. Turn off to use TextMate grammar colouring only."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user