Fix upgrade/refactor dialog popping up more than once

This commit is contained in:
aboyko
2024-05-01 11:11:50 -04:00
parent 4ca41cf0e0
commit 71bcc7a580
2 changed files with 10 additions and 2 deletions

View File

@@ -28,6 +28,7 @@ import org.eclipse.jface.window.Window;
import org.eclipse.lsp4e.LanguageServers;
import org.eclipse.lsp4e.LanguageServersRegistry;
import org.eclipse.lsp4e.LanguageServersRegistry.LanguageServerDefinition;
import org.eclipse.lsp4j.ExecuteCommandOptions;
import org.eclipse.lsp4j.ExecuteCommandParams;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.PlatformUI;
@@ -86,7 +87,10 @@ public class RewriteRefactoringsHandler extends AbstractHandler {
try {
LanguageServers.forProject(project).withPreferredServer(def).computeFirst(ls -> {
LanguageServers.forProject(project).withPreferredServer(def).withFilter(c -> {
ExecuteCommandOptions commandProvider = c.getExecuteCommandProvider();
return commandProvider != null && commandProvider.getCommands().contains(REWRITE_REFACTORINGS_EXEC);
}).computeFirst(ls -> {
PlatformUI.getWorkbench().getDisplay().asyncExec(() -> {
RecipeTreeModel recipesModel = new RecipeTreeModel(ls.getWorkspaceService(), recipeFilter.toString());

View File

@@ -27,7 +27,11 @@ public final class JpqlSupportState {
this.server = server;
this.enabled = enabled;
config.addListener(v -> setEnabled(config.isJpqlEnabled()));
projectObserver.addListener(ProjectObserver.onAny(jp -> server.getAsync().execute(() -> server.getClient().refreshSemanticTokens())));
projectObserver.addListener(ProjectObserver.onAny(jp -> {
if (enabled && server.getWorkspaceService().supportsSemanticTokensRefresh()) {
server.getAsync().execute(() -> server.getClient().refreshSemanticTokens());
}
}));
}
public synchronized boolean isEnabled() {