diff --git a/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java b/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java
index 74e030df5c92..3bf8d5cc26a1 100644
--- a/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java
+++ b/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java
@@ -1904,14 +1904,20 @@ public class JavaDocInfoGenerator {
int suffixIndex = text.indexOf(suffix);
if (suffixIndex >= 0) {
htmlCodeBlockContents.append(text, 0, suffixIndex);
- buffer.append(CODE_BLOCK_PREFIX);
- appendHighlightedByLexerAndEncodedAsHtmlCodeSnippet(
- doHighlightCodeBlocks(), buffer, myProject, JavaLanguage.INSTANCE,
- StringUtil.unescapeXmlEntities(StringUtil.replaceUnicodeEscapeSequences(htmlCodeBlockContents.toString()))
- .replace(" ", " ")
- .replace("@", "@")
- );
- buffer.append(CODE_BLOCK_SUFFIX);
+ buffer.append(prefix);
+ String contentString = htmlCodeBlockContents.toString();
+ if (contentString.indexOf('<') >= 0 && BLOCKQUOTE_PRE_PREFIX.equals(prefix)) {
+ appendPlainText(buffer, contentString);
+ }
+ else {
+ appendHighlightedByLexerAndEncodedAsHtmlCodeSnippet(
+ doHighlightCodeBlocks(), buffer, myProject, JavaLanguage.INSTANCE,
+ StringUtil.unescapeXmlEntities(StringUtil.replaceUnicodeEscapeSequences(contentString))
+ .replace(" ", " ")
+ .replace("@", "@")
+ );
+ }
+ buffer.append(suffix);
appendPlainText(buffer, text.substring(suffixIndex + suffix.length()));
return null;
}
diff --git a/java/java-tests/testData/codeInsight/javadocIG/documentationForJdkClassWhenExternalDocIsNotAvailable.html b/java/java-tests/testData/codeInsight/javadocIG/documentationForJdkClassWhenExternalDocIsNotAvailable.html
index 845f7f515daf..11e9958c34e5 100644
--- a/java/java-tests/testData/codeInsight/javadocIG/documentationForJdkClassWhenExternalDocIsNotAvailable.html
+++ b/java/java-tests/testData/codeInsight/javadocIG/documentationForJdkClassWhenExternalDocIsNotAvailable.html
@@ -7,11 +7,11 @@
Strings are constant; their values cannot be changed after they
are created. String buffers support mutable strings.
Because String objects are immutable they can be shared. For example:
-
String str = "abc";
+
String str = "abc";
is equivalent to:
-
char data[] = {'a', 'b', 'c'};
String str = new String(data);
+
char data[] = {'a', 'b', 'c'};
String str = new String(data);
Here are some more examples of how strings can be used:
-
System.out.println("abc");
String cde = "cde";
System.out.println("abc" + cde);
String c = "abc".substring(2,3);
String d = cde.substring(1, 2);
+ System.out.println("abc");
String cde = "cde";
System.out.println("abc" + cde);
String c = "abc".substring(2,3);
String d = cde.substring(1, 2);
The class String includes methods for examining
individual characters of the sequence, for comparing strings, for
diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/JavaDocumentationTest.kt b/java/java-tests/testSrc/com/intellij/java/codeInsight/JavaDocumentationTest.kt
index a03585edad49..cbd179c32b9b 100644
--- a/java/java-tests/testSrc/com/intellij/java/codeInsight/JavaDocumentationTest.kt
+++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/JavaDocumentationTest.kt
@@ -1,4 +1,4 @@
-// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
+// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.java.codeInsight
import com.intellij.codeInsight.documentation.DocumentationManager
@@ -363,12 +363,14 @@ class JavaDocumentationTest : LightJavaCodeInsightFixtureTestCase() {
val expected = """
Examples of expected usage:
-
StringBuilder sb = new StringBuilder();
+
StringBuilder sb = new StringBuilder();
StringBuilder sb = new StringBuilder();
Continuing...
-
quote nr 2;
+
quote nr 2;
Continuing...
-
(this.charAt(<i>k</i>) == ch) && (<i>k</i> <= fromIndex)
+
+ (this.charAt(k) == ch) && (k <= fromIndex)
+
Unfinished blockquote