From 9ff51f73c7244dff3d80c83d2a8ecabd7bd6b498 Mon Sep 17 00:00:00 2001 From: Evgeniia Kirillova Date: Wed, 28 Jan 2026 18:38:10 +0100 Subject: [PATCH] [json] IJPL-63669: fix adding comma at the end of the last item while reformating json with too long lines (cherry picked from commit b0bbe0e292849ffe85e96d337e05efc42c3cd234) IJ-MR-189563 GitOrigin-RevId: 8d5be58453f3c4ddfdb36ab3faa985107c46f306 --- .../tests/test/com/intellij/json/JsonFormattingTest.java | 6 ++++++ .../testData/formatting/WrappingWhenLineIsTooLong.json | 3 +++ .../formatting/WrappingWhenLineIsTooLong_after.json | 3 +++ .../src/com/intellij/formatting/LineWrappingUtil.java | 3 ++- 4 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 json/backend/tests/testData/formatting/WrappingWhenLineIsTooLong.json create mode 100644 json/backend/tests/testData/formatting/WrappingWhenLineIsTooLong_after.json 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; }