commonjs({
namedExports: {
// squelch missing import warnings
- 'vscode-languageclient': ['CreateFile', 'RenameFile', 'ErrorCodes']
+ 'vscode-languageclient': ['CreateFile', 'RenameFile', 'ErrorCodes', 'WorkDoneProgress', 'WorkDoneProgressBegin', 'WorkDoneProgressReport', 'WorkDoneProgressEnd']
}
})
],
import * as vscode from 'vscode';
+import { WorkDoneProgress, WorkDoneProgressBegin, WorkDoneProgressReport, WorkDoneProgressEnd } from 'vscode-languageclient';
+
import { Ctx } from './ctx';
const spinnerFrames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
const statusDisplay = new StatusDisplay(ctx.config.cargoWatchOptions.command);
ctx.pushCleanup(statusDisplay);
ctx.onDidRestart(client => {
- client.onNotification('$/progress', params => statusDisplay.handleProgressNotification(params));
+ client.onProgress(WorkDoneProgress.type, 'rustAnalyzer/cargoWatcher', params => statusDisplay.handleProgressNotification(params));
});
}
this.statusBarItem.dispose();
}
- handleProgressNotification(params: ProgressParams) {
- const { token, value } = params;
- if (token !== 'rustAnalyzer/cargoWatcher') {
- return;
- }
-
- switch (value.kind) {
+ handleProgressNotification(params: WorkDoneProgressBegin | WorkDoneProgressReport | WorkDoneProgressEnd) {
+ switch (params.kind) {
case 'begin':
this.show();
break;
case 'report':
- if (value.message) {
- this.packageName = value.message;
+ if (params.message) {
+ this.packageName = params.message;
}
break;
return spinnerFrames[(this.i = ++this.i % spinnerFrames.length)];
}
}
-
-// FIXME: Replace this once vscode-languageclient is updated to LSP 3.15
-interface ProgressParams {
- token: string;
- value: WorkDoneProgress;
-}
-
-enum WorkDoneProgressKind {
- Begin = 'begin',
- Report = 'report',
- End = 'end',
-}
-
-interface WorkDoneProgress {
- kind: WorkDoneProgressKind;
- message?: string;
- cancelable?: boolean;
- percentage?: string;
-}