blob: dc448f554c5eaf4277fe3b47570165b90a121a1e [file] [log] [blame]
import * as lc from "vscode-languageclient/node";
import * as vscode from "vscode";
export class RaLanguageClient extends lc.LanguageClient {
override handleFailedRequest<T>(
type: lc.MessageSignature,
token: vscode.CancellationToken | undefined,
// declared as `any` in vscode-languageclient
// eslint-disable-next-line @typescript-eslint/no-explicit-any
error: any,
defaultValue: T,
showNotification?: boolean | undefined,
): T {
const showError = vscode.workspace
.getConfiguration("rust-analyzer")
.get("showRequestFailedErrorNotification");
if (
!showError &&
error instanceof lc.ResponseError &&
error.code === lc.ErrorCodes.InternalError
) {
// Don't show notification for internal errors, these are emitted by r-a when a request fails.
showNotification = false;
}
return super.handleFailedRequest(type, token, error, defaultValue, showNotification);
}
}