Auto merge of #14822 - Veykril:augmentsSyntaxTokens-vscode, r=Veykril

fix: Force disable augmentsSyntaxTokens capability on VSCode

The default textmate grammar for rust in VSCode is pretty brittle, quite often coloring things very differently than we'd like to so we force full semantic highlighting by disabling that config.
This commit is contained in:
bors 2023-05-18 06:48:21 +00:00
commit 673008aaa2

View File

@ -366,6 +366,7 @@ export async function createClient(
// To turn on all proposed features use: client.registerProposedFeatures();
client.registerFeature(new ExperimentalFeatures());
client.registerFeature(new OverrideFeatures());
return client;
}
@ -401,6 +402,25 @@ class ExperimentalFeatures implements lc.StaticFeature {
dispose(): void {}
}
class OverrideFeatures implements lc.StaticFeature {
getState(): lc.FeatureState {
return { kind: "static" };
}
fillClientCapabilities(capabilities: lc.ClientCapabilities): void {
// Force disable `augmentsSyntaxTokens`, VSCode's textmate grammar is somewhat incomplete
// making the experience generally worse
const caps = capabilities.textDocument?.semanticTokens;
if (caps) {
caps.augmentsSyntaxTokens = false;
}
}
initialize(
_capabilities: lc.ServerCapabilities,
_documentSelector: lc.DocumentSelector | undefined
): void {}
dispose(): void {}
}
function isCodeActionWithoutEditsAndCommands(value: any): boolean {
const candidate: lc.CodeAction = value;
return (