diff --git a/README.md b/README.md
index 79dabc6..4c81909 100644
--- a/README.md
+++ b/README.md
@@ -56,6 +56,7 @@ Thanks JetBrains Licenses for Open Source.
English Change Notes:
+- 1.19 Add supper doc at @Override, support doc tag like @author
- 1.18 Add External Comment effect at previous layer when folder named -1
- 1.17 Add line-end-comment skip doc text or class/member name by regexp
- 1.16 Add line-end-comment skip when comments have been added
@@ -78,6 +79,7 @@ Thanks JetBrains Licenses for Open Source.
中文更新说明:
+- 1.19 增加 @Override 显示父方法注释,支持 @author 等注释标签
- 1.18 增加 外部注释 文件夹名为 -1 时配置在上一层文件夹生效
- 1.17 增加 行末注释 根据正则表达式跳过指定注释文本或类成员名字的注释
- 1.16 增加 行末注释 已经添加行末注释时跳过
diff --git a/build.gradle b/build.gradle
index 7b1e79e..57f5acb 100644
--- a/build.gradle
+++ b/build.gradle
@@ -4,7 +4,7 @@ plugins {
}
group 'io.github.linwancen'
-version '1.18.0.' + (new Date().format('yyyy.MM.dd_HH.mm'))
+version '1.19.0.' + (new Date().format('yyyy.MM.dd_HH.mm'))
apply plugin: 'java'
@@ -39,6 +39,7 @@ patchPluginXml {
changeNotes = """
English Change Notes:
+- 1.19 Add supper doc at @Override, support doc tag like @author
- 1.18 Add External Comment effect at previous layer when folder named -1
- 1.17 Add line-end-comment skip doc text or class/member name by regexp
- 1.16 Add line-end-comment skip when comments have been added
@@ -61,6 +62,7 @@ patchPluginXml {
中文更新说明:
+- 1.19 增加 @Override 显示父方法注释,支持 @author 等注释标签
- 1.18 增加 外部注释 文件夹名为 -1 时配置在上一层文件夹生效
- 1.17 增加 行末注释 根据正则表达式跳过指定注释文本或类成员名字的注释
- 1.16 增加 行末注释 已经添加行末注释时跳过
diff --git a/src/main/java/io/github/linwancen/plugin/show/Tree.java b/src/main/java/io/github/linwancen/plugin/show/Tree.java
index 5299d0a..0a718f0 100644
--- a/src/main/java/io/github/linwancen/plugin/show/Tree.java
+++ b/src/main/java/io/github/linwancen/plugin/show/Tree.java
@@ -59,7 +59,7 @@ public class Tree implements ProjectViewNodeDecorator {
if (docComment == null) {
return null;
}
- return PsiDocToStrDoc.text(docComment);
+ return PsiDocToStrDoc.text(docComment, true);
}
@Nullable
diff --git a/src/main/java/io/github/linwancen/plugin/show/doc/PsiDocToStrDoc.java b/src/main/java/io/github/linwancen/plugin/show/doc/PsiDocToStrDoc.java
index 1c1e698..cd6411e 100644
--- a/src/main/java/io/github/linwancen/plugin/show/doc/PsiDocToStrDoc.java
+++ b/src/main/java/io/github/linwancen/plugin/show/doc/PsiDocToStrDoc.java
@@ -1,10 +1,10 @@
package io.github.linwancen.plugin.show.doc;
import com.intellij.psi.PsiElement;
-import com.intellij.psi.javadoc.PsiDocComment;
-import com.intellij.psi.javadoc.PsiDocToken;
-import com.intellij.psi.javadoc.PsiInlineDocTag;
+import com.intellij.psi.PsiWhiteSpace;
+import com.intellij.psi.javadoc.*;
import io.github.linwancen.plugin.show.settings.AppSettingsState;
+import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.regex.Pattern;
@@ -14,7 +14,7 @@ public class PsiDocToStrDoc {
private PsiDocToStrDoc() {}
@Nullable
- public static String text(@Nullable PsiDocComment psiDocComment) {
+ public static String text(@Nullable PsiDocComment psiDocComment, boolean isTree) {
if (psiDocComment == null) {
return null;
}
@@ -32,33 +32,61 @@ public class PsiDocToStrDoc {
break;
}
}
+ StringBuilder tags = tags(psiDocComment, isTree, appSettings);
+ if (tags.length() > 0) {
+ if (sb.length() > 0) {
+ sb.append("@ ");
+ }
+ sb.append(tags);
+ }
if (sb.length() == 0) {
return null;
}
return sb.toString();
}
+ @NotNull
+ private static StringBuilder tags(@NotNull PsiDocComment psiDocComment, boolean isTree,
+ AppSettingsState appSettings) {
+ StringBuilder sb = new StringBuilder();
+ PsiDocTag[] tags = psiDocComment.getTags();
+ for (PsiDocTag tag : tags) {
+ String name = tag.getName();
+ if (isTree ? appSettings.treeTags.contains(name) : appSettings.lineTags.contains(name)) {
+ // @see @param should use getDataElements()
+ PsiDocTagValue value = tag.getValueElement();
+ if (value != null) {
+ addHtml(sb, value.getText());
+ }
+ }
+ }
+ return sb;
+ }
+
+ /**
+ * @return is new line
+ */
private static boolean appendElementText(StringBuilder sb, PsiElement element) {
if (element instanceof PsiDocToken) {
PsiDocToken psiDocToken = (PsiDocToken) element;
- sb.append(deleteHtml(psiDocToken.getText()));
- sb.append(" ");
- return true;
+ addHtml(sb, psiDocToken.getText());
}
if (element instanceof PsiInlineDocTag) {
PsiInlineDocTag psiInlineDocTag = (PsiInlineDocTag) element;
PsiElement[] children = psiInlineDocTag.getChildren();
- if (children.length > 2) {
- sb.append(deleteHtml(children[2].getText()));
- sb.append(" ");
+ if (children.length > 3) {
+ addHtml(sb, children[3].getText());
}
}
- return false;
+ return element instanceof PsiWhiteSpace && sb.length() > 0;
}
private static final Pattern HTML_PATTERN = Pattern.compile("<[^>]++>");
- private static String deleteHtml(String s) {
- return HTML_PATTERN.matcher(s.trim()).replaceAll("");
+ private static void addHtml(StringBuilder sb, String s) {
+ String deleteHtml = HTML_PATTERN.matcher(s.trim()).replaceAll("");
+ if (deleteHtml.length() > 0) {
+ sb.append(deleteHtml).append(" ");
+ }
}
}
diff --git a/src/main/java/io/github/linwancen/plugin/show/line/FileViewToDocStrUtils.java b/src/main/java/io/github/linwancen/plugin/show/line/FileViewToDocStrUtils.java
index 9a83c24..5834d20 100644
--- a/src/main/java/io/github/linwancen/plugin/show/line/FileViewToDocStrUtils.java
+++ b/src/main/java/io/github/linwancen/plugin/show/line/FileViewToDocStrUtils.java
@@ -47,7 +47,7 @@ public class FileViewToDocStrUtils {
PsiDocComment docComment = setting.findElementRightToLeft
? FileViewToPsiDocRightToLeft.rightDoc(viewProvider, startOffset, endOffset)
: FileViewToPsiDocLeftToRight.leftDoc(viewProvider, document, startOffset, endOffset);
- String strDoc = PsiDocToStrDoc.text(docComment);
+ String strDoc = PsiDocToStrDoc.text(docComment, false);
if (strDoc == null) {
return null;
}
diff --git a/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsComponent.java b/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsComponent.java
index 12852db..b980911 100644
--- a/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsComponent.java
+++ b/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsComponent.java
@@ -15,7 +15,9 @@ public class AppSettingsComponent extends AbstractSettingsComponent {
private final JPanel myMainPanel;
private final JBCheckBox showTreeComment = new JBCheckBox("Show tree comment ");
+ private final JBTextField treeTags = new JBTextField();
private final JBCheckBox showLineEndComment = new JBCheckBox("Show line end comment ");
+ private final JBTextField lineTags = new JBTextField();
private final JBCheckBox fromCall = new JBCheckBox("call ");
private final JBCheckBox fromNew = new JBCheckBox("new ");
private final JBCheckBox fromRef = new JBCheckBox("ref ");
@@ -26,8 +28,8 @@ public class AppSettingsComponent extends AbstractSettingsComponent {
private final ColorPanel lineEndColor = new ColorPanel();
private final ColorPanel lineEndJsonColor = new ColorPanel();
private final JBCheckBox findElementRightToLeft = new JBCheckBox("Find element right to left");
- protected final JBTextField lineEndPrefix = new JBTextField();
- protected final JBTextField lineEndCount = new JBTextField();
+ private final JBTextField lineEndPrefix = new JBTextField();
+ private final JBTextField lineEndCount = new JBTextField();
public AppSettingsComponent() {
myMainPanel = FormBuilder.createFormBuilder()
@@ -42,6 +44,8 @@ public class AppSettingsComponent extends AbstractSettingsComponent {
JPanel comment = FormBuilder.createFormBuilder()
.addComponent(showTreeComment, 1)
.addComponent(showLineEndComment, 1)
+ .addLabeledComponent(new JBLabel("tree tags"), treeTags, 1, true)
+ .addLabeledComponent(new JBLabel("line tags"), lineTags, 1, true)
.getPanel();
comment.setBorder(IdeBorderFactory.createTitledBorder("Show"));
return comment;
@@ -81,6 +85,15 @@ public class AppSettingsComponent extends AbstractSettingsComponent {
showTreeComment.setSelected(newStatus);
}
+ @NotNull
+ public String getTreeTags() {
+ return treeTags.getText();
+ }
+
+ public void setTreeTags(@NotNull String newText) {
+ treeTags.setText(newText);
+ }
+
public boolean getShowLineEndComment() {
return showLineEndComment.isSelected();
}
@@ -89,6 +102,15 @@ public class AppSettingsComponent extends AbstractSettingsComponent {
showLineEndComment.setSelected(newStatus);
}
+ @NotNull
+ public String getLineTags() {
+ return lineTags.getText();
+ }
+
+ public void setLineTags(@NotNull String newText) {
+ lineTags.setText(newText);
+ }
+
public boolean getFromCall() {
return fromCall.isSelected();
}
diff --git a/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsConfigurable.java b/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsConfigurable.java
index a3c32a5..c84d590 100644
--- a/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsConfigurable.java
+++ b/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsConfigurable.java
@@ -32,7 +32,9 @@ public class AppSettingsConfigurable implements Configurable {
public boolean isModified() {
AppSettingsState settings = AppSettingsState.getInstance();
boolean modified = mySettingsComponent.getShowTreeComment() != settings.showTreeComment;
+ modified |= !mySettingsComponent.getTreeTags().equals(settings.treeTags);
modified |= mySettingsComponent.getShowLineEndComment() != settings.showLineEndComment;
+ modified |= !mySettingsComponent.getLineTags().equals(settings.lineTags);
modified |= !mySettingsComponent.getLineEndCount().equals(String.valueOf(settings.lineEndCount));
modified |= !mySettingsComponent.getLineEndColor().equals(settings.lineEndTextAttr.getForegroundColor());
@@ -58,7 +60,9 @@ public class AppSettingsConfigurable implements Configurable {
public void apply() {
AppSettingsState settings = AppSettingsState.getInstance();
settings.showTreeComment = mySettingsComponent.getShowTreeComment();
+ settings.treeTags = mySettingsComponent.getTreeTags();
settings.showLineEndComment = mySettingsComponent.getShowLineEndComment();
+ settings.lineTags = mySettingsComponent.getLineTags();
try {
settings.lineEndCount = Integer.parseInt(mySettingsComponent.getLineEndCount());
@@ -86,7 +90,9 @@ public class AppSettingsConfigurable implements Configurable {
public void reset() {
AppSettingsState settings = AppSettingsState.getInstance();
mySettingsComponent.setShowTreeComment(settings.showTreeComment);
+ mySettingsComponent.setTreeTags(settings.treeTags);
mySettingsComponent.setShowLineEndComment(settings.showLineEndComment);
+ mySettingsComponent.setLineTags(settings.lineTags);
mySettingsComponent.setLineEndCount(String.valueOf(settings.lineEndCount));
mySettingsComponent.setLineEndColor(settings.lineEndTextAttr.getForegroundColor());
diff --git a/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsState.java b/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsState.java
index 4985a64..8e87064 100644
--- a/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsState.java
+++ b/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsState.java
@@ -21,7 +21,9 @@ import java.math.BigInteger;
public class AppSettingsState extends AbstractSettingsState implements PersistentStateComponent {
public boolean showTreeComment = true;
+ public String treeTags = "author";
public boolean showLineEndComment = true;
+ public String lineTags = "author";
public final TextAttributes lineEndTextAttr = new TextAttributes(
new JBColor(new Color(98, 151, 85), new Color(98, 151, 85)),