diff --git a/eclipse-extensions/org.springframework.ide.eclipse.buildship30/build.properties b/eclipse-extensions/org.springframework.ide.eclipse.buildship30/build.properties index 0d14f69c7..838aa15a1 100644 --- a/eclipse-extensions/org.springframework.ide.eclipse.buildship30/build.properties +++ b/eclipse-extensions/org.springframework.ide.eclipse.buildship30/build.properties @@ -1,5 +1,7 @@ +source.. = src/ output.. = bin/ bin.includes = META-INF/,\ + .,\ plugin.properties,\ plugin.xml,\ about.html diff --git a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleLanguageServer.java b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleLanguageServer.java index 289846119..2c4932eaf 100644 --- a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleLanguageServer.java +++ b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleLanguageServer.java @@ -386,6 +386,7 @@ public final class SimpleLanguageServer implements Sts4LanguageServer, SpringInd log.debug("hasExecuteCommandSupport = "+hasExecuteCommandSupport); getTextDocumentService().clientCapabilities = params.getCapabilities().getTextDocument(); + getWorkspaceService().clientCapabilities = params.getCapabilities().getWorkspace(); InitializeResult result = new InitializeResult(); diff --git a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleWorkspaceService.java b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleWorkspaceService.java index fa7e067b7..c175e105f 100644 --- a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleWorkspaceService.java +++ b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleWorkspaceService.java @@ -28,7 +28,9 @@ import org.eclipse.lsp4j.DidChangeWorkspaceFoldersParams; import org.eclipse.lsp4j.ExecuteCommandParams; import org.eclipse.lsp4j.FileChangeType; import org.eclipse.lsp4j.FileEvent; +import org.eclipse.lsp4j.SemanticTokensWorkspaceCapabilities; import org.eclipse.lsp4j.SymbolInformation; +import org.eclipse.lsp4j.WorkspaceClientCapabilities; import org.eclipse.lsp4j.WorkspaceFolder; import org.eclipse.lsp4j.WorkspaceFoldersChangeEvent; import org.eclipse.lsp4j.WorkspaceSymbol; @@ -61,6 +63,7 @@ public class SimpleWorkspaceService implements WorkspaceService { private ListenerList workspaceFolderListeners = new ListenerList<>(); + WorkspaceClientCapabilities clientCapabilities; public SimpleWorkspaceService(SimpleLanguageServer server) { this.fileObserver = new SimpleServerFileObserver(server); @@ -191,5 +194,15 @@ public class SimpleWorkspaceService implements WorkspaceService { workspaceRoots.addAll(workspaceFolders); log.debug("workspaceFolders = {}", workspaceFolders); } + + public boolean supportsSemanticTokensRefresh() { + if (clientCapabilities != null) { + SemanticTokensWorkspaceCapabilities semanticTokensCapability = clientCapabilities.getSemanticTokens(); + if (semanticTokensCapability != null) { + return semanticTokensCapability.getRefreshSupport() != null && semanticTokensCapability.getRefreshSupport().booleanValue(); + } + } + return false; + } } diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/JpqlSupportState.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/JpqlSupportState.java index 6a91d0496..eaf856ff3 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/JpqlSupportState.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/JpqlSupportState.java @@ -37,7 +37,9 @@ public final class JpqlSupportState { private synchronized void setEnabled(boolean enabled) { if (this.enabled != enabled) { this.enabled = enabled; - server.getAsync().execute(() -> server.getClient().refreshSemanticTokens()); + if (server.getWorkspaceService().supportsSemanticTokensRefresh()) { + server.getAsync().execute(() -> server.getClient().refreshSemanticTokens()); + } } } }