[578419] xml source rendering broken after search&replace \n Change-Id: I67f3225478d8aee6a8986571648249c091dd3ee2
diff --git a/core/bundles/org.eclipse.wst.sse.core/META-INF/MANIFEST.MF b/core/bundles/org.eclipse.wst.sse.core/META-INF/MANIFEST.MF index 98613df..9fafb55 100644 --- a/core/bundles/org.eclipse.wst.sse.core/META-INF/MANIFEST.MF +++ b/core/bundles/org.eclipse.wst.sse.core/META-INF/MANIFEST.MF
@@ -1,8 +1,9 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 +Automatic-Module-Name: org.eclipse.wst.sse.core Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.wst.sse.core; singleton:=true -Bundle-Version: 1.2.900.qualifier +Bundle-Version: 1.2.1000.qualifier Bundle-Activator: org.eclipse.wst.sse.core.internal.SSECorePlugin Bundle-Vendor: %providerName Bundle-Localization: plugin @@ -39,16 +40,16 @@ org.eclipse.wst.sse.core.utils, org.eclipse.wst.sse.internal.contentproperties;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.sse.ui,org.eclipse.wst.xml.core,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui" Require-Bundle: org.eclipse.core.resources;bundle-version="[3.13.0,4.0.0)", - org.eclipse.text;bundle-version="[3.6.0,4.0.0)";visibility:=reexport, - org.eclipse.core.jobs;bundle-version="[3.10.0,4.0.0)", - org.eclipse.core.runtime;bundle-version="[3.14.0,4.0.0)", + org.eclipse.text;bundle-version="[3.12.0,4.0.0)";visibility:=reexport, + org.eclipse.core.jobs;bundle-version="[3.13.0,4.0.0)", + org.eclipse.core.runtime;bundle-version="[3.26.0,4.0.0)", org.eclipse.core.filebuffers;bundle-version="[3.6.0,4.0.0)", org.eclipse.wst.common.uriresolver;bundle-version="[1.2.300,2.0.0)", org.eclipse.emf.common;bundle-version="[2.14.0,3.0.0)", org.eclipse.wst.validation;bundle-version="[1.2.700,2.0.0)";resolution:=optional, - org.eclipse.core.filesystem;bundle-version="[1.7.0,2.0.0)", + org.eclipse.core.filesystem;bundle-version="[1.9.0,2.0.0)", org.eclipse.core.expressions;bundle-version="[3.6.100,4.0.0)", - org.eclipse.osgi.services;bundle-version="[3.7.0,4.0.0)", + org.eclipse.osgi.services;bundle-version="[3.11.0,4.0.0)", com.ibm.icu;bundle-version="72.1.0" Bundle-ActivationPolicy: lazy;exclude:="org.eclipse.wst.sse.core.internal.propertytester" Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/core/bundles/org.eclipse.wst.sse.core/pom.xml b/core/bundles/org.eclipse.wst.sse.core/pom.xml index 1acee3c..1c717e6 100644 --- a/core/bundles/org.eclipse.wst.sse.core/pom.xml +++ b/core/bundles/org.eclipse.wst.sse.core/pom.xml
@@ -21,7 +21,7 @@ <groupId>org.eclipse.webtools.sourceediting</groupId> <artifactId>org.eclipse.wst.sse.core</artifactId> - <version>1.2.900-SNAPSHOT</version> + <version>1.2.1000-SNAPSHOT</version> <packaging>eclipse-plugin</packaging> <build>
diff --git a/core/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/text/BasicStructuredDocument.java b/core/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/text/BasicStructuredDocument.java index 0f1d43a..ebd6dc9 100644 --- a/core/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/text/BasicStructuredDocument.java +++ b/core/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/text/BasicStructuredDocument.java
@@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2001, 2020 IBM Corporation and others. + * Copyright (c) 2001, 2023 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at @@ -58,6 +58,7 @@ import org.eclipse.jface.text.ILineTrackerExtension; import org.eclipse.jface.text.IPositionUpdater; import org.eclipse.jface.text.IRegion; +import org.eclipse.jface.text.IRepairableDocumentExtension; import org.eclipse.jface.text.ITextStore; import org.eclipse.jface.text.ITypedRegion; import org.eclipse.jface.text.Position; @@ -90,7 +91,7 @@ /** * The standard implementation of structured document. */ -public class BasicStructuredDocument implements IStructuredDocument, IDocumentExtension, IDocumentExtension3, IDocumentExtension4, CharSequence, IRegionComparible { +public class BasicStructuredDocument implements IStructuredDocument, IDocumentExtension, IDocumentExtension3, IDocumentExtension4, CharSequence, IRegionComparible, IRepairableDocumentExtension { /** * This ThreadLocal construct is used so each thread can maintain its only @@ -2978,4 +2979,58 @@ }); } } + + @Override + public boolean isLineInformationRepairNeeded(int offset, int length, String text) throws BadLocationException { + if ((0 > offset) || (0 > length) || (offset + length > getLength())) + throw new BadLocationException(); + + return isLineInformationRepairNeeded(text) || isLineInformationRepairNeeded(get(offset, length)); + } + + /** + * Checks whether the line information needs to be repaired. + * + * @param text the text to check + * @return <code>true</code> if the line information must be repaired + * @since 3.4 + */ + private boolean isLineInformationRepairNeeded(String text) { + if (text == null) + return false; + + int length= text.length(); + if (length == 0) + return false; + + int rIndex= text.indexOf('\r'); + int nIndex= text.indexOf('\n'); + if (rIndex == -1 && nIndex == -1) + return false; + + if (rIndex > 0 && rIndex < length-1 && nIndex > 1 && rIndex < length-2) + return false; + + String defaultLD= null; + try { + defaultLD= getLineDelimiter(0); + } catch (BadLocationException x) { + return true; + } + + if (defaultLD == null) + return false; + + defaultLD= getDefaultLineDelimiter(); + + if (defaultLD.length() == 1) { + if (rIndex != -1 && !"\r".equals(defaultLD)) //$NON-NLS-1$ + return true; + if (nIndex != -1 && !"\n".equals(defaultLD)) //$NON-NLS-1$ + return true; + } else if (defaultLD.length() == 2) + return rIndex == -1 || nIndex - rIndex != 1; + + return false; + } }