Support add/remove classpath listener at runtime
This commit is contained in:
@@ -1,18 +1,25 @@
|
||||
'use strict';
|
||||
|
||||
|
||||
import * as VSCode from 'vscode';
|
||||
import { RequestType } from 'vscode-languageclient';
|
||||
import { LanguageClient } from 'vscode-languageclient/node';
|
||||
import { workspace } from 'vscode';
|
||||
|
||||
const JDT_SERVER_STANDARD_MODE = 'Standard'
|
||||
const CMD_STS_ENABLE_CLASSPATH_LISTENER = 'sts.vscode-spring-boot.enableClasspathListening';
|
||||
|
||||
export function registerClasspathService(client : LanguageClient) : void {
|
||||
|
||||
const javaExt = VSCode.extensions.getExtension('redhat.java');
|
||||
const javaApi = javaExt?.exports;
|
||||
|
||||
if (javaApi) {
|
||||
VSCode.commands.executeCommand(CMD_STS_ENABLE_CLASSPATH_LISTENER, javaApi.serverMode === JDT_SERVER_STANDARD_MODE);
|
||||
javaApi.onDidServerModeChange(e => VSCode.commands.executeCommand(CMD_STS_ENABLE_CLASSPATH_LISTENER, javaApi.serverMode === JDT_SERVER_STANDARD_MODE));
|
||||
}
|
||||
|
||||
let addRequest = new RequestType<ClasspathListenerParams, ClasspathListenerResponse, void>("sts/addClasspathListener");
|
||||
client.onRequest(addRequest, async (params: ClasspathListenerParams) => {
|
||||
const jdtConfig = workspace.getConfiguration('java')
|
||||
const launchMode = jdtConfig?.get('server.launchMode');
|
||||
if (launchMode === 'LightWeight') {
|
||||
if (javaApi?.serverMode === 'LightWeight') {
|
||||
throw new Error('Classpath listener not supported while Java Language Server is in LightWeight mode');
|
||||
}
|
||||
return <ClasspathListenerResponse> await VSCode.commands.executeCommand("java.execute.workspaceCommand", "sts.java.addClasspathListener", params.callbackCommandId);
|
||||
|
||||
Reference in New Issue
Block a user