Skip to content

Commit 43676c6

Browse files
committed
Factor out helper functions in NextflowLanguageServer
Signed-off-by: Ben Sherman <[email protected]>
1 parent 16839b1 commit 43676c6

File tree

1 file changed

+46
-40
lines changed

1 file changed

+46
-40
lines changed

src/main/java/nextflow/lsp/NextflowLanguageServer.java

+46-40
Original file line numberDiff line numberDiff line change
@@ -140,42 +140,45 @@ public CompletableFuture<InitializeResult> initialize(InitializeParams params) {
140140
}
141141
}
142142

143-
var serverCapabilities = new ServerCapabilities();
144-
serverCapabilities.setTextDocumentSync(TextDocumentSyncKind.Incremental);
143+
var initializeResult = new InitializeResult(serverCapabilities());
144+
return CompletableFuture.completedFuture(initializeResult);
145+
}
146+
147+
private static ServerCapabilities serverCapabilities() {
148+
var result = new ServerCapabilities();
149+
result.setTextDocumentSync(TextDocumentSyncKind.Incremental);
145150

146151
var workspaceFoldersOptions = new WorkspaceFoldersOptions();
147152
workspaceFoldersOptions.setSupported(true);
148153
workspaceFoldersOptions.setChangeNotifications(true);
149154
var workspaceCapabilities = new WorkspaceServerCapabilities(workspaceFoldersOptions);
150-
serverCapabilities.setWorkspace(workspaceCapabilities);
155+
result.setWorkspace(workspaceCapabilities);
151156

152-
serverCapabilities.setCallHierarchyProvider(true);
157+
result.setCallHierarchyProvider(true);
153158
var codeLensOptions = new CodeLensOptions(false);
154-
serverCapabilities.setCodeLensProvider(codeLensOptions);
159+
result.setCodeLensProvider(codeLensOptions);
155160
var completionOptions = new CompletionOptions(false, List.of("."));
156-
serverCapabilities.setCompletionProvider(completionOptions);
157-
serverCapabilities.setDefinitionProvider(true);
158-
serverCapabilities.setDocumentFormattingProvider(true);
161+
result.setCompletionProvider(completionOptions);
162+
result.setDefinitionProvider(true);
163+
result.setDocumentFormattingProvider(true);
159164
var documentLinkOptions = new DocumentLinkOptions(false);
160-
serverCapabilities.setDocumentLinkProvider(documentLinkOptions);
161-
serverCapabilities.setDocumentSymbolProvider(true);
165+
result.setDocumentLinkProvider(documentLinkOptions);
166+
result.setDocumentSymbolProvider(true);
162167
var executeCommandOptions = new ExecuteCommandOptions(List.of("nextflow.server.previewDag"));
163-
serverCapabilities.setExecuteCommandProvider(executeCommandOptions);
164-
serverCapabilities.setHoverProvider(true);
165-
serverCapabilities.setReferencesProvider(true);
168+
result.setExecuteCommandProvider(executeCommandOptions);
169+
result.setHoverProvider(true);
170+
result.setReferencesProvider(true);
166171
var semanticTokensOptions = new SemanticTokensWithRegistrationOptions(
167172
new SemanticTokensLegend(
168173
SemanticTokensVisitor.TOKEN_TYPES,
169174
Collections.emptyList()
170175
),
171176
true,
172177
false);
173-
serverCapabilities.setSemanticTokensProvider(semanticTokensOptions);
174-
serverCapabilities.setRenameProvider(true);
175-
serverCapabilities.setWorkspaceSymbolProvider(true);
176-
177-
var initializeResult = new InitializeResult(serverCapabilities);
178-
return CompletableFuture.completedFuture(initializeResult);
178+
result.setSemanticTokensProvider(semanticTokensOptions);
179+
result.setRenameProvider(true);
180+
result.setWorkspaceSymbolProvider(true);
181+
return result;
179182
}
180183

181184
@Override
@@ -453,27 +456,8 @@ public void didChangeConfiguration(DidChangeConfigurationParams params) {
453456
withDefault(JsonUtils.getBoolean(settings, "nextflow.typeChecking"), configuration.typeChecking())
454457
);
455458

456-
if( shouldInitialize(oldConfiguration, configuration) ) {
457-
var progress = new ProgressNotification(client, "initialize");
458-
progress.create();
459-
progress.begin("Initializing workspace...");
460-
461-
var count = 0;
462-
var total = workspaceRoots.keySet().size() - 1;
463-
for( var name : workspaceRoots.keySet() ) {
464-
if( DEFAULT_WORKSPACE_FOLDER_NAME.equals(name) )
465-
continue;
466-
var progressMessage = String.format("Initializing workspace: %s (%d / %d)", name, count + 1, total);
467-
progress.update(progressMessage, count * 100 / total);
468-
count++;
469-
470-
var uri = workspaceRoots.get(name);
471-
scriptServices.get(name).initialize(uri, configuration);
472-
configServices.get(name).initialize(uri, configuration);
473-
}
474-
475-
progress.end();
476-
}
459+
if( shouldInitialize(oldConfiguration, configuration) )
460+
initializeWorkspaces();
477461
}
478462

479463
private ErrorReportingMode errorReportingMode(Object settings) {
@@ -493,6 +477,28 @@ private boolean shouldInitialize(LanguageServerConfiguration previous, LanguageS
493477
|| previous.typeChecking() != current.typeChecking();
494478
}
495479

480+
private void initializeWorkspaces() {
481+
var progress = new ProgressNotification(client, "initialize");
482+
progress.create();
483+
progress.begin("Initializing workspace...");
484+
485+
var count = 0;
486+
var total = workspaceRoots.keySet().size() - 1;
487+
for( var name : workspaceRoots.keySet() ) {
488+
if( DEFAULT_WORKSPACE_FOLDER_NAME.equals(name) )
489+
continue;
490+
var progressMessage = String.format("Initializing workspace: %s (%d / %d)", name, count + 1, total);
491+
progress.update(progressMessage, count * 100 / total);
492+
count++;
493+
494+
var uri = workspaceRoots.get(name);
495+
scriptServices.get(name).initialize(uri, configuration);
496+
configServices.get(name).initialize(uri, configuration);
497+
}
498+
499+
progress.end();
500+
}
501+
496502
@Override
497503
public void didChangeWatchedFiles(DidChangeWatchedFilesParams params) {
498504
log.debug("workspace/didChangeWatchedFiles " + params);

0 commit comments

Comments
 (0)