mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-11-10 15:14:32 +00:00
Use types from vscode-langaugeclient
This commit is contained in:
parent
876f92d547
commit
70cba0fe0f
3 changed files with 9 additions and 31 deletions
|
@ -13,7 +13,7 @@ export default {
|
|||
commonjs({
|
||||
namedExports: {
|
||||
// squelch missing import warnings
|
||||
'vscode-languageclient': ['CreateFile', 'RenameFile', 'ErrorCodes']
|
||||
'vscode-languageclient': ['CreateFile', 'RenameFile', 'ErrorCodes', 'WorkDoneProgress', 'WorkDoneProgressBegin', 'WorkDoneProgressReport', 'WorkDoneProgressEnd']
|
||||
}
|
||||
})
|
||||
],
|
||||
|
|
|
@ -42,7 +42,7 @@ const parameterHintDecorationType = vscode.window.createTextEditorDecorationType
|
|||
before: {
|
||||
color: new vscode.ThemeColor('rust_analyzer.inlayHint'),
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
class HintsUpdater {
|
||||
private pending: Map<string, vscode.CancellationTokenSource> = new Map();
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
import * as vscode from 'vscode';
|
||||
|
||||
import { WorkDoneProgress, WorkDoneProgressBegin, WorkDoneProgressReport, WorkDoneProgressEnd } from 'vscode-languageclient';
|
||||
|
||||
import { Ctx } from './ctx';
|
||||
|
||||
const spinnerFrames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
|
||||
|
@ -8,7 +10,7 @@ export function activateStatusDisplay(ctx: Ctx) {
|
|||
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));
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -63,20 +65,15 @@ class StatusDisplay implements vscode.Disposable {
|
|||
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;
|
||||
|
||||
|
@ -90,22 +87,3 @@ class StatusDisplay implements vscode.Disposable {
|
|||
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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue