mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-19 04:51:24 +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() {
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user