aboutsummaryrefslogtreecommitdiff
path: root/editors/code/src
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2020-02-27 09:19:56 +0000
committerAleksey Kladov <[email protected]>2020-02-27 09:19:56 +0000
commitb49508ffe3d34be0520c594bae69e906f22af513 (patch)
treec9a7536741f866ad188818bced993fe7fc88bdd7 /editors/code/src
parent7f7d96cffed6ed4836432a16cfc1dbd080bbab17 (diff)
Fix flickering with new syntax highlighting
Diffstat (limited to 'editors/code/src')
-rw-r--r--editors/code/src/client.ts10
1 files changed, 9 insertions, 1 deletions
diff --git a/editors/code/src/client.ts b/editors/code/src/client.ts
index 44bd04c21..1f90af898 100644
--- a/editors/code/src/client.ts
+++ b/editors/code/src/client.ts
@@ -3,7 +3,7 @@ import * as vscode from 'vscode';
3 3
4import { Config } from './config'; 4import { Config } from './config';
5import { CallHierarchyFeature } from 'vscode-languageclient/lib/callHierarchy.proposed'; 5import { CallHierarchyFeature } from 'vscode-languageclient/lib/callHierarchy.proposed';
6import { SemanticTokensFeature } from 'vscode-languageclient/lib/semanticTokens.proposed'; 6import { SemanticTokensFeature, DocumentSemanticsTokensSignature } from 'vscode-languageclient/lib/semanticTokens.proposed';
7 7
8export async function createClient(config: Config, serverPath: string): Promise<lc.LanguageClient> { 8export async function createClient(config: Config, serverPath: string): Promise<lc.LanguageClient> {
9 // '.' Is the fallback if no folder is open 9 // '.' Is the fallback if no folder is open
@@ -42,6 +42,14 @@ export async function createClient(config: Config, serverPath: string): Promise<
42 rustfmtArgs: config.rustfmtArgs, 42 rustfmtArgs: config.rustfmtArgs,
43 }, 43 },
44 traceOutputChannel, 44 traceOutputChannel,
45 middleware: {
46 // Workaround for https://github.com/microsoft/vscode-languageserver-node/issues/576
47 async provideDocumentSemanticTokens(document: vscode.TextDocument, token: vscode.CancellationToken, next: DocumentSemanticsTokensSignature) {
48 let res = await next(document, token);
49 if (res === undefined) throw new Error('busy');
50 return res;
51 }
52 } as any
45 }; 53 };
46 54
47 const res = new lc.LanguageClient( 55 const res = new lc.LanguageClient(