diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterMarkdownCommentsTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterMarkdownCommentsTests.java index 1263e26cbe3..e9c42cd5b89 100644 --- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterMarkdownCommentsTests.java +++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterMarkdownCommentsTests.java @@ -343,6 +343,34 @@ class Foo { formatSource(input, expected); } + public void testMarkdownFencedCodeBlock2() throws JavaModelException { + setComplianceLevel(CompilerOptions.VERSION_23); + String input = """ + /// A markdown comment, with a codeblock. + /// ```java + /// void foo() { + /// + /// System.out.println("Hello, World!"); // 2 spaces indented + /// + /// } + /// ``` + class Foo { } + """; + String expected = """ + /// A markdown comment, with a codeblock. + /// ```java + /// void foo() { + /// + /// System.out.println("Hello, World!"); // 2 spaces indented + /// + /// } + /// ``` + class Foo { + } + """; + formatSource(input, expected); + } + public void testMarkdownFencedCodeBlockWithTilde() throws JavaModelException { setComplianceLevel(CompilerOptions.VERSION_23); String input = """ diff --git a/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/CommentsPreparator.java b/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/CommentsPreparator.java index 80f442a7b3a..5fb7e03af1b 100644 --- a/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/CommentsPreparator.java +++ b/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/CommentsPreparator.java @@ -1691,7 +1691,8 @@ private void getCodeToFormat(int startPos, int endPos, StringBuilder sb, int[] p if (c == '*') lineStart = (this.ctm.charAt(i + 1) == ' ') ? i + 2 : i + 1; if (c == '/' && isMarkdown) - lineStart = ((this.ctm.charAt(i + 1) == '/') && (this.ctm.charAt(i + 2) == '/')) ? i + 4 + lineStart = ((this.ctm.charAt(i + 1) == '/') && (this.ctm.charAt(i + 2) == '/')) + ? (this.ctm.charAt(i + 3) == ' ' ? i + 4 : i + 3) : i + 1; break; }