Skip to main content

This CGIT instance is deprecated, and repositories have been moved to Gitlab or Github. See the repository descriptions for specific locations.

summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoramywu2006-04-11 15:35:41 +0000
committeramywu2006-04-11 15:35:41 +0000
commit7c75943b642c5a608b0b1e707d24dcd9581a8947 (patch)
tree1c58b7e8a32eaf3254c47e5f8b880453ff2ed035
parent0f25394fe18ba56be5a9f667a914d83a92644c89 (diff)
downloadwebtools.sourceediting-7c75943b642c5a608b0b1e707d24dcd9581a8947.tar.gz
webtools.sourceediting-7c75943b642c5a608b0b1e707d24dcd9581a8947.tar.xz
webtools.sourceediting-7c75943b642c5a608b0b1e707d24dcd9581a8947.zip
[107647] [CSS Editor] Line delimiter setting ignored
-rw-r--r--bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/encoding/JSPDocumentLoader.java9
-rw-r--r--bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/encoding/CSSDocumentLoader.java8
-rw-r--r--bundles/org.eclipse.wst.dtd.core/src/org/eclipse/wst/dtd/core/internal/encoding/DTDDocumentLoader.java10
-rw-r--r--bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/encoding/HTMLDocumentLoader.java8
-rw-r--r--bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/document/AbstractDocumentLoader.java48
-rw-r--r--bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/text/BasicStructuredDocument.java91
-rw-r--r--bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/encoding/XMLDocumentLoader.java8
7 files changed, 151 insertions, 31 deletions
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/encoding/JSPDocumentLoader.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/encoding/JSPDocumentLoader.java
index 8318040dd7..bc4edfb79e 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/encoding/JSPDocumentLoader.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/encoding/JSPDocumentLoader.java
@@ -242,8 +242,11 @@ public class JSPDocumentLoader extends AbstractDocumentLoader {
return parser;
}
- protected String getPreferredNewLineDelimiter() {
- return ContentTypeEncodingPreferences.getPreferredNewLineDelimiter(ContentTypeIdForJSP.ContentTypeID_JSP);
+ protected String getPreferredNewLineDelimiter(IFile file) {
+ String delimiter = ContentTypeEncodingPreferences.getPreferredNewLineDelimiter(ContentTypeIdForJSP.ContentTypeID_JSP);
+ if (delimiter == null)
+ delimiter = super.getPreferredNewLineDelimiter(file);
+ return delimiter;
}
/**
@@ -303,7 +306,7 @@ public class JSPDocumentLoader extends AbstractDocumentLoader {
// before content is set in the model, so taglib initization can
// take place.
((INodeNotifier) document).getAdapterFor(ModelQueryAdapter.class);
-
+
}
} \ No newline at end of file
diff --git a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/encoding/CSSDocumentLoader.java b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/encoding/CSSDocumentLoader.java
index 20c49e17b0..3e412eb6df 100644
--- a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/encoding/CSSDocumentLoader.java
+++ b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/encoding/CSSDocumentLoader.java
@@ -11,6 +11,7 @@
package org.eclipse.wst.css.core.internal.encoding;
+import org.eclipse.core.resources.IFile;
import org.eclipse.jface.text.IDocumentPartitioner;
import org.eclipse.wst.css.core.internal.contenttype.EncodingGuesser;
import org.eclipse.wst.css.core.internal.parser.CSSSourceParser;
@@ -65,8 +66,11 @@ public class CSSDocumentLoader extends AbstractDocumentLoader {
return new CSSSourceParser();
}
- protected String getPreferredNewLineDelimiter() {
- return ContentTypeEncodingPreferences.getPreferredNewLineDelimiter(CSS_ID);
+ protected String getPreferredNewLineDelimiter(IFile file) {
+ String delimiter = ContentTypeEncodingPreferences.getPreferredNewLineDelimiter(CSS_ID);
+ if (delimiter == null)
+ delimiter = super.getPreferredNewLineDelimiter(file);
+ return delimiter;
}
public IDocumentCharsetDetector getDocumentEncodingDetector() {
diff --git a/bundles/org.eclipse.wst.dtd.core/src/org/eclipse/wst/dtd/core/internal/encoding/DTDDocumentLoader.java b/bundles/org.eclipse.wst.dtd.core/src/org/eclipse/wst/dtd/core/internal/encoding/DTDDocumentLoader.java
index 9ab8cc24ce..31bb2c5a05 100644
--- a/bundles/org.eclipse.wst.dtd.core/src/org/eclipse/wst/dtd/core/internal/encoding/DTDDocumentLoader.java
+++ b/bundles/org.eclipse.wst.dtd.core/src/org/eclipse/wst/dtd/core/internal/encoding/DTDDocumentLoader.java
@@ -12,13 +12,16 @@
*******************************************************************************/
package org.eclipse.wst.dtd.core.internal.encoding;
+import org.eclipse.core.resources.IFile;
import org.eclipse.jface.text.IDocumentPartitioner;
import org.eclipse.wst.dtd.core.internal.parser.DTDRegionParser;
+import org.eclipse.wst.dtd.core.internal.provisional.contenttype.ContentTypeIdForDTD;
import org.eclipse.wst.dtd.core.internal.text.DTDStructuredDocumentReParser;
import org.eclipse.wst.dtd.core.internal.text.StructuredTextPartitionerForDTD;
import org.eclipse.wst.sse.core.internal.document.AbstractDocumentLoader;
import org.eclipse.wst.sse.core.internal.document.IDocumentCharsetDetector;
import org.eclipse.wst.sse.core.internal.document.StructuredDocumentFactory;
+import org.eclipse.wst.sse.core.internal.encoding.ContentTypeEncodingPreferences;
import org.eclipse.wst.sse.core.internal.ltk.parser.RegionParser;
import org.eclipse.wst.sse.core.internal.provisional.document.IEncodedDocument;
import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
@@ -45,6 +48,13 @@ public final class DTDDocumentLoader extends AbstractDocumentLoader {
public RegionParser getParser() {
return new DTDRegionParser();
}
+
+ protected String getPreferredNewLineDelimiter(IFile file) {
+ String delimiter = ContentTypeEncodingPreferences.getPreferredNewLineDelimiter(ContentTypeIdForDTD.ContentTypeID_DTD);
+ if (delimiter == null)
+ delimiter = super.getPreferredNewLineDelimiter(file);
+ return delimiter;
+ }
protected String getSpecDefaultEncoding() {
String enc = "UTF-8"; //$NON-NLS-1$
diff --git a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/encoding/HTMLDocumentLoader.java b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/encoding/HTMLDocumentLoader.java
index 43a50a940c..5bd0a78185 100644
--- a/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/encoding/HTMLDocumentLoader.java
+++ b/bundles/org.eclipse.wst.html.core/src/org/eclipse/wst/html/core/internal/encoding/HTMLDocumentLoader.java
@@ -13,6 +13,7 @@ package org.eclipse.wst.html.core.internal.encoding;
import java.util.ArrayList;
import java.util.List;
+import org.eclipse.core.resources.IFile;
import org.eclipse.jface.text.IDocumentPartitioner;
import org.eclipse.wst.html.core.internal.contenttype.EncodingGuesser;
import org.eclipse.wst.html.core.internal.document.HTMLDocumentTypeAdapterFactory;
@@ -125,8 +126,11 @@ public class HTMLDocumentLoader extends AbstractDocumentLoader {
return result;
}
- protected String getPreferredNewLineDelimiter() {
- return ContentTypeEncodingPreferences.getPreferredNewLineDelimiter(ContentTypeIdForHTML.ContentTypeID_HTML);
+ protected String getPreferredNewLineDelimiter(IFile file) {
+ String delimiter = ContentTypeEncodingPreferences.getPreferredNewLineDelimiter(ContentTypeIdForHTML.ContentTypeID_HTML);
+ if (delimiter == null)
+ delimiter = super.getPreferredNewLineDelimiter(file);
+ return delimiter;
}
public IDocumentCharsetDetector getDocumentEncodingDetector() {
diff --git a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/document/AbstractDocumentLoader.java b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/document/AbstractDocumentLoader.java
index dda92ea047..e2298d6ed8 100644
--- a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/document/AbstractDocumentLoader.java
+++ b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/document/AbstractDocumentLoader.java
@@ -21,7 +21,11 @@ import java.nio.charset.MalformedInputException;
import java.nio.charset.UnmappableCharacterException;
import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ProjectScope;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.preferences.IScopeContext;
+import org.eclipse.core.runtime.preferences.InstanceScope;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IDocumentExtension3;
@@ -100,6 +104,10 @@ public abstract class AbstractDocumentLoader implements IDocumentLoader {
String specDefaultCharset = getDocumentEncodingDetector().getSpecDefaultEncoding();
structuredDocument.setEncodingMemento(CodedIO.createEncodingMemento(charset, EncodingMemento.DEFAULTS_ASSUMED_FOR_EMPTY_INPUT, specDefaultCharset));
+ String lineDelimiter = getPreferredNewLineDelimiter(null);
+ if (lineDelimiter != null)
+ structuredDocument.setPreferredLineDelimiter(lineDelimiter);
+
IDocumentPartitioner defaultPartitioner = getDefaultDocumentPartitioner();
if (structuredDocument instanceof IDocumentExtension3) {
((IDocumentExtension3) structuredDocument).setDocumentPartitioner(IStructuredPartitioning.DEFAULT_STRUCTURED_PARTITIONING, defaultPartitioner);
@@ -118,6 +126,11 @@ public abstract class AbstractDocumentLoader implements IDocumentLoader {
*/
public IEncodedDocument createNewStructuredDocument(IFile iFile) throws IOException, CoreException {
IEncodedDocument structuredDocument = createNewStructuredDocument();
+
+ String lineDelimiter = getPreferredNewLineDelimiter(iFile);
+ if (lineDelimiter != null)
+ structuredDocument.setPreferredLineDelimiter(lineDelimiter);
+
try {
CodedReaderCreator creator = getCodedReaderCreator();
@@ -237,10 +250,39 @@ public abstract class AbstractDocumentLoader implements IDocumentLoader {
}
/**
- * If subclass doesn't implement, return null
+ * Returns the default line delimiter preference for the given file.
+ *
+ * @param file
+ * the file
+ * @return the default line delimiter
+ * @since 3.1
+ */
+ private String getPlatformLineDelimiterPreference(IFile file) {
+ IScopeContext[] scopeContext;
+ if (file != null && file.getProject() != null) {
+ // project preference
+ scopeContext = new IScopeContext[]{new ProjectScope(file.getProject())};
+ String lineDelimiter = Platform.getPreferencesService().getString(Platform.PI_RUNTIME, Platform.PREF_LINE_SEPARATOR, null, scopeContext);
+ if (lineDelimiter != null)
+ return lineDelimiter;
+ }
+ // workspace preference
+ scopeContext = new IScopeContext[]{new InstanceScope()};
+ return Platform.getPreferencesService().getString(Platform.PI_RUNTIME, Platform.PREF_LINE_SEPARATOR, null, scopeContext);
+ }
+
+ /**
+ * @deprecated use getPreferredNewLineDelimiter(IFile) instead
*/
protected String getPreferredNewLineDelimiter() {
- return null;
+ return getPreferredNewLineDelimiter(null);
+ }
+
+ /**
+ * If subclass doesn't implement, return platform default
+ */
+ protected String getPreferredNewLineDelimiter(IFile file) {
+ return getPlatformLineDelimiterPreference(file);
}
/**
@@ -264,7 +306,7 @@ public abstract class AbstractDocumentLoader implements IDocumentLoader {
// based on text, make a guess on what's being used as
// line delimiter
String probableLineDelimiter = TextUtilities.determineLineDelimiter(originalString, theFlatModel.getLegalLineDelimiters(), System.getProperty("line.separator")); //$NON-NLS-1$
- String preferredLineDelimiter = getPreferredNewLineDelimiter();
+ String preferredLineDelimiter = getPreferredNewLineDelimiter(null);
if (preferredLineDelimiter == null) {
// when preferredLineDelimiter is null, it means "leave alone"
// so no conversion needed.
diff --git a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/text/BasicStructuredDocument.java b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/text/BasicStructuredDocument.java
index 5a3e195ff1..8b687bb2ad 100644
--- a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/text/BasicStructuredDocument.java
+++ b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/text/BasicStructuredDocument.java
@@ -1291,6 +1291,36 @@ public class BasicStructuredDocument implements IStructuredDocument, IDocumentEx
throw new BadPartitioningException();
}
+ /*
+ * This method can be used when this class implements IDocumentExtension4.
+ *
+ * @see org.eclipse.jface.text.IDocumentExtension4#getDefaultLineDelimiter()
+ */
+ private String getDefaultLineDelimiter() {
+ // specific preferred line delimiter
+ if (preferedDelimiter != null)
+ return preferedDelimiter;
+
+
+ // no line delimiter has been used so just use platform's default
+ String lineDelimiter = null;
+ String sysLineDelimiter = PlatformLineDelimiter;
+ String[] delimiters = getLegalLineDelimiters();
+ Assert.isTrue(delimiters.length > 0);
+ for (int i = 0; i < delimiters.length; i++) {
+ if (delimiters[i].equals(sysLineDelimiter)) {
+ lineDelimiter = sysLineDelimiter;
+ break;
+ }
+ }
+
+ // no platform default so just use first legal delimiter
+ if (lineDelimiter == null)
+ lineDelimiter = delimiters[0];
+
+ return lineDelimiter;
+ }
+
/**
* Returns the document's partitioner.
*
@@ -1372,11 +1402,13 @@ public class BasicStructuredDocument implements IStructuredDocument, IDocumentEx
return getStore().getLength();
}
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument#getLineDelimiter()
+ */
public String getLineDelimiter() {
- if (preferedDelimiter == null) {
- preferedDelimiter = PlatformLineDelimiter;
- }
- return preferedDelimiter;
+ return getDefaultLineDelimiter();
}
/**
@@ -1685,17 +1717,17 @@ public class BasicStructuredDocument implements IStructuredDocument, IDocumentEx
* eg.
*
* <pre>
- * &lt;html&gt;[&lt;head&gt;&lt;/head&gt;]&lt;/html&gt; returns &lt;head&gt;,&lt;/head&gt;
+ * &lt;html&gt;[&lt;head&gt;&lt;/head&gt;]&lt;/html&gt; returns &lt;head&gt;,&lt;/head&gt;
* </pre>
* <pre>
- * &lt;ht[ml&gt;&lt;head&gt;&lt;/he]ad&gt;&lt;/html&gt; returns &lt;html&gt;,&lt;head&gt;,&lt;/head&gt;
+ * &lt;ht[ml&gt;&lt;head&gt;&lt;/he]ad&gt;&lt;/html&gt; returns &lt;html&gt;,&lt;head&gt;,&lt;/head&gt;
* </pre>
*
* <pre>
- * &lt;html&gt;[&lt;head&gt;&lt;/head&gt;]&lt;/html&gt; returns &lt;head&gt;,&lt;/head&gt;
+ * &lt;html&gt;[&lt;head&gt;&lt;/head&gt;]&lt;/html&gt; returns &lt;head&gt;,&lt;/head&gt;
* </pre>
* <pre>
- * &lt;ht[ml&gt;&lt;head&gt;&lt;/he]ad&gt;&lt;/html&gt; returns &lt;html&gt;,&lt;head&gt;,&lt;/head&gt;
+ * &lt;ht[ml&gt;&lt;head&gt;&lt;/he]ad&gt;&lt;/html&gt; returns &lt;html&gt;,&lt;head&gt;,&lt;/head&gt;
* </pre>
*
* </p>
@@ -2446,15 +2478,12 @@ public class BasicStructuredDocument implements IStructuredDocument, IDocumentEx
}
- void setLastDocumentRegion(IStructuredDocumentRegion region) {
- lastDocumentRegion = region;
-
- }
-
- /**
- * @see IStructuredDocument#setLineDelimiter(String)
+ /*
+ * This method can be used when this class implements IDocumentExtension4.
+ *
+ * @see org.eclipse.jface.text.IDocumentExtension4#setInitialLineDelimiter(String)
*/
- public void setLineDelimiter(String delimiter) {
+ private void setInitialLineDelimiter(String delimiter) {
// make sure our preferred delimiter is
// one of the legal ones
if (Utilities.containsString(getLegalLineDelimiters(), delimiter)) {
@@ -2467,6 +2496,20 @@ public class BasicStructuredDocument implements IStructuredDocument, IDocumentEx
}
}
+ void setLastDocumentRegion(IStructuredDocumentRegion region) {
+ lastDocumentRegion = region;
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument#setLineDelimiter(java.lang.String)
+ */
+ public void setLineDelimiter(String delimiter) {
+ setInitialLineDelimiter(delimiter);
+ }
+
/**
* Sets the document's line tracker. Must be called at the beginning of
* the constructor.
@@ -2509,7 +2552,7 @@ public class BasicStructuredDocument implements IStructuredDocument, IDocumentEx
StructuredDocumentEvent result = null;
result = replaceText(requester, 0, getLength(), theString, true);
-
+
return result;
}
@@ -2621,12 +2664,22 @@ public class BasicStructuredDocument implements IStructuredDocument, IDocumentEx
return result;
}
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.wst.sse.core.internal.provisional.document.IEncodedDocument#getPreferredLineDelimiter()
+ */
public String getPreferredLineDelimiter() {
- return getLineDelimiter();
+ return getDefaultLineDelimiter();
}
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.wst.sse.core.internal.provisional.document.IEncodedDocument#setPreferredLineDelimiter(java.lang.String)
+ */
public void setPreferredLineDelimiter(String probableLineDelimiter) {
- setLineDelimiter(probableLineDelimiter);
+ setInitialLineDelimiter(probableLineDelimiter);
}
}
diff --git a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/encoding/XMLDocumentLoader.java b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/encoding/XMLDocumentLoader.java
index 2c80b0155c..2b8dea80ac 100644
--- a/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/encoding/XMLDocumentLoader.java
+++ b/bundles/org.eclipse.wst.xml.core/src/org/eclipse/wst/xml/core/internal/encoding/XMLDocumentLoader.java
@@ -12,6 +12,7 @@
*******************************************************************************/
package org.eclipse.wst.xml.core.internal.encoding;
+import org.eclipse.core.resources.IFile;
import org.eclipse.jface.text.IDocumentPartitioner;
import org.eclipse.wst.sse.core.internal.document.AbstractDocumentLoader;
import org.eclipse.wst.sse.core.internal.document.IDocumentCharsetDetector;
@@ -53,8 +54,11 @@ public class XMLDocumentLoader extends AbstractDocumentLoader {
return new XMLSourceParser();
}
- protected String getPreferredNewLineDelimiter() {
- return ContentTypeEncodingPreferences.getPreferredNewLineDelimiter(ContentTypeIdForXML.ContentTypeID_XML);
+ protected String getPreferredNewLineDelimiter(IFile file) {
+ String delimiter = ContentTypeEncodingPreferences.getPreferredNewLineDelimiter(ContentTypeIdForXML.ContentTypeID_XML);
+ if (delimiter == null)
+ delimiter = super.getPreferredNewLineDelimiter(file);
+ return delimiter;
}
protected String getSpecDefaultEncoding() {

Back to the top