disable XML content-assist if overall XML support is disabled via user configuration

This commit is contained in:
Martin Lippert
2019-05-03 13:09:00 +02:00
parent e94ed2c21b
commit db780c0479
4 changed files with 24 additions and 4 deletions

View File

@@ -24,6 +24,8 @@ import org.eclipse.jface.text.contentassist.IContextInformation;
import org.eclipse.lsp4e.operations.completion.LSContentAssistProcessor;
import org.eclipse.wst.sse.ui.contentassist.CompletionProposalInvocationContext;
import org.eclipse.wst.sse.ui.contentassist.IAsyncCompletionProposalComputer;
import org.springframework.tooling.boot.ls.BootLanguageServerPlugin;
import org.springframework.tooling.boot.ls.Constants;
/**
* @author Martin Lippert
@@ -42,6 +44,10 @@ public class XMLContentAssistProposalComputer implements IAsyncCompletionProposa
@Override
public List<ICompletionProposal> computeCompletionProposals(CompletionProposalInvocationContext context, IProgressMonitor monitor) {
if (!BootLanguageServerPlugin.getDefault().getPreferenceStore().getBoolean(Constants.PREF_SUPPORT_SPRING_XML_CONFIGS)) {
return Collections.emptyList();
}
CompletableFuture<ICompletionProposal[]> future = CompletableFuture.supplyAsync(() -> {
return lsContentAssistProcessor.computeCompletionProposals(context.getViewer(), context.getInvocationOffset());
});
@@ -56,6 +62,10 @@ public class XMLContentAssistProposalComputer implements IAsyncCompletionProposa
@Override
public List<IContextInformation> computeContextInformation(CompletionProposalInvocationContext context, IProgressMonitor monitor) {
if (!BootLanguageServerPlugin.getDefault().getPreferenceStore().getBoolean(Constants.PREF_SUPPORT_SPRING_XML_CONFIGS)) {
return Collections.emptyList();
}
IContextInformation[] contextInformation = lsContentAssistProcessor.computeContextInformation(context.getViewer(), context.getInvocationOffset());
return Arrays.asList(contextInformation);
}

View File

@@ -79,7 +79,7 @@ public class BootLanguageServerInitializer implements InitializingBean {
CompositeLanguageServerComponents.Builder builder = new CompositeLanguageServerComponents.Builder();
builder.add(new BootPropertiesLanguageServerComponents(server, params, javaElementLocationProvider, parser, yamlStructureProvider, yamlAssistContextProvider, sourceLinks));
builder.add(new BootJavaLanguageServerComponents(server, params, sourceLinks, cuCache, adHocProperties, symbolCache, config, springIndexer, runningAppProvider));
builder.add(new SpringXMLLanguageServerComponents(server, springIndexer, params));
builder.add(new SpringXMLLanguageServerComponents(server, springIndexer, params, config));
components = builder.build(server);
params.projectObserver.addListener(reconcileOpenDocuments(server, components));

View File

@@ -22,6 +22,7 @@ import org.eclipse.lsp4xml.dom.DOMParser;
import org.eclipse.lsp4xml.dom.parser.Scanner;
import org.eclipse.lsp4xml.dom.parser.TokenType;
import org.eclipse.lsp4xml.dom.parser.XMLScanner;
import org.springframework.ide.vscode.boot.app.BootJavaConfig;
import org.springframework.ide.vscode.boot.app.SpringSymbolIndex;
import org.springframework.ide.vscode.boot.xml.completions.BeanRefCompletionProposalProvider;
import org.springframework.ide.vscode.boot.xml.completions.PropertyNameCompletionProposalProvider;
@@ -47,10 +48,13 @@ public class SpringXMLCompletionEngine implements ICompletionEngine {
private static final String REF_ATTRIBUTE = "ref";
private final Map<XMLCompletionProviderKey, XMLCompletionProvider> completionProviders;
private final BootJavaConfig config;
public SpringXMLCompletionEngine(SpringXMLLanguageServerComponents springXMLLanguageServerComponents,
JavaProjectFinder projectFinder, SpringSymbolIndex symbolIndex, SimpleTextDocumentService simpleTextDocumentService) {
JavaProjectFinder projectFinder, SpringSymbolIndex symbolIndex, SimpleTextDocumentService simpleTextDocumentService, BootJavaConfig config) {
this.config = config;
this.completionProviders = new HashMap<>();
this.completionProviders.put(new XMLCompletionProviderKey(BEANS_NAMESPACE, null, BEAN_ELEMENT, CLASS_ATTRIBUTE), new TypeCompletionProposalProvider(projectFinder, simpleTextDocumentService, true));
this.completionProviders.put(new XMLCompletionProviderKey(BEANS_NAMESPACE, BEAN_ELEMENT, PROPERTY_ELEMENT, NAME_ATTRIBUTE), new PropertyNameCompletionProposalProvider(projectFinder));
@@ -59,6 +63,10 @@ public class SpringXMLCompletionEngine implements ICompletionEngine {
@Override
public Collection<ICompletionProposal> getCompletions(TextDocument doc, int offset) throws Exception {
if (!config.isSpringXMLSupportEnabled()) {
return Collections.emptyList();
}
String content = doc.get();
DOMParser parser = DOMParser.getInstance();

View File

@@ -14,6 +14,7 @@ import java.util.Set;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.ide.vscode.boot.app.BootJavaConfig;
import org.springframework.ide.vscode.boot.app.BootLanguageServerParams;
import org.springframework.ide.vscode.boot.app.SpringSymbolIndex;
import org.springframework.ide.vscode.commons.languageserver.completion.ICompletionEngine;
@@ -43,7 +44,8 @@ public class SpringXMLLanguageServerComponents implements LanguageServerComponen
public SpringXMLLanguageServerComponents(
SimpleLanguageServer server,
SpringSymbolIndex springIndexer,
BootLanguageServerParams serverParams) {
BootLanguageServerParams serverParams,
BootJavaConfig config) {
this.server = server;
this.serverParams = serverParams;
@@ -53,7 +55,7 @@ public class SpringXMLLanguageServerComponents implements LanguageServerComponen
server.doOnInitialized(this::initialized);
server.onShutdown(this::shutdown);
this.completionEngine = new SpringXMLCompletionEngine(this, projectFinder, symbolIndex, server.getTextDocumentService());
this.completionEngine = new SpringXMLCompletionEngine(this, projectFinder, symbolIndex, server.getTextDocumentService(), config);
}
@Override