Skip to content

Commit

Permalink
Support quoteStyle and enforceQuoteStyle options (eclipse#669)
Browse files Browse the repository at this point in the history
Signed-off-by: David Kwon <[email protected]>
  • Loading branch information
dkwon17 authored May 7, 2020
1 parent 888ee23 commit acaa560
Show file tree
Hide file tree
Showing 52 changed files with 878 additions and 757 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
import org.eclipse.lemminx.settings.XMLCompletionSettings;
import org.eclipse.lemminx.settings.XMLFormattingOptions;
import org.eclipse.lemminx.settings.XMLGeneralClientSettings;
import org.eclipse.lemminx.settings.XMLPreferences;
import org.eclipse.lemminx.settings.XMLSymbolSettings;
import org.eclipse.lemminx.settings.capabilities.InitializationOptionsExtendedClientCapabilities;
import org.eclipse.lemminx.settings.capabilities.ServerCapabilitiesInitializer;
Expand Down Expand Up @@ -159,6 +160,11 @@ public synchronized void updateSettings(Object initializationOptionsSettings) {
xmlTextDocumentService.updateCodeLensSettings(newCodeLens);
}

XMLPreferences newPreferences = xmlClientSettings.getPreferences();
if (newPreferences != null) {
xmlTextDocumentService.updatePreferences(newPreferences);
}

ServerSettings serverSettings = xmlClientSettings.getServer();
if (serverSettings != null) {
String workDir = serverSettings.getNormalizedWorkDir();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,12 @@
import org.eclipse.lemminx.services.SymbolInformationResult;
import org.eclipse.lemminx.services.XMLLanguageService;
import org.eclipse.lemminx.services.extensions.save.AbstractSaveContext;
import org.eclipse.lemminx.settings.CompositeSettings;
import org.eclipse.lemminx.settings.SharedSettings;
import org.eclipse.lemminx.settings.XMLCodeLensSettings;
import org.eclipse.lemminx.settings.XMLCompletionSettings;
import org.eclipse.lemminx.settings.XMLFormattingOptions;
import org.eclipse.lemminx.settings.XMLPreferences;
import org.eclipse.lemminx.settings.XMLSymbolSettings;
import org.eclipse.lemminx.utils.XMLPositionUtility;
import org.eclipse.lsp4j.ClientCapabilities;
Expand Down Expand Up @@ -262,8 +264,8 @@ public CompletableFuture<List<? extends TextEdit>> formatting(DocumentFormatting
return computeAsync((cancelChecker) -> {
String uri = params.getTextDocument().getUri();
TextDocument document = getDocument(uri);
return getXMLLanguageService().format(document, null,
XMLFormattingOptions.create(params.getOptions(), getFormattingSettings(uri)));
CompositeSettings settings = new CompositeSettings(getSharedSettings(), params.getOptions());
return getXMLLanguageService().format(document, null, settings);
});
}

Expand All @@ -272,8 +274,8 @@ public CompletableFuture<List<? extends TextEdit>> rangeFormatting(DocumentRange
return computeAsync((cancelChecker) -> {
String uri = params.getTextDocument().getUri();
TextDocument document = getDocument(uri);
return getXMLLanguageService().format(document, params.getRange(),
XMLFormattingOptions.create(params.getOptions(), getFormattingSettings(uri)));
CompositeSettings settings = new CompositeSettings(getSharedSettings(), params.getOptions());
return getXMLLanguageService().format(document, params.getRange(), settings);
});
}

Expand Down Expand Up @@ -382,7 +384,7 @@ public CompletableFuture<List<Either<Command, CodeAction>>> codeAction(CodeActio
return computeDOMAsync(params.getTextDocument(), (cancelChecker, xmlDocument) -> {
String uri = params.getTextDocument().getUri();
return getXMLLanguageService()
.doCodeActions(params.getContext(), params.getRange(), xmlDocument, getFormattingSettings(uri)) //
.doCodeActions(params.getContext(), params.getRange(), xmlDocument, sharedSettings) //
.stream() //
.map(ca -> {
if (codeActionLiteralSupport) {
Expand Down Expand Up @@ -473,18 +475,15 @@ public void updateCompletionSettings(XMLCompletionSettings newCompletion) {
}

public void updateSymbolSettings(XMLSymbolSettings newSettings) {
XMLSymbolSettings symbolSettings = sharedSettings.getSymbolSettings();
symbolSettings.setEnabled(newSettings.isEnabled());
String[] newPatterns = newSettings.getExcluded();
if (newPatterns != null) {
symbolSettings.setExcluded(newPatterns);
}
symbolSettings.setMaxItemsComputed(newSettings.getMaxItemsComputed());
sharedSettings.getSymbolSettings().merge(newSettings);
}

public void updateCodeLensSettings(XMLCodeLensSettings newSettings) {
XMLCodeLensSettings codeLensSettings = sharedSettings.getCodeLensSettings();
codeLensSettings.setEnabled(newSettings.isEnabled());
sharedSettings.getCodeLensSettings().merge(newSettings);
}

public void updatePreferences(XMLPreferences newPreferences) {
sharedSettings.getPreferences().merge(newPreferences);
}

public XMLSymbolSettings getSharedSymbolSettings() {
Expand All @@ -507,6 +506,10 @@ public XMLValidationSettings getValidationSettings() {
return sharedSettings.getValidationSettings();
}

public XMLPreferences getPreferences() {
return sharedSettings.getPreferences();
}

public SharedSettings getSharedSettings() {
return this.sharedSettings;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import org.eclipse.lemminx.extensions.xsd.participants.XSDErrorCode;
import org.eclipse.lemminx.services.extensions.ICodeActionParticipant;
import org.eclipse.lemminx.services.extensions.IComponentProvider;
import org.eclipse.lemminx.settings.XMLFormattingOptions;
import org.eclipse.lemminx.settings.SharedSettings;
import org.eclipse.lsp4j.CodeAction;
import org.eclipse.lsp4j.Diagnostic;
import org.eclipse.lsp4j.Range;
Expand All @@ -43,13 +43,14 @@ public ContentModelCodeActionParticipant() {

@Override
public void doCodeAction(Diagnostic diagnostic, Range range, DOMDocument document, List<CodeAction> codeActions,
XMLFormattingOptions formattingSettings, IComponentProvider componentProvider) {
SharedSettings sharedSettings, IComponentProvider componentProvider) {
if (!diagnostic.getCode().isLeft()) {
return;
}
ICodeActionParticipant participant = codeActionParticipants.get(diagnostic.getCode().getLeft());
if (participant != null) {
participant.doCodeAction(diagnostic, range, document, codeActions, formattingSettings, componentProvider);
participant.doCodeAction(diagnostic, range, document, codeActions, sharedSettings,
componentProvider);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
import org.eclipse.lemminx.services.extensions.CompletionParticipantAdapter;
import org.eclipse.lemminx.services.extensions.ICompletionRequest;
import org.eclipse.lemminx.services.extensions.ICompletionResponse;
import org.eclipse.lemminx.settings.XMLFormattingOptions;
import org.eclipse.lemminx.settings.SharedSettings;
import org.eclipse.lemminx.uriresolver.CacheResourceDownloadingException;
import org.eclipse.lemminx.utils.StringUtils;
import org.eclipse.lsp4j.CompletionItem;
Expand Down Expand Up @@ -264,24 +264,24 @@ public void onAttributeName(boolean generateValue, ICompletionRequest request, I
try {
Range fullRange = request.getReplaceRange();
boolean canSupportSnippet = request.isCompletionSnippetsSupported();
XMLFormattingOptions formattingSettings = request.getFormattingSettings();
SharedSettings sharedSettings = request.getSharedSettings();
ContentModelManager contentModelManager = request.getComponent(ContentModelManager.class);
// Completion on attribute based on external grammar
CMElementDeclaration cmElement = contentModelManager.findCMElement(parentElement);
fillAttributesWithCMAttributeDeclarations(parentElement, fullRange, cmElement, canSupportSnippet,
generateValue, request, response, formattingSettings);
generateValue, request, response, sharedSettings);
// Completion on attribute based on internal grammar
cmElement = contentModelManager.findInternalCMElement(parentElement);
fillAttributesWithCMAttributeDeclarations(parentElement, fullRange, cmElement, canSupportSnippet,
generateValue, request, response, formattingSettings);
generateValue, request, response, sharedSettings);
} catch (CacheResourceDownloadingException e) {
// XML Schema, DTD is loading, ignore this error
}
}

private void fillAttributesWithCMAttributeDeclarations(DOMElement parentElement, Range fullRange,
CMElementDeclaration cmElement, boolean canSupportSnippet, boolean generateValue,
ICompletionRequest request, ICompletionResponse response, XMLFormattingOptions formattingOptions) {
ICompletionRequest request, ICompletionResponse response, SharedSettings sharedSettings) {
if (cmElement == null) {
return;
}
Expand All @@ -293,7 +293,7 @@ private void fillAttributesWithCMAttributeDeclarations(DOMElement parentElement,
String attrName = cmAttribute.getName();
if (!parentElement.hasAttribute(attrName)) {
CompletionItem item = new AttributeCompletionItem(attrName, canSupportSnippet, fullRange, generateValue,
cmAttribute.getDefaultValue(), cmAttribute.getEnumerationValues(), formattingOptions);
cmAttribute.getDefaultValue(), cmAttribute.getEnumerationValues(), sharedSettings);
MarkupContent documentation = XMLGenerator.createMarkupContent(cmAttribute, cmElement, request);
item.setDocumentation(documentation);
response.addCompletionAttribute(item);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
import org.eclipse.lemminx.dom.DOMDocument;
import org.eclipse.lemminx.services.extensions.ICodeActionParticipant;
import org.eclipse.lemminx.services.extensions.IComponentProvider;
import org.eclipse.lemminx.settings.XMLFormattingOptions;
import org.eclipse.lemminx.settings.SharedSettings;
import org.eclipse.lsp4j.CodeAction;
import org.eclipse.lsp4j.Diagnostic;
import org.eclipse.lsp4j.Range;
Expand All @@ -28,8 +28,8 @@ public class ETagRequiredCodeAction implements ICodeActionParticipant {

@Override
public void doCodeAction(Diagnostic diagnostic, Range range, DOMDocument document, List<CodeAction> codeActions,
XMLFormattingOptions formattingSettings, IComponentProvider componentProvider) {
MarkupEntityMismatchCodeAction.createEndTagInsertCodeAction(diagnostic, range, document, codeActions, formattingSettings, componentProvider);
SharedSettings sharedSettings, IComponentProvider componentProvider) {
MarkupEntityMismatchCodeAction.createEndTagInsertCodeAction(diagnostic, range, document, codeActions, componentProvider);
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
import org.eclipse.lemminx.dom.DOMDocument;
import org.eclipse.lemminx.services.extensions.ICodeActionParticipant;
import org.eclipse.lemminx.services.extensions.IComponentProvider;
import org.eclipse.lemminx.settings.XMLFormattingOptions;
import org.eclipse.lemminx.settings.SharedSettings;
import org.eclipse.lsp4j.CodeAction;
import org.eclipse.lsp4j.Diagnostic;
import org.eclipse.lsp4j.Range;
Expand All @@ -31,7 +31,7 @@ public class ElementDeclUnterminatedCodeAction implements ICodeActionParticipant

@Override
public void doCodeAction(Diagnostic diagnostic, Range range, DOMDocument document, List<CodeAction> codeActions,
XMLFormattingOptions formattingSettings, IComponentProvider componentProvider) {
SharedSettings sharedSettings, IComponentProvider componentProvider) {
Range diagnosticRange = diagnostic.getRange();

// Close with '>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import org.eclipse.lemminx.dom.DOMNode;
import org.eclipse.lemminx.services.extensions.ICodeActionParticipant;
import org.eclipse.lemminx.services.extensions.IComponentProvider;
import org.eclipse.lemminx.settings.XMLFormattingOptions;
import org.eclipse.lemminx.settings.SharedSettings;
import org.eclipse.lsp4j.CodeAction;
import org.eclipse.lsp4j.Diagnostic;
import org.eclipse.lsp4j.Range;
Expand All @@ -34,7 +34,7 @@ public class ElementUnterminatedCodeAction implements ICodeActionParticipant {

@Override
public void doCodeAction(Diagnostic diagnostic, Range range, DOMDocument document, List<CodeAction> codeActions,
XMLFormattingOptions formattingSettings, IComponentProvider componentProvider) {
SharedSettings sharedSettings, IComponentProvider componentProvider) {
Range diagnosticRange = diagnostic.getRange();
// Close with '/>
CodeAction autoCloseAction = CodeActionFactory.insert("Close with '/>'", diagnosticRange.getEnd(), "/>",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import org.eclipse.lemminx.dom.DOMNode;
import org.eclipse.lemminx.services.extensions.ICodeActionParticipant;
import org.eclipse.lemminx.services.extensions.IComponentProvider;
import org.eclipse.lemminx.settings.XMLFormattingOptions;
import org.eclipse.lemminx.settings.SharedSettings;
import org.eclipse.lsp4j.CodeAction;
import org.eclipse.lsp4j.Diagnostic;
import org.eclipse.lsp4j.Range;
Expand All @@ -34,7 +34,7 @@ public class EqRequiredInAttributeCodeAction implements ICodeActionParticipant {

@Override
public void doCodeAction(Diagnostic diagnostic, Range range, DOMDocument document, List<CodeAction> codeActions,
XMLFormattingOptions formattingSettings, IComponentProvider componentProvider) {
SharedSettings sharedSettings, IComponentProvider componentProvider) {
Range diagnosticRange = diagnostic.getRange();

// Insert =""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
import org.eclipse.lemminx.extensions.contentmodel.participants.XMLSyntaxErrorCode;
import org.eclipse.lemminx.services.extensions.ICodeActionParticipant;
import org.eclipse.lemminx.services.extensions.IComponentProvider;
import org.eclipse.lemminx.settings.XMLFormattingOptions;
import org.eclipse.lemminx.settings.SharedSettings;
import org.eclipse.lsp4j.CodeAction;
import org.eclipse.lsp4j.Diagnostic;
import org.eclipse.lsp4j.Position;
Expand All @@ -39,13 +39,12 @@ public class MarkupEntityMismatchCodeAction implements ICodeActionParticipant {

@Override
public void doCodeAction(Diagnostic diagnostic, Range range, DOMDocument document, List<CodeAction> codeActions,
XMLFormattingOptions formattingSettings, IComponentProvider componentProvider) {
createEndTagInsertCodeAction(diagnostic, range, document, codeActions, formattingSettings, componentProvider);
SharedSettings sharedSettings, IComponentProvider componentProvider) {
createEndTagInsertCodeAction(diagnostic, range, document, codeActions, componentProvider);
}

public static void createEndTagInsertCodeAction(Diagnostic diagnostic, Range range, DOMDocument document,
List<CodeAction> codeActions, XMLFormattingOptions formattingSettings,
IComponentProvider componentProvider) {
List<CodeAction> codeActions, IComponentProvider componentProvider) {
try {
int offset = document.offsetAt(diagnostic.getRange().getStart());
DOMNode node = document.findNodeAt(offset);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import org.eclipse.lemminx.dom.DOMNode;
import org.eclipse.lemminx.services.extensions.ICodeActionParticipant;
import org.eclipse.lemminx.services.extensions.IComponentProvider;
import org.eclipse.lemminx.settings.XMLFormattingOptions;
import org.eclipse.lemminx.settings.SharedSettings;
import org.eclipse.lsp4j.CodeAction;
import org.eclipse.lsp4j.Diagnostic;
import org.eclipse.lsp4j.Position;
Expand All @@ -33,7 +33,7 @@ public class OpenQuoteExpectedCodeAction implements ICodeActionParticipant {

@Override
public void doCodeAction(Diagnostic diagnostic, Range range, DOMDocument document, List<CodeAction> codeActions,
XMLFormattingOptions formattingSettings, IComponentProvider componentProvider) {
SharedSettings sharedSettings, IComponentProvider componentProvider) {
Range diagnosticRange = diagnostic.getRange();
int offset;
try {
Expand All @@ -45,7 +45,7 @@ public void doCodeAction(Diagnostic diagnostic, Range range, DOMDocument documen
if(attr == null || !attr.isAttribute()) {
return;
}
String q = formattingSettings.getQuotationAsString();
String q = sharedSettings.getPreferences().getQuotationAsString();
Position codeactionPosition;
Position possibleEndPosition = null;
String possibleValue = null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
import org.eclipse.lemminx.dom.DOMElement;
import org.eclipse.lemminx.services.extensions.ICodeActionParticipant;
import org.eclipse.lemminx.services.extensions.IComponentProvider;
import org.eclipse.lemminx.settings.XMLFormattingOptions;
import org.eclipse.lemminx.settings.SharedSettings;
import org.eclipse.lemminx.utils.XMLPositionUtility;
import org.eclipse.lsp4j.CodeAction;
import org.eclipse.lsp4j.Diagnostic;
Expand All @@ -39,7 +39,7 @@ public class RootElementTypeMustMatchDoctypedeclCodeAction implements ICodeActio

@Override
public void doCodeAction(Diagnostic diagnostic, Range range, DOMDocument document, List<CodeAction> codeActions,
XMLFormattingOptions formattingSettings, IComponentProvider componentProvider) {
SharedSettings sharedSettings, IComponentProvider componentProvider) {
DOMElement root = document.getDocumentElement();
if (root == null) {
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
import org.eclipse.lemminx.extensions.contentmodel.model.ContentModelManager;
import org.eclipse.lemminx.services.extensions.ICodeActionParticipant;
import org.eclipse.lemminx.services.extensions.IComponentProvider;
import org.eclipse.lemminx.settings.XMLFormattingOptions;
import org.eclipse.lemminx.settings.SharedSettings;
import org.eclipse.lsp4j.CodeAction;
import org.eclipse.lsp4j.Diagnostic;
import org.eclipse.lsp4j.Position;
Expand All @@ -36,7 +36,7 @@ public class cvc_attribute_3CodeAction implements ICodeActionParticipant {

@Override
public void doCodeAction(Diagnostic diagnostic, Range range, DOMDocument document, List<CodeAction> codeActions,
XMLFormattingOptions formattingSettings, IComponentProvider componentProvider) {
SharedSettings sharedSettings, IComponentProvider componentProvider) {
try {
Range diagnosticRange = diagnostic.getRange();
int offset = document.offsetAt(range.getStart());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import org.eclipse.lemminx.dom.DOMNode;
import org.eclipse.lemminx.services.extensions.ICodeActionParticipant;
import org.eclipse.lemminx.services.extensions.IComponentProvider;
import org.eclipse.lemminx.settings.XMLFormattingOptions;
import org.eclipse.lemminx.settings.SharedSettings;
import org.eclipse.lemminx.utils.XMLPositionUtility;
import org.eclipse.lsp4j.CodeAction;
import org.eclipse.lsp4j.Diagnostic;
Expand All @@ -35,7 +35,7 @@ public class cvc_complex_type_2_1CodeAction implements ICodeActionParticipant {

@Override
public void doCodeAction(Diagnostic diagnostic, Range range, DOMDocument document, List<CodeAction> codeActions,
XMLFormattingOptions formattingSettings, IComponentProvider componentProvider) {
SharedSettings sharedSettings, IComponentProvider componentProvider) {
try {
int offset = document.offsetAt(range.getStart());
DOMNode node = document.findNodeAt(offset);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
import org.eclipse.lemminx.dom.DOMDocument;
import org.eclipse.lemminx.services.extensions.ICodeActionParticipant;
import org.eclipse.lemminx.services.extensions.IComponentProvider;
import org.eclipse.lemminx.settings.XMLFormattingOptions;
import org.eclipse.lemminx.settings.SharedSettings;
import org.eclipse.lsp4j.CodeAction;
import org.eclipse.lsp4j.Diagnostic;
import org.eclipse.lsp4j.Range;
Expand All @@ -31,7 +31,7 @@ public class cvc_complex_type_2_3CodeAction implements ICodeActionParticipant {

@Override
public void doCodeAction(Diagnostic diagnostic, Range range, DOMDocument document, List<CodeAction> codeActions,
XMLFormattingOptions formattingSettings, IComponentProvider componentProvider) {
SharedSettings sharedSettings, IComponentProvider componentProvider) {
// Remove content
Range diagnosticRange = diagnostic.getRange();
CodeAction removeContentAction = CodeActionFactory.remove("Remove content", diagnosticRange,
Expand Down
Loading

0 comments on commit acaa560

Please sign in to comment.