diff options
Diffstat (limited to 'editors')
-rw-r--r-- | editors/code/src/server.ts | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/editors/code/src/server.ts b/editors/code/src/server.ts index 75e273f37..75bdf3207 100644 --- a/editors/code/src/server.ts +++ b/editors/code/src/server.ts | |||
@@ -22,7 +22,7 @@ export class Server { | |||
22 | const clientOptions: lc.LanguageClientOptions = { | 22 | const clientOptions: lc.LanguageClientOptions = { |
23 | documentSelector: [{ scheme: 'file', language: 'rust' }], | 23 | documentSelector: [{ scheme: 'file', language: 'rust' }], |
24 | initializationOptions: { | 24 | initializationOptions: { |
25 | publishDecorations: true, | 25 | publishDecorations: true |
26 | } | 26 | } |
27 | }; | 27 | }; |
28 | 28 | ||
@@ -32,6 +32,30 @@ export class Server { | |||
32 | serverOptions, | 32 | serverOptions, |
33 | clientOptions | 33 | clientOptions |
34 | ); | 34 | ); |
35 | // HACK: This is an awful way of filtering out the decorations notifications | ||
36 | // However, pending proper support, this is the most effecitve approach | ||
37 | // Proper support for this would entail a change to vscode-languageclient to allow not notifying on certain messages | ||
38 | // Or the ability to disable the serverside component of highlighting (but this means that to do tracing we need to disable hihlighting) | ||
39 | // This also requires considering our settings strategy, which is work which needs doing | ||
40 | // @ts-ignore The tracer is private to vscode-languageclient, but we need access to it to not log publishDecorations requests | ||
41 | Server.client._tracer = { | ||
42 | log: (messageOrDataObject: string | any, data?: string) => { | ||
43 | if (typeof messageOrDataObject === 'string') { | ||
44 | if ( | ||
45 | messageOrDataObject.includes('m/publishDecorations') || | ||
46 | messageOrDataObject.includes('m/decorationsRequest') | ||
47 | ) { | ||
48 | // Don't log publish decorations requests | ||
49 | } else { | ||
50 | // @ts-ignore This is just a utility function | ||
51 | Server.client.logTrace(messageOrDataObject, data); | ||
52 | } | ||
53 | } else { | ||
54 | // @ts-ignore | ||
55 | Server.client.logObjectTrace(messageOrDataObject); | ||
56 | } | ||
57 | } | ||
58 | }; | ||
35 | Server.client.onReady().then(() => { | 59 | Server.client.onReady().then(() => { |
36 | for (const [type, handler] of notificationHandlers) { | 60 | for (const [type, handler] of notificationHandlers) { |
37 | Server.client.onNotification(type, handler); | 61 | Server.client.onNotification(type, handler); |