diff options
Diffstat (limited to 'editors/code')
-rw-r--r-- | editors/code/src/client.ts | 10 |
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 | ||
4 | import { Config } from './config'; | 4 | import { Config } from './config'; |
5 | import { CallHierarchyFeature } from 'vscode-languageclient/lib/callHierarchy.proposed'; | 5 | import { CallHierarchyFeature } from 'vscode-languageclient/lib/callHierarchy.proposed'; |
6 | import { SemanticTokensFeature } from 'vscode-languageclient/lib/semanticTokens.proposed'; | 6 | import { SemanticTokensFeature, DocumentSemanticsTokensSignature } from 'vscode-languageclient/lib/semanticTokens.proposed'; |
7 | 7 | ||
8 | export async function createClient(config: Config, serverPath: string): Promise<lc.LanguageClient> { | 8 | export 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( |