From ba8f240a97bf7f53adbbc0b570977397f68569fb Mon Sep 17 00:00:00 2001 From: Fabio Zadrozny Date: Sat, 14 Sep 2024 15:39:28 -0300 Subject: [PATCH] Fixed issue when wrap paragraph was done in the last line. --- .../core/wrap_paragraph/Paragrapher.java | 6 ++ .../wrap_paragraph/WrapParagraphTest.java | 59 +++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 plugins/org.python.pydev.core/tests/org/python/pydev/core/wrap_paragraph/WrapParagraphTest.java diff --git a/plugins/org.python.pydev.core/src/org/python/pydev/core/wrap_paragraph/Paragrapher.java b/plugins/org.python.pydev.core/src/org/python/pydev/core/wrap_paragraph/Paragrapher.java index 233dc97289..6c9e6003e9 100644 --- a/plugins/org.python.pydev.core/src/org/python/pydev/core/wrap_paragraph/Paragrapher.java +++ b/plugins/org.python.pydev.core/src/org/python/pydev/core/wrap_paragraph/Paragrapher.java @@ -100,6 +100,12 @@ public boolean previousLineIsInParagraph() { public boolean nextLineIsInParagraph() { if (currentLineNo + 1 == numberOfLinesInDocument) { + try { + lengthOfOriginalParagraph = selection.getEndLineOffset(currentLineNo) - offsetOfOriginalParagraph; + } catch (BadLocationException e) { + return false; + } + return false; } diff --git a/plugins/org.python.pydev.core/tests/org/python/pydev/core/wrap_paragraph/WrapParagraphTest.java b/plugins/org.python.pydev.core/tests/org/python/pydev/core/wrap_paragraph/WrapParagraphTest.java new file mode 100644 index 0000000000..b3d1ba5175 --- /dev/null +++ b/plugins/org.python.pydev.core/tests/org/python/pydev/core/wrap_paragraph/WrapParagraphTest.java @@ -0,0 +1,59 @@ +package org.python.pydev.core.wrap_paragraph; + +import org.eclipse.jface.text.BadLocationException; +import org.eclipse.jface.text.Document; +import org.eclipse.jface.text.IDocument; +import org.eclipse.text.edits.MalformedTreeException; +import org.eclipse.text.edits.ReplaceEdit; +import org.python.pydev.core.docutils.PySelection; +import org.python.pydev.shared_core.string.StringUtils; + +import junit.framework.TestCase; + +public class WrapParagraphTest extends TestCase { + + public void testParagrapher() throws MalformedTreeException, BadLocationException { + String txt = "# aaaa bbbb ccccc ddddd"; + IDocument doc = new Document(txt); + PySelection ps = new PySelection(doc); + Paragrapher p = new Paragrapher(ps, 12); + assertNull(p.getValidErrorInPos()); + ReplaceEdit replaceEdit = p.getReplaceEdit(); + replaceEdit.apply(doc); + assertEquals("# aaaa bbbb\n" + + "# ccccc\n" + + "# ddddd", StringUtils.replaceNewLines(doc.get(), "\n")); + + } + + public void testParagrapher2() throws MalformedTreeException, BadLocationException { + String txt = "# aaaa bbbb\n# ccccc ddddd"; + IDocument doc = new Document(txt); + PySelection ps = new PySelection(doc); + Paragrapher p = new Paragrapher(ps, 12); + assertNull(p.getValidErrorInPos()); + ReplaceEdit replaceEdit = p.getReplaceEdit(); + replaceEdit.apply(doc); + assertEquals("# aaaa bbbb\n" + + "# ccccc\n" + + "# ddddd", StringUtils.replaceNewLines(doc.get(), "\n")); + + } + + public void testParagrapher3() throws MalformedTreeException, BadLocationException { + String txt = "'''\naaaa bbbb\nccccc ddddd eeee\n'''"; + IDocument doc = new Document(txt); + PySelection ps = new PySelection(doc, 5); + Paragrapher p = new Paragrapher(ps, 12); + assertNull(p.getValidErrorInPos()); + ReplaceEdit replaceEdit = p.getReplaceEdit(); + replaceEdit.apply(doc); + assertEquals("'''\n" + + "aaaa bbbb\n" + + "ccccc ddddd\n" + + "eeee\n" + + "'''", StringUtils.replaceNewLines(doc.get(), "\n")); + + } + +}