From 225ef6dea24a0e8766fdfd677fb98a15095fa7e5 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Wed, 26 Feb 2020 16:03:30 +0100 Subject: Config to switch to semantic tokens --- editors/code/package.json | 5 +++++ editors/code/src/client.ts | 7 +++++-- editors/code/src/config.ts | 2 ++ editors/code/src/main.ts | 4 +++- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/editors/code/package.json b/editors/code/package.json index 8a8a74f7c..2a89987e8 100644 --- a/editors/code/package.json +++ b/editors/code/package.json @@ -168,6 +168,11 @@ "type": "object", "title": "Rust Analyzer", "properties": { + "rust-analyzer.highlighting.semanticTokens": { + "type": "boolean", + "default": false, + "description": "Use proposed semantic tokens API for syntax highlighting" + }, "rust-analyzer.highlightingOn": { "type": "boolean", "default": false, diff --git a/editors/code/src/client.ts b/editors/code/src/client.ts index f9dbe34c2..44bd04c21 100644 --- a/editors/code/src/client.ts +++ b/editors/code/src/client.ts @@ -27,7 +27,7 @@ export async function createClient(config: Config, serverPath: string): Promise< const clientOptions: lc.LanguageClientOptions = { documentSelector: [{ scheme: 'file', language: 'rust' }], initializationOptions: { - publishDecorations: true, + publishDecorations: !config.highlightingSemanticTokens, lruCapacity: config.lruCapacity, maxInlayHintLength: config.maxInlayHintLength, cargoWatchEnable: cargoWatchOpts.enable, @@ -84,7 +84,10 @@ export async function createClient(config: Config, serverPath: string): Promise< // Here we want to just enable CallHierarchyFeature since it is available on stable. // Note that while the CallHierarchyFeature is stable the LSP protocol is not. res.registerFeature(new CallHierarchyFeature(res)); - res.registerFeature(new SemanticTokensFeature(res)); + + if (config.highlightingSemanticTokens) { + res.registerFeature(new SemanticTokensFeature(res)); + } return res; } diff --git a/editors/code/src/config.ts b/editors/code/src/config.ts index 47e8cd45d..bf915102c 100644 --- a/editors/code/src/config.ts +++ b/editors/code/src/config.ts @@ -22,6 +22,7 @@ export class Config { private static readonly requiresReloadOpts = [ "cargoFeatures", "cargo-watch", + "highlighting.semanticTokens" ] .map(opt => `${Config.rootSection}.${opt}`); @@ -143,6 +144,7 @@ export class Config { // We don't do runtime config validation here for simplicity. More on stackoverflow: // https://stackoverflow.com/questions/60135780/what-is-the-best-way-to-type-check-the-configuration-for-vscode-extension + get highlightingSemanticTokens() { return this.cfg.get("highlighting.semanticTokens") as boolean; } get highlightingOn() { return this.cfg.get("highlightingOn") as boolean; } get rainbowHighlightingOn() { return this.cfg.get("rainbowHighlightingOn") as boolean; } get lruCapacity() { return this.cfg.get("lruCapacity") as null | number; } diff --git a/editors/code/src/main.ts b/editors/code/src/main.ts index 424ff1ac3..ecf53cf77 100644 --- a/editors/code/src/main.ts +++ b/editors/code/src/main.ts @@ -89,7 +89,9 @@ export async function activate(context: vscode.ExtensionContext) { activateStatusDisplay(ctx); - activateHighlighting(ctx); + if (!ctx.config.highlightingSemanticTokens) { + activateHighlighting(ctx); + } activateInlayHints(ctx); } -- cgit v1.2.3