Skip to content

Commit 5d55506

Browse files
committed
Add extension setting to toggle extended completions
Signed-off-by: Ben Sherman <bentshermann@gmail.com>
1 parent 1a5f25c commit 5d55506

File tree

6 files changed

+17
-11
lines changed

6 files changed

+17
-11
lines changed

modules/language-server/src/main/java/nextflow/lsp/NextflowLanguageServer.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ public CompletableFuture<Either<List<CompletionItem>, CompletionList>> completio
318318
var service = getLanguageService(uri);
319319
if( service == null )
320320
return Either.forLeft(Collections.emptyList());
321-
return service.completion(params);
321+
return service.completion(params, configuration.extendedCompletion());
322322
});
323323
}
324324

@@ -449,6 +449,7 @@ public void didChangeConfiguration(DidChangeConfigurationParams params) {
449449
var excludePatterns = getJsonStringArray(params.getSettings(), "nextflow.files.exclude");
450450
if( !DefaultGroovyMethods.equals(configuration.excludePatterns(), excludePatterns) )
451451
shouldInitialize = true;
452+
var extendedCompletion = getJsonBoolean(params.getSettings(), "nextflow.extendedCompletion");
452453
var harshilAlignment = getJsonBoolean(params.getSettings(), "nextflow.formatting.harshilAlignment");
453454
var maheshForm = getJsonBoolean(params.getSettings(), "nextflow.formatting.maheshForm");
454455
var paranoidWarnings = getJsonBoolean(params.getSettings(), "nextflow.paranoidWarnings");
@@ -460,6 +461,7 @@ public void didChangeConfiguration(DidChangeConfigurationParams params) {
460461

461462
configuration = new LanguageServerConfiguration(
462463
excludePatterns,
464+
extendedCompletion != null ? extendedCompletion : configuration.extendedCompletion(),
463465
harshilAlignment != null ? harshilAlignment : configuration.harshilAlignment(),
464466
maheshForm != null ? maheshForm : configuration.maheshForm(),
465467
paranoidWarnings != null ? paranoidWarnings : configuration.paranoidWarnings(),

modules/language-server/src/main/java/nextflow/lsp/services/LanguageServerConfiguration.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
public record LanguageServerConfiguration(
2222
List<String> excludePatterns,
23+
boolean extendedCompletion,
2324
boolean harshilAlignment,
2425
boolean maheshForm,
2526
boolean paranoidWarnings,
@@ -29,6 +30,7 @@ public record LanguageServerConfiguration(
2930
public static LanguageServerConfiguration defaults() {
3031
return new LanguageServerConfiguration(
3132
Collections.emptyList(),
33+
true,
3234
false,
3335
false,
3436
false,

modules/language-server/src/main/java/nextflow/lsp/services/LanguageService.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ public LanguageService() {
110110
protected abstract ASTNodeCache getAstCache();
111111
protected CallHierarchyProvider getCallHierarchyProvider() { return null; }
112112
protected CodeLensProvider getCodeLensProvider() { return null; }
113-
protected CompletionProvider getCompletionProvider() { return null; }
113+
protected CompletionProvider getCompletionProvider(boolean extendedCompletion) { return null; }
114114
protected DefinitionProvider getDefinitionProvider() { return null; }
115115
protected FormattingProvider getFormattingProvider() { return null; }
116116
protected HoverProvider getHoverProvider() { return null; }
@@ -225,8 +225,8 @@ public List<CodeLens> codeLens(CodeLensParams params) {
225225
return provider.codeLens(params.getTextDocument());
226226
}
227227

228-
public Either<List<CompletionItem>, CompletionList> completion(CompletionParams params) {
229-
var provider = getCompletionProvider();
228+
public Either<List<CompletionItem>, CompletionList> completion(CompletionParams params, boolean extendedCompletion) {
229+
var provider = getCompletionProvider(extendedCompletion);
230230
if( provider == null )
231231
return Either.forLeft(Collections.emptyList());
232232

modules/language-server/src/main/java/nextflow/lsp/services/config/ConfigService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ protected ASTNodeCache getAstCache() {
5252
}
5353

5454
@Override
55-
protected CompletionProvider getCompletionProvider() {
55+
protected CompletionProvider getCompletionProvider(boolean extendedCompletion) {
5656
return new ConfigCompletionProvider(astCache);
5757
}
5858

modules/language-server/src/main/java/nextflow/lsp/services/script/ScriptCompletionProvider.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,12 +87,14 @@ public class ScriptCompletionProvider implements CompletionProvider {
8787
private static Logger log = Logger.getInstance();
8888

8989
private ScriptAstCache ast;
90+
private boolean extendedCompletion;
9091
private URI uri;
9192
private int maxItemCount = 100;
9293
private boolean isIncomplete = false;
9394

94-
public ScriptCompletionProvider(ScriptAstCache ast) {
95+
public ScriptCompletionProvider(ScriptAstCache ast, boolean extendedCompletion) {
9596
this.ast = ast;
97+
this.extendedCompletion = extendedCompletion;
9698
}
9799

98100
@Override
@@ -257,17 +259,17 @@ private void populateItemsFromScope(ASTNode node, String namePrefix, ASTNode top
257259
populateItemsFromDslScope(scope.getClassScope(), namePrefix, items);
258260
scope = scope.getParent();
259261
}
262+
populateTypes(namePrefix, items);
260263

264+
if( !extendedCompletion )
265+
return;
261266
if( topNode instanceof FunctionNode || topNode instanceof ProcessNode || topNode instanceof OutputNode )
262267
populateExternalFunctions(namePrefix, items);
263-
264268
if( topNode instanceof WorkflowNode ) {
265269
populateExternalFunctions(namePrefix, items);
266270
populateExternalProcesses(namePrefix, items);
267271
populateExternalWorkflows(namePrefix, items);
268272
}
269-
270-
populateTypes(namePrefix, items);
271273
}
272274

273275
private void populateLocalVariables(VariableScope scope, String namePrefix, List<CompletionItem> items) {

modules/language-server/src/main/java/nextflow/lsp/services/script/ScriptService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ protected CodeLensProvider getCodeLensProvider() {
7171
}
7272

7373
@Override
74-
protected CompletionProvider getCompletionProvider() {
75-
return new ScriptCompletionProvider(astCache);
74+
protected CompletionProvider getCompletionProvider(boolean extendedCompletion) {
75+
return new ScriptCompletionProvider(astCache, extendedCompletion);
7676
}
7777

7878
@Override

0 commit comments

Comments
 (0)