diff --git a/json/backend/tests/test/com/intellij/json/JsonFormattingTest.java b/json/backend/tests/test/com/intellij/json/JsonFormattingTest.java index 761a065da28e..4833b2586600 100644 --- a/json/backend/tests/test/com/intellij/json/JsonFormattingTest.java +++ b/json/backend/tests/test/com/intellij/json/JsonFormattingTest.java @@ -40,6 +40,12 @@ public class JsonFormattingTest extends JsonTestCase { doTest(); } + public void testWrappingWhenLineIsTooLong() { + getCodeStyleSettings().setRightMargin(JsonLanguage.INSTANCE, 20); + getCodeStyleSettings().getCommonSettings(JsonLanguage.INSTANCE).WRAP_LONG_LINES = true; + doTest(); + } + // WEB-13587 public void testAlignPropertiesOnColon() { checkPropertyAlignment(PropertyAlignment.ALIGN_ON_COLON); diff --git a/json/backend/tests/testData/formatting/WrappingWhenLineIsTooLong.json b/json/backend/tests/testData/formatting/WrappingWhenLineIsTooLong.json new file mode 100644 index 000000000000..55ba904b0847 --- /dev/null +++ b/json/backend/tests/testData/formatting/WrappingWhenLineIsTooLong.json @@ -0,0 +1,3 @@ +{ + "test": "very very very very very very very looooong line" +} \ No newline at end of file diff --git a/json/backend/tests/testData/formatting/WrappingWhenLineIsTooLong_after.json b/json/backend/tests/testData/formatting/WrappingWhenLineIsTooLong_after.json new file mode 100644 index 000000000000..55ba904b0847 --- /dev/null +++ b/json/backend/tests/testData/formatting/WrappingWhenLineIsTooLong_after.json @@ -0,0 +1,3 @@ +{ + "test": "very very very very very very very looooong line" +} \ No newline at end of file diff --git a/platform/platform-impl/src/com/intellij/formatting/LineWrappingUtil.java b/platform/platform-impl/src/com/intellij/formatting/LineWrappingUtil.java index 345d245582c6..3755b9f4bde5 100644 --- a/platform/platform-impl/src/com/intellij/formatting/LineWrappingUtil.java +++ b/platform/platform-impl/src/com/intellij/formatting/LineWrappingUtil.java @@ -132,7 +132,8 @@ public final class LineWrappingUtil { // No point in splitting line when its left part contains only white spaces, example: // line start -> | | <- right margin // | aaaaaaaaaaaaaaaa|aaaaaaaaaaaaaaaaaaaa() <- don't want to wrap this line even if it exceeds right margin - || CharArrayUtil.shiftBackward(text, startLineOffset, wrapOffset - 1, " \t") < startLineOffset) { + || CharArrayUtil.shiftBackward(text, startLineOffset, wrapOffset - 1, " \t") < startLineOffset + || wrapOffset <= startLineOffset || wrapOffset >= endLineOffset) { continue; }