diff --git a/python/src/com/jetbrains/python/formatter/PyBlock.java b/python/src/com/jetbrains/python/formatter/PyBlock.java index 5ed7a2eb81e0..f934beb0b646 100644 --- a/python/src/com/jetbrains/python/formatter/PyBlock.java +++ b/python/src/com/jetbrains/python/formatter/PyBlock.java @@ -398,7 +398,16 @@ public class PyBlock implements ASTBlock { return !PyTokenTypes.CLOSE_BRACES.contains(elem.getLastChild().getNode().getElementType()); } else { - return hasHangingIndent(items[0]); + final PsiElement firstItem = items[0]; + if (firstItem instanceof PyNamedParameter) { + final PyExpression defaultValue = ((PyNamedParameter)firstItem).getDefaultValue(); + return defaultValue != null && hasHangingIndent(defaultValue); + } + else if (firstItem instanceof PyKeywordArgument) { + final PyExpression valueExpression = ((PyKeywordArgument)firstItem).getValueExpression(); + return valueExpression != null && hasHangingIndent(valueExpression); + } + return hasHangingIndent(firstItem); } } else { diff --git a/python/testData/formatter/hangingIndentInNamedArgumentValue.py b/python/testData/formatter/hangingIndentInNamedArgumentValue.py new file mode 100644 index 000000000000..1102984b4b98 --- /dev/null +++ b/python/testData/formatter/hangingIndentInNamedArgumentValue.py @@ -0,0 +1,3 @@ +funcWithLongName(x=[ +], + y=42) diff --git a/python/testData/formatter/hangingIndentInNamedArgumentValue_after.py b/python/testData/formatter/hangingIndentInNamedArgumentValue_after.py new file mode 100644 index 000000000000..4585528e01cd --- /dev/null +++ b/python/testData/formatter/hangingIndentInNamedArgumentValue_after.py @@ -0,0 +1,3 @@ +funcWithLongName(x=[ +], + y=42) diff --git a/python/testData/formatter/hangingIndentInParameterDefaultValue.py b/python/testData/formatter/hangingIndentInParameterDefaultValue.py new file mode 100644 index 000000000000..0c42daaf8bea --- /dev/null +++ b/python/testData/formatter/hangingIndentInParameterDefaultValue.py @@ -0,0 +1,5 @@ +def funcWithLongName(x=[ + +], + y=42): + pass diff --git a/python/testData/formatter/hangingIndentInParameterDefaultValue_after.py b/python/testData/formatter/hangingIndentInParameterDefaultValue_after.py new file mode 100644 index 000000000000..ee9c0c8476c8 --- /dev/null +++ b/python/testData/formatter/hangingIndentInParameterDefaultValue_after.py @@ -0,0 +1,5 @@ +def funcWithLongName(x=[ + +], + y=42): + pass diff --git a/python/testSrc/com/jetbrains/python/PyFormatterTest.java b/python/testSrc/com/jetbrains/python/PyFormatterTest.java index d558a9f1b4c8..ea0e917b9673 100644 --- a/python/testSrc/com/jetbrains/python/PyFormatterTest.java +++ b/python/testSrc/com/jetbrains/python/PyFormatterTest.java @@ -546,6 +546,14 @@ public class PyFormatterTest extends PyTestCase { doTest(); } + public void testHangingIndentInNamedArgumentValue() { + doTest(); + } + + public void testHangingIndentInParameterDefaultValue() { + doTest(); + } + private CommonCodeStyleSettings getCommonSettings() { return settings().getCommonSettings(PythonLanguage.getInstance()); }