diff --git a/java/java-frontback-impl/src/com/intellij/psi/formatter/java/JavaSpacePropertyProcessor.java b/java/java-frontback-impl/src/com/intellij/psi/formatter/java/JavaSpacePropertyProcessor.java index a36cea6264a7..aa30fd66e6ec 100644 --- a/java/java-frontback-impl/src/com/intellij/psi/formatter/java/JavaSpacePropertyProcessor.java +++ b/java/java-frontback-impl/src/com/intellij/psi/formatter/java/JavaSpacePropertyProcessor.java @@ -1126,7 +1126,7 @@ public final class JavaSpacePropertyProcessor extends JavaElementVisitor { @Override public void visitField(@NotNull PsiField field) { - if (myType1 == JavaDocElementType.DOC_COMMENT) { + if (JavaDocElementType.DOC_COMMENT_TOKENS.contains(myType1)) { myResult = Spacing.createSpacing(0, 0, 1, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_DECLARATIONS); return; } @@ -1203,7 +1203,7 @@ public final class JavaSpacePropertyProcessor extends JavaElementVisitor { @Override public void visitMethod(@NotNull PsiMethod method) { - if (myType1 == JavaDocElementType.DOC_COMMENT) { + if (JavaDocElementType.DOC_COMMENT_TOKENS.contains(myType1)) { myResult = Spacing.createSpacing(0, 0, 1, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_DECLARATIONS); return; } diff --git a/java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/JavaFoldingBuilderBase.java b/java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/JavaFoldingBuilderBase.java index 917a29d41446..00c9b9892fa2 100644 --- a/java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/JavaFoldingBuilderBase.java +++ b/java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/JavaFoldingBuilderBase.java @@ -188,20 +188,23 @@ public abstract class JavaFoldingBuilderBase extends CustomFoldingBuilder implem @NotNull PsiComment comment, @NotNull Document document, @NotNull Set processedComments) { - final FoldingDescriptor commentDescriptor = CommentFoldingUtil.getCommentDescriptor(comment, document, processedComments, - element -> isCustomRegionElement(element), - isCollapseCommentByDefault(comment)); - if (commentDescriptor != null) { - if (comment instanceof PsiDocComment && ((PsiDocComment)comment).isMarkdownComment()) { - // Hack: Markdown comments aren't documented in the Commenter for the Java language - // To avoid the `/** */` tokens, we remove them - String placeHolderText = commentDescriptor.getPlaceholderText(); - if (placeHolderText != null) { - placeHolderText = StringUtil.trimEnd(StringUtil.trimStart(placeHolderText, "/**"), "*/"); - commentDescriptor.setPlaceholderText(placeHolderText); - } - } + final FoldingDescriptor commentDescriptor; + if (comment instanceof PsiDocComment && ((PsiDocComment)comment).isMarkdownComment()) { + // FIXME: inline documentation comments aren't supported in the Commenter interface + if(!processedComments.add(comment)) return; + String placeholder = CommentFoldingUtil.getCommentPlaceholder(document, JavaDocElementType.DOC_COMMENT, comment.getTextRange()); + if(placeholder == null) placeholder = "/// ..."; + // Hack: Markdown comments aren't documented in the Commenter for the Java language + // To avoid the `/** */` tokens, we remove them + placeholder = StringUtil.trimEnd(StringUtil.trimStart(placeholder, "/**"), "*/"); + commentDescriptor = new FoldingDescriptor(comment.getNode(), comment.getTextRange(), null, placeholder, isCollapseCommentByDefault(comment), Collections.emptySet()); + } else { + commentDescriptor = CommentFoldingUtil.getCommentDescriptor(comment, document, processedComments, + element -> isCustomRegionElement(element), + isCollapseCommentByDefault(comment)); + } + if (commentDescriptor != null) { list.add(commentDescriptor); } } diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiSnippetDocTagImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiSnippetDocTagImpl.java index d52a7695351a..1ba77843d94f 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiSnippetDocTagImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiSnippetDocTagImpl.java @@ -38,7 +38,7 @@ public class PsiSnippetDocTagImpl extends CompositePsiElement implements PsiSnip @Override public PsiDocComment getContainingComment() { ASTNode scope = getTreeParent(); - while (scope.getElementType() != JavaDocElementType.DOC_COMMENT) { + while (scope.getElementType() != JavaDocElementType.DOC_COMMENT && scope.getElementType() != JavaDocElementType.DOC_MARKDOWN_COMMENT) { scope = scope.getTreeParent(); } return (PsiDocComment)SourceTreeToPsiMap.treeElementToPsi(scope); diff --git a/java/java-tests/testData/psi/parser-partial/files/DocCommentSnippet_node.txt b/java/java-tests/testData/psi/parser-partial/files/DocCommentSnippet_node.txt index c3bce46b17d2..188f66d68cc8 100644 --- a/java/java-tests/testData/psi/parser-partial/files/DocCommentSnippet_node.txt +++ b/java/java-tests/testData/psi/parser-partial/files/DocCommentSnippet_node.txt @@ -35,7 +35,7 @@ test.java.file CODE_BLOCK LBRACE WHITE_SPACE - DOC_COMMENT + DOC_MARKDOWN_COMMENT DOC_COMMENT_LEADING_ASTERISKS DOC_COMMENT_DATA WHITE_SPACE