From ac92738979d29e7652ea00c0a3535a7fd66f58a9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9E=97=E4=B8=87=E7=A8=8B?= <1498425439@qq.com>
Date: Sun, 24 Apr 2022 03:06:41 +0800
Subject: [PATCH] =?UTF-8?q?1.14=20skip=20Annotation,=20skip=20only=20Engli?=
=?UTF-8?q?sh=20(ASCII)=20|=20=E5=BF=BD=E7=95=A5=E6=B3=A8=E8=A7=A3?=
=?UTF-8?q?=E4=B8=8E=E5=BF=BD=E7=95=A5=E7=BA=AF=E8=8B=B1=E6=96=87?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 4 ++++
build.gradle | 4 +++-
.../github/linwancen/plugin/show/LineEnd.java | 2 +-
.../plugin/show/doc/PsiDocToStrDoc.java | 21 +++++++++++++------
.../show/line/FileViewToDocStrUtils.java | 13 ++++++++++--
.../plugin/show/line/PsiClassSkip.java | 21 +++++++++++--------
.../settings/AbstractSettingsComponent.java | 4 ++--
.../show/settings/AppSettingsComponent.java | 20 +++++++++++++++++-
.../settings/AppSettingsConfigurable.java | 6 ++++++
.../show/settings/AppSettingsState.java | 6 ++++--
.../show/settings/ProjectSettingsState.java | 1 +
src/main/resources/META-INF/plugin.xml | 2 ++
12 files changed, 80 insertions(+), 24 deletions(-)
diff --git a/README.md b/README.md
index 03c1518..60a98bf 100644
--- a/README.md
+++ b/README.md
@@ -12,6 +12,7 @@ https://plugins.jetbrains.com/plugin/18553-show-comment
Show javadoc comments at the Project view Tree structure
Show javadoc comments at the end-of-line
Show javadoc comments at "xx ClassNameOrSimpleName.json" and jump to field
+Show comments from External Conf for folder, resources, COBOL etc.
Config: settings -> Tools -> // Show Comment Global/Project
@@ -33,6 +34,7 @@ https://plugins.jetbrains.com/plugin/18553-show-comment
在结构树显示 文档注释
在行末尾显示 文档注释
支持 "xx 类全名或简名.json" 文档注释与跳转到字段
+支持 从配置文件获取外部注释用于文件夹、资源、COBOL 等
修改配置:设置 -> 工具 -> // Show Comment Global/Project
@@ -54,6 +56,7 @@ https://plugins.jetbrains.com/plugin/18553-show-comment
English Change Notes:
+- 1.14 Add line-end-comment skip Annotation, skip only English (ASCII)
- 1.13 Add Copy With Line Comment & Add Line Comment
- 1.12 ★ External Comment for COBOL etc
- 1.11 Add json key jump to field
@@ -71,6 +74,7 @@ https://plugins.jetbrains.com/plugin/18553-show-comment
中文更新说明:
+- 1.14 增加 行末注释 忽略注解 与 忽略纯英文
- 1.13 增加 带行末注释复制 和 添加行末注释
- 1.12 ★ 外部注释用于 COBOL 等
- 1.11 增加 json 跳转到字段
diff --git a/build.gradle b/build.gradle
index 69b02e8..1477edf 100644
--- a/build.gradle
+++ b/build.gradle
@@ -4,7 +4,7 @@ plugins {
}
group 'io.github.linwancen'
-version '1.13.0.' + (new Date().format('yyyy.MM.dd_HH.mm'))
+version '1.14.0.' + (new Date().format('yyyy.MM.dd_HH.mm'))
apply plugin: 'java'
@@ -39,6 +39,7 @@ patchPluginXml {
changeNotes = """
English Change Notes:
+- 1.14 Add line-end-comment skip Annotation, skip only English (ASCII)
- 1.13 Add Copy With Line Comment & Add Line Comment
- 1.12 ★ External Comment for COBOL etc
- 1.11 Add json key jump to field
@@ -56,6 +57,7 @@ patchPluginXml {
中文更新说明:
+- 1.14 增加 行末注释 忽略注解 与 忽略纯英文
- 1.13 增加 带行末注释复制 和 添加行末注释
- 1.12 ★ 外部注释用于 COBOL 等
- 1.11 增加 json 跳转到字段
diff --git a/src/main/java/io/github/linwancen/plugin/show/LineEnd.java b/src/main/java/io/github/linwancen/plugin/show/LineEnd.java
index 6a09c8c..006a5bb 100644
--- a/src/main/java/io/github/linwancen/plugin/show/LineEnd.java
+++ b/src/main/java/io/github/linwancen/plugin/show/LineEnd.java
@@ -58,7 +58,7 @@ public class LineEnd extends EditorLinePainter {
@Nullable
private static String doc(@NotNull Document document, int lineNumber,
- @Nullable Project project,
+ @NotNull Project project,
@Nullable VirtualFile file,
@Nullable FileViewProvider viewProvider) {
// lineNumber start 0, as 1 <= 1 should return
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 45905c3..d44ef04 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
@@ -7,6 +7,8 @@ import com.intellij.psi.javadoc.PsiInlineDocTag;
import io.github.linwancen.plugin.show.settings.AppSettingsState;
import org.jetbrains.annotations.Nullable;
+import java.util.regex.Pattern;
+
public class PsiDocToStrDoc {
private PsiDocToStrDoc() {}
@@ -24,10 +26,9 @@ public class PsiDocToStrDoc {
if (appendElementText(sb, element)) {
lineCount++;
}
- if (appSettings.lineEndCount > 0
- && lineCount >= appSettings.lineEndCount
- || appSettings.lineEndLen > 0
- && sb.length() >= appSettings.lineEndLen) {
+ boolean countOver = appSettings.lineEndCount > 0 && lineCount >= appSettings.lineEndCount;
+ boolean lenOver = appSettings.lineEndLen > 0 && sb.length() >= appSettings.lineEndLen;
+ if (countOver || lenOver) {
break;
}
}
@@ -41,16 +42,24 @@ public class PsiDocToStrDoc {
private static boolean appendElementText(StringBuilder sb, PsiElement element) {
if (element instanceof PsiDocToken) {
PsiDocToken psiDocToken = (PsiDocToken) element;
- sb.append(psiDocToken.getText().trim().replace("
", "")).append(" ");
+ sb.append(deleteHtml(psiDocToken.getText()));
+ sb.append(" ");
return true;
}
if (element instanceof PsiInlineDocTag) {
PsiInlineDocTag psiInlineDocTag = (PsiInlineDocTag) element;
PsiElement[] children = psiInlineDocTag.getChildren();
if (children.length > 2) {
- sb.append(children[2].getText().trim().replace("
", "")).append(" ");
+ sb.append(deleteHtml(children[2].getText()));
+ sb.append(" ");
}
}
return false;
}
+
+ private static final Pattern HTML_PATTERN = Pattern.compile("<[^>]++>");
+
+ private static String deleteHtml(String s) {
+ return HTML_PATTERN.matcher(s.trim()).replaceAll("");
+ }
}
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 45d25ae..6cf5c4f 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
@@ -12,10 +12,14 @@ import io.github.linwancen.plugin.show.settings.AppSettingsState;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import java.util.regex.Pattern;
+
/**
* call LineExt, ~LeftToRight, ~RightToLeft
*/
public class FileViewToDocStrUtils {
+
+ public static final Pattern NOT_ASCII_PATTERN = Pattern.compile("[^\u0000-\u007f]");
private FileViewToDocStrUtils() {}
@@ -37,10 +41,15 @@ public class FileViewToDocStrUtils {
if (viewProvider == null) {
return null;
}
- PsiDocComment docComment = AppSettingsState.getInstance().findElementRightToLeft
+ AppSettingsState setting = AppSettingsState.getInstance();
+ PsiDocComment docComment = setting.findElementRightToLeft
? FileViewToPsiDocRightToLeft.rightDoc(viewProvider, startOffset, endOffset)
: FileViewToPsiDocLeftToRight.leftDoc(viewProvider, document, startOffset, endOffset);
- return PsiDocToStrDoc.text(docComment);
+ String strDoc = PsiDocToStrDoc.text(docComment);
+ if (setting.skipAscii && strDoc != null && !NOT_ASCII_PATTERN.matcher(strDoc).find()) {
+ return null;
+ }
+ return strDoc;
}
@NotNull
diff --git a/src/main/java/io/github/linwancen/plugin/show/line/PsiClassSkip.java b/src/main/java/io/github/linwancen/plugin/show/line/PsiClassSkip.java
index 1aaa263..6f91963 100644
--- a/src/main/java/io/github/linwancen/plugin/show/line/PsiClassSkip.java
+++ b/src/main/java/io/github/linwancen/plugin/show/line/PsiClassSkip.java
@@ -18,8 +18,11 @@ class PsiClassSkip {
if (name == null) {
return true;
}
- ProjectSettingsState projectSettings = ProjectSettingsState.getInstance(project);
AppSettingsState appSettings = AppSettingsState.getInstance();
+ if (appSettings.skipAnnotation && psiClass.isAnnotationType()) {
+ return true;
+ }
+ ProjectSettingsState projectSettings = ProjectSettingsState.getInstance(project);
if (projectSettings.globalFilterEffective
&& skipName(name, appSettings.lineEndIncludeArray, appSettings.lineEndExcludeArray)) {
return true;
@@ -30,22 +33,22 @@ class PsiClassSkip {
return false;
}
- static boolean skipName(String name, String[] includeArray, String[] excludeArray) {
- if (exclude(name, excludeArray)) {
+ static boolean skipName(String name, String[] include, String[] exclude) {
+ if (exclude(name, exclude)) {
return true;
}
- return !include(name, includeArray);
+ return !include(name, include);
}
- static boolean include(String name, String[] lineEndIncludeArray) {
- if (lineEndIncludeArray.length == 0) {
+ static boolean include(String name, String[] include) {
+ if (include.length == 0) {
return true;
}
- return exclude(name, lineEndIncludeArray);
+ return exclude(name, include);
}
- static boolean exclude(String name, String[] projectLineEndExcludeArray) {
- for (String s : projectLineEndExcludeArray) {
+ static boolean exclude(String name, String[] exclude) {
+ for (String s : exclude) {
if (name.startsWith(s)) {
return true;
}
diff --git a/src/main/java/io/github/linwancen/plugin/show/settings/AbstractSettingsComponent.java b/src/main/java/io/github/linwancen/plugin/show/settings/AbstractSettingsComponent.java
index 8ab8db1..bf3bc4f 100644
--- a/src/main/java/io/github/linwancen/plugin/show/settings/AbstractSettingsComponent.java
+++ b/src/main/java/io/github/linwancen/plugin/show/settings/AbstractSettingsComponent.java
@@ -20,8 +20,8 @@ public abstract class AbstractSettingsComponent {
.addComponent(new JBLabel("Separated by ',' or ' ' etc."))
.addComponent(new JBLabel("Use '' to include all or exclude none."))
.addSeparator()
- .addLabeledComponent(new JBLabel("line end include start with: "), lineEndInclude, 1, true)
- .addLabeledComponent(new JBLabel("line end exclude start with: "), lineEndExclude, 1, true)
+ .addLabeledComponent(new JBLabel("line end include className start with: "), lineEndInclude, 1, true)
+ .addLabeledComponent(new JBLabel("line end exclude className start with: "), lineEndExclude, 1, true)
.getPanel();
lineEndFilter.setBorder(IdeBorderFactory.createTitledBorder(
"Line End Comment"));
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 99efdfa..2852873 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
@@ -20,6 +20,8 @@ public class AppSettingsComponent extends AbstractSettingsComponent {
private final JBCheckBox fromNew = new JBCheckBox("new ");
private final JBCheckBox fromRef = new JBCheckBox("ref ");
private final JBCheckBox inJson = new JBCheckBox("in json ");
+ private final JBCheckBox skipAnnotation = new JBCheckBox("skip @ ");
+ private final JBCheckBox skipAscii = new JBCheckBox("skip English ");
private final ColorPanel lineEndColor = new ColorPanel();
private final ColorPanel lineEndJsonColor = new ColorPanel();
private final JBCheckBox findElementRightToLeft = new JBCheckBox("Find element right to left");
@@ -54,7 +56,7 @@ public class AppSettingsComponent extends AbstractSettingsComponent {
FormBuilder formBuilder = FormBuilder.createFormBuilder()
.addComponent(JPanelFactory.of(findElementRightToLeft))
.addSeparator()
- .addComponent(JPanelFactory.of(fromCall, fromNew, fromRef, inJson), 1)
+ .addComponent(JPanelFactory.of(fromCall, fromNew, fromRef, inJson, skipAnnotation, skipAscii), 1)
.addSeparator()
.addComponent(text)
.addSeparator();
@@ -118,6 +120,22 @@ public class AppSettingsComponent extends AbstractSettingsComponent {
inJson.setSelected(newStatus);
}
+ public boolean getSkipAnnotation() {
+ return skipAnnotation.isSelected();
+ }
+
+ public void setSkipAnnotation(boolean newStatus) {
+ skipAnnotation.setSelected(newStatus);
+ }
+
+ public boolean getSkipAscii() {
+ return skipAscii.isSelected();
+ }
+
+ public void setSkipAscii(boolean newStatus) {
+ skipAscii.setSelected(newStatus);
+ }
+
public Color getLineEndColor() {
return lineEndColor.getSelectedColor();
}
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 55dea31..8492fde 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
@@ -37,6 +37,8 @@ public class AppSettingsConfigurable implements Configurable {
modified |= mySettingsComponent.getFromNew() != settings.fromNew;
modified |= mySettingsComponent.getFromRef() != settings.fromRef;
modified |= mySettingsComponent.getInJson() != settings.inJson;
+ modified |= mySettingsComponent.getSkipAnnotation() != settings.skipAnnotation;
+ modified |= mySettingsComponent.getSkipAscii() != settings.skipAscii;
modified |= !mySettingsComponent.getLineEndColor().equals(settings.lineEndTextAttr.getForegroundColor());
modified |= !mySettingsComponent.getLineEndJsonColor().equals(settings.lineEndJsonTextAttr.getForegroundColor());
modified |= mySettingsComponent.getFindElementRightToLeft() != settings.findElementRightToLeft;
@@ -56,6 +58,8 @@ public class AppSettingsConfigurable implements Configurable {
settings.fromNew = mySettingsComponent.getFromNew();
settings.fromRef = mySettingsComponent.getFromRef();
settings.inJson = mySettingsComponent.getInJson();
+ settings.skipAnnotation = mySettingsComponent.getSkipAnnotation();
+ settings.skipAscii = mySettingsComponent.getSkipAscii();
settings.lineEndTextAttr.setForegroundColor(mySettingsComponent.getLineEndColor());
settings.lineEndJsonTextAttr.setForegroundColor(mySettingsComponent.getLineEndJsonColor());
settings.findElementRightToLeft = mySettingsComponent.getFindElementRightToLeft();
@@ -80,6 +84,8 @@ public class AppSettingsConfigurable implements Configurable {
mySettingsComponent.setFromNew(settings.fromNew);
mySettingsComponent.setFromRef(settings.fromRef);
mySettingsComponent.setInJson(settings.inJson);
+ mySettingsComponent.setSkipAnnotation(settings.skipAnnotation);
+ mySettingsComponent.setSkipAscii(settings.skipAscii);
mySettingsComponent.setLineEndColor(settings.lineEndTextAttr.getForegroundColor());
mySettingsComponent.setLineEndJsonColor(settings.lineEndJsonTextAttr.getForegroundColor());
mySettingsComponent.setFindElementRightToLeft(settings.findElementRightToLeft);
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 e78c4da..fab397d 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
@@ -37,11 +37,13 @@ public class AppSettingsState implements PersistentStateComponentShow javadoc comments at the Project view Tree structure
- Show javadoc comments at the end-of-line
- Show javadoc comments at "xx ClassNameOrSimpleName.json" and jump to field
+
- Show comments from External Conf for folder, resources, COBOL etc.
- Config: settings -> Tools -> // Show Comment Global/Project
@@ -30,6 +31,7 @@
- 在结构树显示 文档注释
- 在行末尾显示 文档注释
- 支持 "xx 类全名或简名.json" 文档注释与跳转到字段
+
- 支持 从配置文件获取外部注释用于文件夹、资源、COBOL 等
- 修改配置:设置 -> 工具 -> // Show Comment Global/Project