Skip to content

Commit d0bebbb

Browse files
committed
Add an adjustable timeout to the SetStatusBarMessage handler
1 parent f481326 commit d0bebbb

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

src/features/ExtensionCommands.ts

+16-4
Original file line numberDiff line numberDiff line change
@@ -138,10 +138,15 @@ export namespace ShowInformationMessageRequest {
138138
}
139139

140140
export namespace SetStatusBarMessageRequest {
141-
export const type: RequestType<string, EditorOperationResponse, void> =
141+
export const type: RequestType<StatusBarMessageDetails, EditorOperationResponse, void> =
142142
{ get method() { return 'editor/setStatusBarMessage'; } };
143143
}
144144

145+
export interface StatusBarMessageDetails {
146+
message: string;
147+
timeout?: number;
148+
}
149+
145150
export class ExtensionCommandsFeature implements IFeature {
146151

147152
private command: vscode.Disposable;
@@ -207,7 +212,7 @@ export class ExtensionCommandsFeature implements IFeature {
207212

208213
this.languageClient.onRequest(
209214
SetStatusBarMessageRequest.type,
210-
message => this.setStatusBarMessage(message));
215+
messageDetails => this.setStatusBarMessage(messageDetails));
211216
}
212217
}
213218

@@ -340,8 +345,15 @@ export class ExtensionCommandsFeature implements IFeature {
340345
.then(_ => EditorOperationResponse.Completed);
341346
}
342347

343-
private setStatusBarMessage(message: string): EditorOperationResponse {
344-
vscode.window.setStatusBarMessage(message);
348+
private setStatusBarMessage(messageDetails: StatusBarMessageDetails): EditorOperationResponse {
349+
350+
if (messageDetails.timeout) {
351+
vscode.window.setStatusBarMessage(messageDetails.message, messageDetails.timeout);
352+
}
353+
else {
354+
vscode.window.setStatusBarMessage(messageDetails.message);
355+
}
356+
345357
return EditorOperationResponse.Completed;
346358
}
347359
}

0 commit comments

Comments
 (0)