System property to disable lazy completion items
This commit is contained in:
@@ -58,7 +58,7 @@ public class BootJavaLanguageServer extends SimpleLanguageServer {
|
||||
});
|
||||
|
||||
ICompletionEngine bootCompletionEngine = new BootJavaCompletionEngine(javaProjectFinder, indexProvider);
|
||||
completionEngine = new VscodeCompletionEngineAdapter(this, bootCompletionEngine);
|
||||
completionEngine = createCompletionEngineAdapter(this, bootCompletionEngine);
|
||||
completionEngine.setMaxCompletions(100);
|
||||
documents.onCompletion(completionEngine::getCompletions);
|
||||
documents.onCompletionResolve(completionEngine::resolveCompletion);
|
||||
|
||||
@@ -112,7 +112,7 @@ public class BootPropertiesLanguageServer extends SimpleLanguageServer {
|
||||
});
|
||||
|
||||
ICompletionEngine propertiesCompletionEngine = getCompletionEngine();
|
||||
completionEngine = new VscodeCompletionEngineAdapter(this, propertiesCompletionEngine);
|
||||
completionEngine = createCompletionEngineAdapter(this, propertiesCompletionEngine);
|
||||
completionEngine.setMaxCompletions(100);
|
||||
documents.onCompletion(completionEngine::getCompletions);
|
||||
documents.onCompletionResolve(completionEngine::resolveCompletion);
|
||||
|
||||
@@ -13,7 +13,6 @@ package org.springframework.ide.vscode.bosh;
|
||||
import org.springframework.ide.vscode.bosh.models.CloudConfigModel;
|
||||
import org.springframework.ide.vscode.bosh.models.DynamicModelProvider;
|
||||
import org.springframework.ide.vscode.commons.languageserver.completion.VscodeCompletionEngineAdapter;
|
||||
import org.springframework.ide.vscode.commons.languageserver.completion.VscodeCompletionEngineAdapter.LazyCompletionResolver;
|
||||
import org.springframework.ide.vscode.commons.languageserver.hover.HoverInfoProvider;
|
||||
import org.springframework.ide.vscode.commons.languageserver.hover.VscodeHoverEngine;
|
||||
import org.springframework.ide.vscode.commons.languageserver.hover.VscodeHoverEngineAdapter;
|
||||
@@ -36,7 +35,6 @@ import org.springframework.ide.vscode.commons.yaml.structure.YamlStructureProvid
|
||||
|
||||
public class BoshLanguageServer extends SimpleLanguageServer {
|
||||
|
||||
private final LazyCompletionResolver completionResolver = new LazyCompletionResolver(); //Set to null to disable lazy resolving
|
||||
private final VscodeCompletionEngineAdapter completionEngine;
|
||||
|
||||
public BoshLanguageServer(DynamicModelProvider<CloudConfigModel> cloudConfigProvider) {
|
||||
@@ -50,8 +48,7 @@ public class BoshLanguageServer extends SimpleLanguageServer {
|
||||
YamlStructureProvider structureProvider = YamlStructureProvider.DEFAULT;
|
||||
YamlAssistContextProvider contextProvider = new SchemaBasedYamlAssistContextProvider(schema);
|
||||
YamlCompletionEngine yamlCompletionEngine = new YamlCompletionEngine(structureProvider, contextProvider, YamlCompletionEngineOptions.DEFAULT);
|
||||
completionEngine = new VscodeCompletionEngineAdapter(this, yamlCompletionEngine);
|
||||
completionEngine.setLazyCompletionResolver(completionResolver);
|
||||
completionEngine = createCompletionEngineAdapter(this, yamlCompletionEngine);
|
||||
HoverInfoProvider infoProvider = new YamlHoverInfoProvider(asts.getAstProvider(true), structureProvider, contextProvider);
|
||||
VscodeHoverEngine hoverEngine = new VscodeHoverEngineAdapter(this, infoProvider);
|
||||
YamlQuickfixes quickfixes = new YamlQuickfixes(getQuickfixRegistry(), getTextDocumentService(), structureProvider);
|
||||
@@ -68,6 +65,7 @@ public class BoshLanguageServer extends SimpleLanguageServer {
|
||||
documents.onDefinition(new BoshDefintionFinder(this, schema, asts, astTypeCache));
|
||||
}
|
||||
|
||||
|
||||
private void validateOnDocumentChange(IReconcileEngine engine, TextDocument doc) {
|
||||
if (LanguageId.BOSH_DEPLOYMENT.equals(doc.getLanguageId())) {
|
||||
validateWith(doc.getId(), engine);
|
||||
@@ -76,11 +74,6 @@ public class BoshLanguageServer extends SimpleLanguageServer {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasLazyCompletionResolver() {
|
||||
return completionResolver!=null;
|
||||
}
|
||||
|
||||
public BoshLanguageServer setMaxCompletions(int maxCompletions) {
|
||||
completionEngine.setMaxCompletions(maxCompletions);
|
||||
return this;
|
||||
|
||||
@@ -72,6 +72,7 @@ public class VscodeCompletionEngineAdapter implements VscodeCompletionEngine {
|
||||
if (id!=null) {
|
||||
Consumer<CompletionItem> resolver = resolvers.get(id);
|
||||
if (resolver!=null) {
|
||||
Log.info("Resolving lazy completion item: "+unresolved.getLabel());
|
||||
resolver.accept(unresolved);
|
||||
unresolved.setData(null); //No longer needed after item is resolved.
|
||||
} else {
|
||||
@@ -91,12 +92,7 @@ public class VscodeCompletionEngineAdapter implements VscodeCompletionEngine {
|
||||
|
||||
private SimpleLanguageServer server;
|
||||
private ICompletionEngine engine;
|
||||
private LazyCompletionResolver resolver = null;
|
||||
|
||||
public VscodeCompletionEngineAdapter(SimpleLanguageServer server, ICompletionEngine engine) {
|
||||
this.server = server;
|
||||
this.engine = engine;
|
||||
}
|
||||
private final LazyCompletionResolver resolver;
|
||||
|
||||
/**
|
||||
* By setting a non-null {@link LazyCompletionResolver} you can enable lazy completion resolution.
|
||||
@@ -105,7 +101,9 @@ public class VscodeCompletionEngineAdapter implements VscodeCompletionEngine {
|
||||
* The resolver is injected rather than created locally to allow sharing it between multiple
|
||||
* engines.
|
||||
*/
|
||||
public void setLazyCompletionResolver(LazyCompletionResolver resolver) {
|
||||
public VscodeCompletionEngineAdapter(SimpleLanguageServer server, ICompletionEngine engine, LazyCompletionResolver resolver) {
|
||||
this.server = server;
|
||||
this.engine = engine;
|
||||
this.resolver = resolver;
|
||||
}
|
||||
|
||||
|
||||
@@ -39,6 +39,9 @@ import org.eclipse.lsp4j.services.LanguageServer;
|
||||
import org.springframework.ide.vscode.commons.languageserver.ProgressParams;
|
||||
import org.springframework.ide.vscode.commons.languageserver.ProgressService;
|
||||
import org.springframework.ide.vscode.commons.languageserver.STS4LanguageClient;
|
||||
import org.springframework.ide.vscode.commons.languageserver.completion.ICompletionEngine;
|
||||
import org.springframework.ide.vscode.commons.languageserver.completion.VscodeCompletionEngineAdapter;
|
||||
import org.springframework.ide.vscode.commons.languageserver.completion.VscodeCompletionEngineAdapter.LazyCompletionResolver;
|
||||
import org.springframework.ide.vscode.commons.languageserver.quickfix.Quickfix;
|
||||
import org.springframework.ide.vscode.commons.languageserver.quickfix.Quickfix.QuickfixData;
|
||||
import org.springframework.ide.vscode.commons.languageserver.quickfix.QuickfixEdit;
|
||||
@@ -72,6 +75,7 @@ public abstract class SimpleLanguageServer implements LanguageServer, LanguageCl
|
||||
|
||||
public final String EXTENSION_ID;
|
||||
private final String CODE_ACTION_COMMAND_ID;
|
||||
protected final LazyCompletionResolver completionResolver = createCompletionResolver();
|
||||
|
||||
private Path workspaceRoot;
|
||||
|
||||
@@ -103,6 +107,17 @@ public abstract class SimpleLanguageServer implements LanguageServer, LanguageCl
|
||||
this.client = (STS4LanguageClient) _client;
|
||||
}
|
||||
|
||||
protected VscodeCompletionEngineAdapter createCompletionEngineAdapter(SimpleLanguageServer server, ICompletionEngine engine) {
|
||||
return new VscodeCompletionEngineAdapter(server, engine, completionResolver);
|
||||
}
|
||||
|
||||
protected LazyCompletionResolver createCompletionResolver() {
|
||||
if (!Boolean.getBoolean("lsp.lazy.completions.disable")) {
|
||||
return new LazyCompletionResolver();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
protected synchronized QuickfixRegistry getQuickfixRegistry() {
|
||||
if (quickfixRegistry==null) {
|
||||
quickfixRegistry = new QuickfixRegistry();
|
||||
@@ -233,8 +248,8 @@ public abstract class SimpleLanguageServer implements LanguageServer, LanguageCl
|
||||
return c;
|
||||
}
|
||||
|
||||
public boolean hasLazyCompletionResolver() {
|
||||
return false;
|
||||
public final boolean hasLazyCompletionResolver() {
|
||||
return completionResolver!=null;
|
||||
}
|
||||
|
||||
private boolean hasDocumentSymbolHandler() {
|
||||
|
||||
@@ -16,7 +16,6 @@ import java.util.concurrent.CompletableFuture;
|
||||
import org.eclipse.lsp4j.CompletionList;
|
||||
import org.eclipse.lsp4j.DiagnosticSeverity;
|
||||
import org.springframework.ide.vscode.commons.languageserver.completion.VscodeCompletionEngineAdapter;
|
||||
import org.springframework.ide.vscode.commons.languageserver.completion.VscodeCompletionEngineAdapter.LazyCompletionResolver;
|
||||
import org.springframework.ide.vscode.commons.languageserver.hover.HoverInfoProvider;
|
||||
import org.springframework.ide.vscode.commons.languageserver.hover.VscodeHoverEngineAdapter;
|
||||
import org.springframework.ide.vscode.commons.languageserver.reconcile.IReconcileEngine;
|
||||
@@ -53,7 +52,6 @@ public class ConcourseLanguageServer extends SimpleLanguageServer {
|
||||
private SchemaSpecificPieces forPipelines;
|
||||
private SchemaSpecificPieces forTasks;
|
||||
private final YamlQuickfixes yamlQuickfixes;
|
||||
private final LazyCompletionResolver completionResolver = new LazyCompletionResolver(); //Set this to null to disable lazy completion resolving
|
||||
|
||||
private class SchemaSpecificPieces {
|
||||
|
||||
@@ -65,8 +63,7 @@ public class ConcourseLanguageServer extends SimpleLanguageServer {
|
||||
SchemaSpecificPieces(YamlSchema schema, List<YType> definitionTypes) {
|
||||
SchemaBasedYamlAssistContextProvider contextProvider = new SchemaBasedYamlAssistContextProvider(schema);
|
||||
YamlCompletionEngine yamlCompletionEngine = new YamlCompletionEngine(structureProvider, contextProvider, COMPLETION_OPTIONS);
|
||||
this.completionEngine = new VscodeCompletionEngineAdapter(ConcourseLanguageServer.this, yamlCompletionEngine);
|
||||
this.completionEngine.setLazyCompletionResolver(completionResolver);
|
||||
this.completionEngine = createCompletionEngineAdapter(ConcourseLanguageServer.this, yamlCompletionEngine);
|
||||
|
||||
HoverInfoProvider infoProvider = new YamlHoverInfoProvider(currentAsts, structureProvider, contextProvider);
|
||||
this.hoverEngine = new VscodeHoverEngineAdapter(ConcourseLanguageServer.this, infoProvider);
|
||||
@@ -84,11 +81,6 @@ public class ConcourseLanguageServer extends SimpleLanguageServer {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasLazyCompletionResolver() {
|
||||
return completionResolver!=null;
|
||||
}
|
||||
|
||||
public ConcourseLanguageServer(YamlCompletionEngineOptions completionOptions) {
|
||||
super("vscode-concourse");
|
||||
this.COMPLETION_OPTIONS = completionOptions;
|
||||
|
||||
@@ -31,7 +31,6 @@ import org.springframework.ide.vscode.commons.cloudfoundry.client.cftarget.Clien
|
||||
import org.springframework.ide.vscode.commons.cloudfoundry.client.cftarget.NoTargetsException;
|
||||
import org.springframework.ide.vscode.commons.cloudfoundry.client.v2.DefaultCloudFoundryClientFactoryV2;
|
||||
import org.springframework.ide.vscode.commons.languageserver.completion.VscodeCompletionEngineAdapter;
|
||||
import org.springframework.ide.vscode.commons.languageserver.completion.VscodeCompletionEngineAdapter.LazyCompletionResolver;
|
||||
import org.springframework.ide.vscode.commons.languageserver.hover.HoverInfoProvider;
|
||||
import org.springframework.ide.vscode.commons.languageserver.hover.VscodeHoverEngine;
|
||||
import org.springframework.ide.vscode.commons.languageserver.hover.VscodeHoverEngineAdapter;
|
||||
@@ -65,7 +64,6 @@ public class ManifestYamlLanguageServer extends SimpleLanguageServer {
|
||||
private CFTargetCache cfTargetCache;
|
||||
private final CloudFoundryClientFactory cfClientFactory;
|
||||
private final CfClientConfig cfClientConfig;
|
||||
private final LazyCompletionResolver completionResolver = new LazyCompletionResolver(); //Set to null to disable lazy resolving
|
||||
|
||||
private final ImmutableSet<LanguageId> FALLBACK_YML_IDS = ImmutableSet.of(LanguageId.of("yml"), LanguageId.of("yaml"));
|
||||
final private ClientParamsProvider defaultClientParamsProvider;
|
||||
@@ -89,8 +87,7 @@ public class ManifestYamlLanguageServer extends SimpleLanguageServer {
|
||||
YamlStructureProvider structureProvider = YamlStructureProvider.DEFAULT;
|
||||
YamlAssistContextProvider contextProvider = new SchemaBasedYamlAssistContextProvider(schema);
|
||||
YamlCompletionEngine yamlCompletionEngine = new YamlCompletionEngine(structureProvider, contextProvider, YamlCompletionEngineOptions.DEFAULT);
|
||||
VscodeCompletionEngineAdapter completionEngine = new VscodeCompletionEngineAdapter(this, yamlCompletionEngine);
|
||||
completionEngine.setLazyCompletionResolver(completionResolver);
|
||||
VscodeCompletionEngineAdapter completionEngine = createCompletionEngineAdapter(this, yamlCompletionEngine);
|
||||
HoverInfoProvider infoProvider = new YamlHoverInfoProvider(parser, structureProvider, contextProvider);
|
||||
VscodeHoverEngine hoverEngine = new VscodeHoverEngineAdapter(this, infoProvider);
|
||||
YamlQuickfixes quickfixes = new YamlQuickfixes(getQuickfixRegistry(), getTextDocumentService(), structureProvider);
|
||||
@@ -222,11 +219,6 @@ public class ManifestYamlLanguageServer extends SimpleLanguageServer {
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasLazyCompletionResolver() {
|
||||
return completionResolver!=null;
|
||||
}
|
||||
|
||||
private CFTargetCache getCfTargetCache() {
|
||||
if (cfTargetCache == null) {
|
||||
// Init CF client params provider if it's initilized
|
||||
|
||||
Reference in New Issue
Block a user