register workspace folder support with initial server capabilities to avoid race conditions on the client

This commit is contained in:
Martin Lippert
2018-02-15 13:18:13 +01:00
parent 07012ef269
commit 88f42ae6c2

View File

@@ -17,6 +17,7 @@ import java.util.Collection;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.Callable;
import java.util.concurrent.CompletableFuture;
import java.util.function.Consumer;
@@ -38,6 +39,8 @@ import org.eclipse.lsp4j.ServerCapabilities;
import org.eclipse.lsp4j.TextDocumentIdentifier;
import org.eclipse.lsp4j.TextDocumentSyncKind;
import org.eclipse.lsp4j.WorkspaceFolder;
import org.eclipse.lsp4j.WorkspaceFoldersOptions;
import org.eclipse.lsp4j.WorkspaceServerCapabilities;
import org.eclipse.lsp4j.services.LanguageClient;
import org.eclipse.lsp4j.services.LanguageClientAware;
import org.springframework.ide.vscode.commons.languageserver.DiagnosticService;
@@ -77,6 +80,7 @@ import reactor.core.scheduler.Schedulers;
*/
public class SimpleLanguageServer implements Sts4LanguageServer, LanguageClientAware, ServiceNotificationsClient, SimpleLanguageServerWrapper {
private static final String WORKSPACE_FOLDERS_CAPABILITY_ID = UUID.randomUUID().toString();
private static final Scheduler RECONCILER_SCHEDULER = Schedulers.newSingle("Reconciler");
public final String EXTENSION_ID;
@@ -333,6 +337,15 @@ public class SimpleLanguageServer implements Sts4LanguageServer, LanguageClientA
c.setWorkspaceSymbolProvider(true);
}
WorkspaceFoldersOptions workspaceFoldersOptions = new WorkspaceFoldersOptions();
workspaceFoldersOptions.setSupported(true);
workspaceFoldersOptions.setChangeNotifications(WORKSPACE_FOLDERS_CAPABILITY_ID);
WorkspaceServerCapabilities workspaceServerCapabilities = new WorkspaceServerCapabilities();
workspaceServerCapabilities.setWorkspaceFolders(workspaceFoldersOptions);
c.setWorkspace(workspaceServerCapabilities);
return c;
}