in src/utility.ts [225:276]
export async function waitForStandardMode(progressReporter: IProgressReporter): Promise<boolean> {
const importMessage = progressReporter?.getProgressLocation() === vscode.ProgressLocation.Notification ?
"Importing projects, [check details](command:java.show.server.task.status)" : "Importing projects...";
if (await isImportingProjects()) {
progressReporter.report(importMessage);
}
const api = await getJavaExtensionAPI(progressReporter);
if (!api) {
return false;
}
if (api && api.serverMode === ServerMode.LIGHTWEIGHT) {
const answer = await vscode.window.showInformationMessage("Run/Debug feature requires Java language server to run in Standard mode. "
+ "Do you want to switch it to Standard mode now?", "Yes", "Cancel");
if (answer === "Yes") {
if (api.serverMode === ServerMode.STANDARD) {
return true;
}
progressReporter?.report(importMessage);
return new Promise<boolean>((resolve) => {
progressReporter.getCancellationToken().onCancellationRequested(() => {
resolve(false);
});
api.onDidServerModeChange((mode: string) => {
if (mode === ServerMode.STANDARD) {
resolve(true);
}
});
vscode.commands.executeCommand("java.server.mode.switch", ServerMode.STANDARD, true);
});
}
return false;
} else if (api && api.serverMode === ServerMode.HYBRID) {
progressReporter.report(importMessage);
return new Promise<boolean>((resolve) => {
progressReporter.getCancellationToken().onCancellationRequested(() => {
resolve(false);
});
api.onDidServerModeChange((mode: string) => {
if (mode === ServerMode.STANDARD) {
resolve(true);
}
});
});
}
return true;
}