mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
feat(javadoc-handler): basic typing assistance
GitOrigin-RevId: 500c7ede653a91d1ea67c85efc2248657c35ccab
This commit is contained in:
committed by
intellij-monorepo-bot
parent
d6d13853e6
commit
b7d5b6900c
@@ -3,6 +3,7 @@ package com.intellij.codeInsight.editorActions;
|
||||
|
||||
import com.intellij.codeInsight.CodeInsightSettings;
|
||||
import com.intellij.lang.ASTNode;
|
||||
import com.intellij.openapi.editor.CaretModel;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
@@ -34,7 +35,7 @@ public abstract class AbstractBasicJavadocTypedHandler extends TypedHandlerDeleg
|
||||
public Result charTyped(char c, @NotNull Project project, @NotNull Editor editor, @NotNull PsiFile file) {
|
||||
if (isJavaFile(file)) {
|
||||
if (!insertClosingTagIfNecessary(c, project, editor, file)) {
|
||||
adjustStartTagIndent(c, editor, file);
|
||||
adjustStartIndent(c, editor, file);
|
||||
}
|
||||
}
|
||||
return Result.CONTINUE;
|
||||
@@ -42,7 +43,7 @@ public abstract class AbstractBasicJavadocTypedHandler extends TypedHandlerDeleg
|
||||
|
||||
public abstract boolean isJavaFile(@Nullable PsiFile file);
|
||||
|
||||
private static void adjustStartTagIndent(char c, @NotNull Editor editor, @NotNull PsiFile file) {
|
||||
private static void adjustStartIndent(char c, @NotNull Editor editor, @NotNull PsiFile file) {
|
||||
if (c == '@') {
|
||||
final int offset = editor.getCaretModel().getOffset();
|
||||
PsiElement currElement = file.findElementAt(offset);
|
||||
@@ -52,6 +53,21 @@ public abstract class AbstractBasicJavadocTypedHandler extends TypedHandlerDeleg
|
||||
editor.getDocument().replaceString(currElement.getTextRange().getStartOffset(), offset - 1, " ");
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (c == '/') {
|
||||
// Insert a single space when adding the initial leading slashes
|
||||
final CaretModel caretModel = editor.getCaretModel();
|
||||
final int caretOffset = caretModel.getOffset();
|
||||
PsiElement currElement = file.findElementAt(caretOffset - 1);
|
||||
if (currElement instanceof PsiWhiteSpace) {
|
||||
PsiElement prev = currElement.getPrevSibling();
|
||||
if (prev != null && prev.getNode().getElementType() == JavaTokenType.END_OF_LINE_COMMENT && prev.getText().equals("//")) {
|
||||
editor.getDocument().insertString(prev.getTextRange().getEndOffset() + 1, " ");
|
||||
caretModel.moveToOffset(caretOffset + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ public class JavaQuoteHandler extends SimpleTokenSetQuoteHandler implements Java
|
||||
JavaTokenType.RBRACE));
|
||||
|
||||
public JavaQuoteHandler() {
|
||||
super(TokenSet.orSet(BASIC_TEXT_LITERALS, TokenSet.create(JavaDocTokenType.DOC_TAG_VALUE_QUOTE)));
|
||||
super(TokenSet.orSet(BASIC_TEXT_LITERALS, TokenSet.create(JavaDocTokenType.DOC_TAG_VALUE_QUOTE, JavaDocTokenType.DOC_INLINE_CODE_FENCE, JavaDocTokenType.DOC_CODE_FENCE)));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -24,7 +24,9 @@ public class JavaBraceMatcher implements PairedBraceMatcher {
|
||||
new BracePair(JavaTokenType.LBRACE, JavaTokenType.RBRACE, true),
|
||||
new BracePair(JavaTokenType.LBRACKET, JavaTokenType.RBRACKET, false),
|
||||
new BracePair(JavaDocTokenType.DOC_INLINE_TAG_START, JavaDocTokenType.DOC_INLINE_TAG_END, false),
|
||||
new BracePair(JavaTokenType.LT, JavaTokenType.GT, false)
|
||||
new BracePair(JavaTokenType.LT, JavaTokenType.GT, false),
|
||||
new BracePair(JavaDocTokenType.DOC_LBRACKET, JavaDocTokenType.DOC_RBRACKET, false),
|
||||
new BracePair(JavaDocTokenType.DOC_LPAREN, JavaDocTokenType.DOC_RPAREN, false)
|
||||
};
|
||||
public JavaBraceMatcher() {
|
||||
}
|
||||
|
||||
@@ -28,6 +28,10 @@ public abstract class AbstractBasicJavadocTypedHandlerFunctionalTest extends Lig
|
||||
doTest('@');
|
||||
}
|
||||
|
||||
public void testStartMarkdownComment() {
|
||||
doTest('/');
|
||||
}
|
||||
|
||||
private void doTest(char typedChar) {
|
||||
String testName = getTestName(true);
|
||||
configureByFile(BASE_PATH + testName + ".java");
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
//<caret>
|
||||
public class A {}
|
||||
@@ -0,0 +1,2 @@
|
||||
/// <caret>
|
||||
public class A {}
|
||||
@@ -42,4 +42,10 @@ public class JavaQuoteTest extends AbstractBasicJavaQuoteTest {
|
||||
doFileTest("/**\n* {@snippet <caret> :}\n*/\nclass A {\n}",
|
||||
"/**\n* {@snippet '<caret>' :}\n*/\nclass A {\n}", '\'');
|
||||
}
|
||||
|
||||
public void testJavadocMarkdownQuotes(){
|
||||
doFileTest("/// <caret>", "/// [<caret>]", '[');
|
||||
doFileTest("/// <caret>", "/// (<caret>)", '(');
|
||||
doFileTest("/// <caret>", "/// `<caret>`", '`');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user