Skip to content

Commit

Permalink
added folding setting to keep displaying the closing tag after folding
Browse files Browse the repository at this point in the history
Signed-off-by: Jessica He <jhe@redhat.com>
  • Loading branch information
JessicaJHee authored and angelozerr committed May 31, 2022
1 parent 3ed05cb commit d14f13f
Show file tree
Hide file tree
Showing 6 changed files with 71 additions and 1 deletion.
Expand Up @@ -48,6 +48,7 @@
import org.eclipse.lemminx.settings.SharedSettings;
import org.eclipse.lemminx.settings.XMLCodeLensSettings;
import org.eclipse.lemminx.settings.XMLCompletionSettings;
import org.eclipse.lemminx.settings.XMLFoldingSettings;
import org.eclipse.lemminx.settings.XMLFormattingOptions;
import org.eclipse.lemminx.settings.XMLGeneralClientSettings;
import org.eclipse.lemminx.settings.XMLPreferences;
Expand Down Expand Up @@ -182,7 +183,11 @@ private synchronized void updateSettings(Object initOptions, boolean initLogs) {
if (newTelemetry != null) {
getTelemetryManager().setEnabled(newTelemetry.isEnabled());
}


XMLFoldingSettings newFolding = xmlClientSettings.getFolding();
if (newFolding != null) {
xmlTextDocumentService.getSharedFoldingSettings().merge(newFolding);
}
// Update format settings
XMLFormattingOptions formatterSettings = xmlClientSettings.getFormat();
if (formatterSettings != null) {
Expand Down
Expand Up @@ -48,6 +48,7 @@
import org.eclipse.lemminx.settings.SharedSettings;
import org.eclipse.lemminx.settings.XMLCodeLensSettings;
import org.eclipse.lemminx.settings.XMLCompletionSettings;
import org.eclipse.lemminx.settings.XMLFoldingSettings;
import org.eclipse.lemminx.settings.XMLFormattingOptions;
import org.eclipse.lemminx.settings.XMLPreferences;
import org.eclipse.lemminx.settings.XMLSymbolSettings;
Expand Down Expand Up @@ -691,6 +692,10 @@ public boolean isIncrementalSupport() {
return documents.isIncremental();
}

public XMLFoldingSettings getSharedFoldingSettings() {
return sharedSettings.getFoldingSettings();
}

public XMLFormattingOptions getSharedFormattingSettings() {
return sharedSettings.getFormattingSettings();
}
Expand Down
Expand Up @@ -49,6 +49,10 @@ public XMLFoldings(XMLExtensionsRegistry extensionsRegistry) {
this.extensionsRegistry = extensionsRegistry;
}

public boolean isIncludeClosingTagInFold(XMLFoldingSettings context) {
return context.isIncludeClosingTagInFold();
}

class TagInfo {

public final int startLine;
Expand Down Expand Up @@ -106,6 +110,11 @@ public List<FoldingRange> getFoldingRanges(TextDocument document, XMLFoldingSett
}
int startLine = stackElement.startLine;
int endLine = document.positionAt(scanner.getTokenOffset()).getLine();

if (!isIncludeClosingTagInFold(context)){
endLine -= 1;
}

if (endLine > startLine && prevStart != startLine) {
prevStart = addRange(new FoldingRange(startLine, endLine), ranges);
}
Expand Down
Expand Up @@ -49,6 +49,7 @@ public SharedSettings() {
public SharedSettings(SharedSettings newSettings) {
this();
this.completionSettings.merge(newSettings.getCompletionSettings());
this.foldingSettings.merge(newSettings.getFoldingSettings());
this.formattingSettings.merge(newSettings.getFormattingSettings());
this.validationSettings.merge(newSettings.getValidationSettings());
this.symbolSettings.merge(newSettings.getSymbolSettings());
Expand Down
Expand Up @@ -32,4 +32,34 @@ public FoldingRangeCapabilities getCapabilities() {
public Integer getRangeLimit() {
return capabilities != null ? capabilities.getRangeLimit() : null;
}

public static final boolean DEFAULT_INCLUDE_CLOSING_TAG_IN_FOLD = true;

private boolean includeClosingTagInFold;

public XMLFoldingSettings() {
this.includeClosingTagInFold = DEFAULT_INCLUDE_CLOSING_TAG_IN_FOLD;
}

public XMLFoldingSettings(boolean includeClosingTagInFold) {
this.includeClosingTagInFold = includeClosingTagInFold;
}

/**
* Sets the value of includeClosingTagInFold
*/
public void setIncludeClosingTagInFold(boolean includeClosingTagInFold) {
this.includeClosingTagInFold = includeClosingTagInFold;
}

/**
* Returns the value of includeClosingTagInFold
*/
public boolean isIncludeClosingTagInFold() {
return includeClosingTagInFold;
}

public void merge(XMLFoldingSettings newSettings) {
this.setIncludeClosingTagInFold(newSettings.isIncludeClosingTagInFold());
}
}
Expand Up @@ -39,6 +39,8 @@ public class XMLGeneralClientSettings {

private XMLFormattingOptions format;

private XMLFoldingSettings foldings;

private XMLCompletionSettings completion;

private ServerSettings server;
Expand Down Expand Up @@ -103,6 +105,24 @@ public XMLFormattingOptions getFormat() {
return format;
}

/**
* Sets the folding options
*
* @param foldings
*/
public void setFolding(XMLFoldingSettings foldings) {
this.foldings = foldings;
}

/**
* Returns the folding options
*
* @return the folding options
*/
public XMLFoldingSettings getFolding() {
return foldings;
}

/**
* Sets the completion settings
*
Expand Down

0 comments on commit d14f13f

Please sign in to comment.