disable XML content-assist if overall XML support is disabled via user configuration
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user