diff --git a/python/src/com/jetbrains/python/editor/PythonEnterHandler.java b/python/src/com/jetbrains/python/editor/PythonEnterHandler.java index adc0b4a560c5..c94406537019 100644 --- a/python/src/com/jetbrains/python/editor/PythonEnterHandler.java +++ b/python/src/com/jetbrains/python/editor/PythonEnterHandler.java @@ -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 diff --git a/python/testSrc/com/jetbrains/python/PyEditingTest.java b/python/testSrc/com/jetbrains/python/PyEditingTest.java index 4e329d899804..cceee68787b2 100644 --- a/python/testSrc/com/jetbrains/python/PyEditingTest.java +++ b/python/testSrc/com/jetbrains/python/PyEditingTest.java @@ -120,14 +120,18 @@ public class PyEditingTest extends PyLightFixtureTestCase { doTestEnter("z=1 2", "z=1 \n2"); } - public void testEnterAtStartOfComment() { + public void testEnterAtStartOfComment() { // PY-1958 doTestEnter("# bar\n# foo", "# bar\n\n# foo"); } - public void testEnterAtEndOfComment() { + public void testEnterAtEndOfComment() { // PY-1958 doTestEnter("# bar\n# foo", "# bar\n\n# foo"); } + public void testEnterAfterBackslash() { // PY-1960 + doTestEnter("s = \\\n'some string'", "s = \\\n\n'some string'"); + } + private void doTestEnter(String before, final String after) { int pos = before.indexOf(""); before = before.replace("", "");