aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--editors/code/rollup.config.js2
-rw-r--r--editors/code/src/inlay_hints.ts2
-rw-r--r--editors/code/src/status_display.ts36
3 files changed, 9 insertions, 31 deletions
diff --git a/editors/code/rollup.config.js b/editors/code/rollup.config.js
index 14fb9e085..de6a3b2b7 100644
--- a/editors/code/rollup.config.js
+++ b/editors/code/rollup.config.js
@@ -13,7 +13,7 @@ export default {
13 commonjs({ 13 commonjs({
14 namedExports: { 14 namedExports: {
15 // squelch missing import warnings 15 // squelch missing import warnings
16 'vscode-languageclient': ['CreateFile', 'RenameFile', 'ErrorCodes'] 16 'vscode-languageclient': ['CreateFile', 'RenameFile', 'ErrorCodes', 'WorkDoneProgress', 'WorkDoneProgressBegin', 'WorkDoneProgressReport', 'WorkDoneProgressEnd']
17 } 17 }
18 }) 18 })
19 ], 19 ],
diff --git a/editors/code/src/inlay_hints.ts b/editors/code/src/inlay_hints.ts
index c4206cf5b..6357e44f1 100644
--- a/editors/code/src/inlay_hints.ts
+++ b/editors/code/src/inlay_hints.ts
@@ -42,7 +42,7 @@ const parameterHintDecorationType = vscode.window.createTextEditorDecorationType
42 before: { 42 before: {
43 color: new vscode.ThemeColor('rust_analyzer.inlayHint'), 43 color: new vscode.ThemeColor('rust_analyzer.inlayHint'),
44 } 44 }
45}) 45});
46 46
47class HintsUpdater { 47class HintsUpdater {
48 private pending: Map<string, vscode.CancellationTokenSource> = new Map(); 48 private pending: Map<string, vscode.CancellationTokenSource> = new Map();
diff --git a/editors/code/src/status_display.ts b/editors/code/src/status_display.ts
index 371a2f3bb..c75fddf9d 100644
--- a/editors/code/src/status_display.ts
+++ b/editors/code/src/status_display.ts
@@ -1,5 +1,7 @@
1import * as vscode from 'vscode'; 1import * as vscode from 'vscode';
2 2
3import { WorkDoneProgress, WorkDoneProgressBegin, WorkDoneProgressReport, WorkDoneProgressEnd } from 'vscode-languageclient';
4
3import { Ctx } from './ctx'; 5import { Ctx } from './ctx';
4 6
5const spinnerFrames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏']; 7const spinnerFrames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
@@ -8,7 +10,7 @@ export function activateStatusDisplay(ctx: Ctx) {
8 const statusDisplay = new StatusDisplay(ctx.config.cargoWatchOptions.command); 10 const statusDisplay = new StatusDisplay(ctx.config.cargoWatchOptions.command);
9 ctx.pushCleanup(statusDisplay); 11 ctx.pushCleanup(statusDisplay);
10 ctx.onDidRestart(client => { 12 ctx.onDidRestart(client => {
11 client.onNotification('$/progress', params => statusDisplay.handleProgressNotification(params)); 13 client.onProgress(WorkDoneProgress.type, 'rustAnalyzer/cargoWatcher', params => statusDisplay.handleProgressNotification(params));
12 }); 14 });
13} 15}
14 16
@@ -63,20 +65,15 @@ class StatusDisplay implements vscode.Disposable {
63 this.statusBarItem.dispose(); 65 this.statusBarItem.dispose();
64 } 66 }
65 67
66 handleProgressNotification(params: ProgressParams) { 68 handleProgressNotification(params: WorkDoneProgressBegin | WorkDoneProgressReport | WorkDoneProgressEnd) {
67 const { token, value } = params; 69 switch (params.kind) {
68 if (token !== 'rustAnalyzer/cargoWatcher') {
69 return;
70 }
71
72 switch (value.kind) {
73 case 'begin': 70 case 'begin':
74 this.show(); 71 this.show();
75 break; 72 break;
76 73
77 case 'report': 74 case 'report':
78 if (value.message) { 75 if (params.message) {
79 this.packageName = value.message; 76 this.packageName = params.message;
80 } 77 }
81 break; 78 break;
82 79
@@ -90,22 +87,3 @@ class StatusDisplay implements vscode.Disposable {
90 return spinnerFrames[(this.i = ++this.i % spinnerFrames.length)]; 87 return spinnerFrames[(this.i = ++this.i % spinnerFrames.length)];
91 } 88 }
92} 89}
93
94// FIXME: Replace this once vscode-languageclient is updated to LSP 3.15
95interface ProgressParams {
96 token: string;
97 value: WorkDoneProgress;
98}
99
100enum WorkDoneProgressKind {
101 Begin = 'begin',
102 Report = 'report',
103 End = 'end',
104}
105
106interface WorkDoneProgress {
107 kind: WorkDoneProgressKind;
108 message?: string;
109 cancelable?: boolean;
110 percentage?: string;
111}