[80231] Drop of snippet uses wrong (extra?) EOL
diff --git a/org.eclipse.wst.common.snippets/src/org/eclipse/wst/common/snippets/internal/provisional/insertions/AbstractInsertion.java b/org.eclipse.wst.common.snippets/src/org/eclipse/wst/common/snippets/internal/provisional/insertions/AbstractInsertion.java
index 17f1572..dbe9aa0 100644
--- a/org.eclipse.wst.common.snippets/src/org/eclipse/wst/common/snippets/internal/provisional/insertions/AbstractInsertion.java
+++ b/org.eclipse.wst.common.snippets/src/org/eclipse/wst/common/snippets/internal/provisional/insertions/AbstractInsertion.java
@@ -10,6 +10,9 @@
*******************************************************************************/
package org.eclipse.wst.common.snippets.internal.provisional.insertions;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IDocumentExtension4;
@@ -66,15 +69,39 @@
// Update EOLs (bug 80231)
replacement = StringUtils.replace(replacement, "\r\n", "\n");
replacement = StringUtils.replace(replacement, "\r", "\n");
-
- String preferredEOL = System.getProperty("line.separator");
+
+ String preferredEOL = null;
if (document instanceof IDocumentExtension4) {
preferredEOL = ((IDocumentExtension4) document).getDefaultLineDelimiter();
}
+ else {
+ Method getLineDelimiter = null;
+ try {
+ getLineDelimiter = document.getClass().getMethod("getLineDelimiter", new Class[0]); //$NON-NLS-1$
+ }
+ catch (NoSuchMethodException e) {
+ // nothing, not unusual
+ }
+ if (getLineDelimiter != null) {
+ try {
+ preferredEOL = (String) getLineDelimiter.invoke(document, new Object[0]);
+ }
+ catch (IllegalAccessException e) {
+ // nothing, not unusual for a non-visible method
+ }
+ catch (InvocationTargetException e) {
+ // nothing, not unusual for a protected implementation
+ }
+ }
+
+ }
+ if (preferredEOL == null) {
+ preferredEOL = System.getProperty("line.separator");
+ }
if (!"\n".equals(preferredEOL) && preferredEOL != null) {
replacement = StringUtils.replace(replacement, "\n", preferredEOL);
}
-
+
document.replace(textSelection.getOffset(), textSelection.getLength(), replacement);
}
}