diff --git a/package.json b/package.json index 9fe83f02d..65a4a148e 100644 --- a/package.json +++ b/package.json @@ -1914,12 +1914,12 @@ "group": "1_javaactions" }, { - "when": "explorerResourceIsFolder&&javaLSReady", + "when": "explorerResourceIsFolder&&javaLSReady&&resourcePath in java.projects", "command": "java.project.addToSourcePath.command", "group": "1_javaactions@1" }, { - "when": "explorerResourceIsFolder&&javaLSReady", + "when": "explorerResourceIsFolder&&javaLSReady&&resourcePath in java.projects", "command": "java.project.removeFromSourcePath.command", "group": "1_javaactions@2" } diff --git a/src/standardLanguageClient.ts b/src/standardLanguageClient.ts index 7a0aae0eb..12e153784 100644 --- a/src/standardLanguageClient.ts +++ b/src/standardLanguageClient.ts @@ -120,7 +120,7 @@ export class StandardLanguageClient { public registerLanguageClientActions(context: ExtensionContext, hasImported: boolean, jdtEventEmitter: EventEmitter) { activationProgressNotification.showProgress(); - this.languageClient.onNotification(StatusNotification.type, (report) => { + this.languageClient.onNotification(StatusNotification.type, async (report) => { // Resolve serverRunning on the first status notification from the server, // indicating the server process is alive and can accept requests. apiManager.resolveServerRunningPromise(); @@ -152,6 +152,13 @@ export class StandardLanguageClient { // Disable the client-side snippet provider since LS is ready. snippetCompletionProvider.dispose(); registerDocumentValidationListener(context, this.languageClient); + try { + const projectUris = await getAllJavaProjects(); + const projectPaths = projectUris.map((uriString) => Uri.parse(uriString).fsPath.replace(/[\\/]$/, '')); + await commands.executeCommand('setContext', 'java.projects', projectPaths); + } catch (error) { + logger.error(error); + } commands.executeCommand('setContext', 'javaLSReady', true); break; case 'Started':