don't add another backslash if we already have one (PY-1960)

This commit is contained in:
Dmitry Jemerov
2010-09-23 15:37:47 +04:00
parent 7e31afb1fc
commit 7140f23f73
2 changed files with 13 additions and 2 deletions
@@ -47,6 +47,13 @@ public class PythonEnterHandler implements EnterHandlerDelegate {
if (element == null) {
return Result.Continue;
}
if (offset > 0) {
final PsiElement beforeCaret = file.findElementAt(offset-1);
if (beforeCaret instanceof PsiWhiteSpace && beforeCaret.getText().indexOf('\\') > 0) {
// we've got a backslash at EOL already, don't need another one
return Result.Continue;
}
}
PsiElement statementBefore = findStatementBeforeCaret(file, offset);
PsiElement statementAfter = findStatementAfterCaret(file, offset);
if (statementBefore != statementAfter) { // Enter pressed at statement break
@@ -120,14 +120,18 @@ public class PyEditingTest extends PyLightFixtureTestCase {
doTestEnter("z=1 <caret>2", "z=1 \n2");
}
public void testEnterAtStartOfComment() {
public void testEnterAtStartOfComment() { // PY-1958
doTestEnter("# bar\n<caret># foo", "# bar\n\n# foo");
}
public void testEnterAtEndOfComment() {
public void testEnterAtEndOfComment() { // PY-1958
doTestEnter("# bar<caret>\n# foo", "# bar\n\n# foo");
}
public void testEnterAfterBackslash() { // PY-1960
doTestEnter("s = \\<caret>\n'some string'", "s = \\\n\n'some string'");
}
private void doTestEnter(String before, final String after) {
int pos = before.indexOf("<caret>");
before = before.replace("<caret>", "");