fixed PY-14433 Fill Paragraph: Invalid range specified: (504,502); Throwable at com.intellij.openapi.util.TextRange.assertProperRange

This commit is contained in:
Ekaterina Tuzova
2014-11-18 15:49:24 +03:00
parent 13dcbf08e1
commit ee299a720a
4 changed files with 13 additions and 3 deletions
@@ -4,6 +4,7 @@ import com.intellij.openapi.command.CommandProcessor;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.util.TextRange;
import com.intellij.openapi.util.UnfairTextRange;
import com.intellij.openapi.util.text.CharFilter;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.*;
@@ -82,7 +83,7 @@ public class ParagraphFillHandler {
private TextRange getTextRange(@NotNull final PsiElement element, @NotNull final Editor editor) {
int startOffset = getStartOffset(element, editor);
int endOffset = getEndOffset(element, editor);
return TextRange.create(startOffset, endOffset);
return new UnfairTextRange(startOffset, endOffset);
}
private int getStartOffset(@NotNull final PsiElement element, @NotNull final Editor editor) {
@@ -105,7 +106,7 @@ public class ParagraphFillHandler {
}
lineNumber -= 1;
}
final int lineStartOffset = document.getLineStartOffset(lineNumber);
final int lineStartOffset = lineNumber == document.getLineNumber(elementTextOffset) ? elementTextOffset : document.getLineStartOffset(lineNumber);
final String lineText = document
.getText(TextRange.create(lineStartOffset, document.getLineEndOffset(lineNumber)));
int shift = StringUtil.findFirst(lineText, CharFilter.NOT_WHITESPACE_FILTER);
@@ -0,0 +1,3 @@
a = """
<caret>
"""
@@ -0,0 +1,3 @@
a = """
"""
@@ -20,7 +20,6 @@ import com.intellij.ide.DataManager;
import com.intellij.openapi.actionSystem.ActionManager;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.command.CommandProcessor;
import com.intellij.psi.codeStyle.CodeStyleSettings;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.psi.codeStyle.CommonCodeStyleSettings;
import com.jetbrains.python.fixtures.PyTestCase;
@@ -62,6 +61,10 @@ public class PyFillParagraphTest extends PyTestCase {
doTest();
}
public void testEmptyMultilineString() {
doTest();
}
public void testEnter() {
final CommonCodeStyleSettings settings =
CodeStyleSettingsManager.getInstance(myFixture.getProject()).getCurrentSettings().getCommonSettings(PythonLanguage.getInstance());