From 2d7efb7be9bbf62fddb33741c54a378eaca083cf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9E=97=E4=B8=87=E7=A8=8B?= <1498425439@qq.com>
Date: Mon, 22 Dec 2025 04:19:39 +0800
Subject: [PATCH] =?UTF-8?q?feat(JavaLangDoc):=202.29=20show=20java=20field?=
=?UTF-8?q?=20value=20|=20=E6=98=BE=E7=A4=BA=20Java=20=E5=AD=97=E6=AE=B5?=
=?UTF-8?q?=E5=80=BC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
build.gradle | 4 +-
.../plugin/show/java/JavaLangDoc.java | 60 ++++++++++++++++++-
.../plugin/show/java/KotlinLangDoc.java | 2 +-
.../java/{doc => resolve}/AnnoDocJava.java | 3 +-
.../show/java/{kt => resolve}/AnnoDocKt.java | 2 +-
.../show/java/{doc => resolve}/EnumDoc.java | 2 +-
.../show/java/{doc => resolve}/ParamDoc.java | 3 +-
.../show/java/resolve/package-info.java | 5 ++
.../show/settings/AppSettingsComponent.java | 11 +++-
.../settings/AppSettingsConfigurable.java | 3 +
.../show/settings/AppSettingsState.java | 1 +
11 files changed, 86 insertions(+), 10 deletions(-)
rename src/main/idea/io/github/linwancen/plugin/show/java/{doc => resolve}/AnnoDocJava.java (96%)
rename src/main/idea/io/github/linwancen/plugin/show/java/{kt => resolve}/AnnoDocKt.java (98%)
rename src/main/idea/io/github/linwancen/plugin/show/java/{doc => resolve}/EnumDoc.java (94%)
rename src/main/idea/io/github/linwancen/plugin/show/java/{doc => resolve}/ParamDoc.java (92%)
create mode 100644 src/main/idea/io/github/linwancen/plugin/show/java/resolve/package-info.java
diff --git a/build.gradle b/build.gradle
index 5f5dca2..c65755e 100644
--- a/build.gradle
+++ b/build.gradle
@@ -4,7 +4,7 @@ plugins {
}
group 'io.github.linwancen'
-version '2.28.0.' + (new Date().format('yyyy.MM.dd_HH.mm'))
+version '2.29.0.' + (new Date().format('yyyy.MM.dd_HH.mm'))
patchPluginXml {
// The performance of 2019.3 has been greatly improved.
@@ -15,6 +15,7 @@ patchPluginXml {
changeNotes = """
English Change Notes:
+- 2.29 Add line-end-comment java field value
- 2.28 Add app-setting Alt X switch line end comment
- 2.27 Add project-view-tree use 1st or 2nd line to file comment
- 2.26 Add External Comment load *.sql ddl comment
@@ -72,6 +73,7 @@ patchPluginXml {
中文更新说明:
+- 2.29 增加 行末注释 Java 字段值
- 2.28 增加 全局设置 Alt + X 行末注释开关
- 2.27 增加 文件树注释 用第 1 或第 2 行注释当文件注释
- 2.26 增加 外部注释 读取 *.sql ddl 注释
diff --git a/src/main/idea/io/github/linwancen/plugin/show/java/JavaLangDoc.java b/src/main/idea/io/github/linwancen/plugin/show/java/JavaLangDoc.java
index c4ebc20..4d95563 100644
--- a/src/main/idea/io/github/linwancen/plugin/show/java/JavaLangDoc.java
+++ b/src/main/idea/io/github/linwancen/plugin/show/java/JavaLangDoc.java
@@ -6,11 +6,14 @@ import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiDocCommentOwner;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiEnumConstant;
+import com.intellij.psi.PsiExpression;
import com.intellij.psi.PsiField;
import com.intellij.psi.PsiJavaCodeReferenceElement;
import com.intellij.psi.PsiJvmModifiersOwner;
+import com.intellij.psi.PsiLiteralExpression;
import com.intellij.psi.PsiMethod;
import com.intellij.psi.PsiParameter;
+import com.intellij.psi.PsiReferenceExpression;
import com.intellij.psi.PsiWhiteSpace;
import com.intellij.psi.javadoc.PsiDocComment;
import com.intellij.psi.javadoc.PsiDocTag;
@@ -18,20 +21,22 @@ import com.intellij.psi.javadoc.PsiDocTagValue;
import com.intellij.psi.util.PsiTreeUtil;
import io.github.linwancen.plugin.show.bean.LineInfo;
import io.github.linwancen.plugin.show.bean.SettingsInfo;
-import io.github.linwancen.plugin.show.java.doc.AnnoDocJava;
-import io.github.linwancen.plugin.show.java.doc.EnumDoc;
import io.github.linwancen.plugin.show.java.doc.NewDoc;
-import io.github.linwancen.plugin.show.java.doc.ParamDoc;
import io.github.linwancen.plugin.show.java.doc.PsiMethodToPsiDoc;
import io.github.linwancen.plugin.show.java.line.OwnerToPsiDocSkip;
import io.github.linwancen.plugin.show.java.line.SkipUtils;
+import io.github.linwancen.plugin.show.java.resolve.AnnoDocJava;
+import io.github.linwancen.plugin.show.java.resolve.EnumDoc;
+import io.github.linwancen.plugin.show.java.resolve.ParamDoc;
import io.github.linwancen.plugin.show.lang.base.BaseTagLangDoc;
import io.github.linwancen.plugin.show.lang.base.DocFilter;
import io.github.linwancen.plugin.show.lang.base.PsiUnSaveUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
public class JavaLangDoc extends BaseTagLangDoc {
@@ -82,6 +87,55 @@ public class JavaLangDoc extends BaseTagLangDoc {
@Override
public @Nullable String resolveDocPrint(@NotNull T info, @NotNull PsiElement resolve) {
+ @Nullable String doc = resolveDocPrintSrc(info, resolve);
+ if (!(resolve instanceof PsiField)) {
+ return doc;
+ }
+ @NotNull PsiField psiField = (PsiField) resolve;
+ @Nullable PsiExpression initializer = psiField.getInitializer();
+ if (initializer == null) {
+ return doc;
+ }
+ // field init reference
+ @NotNull Set loopCheck = new HashSet<>();
+ loopCheck.add(resolve);
+ while (initializer instanceof PsiReferenceExpression) {
+ try {
+ @Nullable PsiElement r = ((PsiReferenceExpression) initializer).resolve();
+ if (r == null || !loopCheck.add(r)) {
+ break;
+ }
+ if (r instanceof PsiField) {
+ initializer = ((PsiField) r).getInitializer();
+ }
+ if (doc == null) {
+ doc = resolveDocPrintSrc(info, r);
+ }
+ } catch (Throwable ignore) {}
+ }
+ if (!info.appSettings.fieldValue) {
+ return doc;
+ }
+ if (!(initializer instanceof PsiLiteralExpression)) {
+ return doc;
+ }
+ @Nullable Object value = ((PsiLiteralExpression) initializer).getValue();
+ if (value == null) {
+ return doc;
+ }
+ String init = value.toString();
+ // use not ASCII space not skip
+ if (doc == null) {
+ return " = " + init;
+ }
+ // skip like 1-YES
+ if (doc.contains(init) || psiField.getName().contains(init)) {
+ return doc;
+ }
+ return doc + " = " + init;
+ }
+
+ private @Nullable String resolveDocPrintSrc(@NotNull T info, @NotNull PsiElement resolve) {
if (SkipUtils.skipSign(info, resolve)) {
return null;
}
diff --git a/src/main/idea/io/github/linwancen/plugin/show/java/KotlinLangDoc.java b/src/main/idea/io/github/linwancen/plugin/show/java/KotlinLangDoc.java
index 98bb15a..e4b0af1 100644
--- a/src/main/idea/io/github/linwancen/plugin/show/java/KotlinLangDoc.java
+++ b/src/main/idea/io/github/linwancen/plugin/show/java/KotlinLangDoc.java
@@ -5,7 +5,7 @@ import com.intellij.psi.impl.file.PsiPackageBase;
import com.intellij.psi.util.PsiTreeUtil;
import io.github.linwancen.plugin.show.bean.LineInfo;
import io.github.linwancen.plugin.show.bean.SettingsInfo;
-import io.github.linwancen.plugin.show.java.kt.AnnoDocKt;
+import io.github.linwancen.plugin.show.java.resolve.AnnoDocKt;
import io.github.linwancen.plugin.show.lang.base.BaseTagLangDoc;
import io.github.linwancen.plugin.show.lang.base.DocFilter;
import org.jetbrains.annotations.NotNull;
diff --git a/src/main/idea/io/github/linwancen/plugin/show/java/doc/AnnoDocJava.java b/src/main/idea/io/github/linwancen/plugin/show/java/resolve/AnnoDocJava.java
similarity index 96%
rename from src/main/idea/io/github/linwancen/plugin/show/java/doc/AnnoDocJava.java
rename to src/main/idea/io/github/linwancen/plugin/show/java/resolve/AnnoDocJava.java
index 22e8069..cba676f 100644
--- a/src/main/idea/io/github/linwancen/plugin/show/java/doc/AnnoDocJava.java
+++ b/src/main/idea/io/github/linwancen/plugin/show/java/resolve/AnnoDocJava.java
@@ -1,4 +1,4 @@
-package io.github.linwancen.plugin.show.java.doc;
+package io.github.linwancen.plugin.show.java.resolve;
import com.intellij.openapi.project.Project;
import com.intellij.psi.JavaPsiFacade;
@@ -11,6 +11,7 @@ import com.intellij.psi.PsiDocCommentOwner;
import com.intellij.psi.PsiField;
import com.intellij.psi.PsiJvmModifiersOwner;
import com.intellij.psi.PsiMethod;
+import io.github.linwancen.plugin.show.java.doc.PsiMethodToPsiDoc;
import io.github.linwancen.plugin.show.lang.base.BaseAnnoDoc;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
diff --git a/src/main/idea/io/github/linwancen/plugin/show/java/kt/AnnoDocKt.java b/src/main/idea/io/github/linwancen/plugin/show/java/resolve/AnnoDocKt.java
similarity index 98%
rename from src/main/idea/io/github/linwancen/plugin/show/java/kt/AnnoDocKt.java
rename to src/main/idea/io/github/linwancen/plugin/show/java/resolve/AnnoDocKt.java
index 294b32d..d125052 100644
--- a/src/main/idea/io/github/linwancen/plugin/show/java/kt/AnnoDocKt.java
+++ b/src/main/idea/io/github/linwancen/plugin/show/java/resolve/AnnoDocKt.java
@@ -1,4 +1,4 @@
-package io.github.linwancen.plugin.show.java.kt;
+package io.github.linwancen.plugin.show.java.resolve;
import io.github.linwancen.plugin.show.lang.base.BaseAnnoDoc;
import io.github.linwancen.plugin.show.lang.base.PsiUnSaveUtils;
diff --git a/src/main/idea/io/github/linwancen/plugin/show/java/doc/EnumDoc.java b/src/main/idea/io/github/linwancen/plugin/show/java/resolve/EnumDoc.java
similarity index 94%
rename from src/main/idea/io/github/linwancen/plugin/show/java/doc/EnumDoc.java
rename to src/main/idea/io/github/linwancen/plugin/show/java/resolve/EnumDoc.java
index b0de7ed..d43058b 100644
--- a/src/main/idea/io/github/linwancen/plugin/show/java/doc/EnumDoc.java
+++ b/src/main/idea/io/github/linwancen/plugin/show/java/resolve/EnumDoc.java
@@ -1,4 +1,4 @@
-package io.github.linwancen.plugin.show.java.doc;
+package io.github.linwancen.plugin.show.java.resolve;
import com.intellij.psi.PsiEnumConstant;
import com.intellij.psi.PsiExpression;
diff --git a/src/main/idea/io/github/linwancen/plugin/show/java/doc/ParamDoc.java b/src/main/idea/io/github/linwancen/plugin/show/java/resolve/ParamDoc.java
similarity index 92%
rename from src/main/idea/io/github/linwancen/plugin/show/java/doc/ParamDoc.java
rename to src/main/idea/io/github/linwancen/plugin/show/java/resolve/ParamDoc.java
index d97d70b..7684563 100644
--- a/src/main/idea/io/github/linwancen/plugin/show/java/doc/ParamDoc.java
+++ b/src/main/idea/io/github/linwancen/plugin/show/java/resolve/ParamDoc.java
@@ -1,4 +1,4 @@
-package io.github.linwancen.plugin.show.java.doc;
+package io.github.linwancen.plugin.show.java.resolve;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiMethod;
@@ -7,6 +7,7 @@ import com.intellij.psi.javadoc.PsiDocComment;
import com.intellij.psi.javadoc.PsiDocTag;
import com.intellij.psi.javadoc.PsiDocTagValue;
import com.intellij.psi.util.PsiTreeUtil;
+import io.github.linwancen.plugin.show.java.doc.PsiMethodToPsiDoc;
import io.github.linwancen.plugin.show.lang.base.PsiUnSaveUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
diff --git a/src/main/idea/io/github/linwancen/plugin/show/java/resolve/package-info.java b/src/main/idea/io/github/linwancen/plugin/show/java/resolve/package-info.java
new file mode 100644
index 0000000..954e99f
--- /dev/null
+++ b/src/main/idea/io/github/linwancen/plugin/show/java/resolve/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * special resolve element to doc.
+ *
Call by {@link io.github.linwancen.plugin.show.java.JavaLangDoc#resolveDocPrint}
+ */
+package io.github.linwancen.plugin.show.java.resolve;
\ No newline at end of file
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 1c2746f..084a75a 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
@@ -51,6 +51,7 @@ public class AppSettingsComponent {
private final JBCheckBox skipBlank = new JBCheckBox(ShowBundle.message("skip.blank"));
private final JBCheckBox skipAnnotation = new JBCheckBox(ShowBundle.message("skip.anno"));
private final JBCheckBox getToSet = new JBCheckBox("get --> set ");
+ private final JBCheckBox fieldValue = new JBCheckBox("field value");
private final JBCheckBox fromNew = new JBCheckBox("java new ");
private final JBCheckBox fromParam = new JBCheckBox("java @param ");
private final JBCheckBox enumDoc = new JBCheckBox("java enum ");
@@ -353,6 +354,14 @@ public class AppSettingsComponent {
getToSet.setSelected(newStatus);
}
+ public boolean getFieldValue() {
+ return fieldValue.isSelected();
+ }
+
+ public void setFieldValue(boolean newStatus) {
+ fieldValue.setSelected(newStatus);
+ }
+
public boolean getFromNew() {
return fromNew.isSelected();
}
@@ -468,7 +477,7 @@ public class AppSettingsComponent {
new JBLabel(ShowBundle.message("prefix")), lineEndPrefix);
FormBuilder formBuilder = FormBuilder.createFormBuilder()
.addSeparator()
- .addComponent(JPanelFactory.of(skipAscii, skipBlank, skipAnnotation, getToSet), 1)
+ .addComponent(JPanelFactory.of(skipAscii, skipBlank, skipAnnotation, getToSet, fieldValue), 1)
.addComponent(JPanelFactory.of(fromNew, fromParam, enumDoc), 1)
.addSeparator()
.addComponent(text)
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 91012c6..1d32f35 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
@@ -78,6 +78,7 @@ public class AppSettingsConfigurable implements Configurable {
modified |= mySettingsComponent.getSkipBlank() != settings.skipBlank;
modified |= mySettingsComponent.getSkipAnnotation() != settings.skipAnnotation;
modified |= mySettingsComponent.getGetToSet() != settings.getToSet;
+ modified |= mySettingsComponent.getFieldValue() != settings.fieldValue;
modified |= mySettingsComponent.getFromNew() != settings.fromNew;
modified |= mySettingsComponent.getFromParam() != settings.fromParam;
@@ -131,6 +132,7 @@ public class AppSettingsConfigurable implements Configurable {
settings.skipBlank = mySettingsComponent.getSkipBlank();
settings.skipAnnotation = mySettingsComponent.getSkipAnnotation();
settings.getToSet = mySettingsComponent.getGetToSet();
+ settings.fieldValue = mySettingsComponent.getFieldValue();
settings.fromNew = mySettingsComponent.getFromNew();
settings.fromParam = mySettingsComponent.getFromParam();
@@ -187,6 +189,7 @@ public class AppSettingsConfigurable implements Configurable {
mySettingsComponent.setSkipBlank(settings.skipBlank);
mySettingsComponent.setSkipAnnotation(settings.skipAnnotation);
mySettingsComponent.setGetToSet(settings.getToSet);
+ mySettingsComponent.setFieldValue(settings.fieldValue);
mySettingsComponent.setFromNew(settings.fromNew);
mySettingsComponent.setFromParam(settings.fromParam);
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 0c12c1e..5175926 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
@@ -72,6 +72,7 @@ public class AppSettingsState implements PersistentStateComponent