From baa50ba361149252663ea00e24af00bfd6792f2a 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, 10 Apr 2022 19:42:26 +0800
Subject: [PATCH] =?UTF-8?q?1.13=20Add=20Copy=20With=20Line=20Comment=20&?=
=?UTF-8?q?=20Add=20Line=20Comment=20|=20=E5=A2=9E=E5=8A=A0=20=E5=B8=A6?=
=?UTF-8?q?=E8=A1=8C=E6=9C=AB=E6=B3=A8=E9=87=8A=E5=A4=8D=E5=88=B6=20?=
=?UTF-8?q?=E5=92=8C=20=E6=B7=BB=E5=8A=A0=E8=A1=8C=E6=9C=AB=E6=B3=A8?=
=?UTF-8?q?=E9=87=8A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 2 +
build.gradle | 4 +-
.../linwancen/plugin/show/JsonJump.java | 14 +++-
.../github/linwancen/plugin/show/LineEnd.java | 31 ++++----
.../linwancen/plugin/show/LineEndAdd.java | 73 +++++++++++++++++++
.../linwancen/plugin/show/LineEndCopy.java | 63 ++++++++++++++++
.../io/github/linwancen/plugin/show/Tree.java | 26 +++----
...{DocUtils.java => OwnerToPsiDocUtils.java} | 13 ++--
...DocUtils.java => PackageFileToPsiDoc.java} | 4 +-
.../plugin/show/doc/PsiClassUtils.java | 2 +-
...{DocTextUtils.java => PsiDocToStrDoc.java} | 4 +-
...odDocUtils.java => PsiMethodToPsiDoc.java} | 6 +-
.../{DocMapUtils.java => GetFromDocMap.java} | 12 ++-
.../ext/{LineExtUtils.java => LineExt.java} | 57 ++++++---------
.../ext/{TreeExtUtils.java => TreeExt.java} | 13 ++--
.../plugin/show/ext/conf/ConfCache.java | 23 +++---
.../show/ext/conf/ConfCacheGetUtils.java | 17 ++---
.../linwancen/plugin/show/json/JsonUtils.java | 22 ------
.../plugin/show/{json => jump}/JsonRef.java | 2 +-
.../show/line/FileViewToDocStrUtils.java | 69 ++++++++++++++++++
....java => FileViewToPsiDocLeftToRight.java} | 17 +++--
....java => FileViewToPsiDocRightToLeft.java} | 17 +++--
.../JsonToPsiDoc.java} | 9 ++-
...eDocUtils.java => NewCallRefToPsiDoc.java} | 19 +++--
...ipDocUtils.java => OwnerToPsiDocSkip.java} | 21 +++---
.../{SkipUtils.java => PsiClassSkip.java} | 4 +-
.../show/settings/ProjectSettingsState.java | 4 -
src/main/resources/META-INF/plugin.xml | 12 +++
...ipUtilsTest.java => PsiClassSkipTest.java} | 10 +--
29 files changed, 385 insertions(+), 185 deletions(-)
create mode 100644 src/main/java/io/github/linwancen/plugin/show/LineEndAdd.java
create mode 100644 src/main/java/io/github/linwancen/plugin/show/LineEndCopy.java
rename src/main/java/io/github/linwancen/plugin/show/doc/{DocUtils.java => OwnerToPsiDocUtils.java} (88%)
rename src/main/java/io/github/linwancen/plugin/show/doc/{PackageDocUtils.java => PackageFileToPsiDoc.java} (94%)
rename src/main/java/io/github/linwancen/plugin/show/doc/{DocTextUtils.java => PsiDocToStrDoc.java} (96%)
rename src/main/java/io/github/linwancen/plugin/show/doc/{MethodDocUtils.java => PsiMethodToPsiDoc.java} (94%)
rename src/main/java/io/github/linwancen/plugin/show/ext/{DocMapUtils.java => GetFromDocMap.java} (73%)
rename src/main/java/io/github/linwancen/plugin/show/ext/{LineExtUtils.java => LineExt.java} (60%)
rename src/main/java/io/github/linwancen/plugin/show/ext/{TreeExtUtils.java => TreeExt.java} (55%)
delete mode 100644 src/main/java/io/github/linwancen/plugin/show/json/JsonUtils.java
rename src/main/java/io/github/linwancen/plugin/show/{json => jump}/JsonRef.java (95%)
create mode 100644 src/main/java/io/github/linwancen/plugin/show/line/FileViewToDocStrUtils.java
rename src/main/java/io/github/linwancen/plugin/show/line/{LineDocLeftToRightUtils.java => FileViewToPsiDocLeftToRight.java} (79%)
rename src/main/java/io/github/linwancen/plugin/show/line/{LineDocRightToLeftUtils.java => FileViewToPsiDocRightToLeft.java} (76%)
rename src/main/java/io/github/linwancen/plugin/show/{doc/JsonDocUtils.java => line/JsonToPsiDoc.java} (81%)
rename src/main/java/io/github/linwancen/plugin/show/line/{LineDocUtils.java => NewCallRefToPsiDoc.java} (89%)
rename src/main/java/io/github/linwancen/plugin/show/line/{SkipDocUtils.java => OwnerToPsiDocSkip.java} (54%)
rename src/main/java/io/github/linwancen/plugin/show/line/{SkipUtils.java => PsiClassSkip.java} (97%)
rename src/test/java/io/github/linwancen/plugin/show/line/{SkipUtilsTest.java => PsiClassSkipTest.java} (94%)
diff --git a/README.md b/README.md
index 6211810..8a03ec0 100644
--- a/README.md
+++ b/README.md
@@ -54,6 +54,7 @@ https://plugins.jetbrains.com/plugin/18553-show-comment
English Change Notes:
+- 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
- 1.10 Add project-view-tree-comment for package from parent or other project
@@ -70,6 +71,7 @@ https://plugins.jetbrains.com/plugin/18553-show-comment
中文更新说明:
+- 1.12 增加 带行末注释复制 和 添加行末注释
- 1.12 ★ 外部注释用于 COBOL 等
- 1.11 增加 json 跳转到字段
- 1.10 增加 在父包和其他项目的包中获取 项目导航栏注释
diff --git a/build.gradle b/build.gradle
index d787acf..9140471 100644
--- a/build.gradle
+++ b/build.gradle
@@ -4,7 +4,7 @@ plugins {
}
group 'io.github.linwancen'
-version '1.12.0.' + (new Date().format('yyyy.MM.dd_HH.mm'))
+version '1.13.0.' + (new Date().format('yyyy.MM.dd_HH.mm'))
apply plugin: 'java'
@@ -39,6 +39,7 @@ patchPluginXml {
changeNotes = """
English Change Notes:
+- 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
- 1.10 Add project-view-tree-comment for package from parent or other project
@@ -55,6 +56,7 @@ patchPluginXml {
中文更新说明:
+- 1.12 增加 带行末注释复制 和 添加行末注释
- 1.12 ★ 外部注释用于 COBOL 等
- 1.11 增加 json 跳转到字段
- 1.10 增加 在父包和其他项目的包中获取 项目导航栏注释
diff --git a/src/main/java/io/github/linwancen/plugin/show/JsonJump.java b/src/main/java/io/github/linwancen/plugin/show/JsonJump.java
index eb87627..a5af3ed 100644
--- a/src/main/java/io/github/linwancen/plugin/show/JsonJump.java
+++ b/src/main/java/io/github/linwancen/plugin/show/JsonJump.java
@@ -9,8 +9,7 @@ import com.intellij.psi.*;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.util.ProcessingContext;
import io.github.linwancen.plugin.show.doc.PsiClassUtils;
-import io.github.linwancen.plugin.show.json.JsonRef;
-import io.github.linwancen.plugin.show.json.JsonUtils;
+import io.github.linwancen.plugin.show.jump.JsonRef;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
@@ -39,7 +38,7 @@ public class JsonJump extends PsiReferenceContributor {
List psiFields = new ArrayList<>();
List tips = new ArrayList<>();
PsiClass[] psiClasses = PsiClassUtils.encClass(virtualFile, project);
- List jsonPath = JsonUtils.jsonPath(jsonProp);
+ List jsonPath = jsonPath(jsonProp);
put(project, psiFields, tips, psiClasses, jsonPath, jsonPath.size() - 1);
List list = new ArrayList<>();
@@ -51,6 +50,15 @@ public class JsonJump extends PsiReferenceContributor {
});
}
+ @NotNull
+ private static List jsonPath(JsonProperty jsonProp) {
+ ArrayList jsonPath = new ArrayList<>();
+ do {
+ jsonPath.add(jsonProp.getName());
+ } while ((jsonProp = PsiTreeUtil.getParentOfType(jsonProp, JsonProperty.class)) != null);
+ return jsonPath;
+ }
+
private static void put(Project project, List psiFields, List tips,
PsiClass[] psiClasses, List jsonPath, int level) {
String name = jsonPath.get(level);
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 1ab8ec5..c8702c3 100644
--- a/src/main/java/io/github/linwancen/plugin/show/LineEnd.java
+++ b/src/main/java/io/github/linwancen/plugin/show/LineEnd.java
@@ -5,16 +5,14 @@ import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.EditorLinePainter;
import com.intellij.openapi.editor.LineExtensionInfo;
import com.intellij.openapi.editor.markup.TextAttributes;
+import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.project.DumbService;
import com.intellij.openapi.project.Project;
+import com.intellij.openapi.util.TextRange;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.FileViewProvider;
import com.intellij.psi.PsiManager;
-import com.intellij.psi.javadoc.PsiDocComment;
-import io.github.linwancen.plugin.show.doc.DocTextUtils;
-import io.github.linwancen.plugin.show.line.LineDocLeftToRightUtils;
-import io.github.linwancen.plugin.show.line.LineDocRightToLeftUtils;
-import io.github.linwancen.plugin.show.ext.LineExtUtils;
+import io.github.linwancen.plugin.show.line.FileViewToDocStrUtils;
import io.github.linwancen.plugin.show.settings.AppSettingsState;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -51,13 +49,18 @@ public class LineEnd extends EditorLinePainter {
private static @Nullable String doc(@NotNull Project project,
@NotNull VirtualFile file, int lineNumber) {
FileViewProvider viewProvider = PsiManager.getInstance(project).findViewProvider(file);
- if (viewProvider == null) {
- return null;
- }
- Document document = viewProvider.getDocument();
+ Document document = FileDocumentManager.getInstance().getDocument(file);
if (document == null) {
return null;
}
+ return doc(document, lineNumber, project, file, viewProvider);
+ }
+
+ @Nullable
+ private static String doc(@NotNull Document document, int lineNumber,
+ @Nullable Project project,
+ @Nullable VirtualFile file,
+ @Nullable FileViewProvider viewProvider) {
// lineNumber start 0, as 1 <= 1 should return
if (document.getLineCount() <= lineNumber) {
return null;
@@ -67,13 +70,7 @@ public class LineEnd extends EditorLinePainter {
if (startOffset == endOffset) {
return null;
}
- String ext = LineExtUtils.extDoc(project, file, document, startOffset, endOffset);
- if (ext != null) {
- return ext;
- }
- PsiDocComment docComment = AppSettingsState.getInstance().findElementRightToLeft
- ? LineDocRightToLeftUtils.rightDoc(viewProvider, startOffset, endOffset)
- : LineDocLeftToRightUtils.leftDoc(viewProvider, document, startOffset, endOffset);
- return DocTextUtils.text(docComment);
+ String text = document.getText(new TextRange(startOffset, endOffset));
+ return FileViewToDocStrUtils.doc(document, project, file, viewProvider, startOffset, endOffset, text);
}
}
diff --git a/src/main/java/io/github/linwancen/plugin/show/LineEndAdd.java b/src/main/java/io/github/linwancen/plugin/show/LineEndAdd.java
new file mode 100644
index 0000000..3b998f0
--- /dev/null
+++ b/src/main/java/io/github/linwancen/plugin/show/LineEndAdd.java
@@ -0,0 +1,73 @@
+package io.github.linwancen.plugin.show;
+
+import com.intellij.openapi.actionSystem.AnAction;
+import com.intellij.openapi.actionSystem.AnActionEvent;
+import com.intellij.openapi.actionSystem.CommonDataKeys;
+import com.intellij.openapi.command.WriteCommandAction;
+import com.intellij.openapi.editor.Document;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.ui.popup.JBPopupFactory;
+import com.intellij.openapi.ui.popup.ListPopup;
+import com.intellij.openapi.vfs.VfsUtilCore;
+import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.openapi.vfs.VirtualFileVisitor;
+import com.intellij.psi.FileViewProvider;
+import com.intellij.psi.PsiManager;
+import io.github.linwancen.plugin.show.line.FileViewToDocStrUtils;
+import io.github.linwancen.plugin.show.settings.AppSettingsState;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * on ProjectViewPopupMenu
+ */
+public class LineEndAdd extends AnAction {
+
+ @Override
+ public void actionPerformed(@NotNull AnActionEvent event) {
+ Project project = event.getProject();
+ if (project == null) {
+ return;
+ }
+ VirtualFile[] files = event.getData(CommonDataKeys.VIRTUAL_FILE_ARRAY);
+ if (files == null) {
+ return;
+ }
+ ListPopup confirmation = JBPopupFactory.getInstance().createConfirmation(
+ "Add Line Comment?", "Add and replace files!", "Don't add.",
+ () -> addDocAll(project, files), 2);
+ confirmation.showInFocusCenter();
+ }
+
+ private void addDocAll(@NotNull Project project, @NotNull VirtualFile[] files) {
+ AppSettingsState settings = AppSettingsState.getInstance();
+ for (VirtualFile file : files) {
+ VfsUtilCore.visitChildrenRecursively(file, new VirtualFileVisitor() {
+ @Override
+ public boolean visitFile(@NotNull VirtualFile file) {
+ if (!file.isDirectory()) {
+ addDoc(project, file, settings);
+ }
+ return true;
+ }
+ });
+ }
+ }
+
+ private void addDoc(@NotNull Project project, @NotNull VirtualFile file, @NotNull AppSettingsState settings) {
+ FileViewProvider viewProvider = PsiManager.getInstance(project).findViewProvider(file);
+ if (viewProvider == null) {
+ return;
+ }
+ Document document = viewProvider.getDocument();
+ if (document == null) {
+ return;
+ }
+ int startLine = 0;
+ int endLine = document.getLineCount() - 1;
+ String textWithDoc = FileViewToDocStrUtils.textWithDoc(settings, document,
+ startLine, endLine, project, file, viewProvider);
+ WriteCommandAction.runWriteCommandAction(project, () ->
+ document.replaceString(0, document.getTextLength() - 1, textWithDoc)
+ );
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/io/github/linwancen/plugin/show/LineEndCopy.java b/src/main/java/io/github/linwancen/plugin/show/LineEndCopy.java
new file mode 100644
index 0000000..266230d
--- /dev/null
+++ b/src/main/java/io/github/linwancen/plugin/show/LineEndCopy.java
@@ -0,0 +1,63 @@
+package io.github.linwancen.plugin.show;
+
+import com.intellij.openapi.actionSystem.AnAction;
+import com.intellij.openapi.actionSystem.AnActionEvent;
+import com.intellij.openapi.actionSystem.CommonDataKeys;
+import com.intellij.openapi.editor.Caret;
+import com.intellij.openapi.editor.Document;
+import com.intellij.openapi.editor.Editor;
+import com.intellij.openapi.ide.CopyPasteManager;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.psi.FileViewProvider;
+import com.intellij.psi.PsiFile;
+import io.github.linwancen.plugin.show.line.FileViewToDocStrUtils;
+import io.github.linwancen.plugin.show.settings.AppSettingsState;
+import org.jetbrains.annotations.NotNull;
+
+import java.awt.datatransfer.StringSelection;
+
+/**
+ * on EditorPopupMenu
+ */
+public class LineEndCopy extends AnAction {
+
+ @Override
+ public void actionPerformed(@NotNull AnActionEvent event) {
+ Project project = event.getProject();
+ VirtualFile file = event.getData(CommonDataKeys.VIRTUAL_FILE);
+ if (file == null) {
+ return;
+ }
+ PsiFile psiFile = event.getData(CommonDataKeys.PSI_FILE);
+ if (psiFile == null) {
+ return;
+ }
+ FileViewProvider viewProvider = psiFile.getViewProvider();
+ Document document = viewProvider.getDocument();
+ if (document == null) {
+ return;
+ }
+ int startLine = 0;
+ int endLine = document.getLineCount() - 1;
+
+ // if select
+ Editor editor = event.getData(CommonDataKeys.EDITOR);
+ if (editor != null) {
+ Caret primaryCaret = editor.getCaretModel().getPrimaryCaret();
+ int start = primaryCaret.getSelectionStart();
+ int end = primaryCaret.getSelectionEnd();
+ if (start != end) {
+ startLine = document.getLineNumber(start);
+ endLine = document.getLineNumber(end);
+ }
+ }
+
+ AppSettingsState settings = AppSettingsState.getInstance();
+
+ String textWithDoc = FileViewToDocStrUtils.textWithDoc(settings, document,
+ startLine, endLine, project, file, viewProvider);
+ StringSelection content = new StringSelection(textWithDoc);
+ CopyPasteManager.getInstance().setContents(content);
+ }
+}
\ No newline at end of file
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 b0e2e5e..67c9d8f 100644
--- a/src/main/java/io/github/linwancen/plugin/show/Tree.java
+++ b/src/main/java/io/github/linwancen/plugin/show/Tree.java
@@ -14,9 +14,9 @@ import com.intellij.psi.*;
import com.intellij.psi.javadoc.PsiDocComment;
import com.intellij.ui.ColoredTreeCellRenderer;
import com.intellij.ui.SimpleTextAttributes;
-import io.github.linwancen.plugin.show.doc.DocTextUtils;
-import io.github.linwancen.plugin.show.doc.DocUtils;
-import io.github.linwancen.plugin.show.ext.TreeExtUtils;
+import io.github.linwancen.plugin.show.doc.PsiDocToStrDoc;
+import io.github.linwancen.plugin.show.doc.OwnerToPsiDocUtils;
+import io.github.linwancen.plugin.show.ext.TreeExt;
import io.github.linwancen.plugin.show.settings.AppSettingsState;
import org.jetbrains.annotations.Nullable;
@@ -51,7 +51,7 @@ public class Tree implements ProjectViewNodeDecorator {
@Nullable
private String doc(ProjectViewNode> node, Project project) {
- String extDoc = extDoc(node, project);
+ String extDoc = extDoc(node);
if (extDoc != null) {
return extDoc;
}
@@ -59,23 +59,23 @@ public class Tree implements ProjectViewNodeDecorator {
if (docComment == null) {
return null;
}
- return DocTextUtils.text(docComment);
+ return PsiDocToStrDoc.text(docComment);
}
@Nullable
- public static String extDoc(ProjectViewNode> node, Project project) {
+ public static String extDoc(ProjectViewNode> node) {
VirtualFile file = node.getVirtualFile();
if (file == null) {
return null;
}
- return TreeExtUtils.extDoc(project, file);
+ return TreeExt.extDoc(file);
}
@Nullable
private static PsiDocComment nodeDoc(ProjectViewNode> node, Project project) {
if (node instanceof PsiFileNode) {
PsiFile psiFile = ((PsiFileNode) node).getValue();
- return DocUtils.fileDoc(psiFile);
+ return OwnerToPsiDocUtils.fileDoc(psiFile);
}
if (node instanceof PsiDirectoryNode) {
PsiDirectory psiDirectory = ((PsiDirectoryNode) node).getValue();
@@ -85,18 +85,18 @@ public class Tree implements ProjectViewNodeDecorator {
if (node instanceof PsiMethodNode) {
// On Show Members
PsiMethod psiMethod = ((PsiMethodNode) node).getValue();
- return DocUtils.methodDoc(psiMethod);
+ return OwnerToPsiDocUtils.methodDoc(psiMethod);
}
if (node instanceof PsiFieldNode) {
// On Show Members
PsiField psiField = ((PsiFieldNode) node).getValue();
- return DocUtils.srcOrByteCodeDoc(psiField);
+ return OwnerToPsiDocUtils.srcOrByteCodeDoc(psiField);
}
if (node instanceof ClassTreeNode) {
// On Packages View, Project Files View, Show Members
PsiClass psiClass = ((ClassTreeNode) node).getValue();
- return DocUtils.srcOrByteCodeDoc(psiClass);
+ return OwnerToPsiDocUtils.srcOrByteCodeDoc(psiClass);
}
if (node instanceof PackageElementNode) {
// On Packages View
@@ -119,7 +119,7 @@ public class Tree implements ProjectViewNodeDecorator {
@Nullable
private static PsiDocComment dirDoc(PsiDirectory child) {
while (true) {
- PsiDocComment docComment = DocUtils.dirDoc(child);
+ PsiDocComment docComment = OwnerToPsiDocUtils.dirDoc(child);
if (docComment != null) {
return docComment;
}
@@ -137,7 +137,7 @@ public class Tree implements ProjectViewNodeDecorator {
@Nullable
private static PsiDocComment packageDoc(PsiPackage child) {
while (true) {
- PsiDocComment docComment = DocUtils.packageDoc(child);
+ PsiDocComment docComment = OwnerToPsiDocUtils.packageDoc(child);
if (docComment != null) {
return docComment;
}
diff --git a/src/main/java/io/github/linwancen/plugin/show/doc/DocUtils.java b/src/main/java/io/github/linwancen/plugin/show/doc/OwnerToPsiDocUtils.java
similarity index 88%
rename from src/main/java/io/github/linwancen/plugin/show/doc/DocUtils.java
rename to src/main/java/io/github/linwancen/plugin/show/doc/OwnerToPsiDocUtils.java
index fe14323..82d6a48 100644
--- a/src/main/java/io/github/linwancen/plugin/show/doc/DocUtils.java
+++ b/src/main/java/io/github/linwancen/plugin/show/doc/OwnerToPsiDocUtils.java
@@ -5,9 +5,12 @@ import com.intellij.psi.*;
import com.intellij.psi.javadoc.PsiDocComment;
import org.jetbrains.annotations.Nullable;
-public class DocUtils {
+/**
+ * call PackageFileToPsiDoc, PsiMethodToPsiDoc, PsiClassUtils
+ */
+public class OwnerToPsiDocUtils {
- private DocUtils() {}
+ private OwnerToPsiDocUtils() {}
public static PsiDocComment srcOrByteCodeDoc(PsiDocCommentOwner psiDocCommentOwner) {
PsiElement navElement = psiDocCommentOwner.getNavigationElement();
@@ -19,7 +22,7 @@ public class DocUtils {
@Nullable
public static PsiDocComment methodDoc(PsiMethod psiMethod) {
- return MethodDocUtils.methodSupperNewPropDoc(psiMethod);
+ return PsiMethodToPsiDoc.methodSupperNewPropDoc(psiMethod);
}
@Nullable
@@ -34,7 +37,7 @@ public class DocUtils {
PsiDirectory[] psiDirectories = psiPackage.getDirectories();
for (PsiDirectory psiDirectory : psiDirectories) {
PsiFile file = psiDirectory.findFile(PsiPackage.PACKAGE_INFO_FILE);
- PsiDocComment psiDocComment = PackageDocUtils.fromPackageInfoFile(file);
+ PsiDocComment psiDocComment = PackageFileToPsiDoc.fromPackageInfoFile(file);
if (psiDocComment != null) {
return psiDocComment;
}
@@ -62,7 +65,7 @@ public class DocUtils {
return null;
}
if (PsiPackage.PACKAGE_INFO_FILE.equals(psiFile.getName())) {
- return PackageDocUtils.fromPackageInfoFile(psiFile);
+ return PackageFileToPsiDoc.fromPackageInfoFile(psiFile);
}
PsiClassOwner psiClassOwner = (PsiClassOwner) psiFile;
PsiClass[] classes = psiClassOwner.getClasses();
diff --git a/src/main/java/io/github/linwancen/plugin/show/doc/PackageDocUtils.java b/src/main/java/io/github/linwancen/plugin/show/doc/PackageFileToPsiDoc.java
similarity index 94%
rename from src/main/java/io/github/linwancen/plugin/show/doc/PackageDocUtils.java
rename to src/main/java/io/github/linwancen/plugin/show/doc/PackageFileToPsiDoc.java
index 6af568f..d5f5c68 100644
--- a/src/main/java/io/github/linwancen/plugin/show/doc/PackageDocUtils.java
+++ b/src/main/java/io/github/linwancen/plugin/show/doc/PackageFileToPsiDoc.java
@@ -8,9 +8,9 @@ import com.intellij.psi.javadoc.PsiDocComment;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-class PackageDocUtils {
+class PackageFileToPsiDoc {
- private PackageDocUtils() {}
+ private PackageFileToPsiDoc() {}
@Nullable
static PsiDocComment fromPackageInfoFile(PsiFile packageInfoFile) {
diff --git a/src/main/java/io/github/linwancen/plugin/show/doc/PsiClassUtils.java b/src/main/java/io/github/linwancen/plugin/show/doc/PsiClassUtils.java
index 939b489..708eaf7 100644
--- a/src/main/java/io/github/linwancen/plugin/show/doc/PsiClassUtils.java
+++ b/src/main/java/io/github/linwancen/plugin/show/doc/PsiClassUtils.java
@@ -40,7 +40,7 @@ public class PsiClassUtils {
}
@NotNull
- public static PsiClass[] simpleNameToClass(@NotNull String className, @NotNull Project project) {
+ private static PsiClass[] simpleNameToClass(@NotNull String className, @NotNull Project project) {
PsiShortNamesCache namesCache = PsiShortNamesCache.getInstance(project);
return namesCache.getClassesByName(className, GlobalSearchScope.allScope(project));
}
diff --git a/src/main/java/io/github/linwancen/plugin/show/doc/DocTextUtils.java b/src/main/java/io/github/linwancen/plugin/show/doc/PsiDocToStrDoc.java
similarity index 96%
rename from src/main/java/io/github/linwancen/plugin/show/doc/DocTextUtils.java
rename to src/main/java/io/github/linwancen/plugin/show/doc/PsiDocToStrDoc.java
index 10ceab9..45905c3 100644
--- a/src/main/java/io/github/linwancen/plugin/show/doc/DocTextUtils.java
+++ b/src/main/java/io/github/linwancen/plugin/show/doc/PsiDocToStrDoc.java
@@ -7,9 +7,9 @@ import com.intellij.psi.javadoc.PsiInlineDocTag;
import io.github.linwancen.plugin.show.settings.AppSettingsState;
import org.jetbrains.annotations.Nullable;
-public class DocTextUtils {
+public class PsiDocToStrDoc {
- private DocTextUtils() {}
+ private PsiDocToStrDoc() {}
@Nullable
public static String text(@Nullable PsiDocComment psiDocComment) {
diff --git a/src/main/java/io/github/linwancen/plugin/show/doc/MethodDocUtils.java b/src/main/java/io/github/linwancen/plugin/show/doc/PsiMethodToPsiDoc.java
similarity index 94%
rename from src/main/java/io/github/linwancen/plugin/show/doc/MethodDocUtils.java
rename to src/main/java/io/github/linwancen/plugin/show/doc/PsiMethodToPsiDoc.java
index c5f8f12..1d883fd 100644
--- a/src/main/java/io/github/linwancen/plugin/show/doc/MethodDocUtils.java
+++ b/src/main/java/io/github/linwancen/plugin/show/doc/PsiMethodToPsiDoc.java
@@ -7,9 +7,9 @@ import com.intellij.psi.PsiMethod;
import com.intellij.psi.javadoc.PsiDocComment;
import org.jetbrains.annotations.Nullable;
-class MethodDocUtils {
+class PsiMethodToPsiDoc {
- private MethodDocUtils() {}
+ private PsiMethodToPsiDoc() {}
@Nullable
static PsiDocComment methodSupperNewPropDoc(PsiMethod psiMethod) {
@@ -49,7 +49,7 @@ class MethodDocUtils {
private static PsiDocComment supperMethodDoc(PsiMethod psiMethod) {
PsiMethod[] superMethods = psiMethod.findSuperMethods();
for (PsiMethod superMethod : superMethods) {
- PsiDocComment superDoc = DocUtils.methodDoc(superMethod);
+ PsiDocComment superDoc = OwnerToPsiDocUtils.methodDoc(superMethod);
if (superDoc != null) {
return superDoc;
}
diff --git a/src/main/java/io/github/linwancen/plugin/show/ext/DocMapUtils.java b/src/main/java/io/github/linwancen/plugin/show/ext/GetFromDocMap.java
similarity index 73%
rename from src/main/java/io/github/linwancen/plugin/show/ext/DocMapUtils.java
rename to src/main/java/io/github/linwancen/plugin/show/ext/GetFromDocMap.java
index f99dcb8..c01a4f3 100644
--- a/src/main/java/io/github/linwancen/plugin/show/ext/DocMapUtils.java
+++ b/src/main/java/io/github/linwancen/plugin/show/ext/GetFromDocMap.java
@@ -1,6 +1,5 @@
package io.github.linwancen.plugin.show.ext;
-import io.github.linwancen.plugin.show.settings.ProjectSettingsState;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -8,16 +7,15 @@ import java.util.Collections;
import java.util.List;
import java.util.Map;
-class DocMapUtils {
+class GetFromDocMap {
- private DocMapUtils() {}
+ private GetFromDocMap() {}
@Nullable
- static String get(@NotNull Map>> docMap,
- @NotNull ProjectSettingsState set, @NotNull String... words) {
+ static String get(@NotNull Map>> docMap, @NotNull String... words) {
List keywordDoc = list(docMap, words);
- if (keywordDoc.size() >= set.extDocColumn) {
- return keywordDoc.get(set.extDocColumn - 1);
+ if (keywordDoc.size() >= 2) {
+ return keywordDoc.get(1);
}
return null;
}
diff --git a/src/main/java/io/github/linwancen/plugin/show/ext/LineExtUtils.java b/src/main/java/io/github/linwancen/plugin/show/ext/LineExt.java
similarity index 60%
rename from src/main/java/io/github/linwancen/plugin/show/ext/LineExtUtils.java
rename to src/main/java/io/github/linwancen/plugin/show/ext/LineExt.java
index 3d2441a..8e460eb 100644
--- a/src/main/java/io/github/linwancen/plugin/show/ext/LineExtUtils.java
+++ b/src/main/java/io/github/linwancen/plugin/show/ext/LineExt.java
@@ -1,11 +1,7 @@
package io.github.linwancen.plugin.show.ext;
-import com.intellij.openapi.editor.Document;
import com.intellij.openapi.project.Project;
-import com.intellij.openapi.util.TextRange;
-import com.intellij.openapi.vfs.VirtualFile;
import io.github.linwancen.plugin.show.ext.conf.ConfCache;
-import io.github.linwancen.plugin.show.settings.ProjectSettingsState;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -14,32 +10,32 @@ import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-public class LineExtUtils {
+public class LineExt {
- private LineExtUtils() {}
+ private LineExt() {}
- public static String extDoc(@NotNull Project project, @NotNull VirtualFile file,
- @NotNull Document document, int startOffset, int endOffset) {
- Map>> keyMap = ConfCache.keyMap(project, file);
+ public static String extDoc(@Nullable Project project,
+ @NotNull String path, @NotNull String name, @Nullable String ext,
+ @NotNull String text) {
+ Map>> keyMap = ConfCache.keyMap(path, name, ext);
if (keyMap.isEmpty()) {
return null;
}
- Pattern pattern = ConfCache.pattern(project, file, keyMap);
+ Pattern pattern = ConfCache.pattern(project, keyMap, path);
if (pattern == null || pattern.pattern().length() == 0) {
return null;
}
- Map>> docMap = ConfCache.docMap(project, file);
+ Map>> docMap = ConfCache.docMap(path, name, ext);
if (docMap.isEmpty()) {
return null;
}
- Map>> treeMap = ConfCache.treeMap(project, file);
- String text = document.getText(new TextRange(startOffset, endOffset));
- if ("cbl".equals(file.getExtension())) {
+ Map>> treeMap = ConfCache.treeMap(path);
+ if ("cbl".equals(ext)) {
text = cblNotAndOr(text);
}
String[] words = pattern.split(text);
Matcher matcher = pattern.matcher(text);
- return extDoc(keyMap, matcher, docMap, words, treeMap, project);
+ return extDoc(keyMap, matcher, docMap, words, treeMap);
}
private static final Pattern DICT_PATTERN = Pattern.compile("([\\w-]++) ?(NOT)? ?= ?'");
@@ -59,23 +55,20 @@ public class LineExtUtils {
// put NOT first
text = matcher.replaceAll("$2 ( $1 = '");
// add key after AND/OR
- return AND_OR_PATTERN.matcher(text).replaceAll("$1 "+ key + " = '");
+ return AND_OR_PATTERN.matcher(text).replaceAll("$1 " + key + " = '");
}
@Nullable
private static String extDoc(@NotNull Map>> keyMap, @NotNull Matcher matcher,
@NotNull Map>> docMap, @NotNull String[] words,
- @NotNull Map>> treeMap, @NotNull Project project) {
- ProjectSettingsState set = ProjectSettingsState.getInstance(project);
- Pattern extReplaceToSpace = set.extReplaceToSpace;
- boolean isReplaceToSpace = extReplaceToSpace.pattern().length() != 0;
+ @NotNull Map>> treeMap) {
boolean haveDoc = false;
StringBuilder sb = new StringBuilder();
for (String s : words) {
- if (appendDoc(set, sb, docMap, treeMap, extReplaceToSpace, isReplaceToSpace, s)) {
+ if (appendDoc(sb, s, docMap, treeMap)) {
haveDoc = true;
}
- appendKeyDoc(set, sb, keyMap, matcher);
+ appendKeyDoc(sb, matcher, keyMap);
}
if (!haveDoc) {
return null;
@@ -83,23 +76,19 @@ public class LineExtUtils {
return sb.toString();
}
- private static boolean appendDoc(ProjectSettingsState set, StringBuilder sb,
+ private static boolean appendDoc(@NotNull StringBuilder sb, @NotNull String word,
@NotNull Map>> docMap,
- @NotNull Map>> treeMap,
- Pattern extReplaceToSpace, boolean isReplaceToSpace, String word) {
+ @NotNull Map>> treeMap) {
word = word.trim();
- if (isReplaceToSpace) {
- word = extReplaceToSpace.matcher(word).replaceAll(" ");
- }
if (word.length() == 0) {
return false;
}
- String wordDoc = DocMapUtils.get(docMap, set, word);
+ String wordDoc = GetFromDocMap.get(docMap, word);
if (wordDoc != null) {
sb.append(wordDoc);
return true;
}
- String treeDoc = DocMapUtils.get(treeMap, set, word);
+ String treeDoc = GetFromDocMap.get(treeMap, word);
if (treeDoc != null) {
sb.append(treeDoc);
return true;
@@ -108,15 +97,15 @@ public class LineExtUtils {
return false;
}
- private static void appendKeyDoc(@NotNull ProjectSettingsState set, @NotNull StringBuilder sb,
- @NotNull Map>> keyMap,
- @NotNull Matcher matcher) {
+ private static void appendKeyDoc(@NotNull StringBuilder sb,
+ @NotNull Matcher matcher,
+ @NotNull Map>> keyMap) {
if (!matcher.find()) {
return;
}
String keyword = matcher.group();
// "" if no doc
- String keyDoc = DocMapUtils.get(keyMap, set, keyword);
+ String keyDoc = GetFromDocMap.get(keyMap, keyword);
if (keyDoc != null) {
sb.append(" ").append(keyDoc);
}
diff --git a/src/main/java/io/github/linwancen/plugin/show/ext/TreeExtUtils.java b/src/main/java/io/github/linwancen/plugin/show/ext/TreeExt.java
similarity index 55%
rename from src/main/java/io/github/linwancen/plugin/show/ext/TreeExtUtils.java
rename to src/main/java/io/github/linwancen/plugin/show/ext/TreeExt.java
index a11205a..56cc157 100644
--- a/src/main/java/io/github/linwancen/plugin/show/ext/TreeExtUtils.java
+++ b/src/main/java/io/github/linwancen/plugin/show/ext/TreeExt.java
@@ -1,26 +1,23 @@
package io.github.linwancen.plugin.show.ext;
-import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import io.github.linwancen.plugin.show.ext.conf.ConfCache;
-import io.github.linwancen.plugin.show.settings.ProjectSettingsState;
import org.jetbrains.annotations.NotNull;
import java.util.List;
import java.util.Map;
-public class TreeExtUtils {
+public class TreeExt {
- private TreeExtUtils() {}
+ private TreeExt() {}
- public static String extDoc(@NotNull Project project, @NotNull VirtualFile file) {
- Map>> docMap = ConfCache.treeMap(project, file);
- ProjectSettingsState set = ProjectSettingsState.getInstance(project);
+ public static String extDoc(@NotNull VirtualFile file) {
+ Map>> docMap = ConfCache.treeMap(file.getPath());
String[] words = {
file.getName(),
file.getNameWithoutExtension(),
};
- String extDoc = DocMapUtils.get(docMap, set, words);
+ String extDoc = GetFromDocMap.get(docMap, words);
if (extDoc == null) {
return null;
}
diff --git a/src/main/java/io/github/linwancen/plugin/show/ext/conf/ConfCache.java b/src/main/java/io/github/linwancen/plugin/show/ext/conf/ConfCache.java
index 78d6d14..d7928f0 100644
--- a/src/main/java/io/github/linwancen/plugin/show/ext/conf/ConfCache.java
+++ b/src/main/java/io/github/linwancen/plugin/show/ext/conf/ConfCache.java
@@ -38,30 +38,33 @@ public class ConfCache {
private ConfCache() {}
@Nullable
- public static Pattern pattern(@Nullable Project project, @NotNull VirtualFile file,
- @NotNull Map>> keyMap) {
- return ConfFactory.buildPattern(project, file.getPath(), keyMap);
+ public static Pattern pattern(@Nullable Project project,
+ @NotNull Map>> keyMap, @NotNull String path) {
+ return ConfFactory.buildPattern(project, path, keyMap);
}
@NotNull
- public static Map>> keyMap(@Nullable Project project, @NotNull VirtualFile file) {
- String ext = file.getExtension();
+ public static Map>> keyMap(@NotNull String path,
+ @NotNull String name,
+ @Nullable String ext) {
// file witch not ext can have itself ext doc
if (ext != null && !EXT_IN_KEY_CACHE.contains(ext)) {
// faster than find in KEY_CACHE
return Collections.emptyMap();
}
- return ConfCacheGetUtils.filterPathNameExt(file, KEY_MID_EXT, KEY_CACHE);
+ return ConfCacheGetUtils.filterPathNameExt(KEY_MID_EXT, KEY_CACHE, path, name, ext);
}
@NotNull
- public static Map>> docMap(@Nullable Project project, @NotNull VirtualFile file) {
- return ConfCacheGetUtils.filterPathNameExt(file, DOC_MID_EXT, DOC_CACHE);
+ public static Map>> docMap(@NotNull String path,
+ @NotNull String name,
+ @Nullable String ext) {
+ return ConfCacheGetUtils.filterPathNameExt(DOC_MID_EXT, DOC_CACHE, path, name, ext);
}
@NotNull
- public static Map>> treeMap(@Nullable Project project, @NotNull VirtualFile file) {
- return ConfCacheGetUtils.filterPath(file, TREE_CACHE);
+ public static Map>> treeMap(@NotNull String path) {
+ return ConfCacheGetUtils.filterPath(TREE_CACHE, path);
}
static void clearAll() {
diff --git a/src/main/java/io/github/linwancen/plugin/show/ext/conf/ConfCacheGetUtils.java b/src/main/java/io/github/linwancen/plugin/show/ext/conf/ConfCacheGetUtils.java
index 560853f..f0e15fe 100644
--- a/src/main/java/io/github/linwancen/plugin/show/ext/conf/ConfCacheGetUtils.java
+++ b/src/main/java/io/github/linwancen/plugin/show/ext/conf/ConfCacheGetUtils.java
@@ -3,6 +3,7 @@ package io.github.linwancen.plugin.show.ext.conf;
import com.intellij.openapi.vfs.VirtualFile;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
import java.util.Map;
import java.util.TreeMap;
@@ -28,12 +29,9 @@ class ConfCacheGetUtils {
* @return {@code }
*/
@NotNull
- static TreeMap filterPathNameExt(@NotNull VirtualFile file,
- @NotNull String confMidExt,
- @NotNull Map cache) {
- String path = file.getPath();
- String name = file.getName();
- String ext = file.getExtension();
+ static TreeMap filterPathNameExt(@NotNull String confMidExt,
+ @NotNull Map cache,
+ @NotNull String path, @NotNull String name, @Nullable String ext) {
TreeMap map = new TreeMap<>();
int max = path.length();
int length = String.valueOf(max).length();
@@ -72,10 +70,9 @@ class ConfCacheGetUtils {
* @return {@code }
*/
@NotNull
- static TreeMap filterPath(@NotNull VirtualFile file,
- @SuppressWarnings("SameParameterValue")
- @NotNull Map cache) {
- String path = file.getPath();
+ static TreeMap filterPath(@SuppressWarnings("SameParameterValue")
+ @NotNull Map cache,
+ @NotNull String path) {
TreeMap map = new TreeMap<>();
int max = path.length();
int length = String.valueOf(max).length();
diff --git a/src/main/java/io/github/linwancen/plugin/show/json/JsonUtils.java b/src/main/java/io/github/linwancen/plugin/show/json/JsonUtils.java
deleted file mode 100644
index dd4c5bc..0000000
--- a/src/main/java/io/github/linwancen/plugin/show/json/JsonUtils.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package io.github.linwancen.plugin.show.json;
-
-import com.intellij.json.psi.JsonProperty;
-import com.intellij.psi.util.PsiTreeUtil;
-import org.jetbrains.annotations.NotNull;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class JsonUtils {
-
- private JsonUtils() {}
-
- @NotNull
- public static List jsonPath(JsonProperty jsonProp) {
- ArrayList jsonPath = new ArrayList<>();
- do {
- jsonPath.add(jsonProp.getName());
- } while ((jsonProp = PsiTreeUtil.getParentOfType(jsonProp, JsonProperty.class)) != null);
- return jsonPath;
- }
-}
diff --git a/src/main/java/io/github/linwancen/plugin/show/json/JsonRef.java b/src/main/java/io/github/linwancen/plugin/show/jump/JsonRef.java
similarity index 95%
rename from src/main/java/io/github/linwancen/plugin/show/json/JsonRef.java
rename to src/main/java/io/github/linwancen/plugin/show/jump/JsonRef.java
index 7124ef7..987802b 100644
--- a/src/main/java/io/github/linwancen/plugin/show/json/JsonRef.java
+++ b/src/main/java/io/github/linwancen/plugin/show/jump/JsonRef.java
@@ -1,4 +1,4 @@
-package io.github.linwancen.plugin.show.json;
+package io.github.linwancen.plugin.show.jump;
import com.intellij.psi.*;
import org.jetbrains.annotations.NotNull;
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
new file mode 100644
index 0000000..406d91e
--- /dev/null
+++ b/src/main/java/io/github/linwancen/plugin/show/line/FileViewToDocStrUtils.java
@@ -0,0 +1,69 @@
+package io.github.linwancen.plugin.show.line;
+
+import com.intellij.openapi.editor.Document;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.util.TextRange;
+import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.psi.FileViewProvider;
+import com.intellij.psi.javadoc.PsiDocComment;
+import io.github.linwancen.plugin.show.doc.PsiDocToStrDoc;
+import io.github.linwancen.plugin.show.ext.LineExt;
+import io.github.linwancen.plugin.show.settings.AppSettingsState;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * call LineExt, ~LeftToRight, ~RightToLeft
+ */
+public class FileViewToDocStrUtils {
+
+ private FileViewToDocStrUtils() {}
+
+ /**
+ * From Ext Or PsiDoc
+ */
+ @Nullable
+ public static String doc(@NotNull Document document,
+ @Nullable Project project,
+ @Nullable VirtualFile file,
+ @Nullable FileViewProvider viewProvider,
+ int startOffset, int endOffset, @NotNull String text) {
+ if (file != null) {
+ String extDoc = LineExt.extDoc(project, file.getPath(), file.getName(), file.getExtension(), text);
+ if (extDoc != null) {
+ return extDoc;
+ }
+ }
+ if (viewProvider == null) {
+ return null;
+ }
+ PsiDocComment docComment = AppSettingsState.getInstance().findElementRightToLeft
+ ? FileViewToPsiDocRightToLeft.rightDoc(viewProvider, startOffset, endOffset)
+ : FileViewToPsiDocLeftToRight.leftDoc(viewProvider, document, startOffset, endOffset);
+ return PsiDocToStrDoc.text(docComment);
+ }
+
+ @NotNull
+ public static String textWithDoc(@NotNull AppSettingsState settings, @NotNull Document document,
+ int startLine, int endLine,
+ @Nullable Project project,
+ @Nullable VirtualFile file,
+ @Nullable FileViewProvider viewProvider) {
+ StringBuilder sb = new StringBuilder();
+ for (int i = startLine; i <= endLine; i++) {
+ int startOffset = document.getLineStartOffset(i);
+ int endOffset = document.getLineEndOffset(i);
+ if (startOffset != endOffset) {
+ String text = document.getText(new TextRange(startOffset, endOffset));
+ sb.append(text);
+ String doc = doc(document, project, file, viewProvider, startOffset, endOffset, text);
+ if (doc != null) {
+ sb.append(settings.lineEndPrefix).append(doc);
+ }
+ }
+ sb.append("\n");
+ }
+ sb.delete(sb.length() - 1, sb.length());
+ return sb.toString();
+ }
+}
diff --git a/src/main/java/io/github/linwancen/plugin/show/line/LineDocLeftToRightUtils.java b/src/main/java/io/github/linwancen/plugin/show/line/FileViewToPsiDocLeftToRight.java
similarity index 79%
rename from src/main/java/io/github/linwancen/plugin/show/line/LineDocLeftToRightUtils.java
rename to src/main/java/io/github/linwancen/plugin/show/line/FileViewToPsiDocLeftToRight.java
index 0feb6ed..86c9cf6 100644
--- a/src/main/java/io/github/linwancen/plugin/show/line/LineDocLeftToRightUtils.java
+++ b/src/main/java/io/github/linwancen/plugin/show/line/FileViewToPsiDocLeftToRight.java
@@ -8,20 +8,23 @@ import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiIdentifier;
import com.intellij.psi.javadoc.PsiDocComment;
import com.intellij.psi.util.PsiTreeUtil;
-import io.github.linwancen.plugin.show.doc.JsonDocUtils;
import io.github.linwancen.plugin.show.settings.AppSettingsState;
+import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-public class LineDocLeftToRightUtils {
+/**
+ * call JsonToPsiDoc, NewCallRefToPsiDoc
+ */
+public class FileViewToPsiDocLeftToRight {
- private LineDocLeftToRightUtils() {}
+ private FileViewToPsiDocLeftToRight() {}
static final String[] KEYS = {
"=",
};
@Nullable
- public static PsiDocComment leftDoc(FileViewProvider viewProvider, Document document,
+ public static PsiDocComment leftDoc(@NotNull FileViewProvider viewProvider, @NotNull Document document,
int startOffset, int endOffset) {
String text = document.getText(new TextRange(startOffset, endOffset));
int offset = 0;
@@ -52,7 +55,7 @@ public class LineDocLeftToRightUtils {
}
AppSettingsState instance = AppSettingsState.getInstance();
if (instance.inJson && element.getLanguage().is(JsonLanguage.INSTANCE)) {
- return JsonDocUtils.jsonDoc(element, startOffset, endOffset);
+ return JsonToPsiDoc.jsonDoc(element, startOffset, endOffset);
}
if (startWithSymbol) {
startOffset = 0;
@@ -61,10 +64,10 @@ public class LineDocLeftToRightUtils {
}
@Nullable
- private static PsiDocComment nextDoc(PsiElement element, int startOffset, int endOffset) {
+ private static PsiDocComment nextDoc(@NotNull PsiElement element, int startOffset, int endOffset) {
while (element.getTextRange().getEndOffset() <= endOffset) {
if (element instanceof PsiIdentifier) {
- PsiDocComment psiDocComment = LineDocUtils.elementDoc(element, element, startOffset, endOffset);
+ PsiDocComment psiDocComment = NewCallRefToPsiDoc.elementDoc(element, element, startOffset, endOffset);
if (psiDocComment != null) {
return psiDocComment;
}
diff --git a/src/main/java/io/github/linwancen/plugin/show/line/LineDocRightToLeftUtils.java b/src/main/java/io/github/linwancen/plugin/show/line/FileViewToPsiDocRightToLeft.java
similarity index 76%
rename from src/main/java/io/github/linwancen/plugin/show/line/LineDocRightToLeftUtils.java
rename to src/main/java/io/github/linwancen/plugin/show/line/FileViewToPsiDocRightToLeft.java
index 20ac8ea..ff8f483 100644
--- a/src/main/java/io/github/linwancen/plugin/show/line/LineDocRightToLeftUtils.java
+++ b/src/main/java/io/github/linwancen/plugin/show/line/FileViewToPsiDocRightToLeft.java
@@ -6,16 +6,19 @@ import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiIdentifier;
import com.intellij.psi.javadoc.PsiDocComment;
import com.intellij.psi.util.PsiTreeUtil;
-import io.github.linwancen.plugin.show.doc.JsonDocUtils;
import io.github.linwancen.plugin.show.settings.AppSettingsState;
+import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-public class LineDocRightToLeftUtils {
+/**
+ * call JsonToPsiDoc, NewCallRefToPsiDoc
+ */
+public class FileViewToPsiDocRightToLeft {
- private LineDocRightToLeftUtils() {}
+ private FileViewToPsiDocRightToLeft() {}
@Nullable
- public static PsiDocComment rightDoc(FileViewProvider viewProvider, int startOffset, int endOffset) {
+ public static PsiDocComment rightDoc(@NotNull FileViewProvider viewProvider, int startOffset, int endOffset) {
// End is always white, can not -1 because @see class.name need it
PsiElement element = viewProvider.findElementAt(endOffset);
if (element == null) {
@@ -39,15 +42,15 @@ public class LineDocRightToLeftUtils {
}
}
- public static PsiDocComment psiDoc(AppSettingsState setting,
+ private static PsiDocComment psiDoc(AppSettingsState setting,
PsiElement identifier, PsiElement element,
int startOffset, int endOffset) {
if (identifier != null && !(identifier instanceof PsiIdentifier)) {
return null;
}
if (setting.inJson && element.getLanguage().is(JsonLanguage.INSTANCE)) {
- return JsonDocUtils.jsonDoc(element, startOffset, endOffset);
+ return JsonToPsiDoc.jsonDoc(element, startOffset, endOffset);
}
- return LineDocUtils.elementDoc(element, identifier, startOffset, endOffset);
+ return NewCallRefToPsiDoc.elementDoc(element, identifier, startOffset, endOffset);
}
}
diff --git a/src/main/java/io/github/linwancen/plugin/show/doc/JsonDocUtils.java b/src/main/java/io/github/linwancen/plugin/show/line/JsonToPsiDoc.java
similarity index 81%
rename from src/main/java/io/github/linwancen/plugin/show/doc/JsonDocUtils.java
rename to src/main/java/io/github/linwancen/plugin/show/line/JsonToPsiDoc.java
index 9119b77..39a3061 100644
--- a/src/main/java/io/github/linwancen/plugin/show/doc/JsonDocUtils.java
+++ b/src/main/java/io/github/linwancen/plugin/show/line/JsonToPsiDoc.java
@@ -1,4 +1,4 @@
-package io.github.linwancen.plugin.show.doc;
+package io.github.linwancen.plugin.show.line;
import com.intellij.json.psi.JsonProperty;
import com.intellij.psi.PsiDocCommentOwner;
@@ -6,11 +6,12 @@ import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiReference;
import com.intellij.psi.javadoc.PsiDocComment;
import com.intellij.psi.util.PsiTreeUtil;
+import io.github.linwancen.plugin.show.doc.OwnerToPsiDocUtils;
import org.jetbrains.annotations.Nullable;
-public class JsonDocUtils {
+public class JsonToPsiDoc {
- private JsonDocUtils() {}
+ private JsonToPsiDoc() {}
/**
* depend on JsonJump
@@ -25,7 +26,7 @@ public class JsonDocUtils {
PsiElement resolve = reference.resolve();
if (resolve instanceof PsiDocCommentOwner) {
PsiDocCommentOwner owner = (PsiDocCommentOwner) resolve;
- PsiDocComment docComment = DocUtils.srcOrByteCodeDoc(owner);
+ PsiDocComment docComment = OwnerToPsiDocUtils.srcOrByteCodeDoc(owner);
if (docComment != null) {
return docComment;
}
diff --git a/src/main/java/io/github/linwancen/plugin/show/line/LineDocUtils.java b/src/main/java/io/github/linwancen/plugin/show/line/NewCallRefToPsiDoc.java
similarity index 89%
rename from src/main/java/io/github/linwancen/plugin/show/line/LineDocUtils.java
rename to src/main/java/io/github/linwancen/plugin/show/line/NewCallRefToPsiDoc.java
index 0a27f45..2e06249 100644
--- a/src/main/java/io/github/linwancen/plugin/show/line/LineDocUtils.java
+++ b/src/main/java/io/github/linwancen/plugin/show/line/NewCallRefToPsiDoc.java
@@ -7,9 +7,12 @@ import com.intellij.psi.util.PsiTreeUtil;
import io.github.linwancen.plugin.show.settings.AppSettingsState;
import org.jetbrains.annotations.Nullable;
-class LineDocUtils {
+/**
+ * call OwnerToPsiDocSkip
+ */
+class NewCallRefToPsiDoc {
- private LineDocUtils() {}
+ private NewCallRefToPsiDoc() {}
@Nullable
static PsiDocComment elementDoc(PsiElement element, PsiElement psiIdentifier,
@@ -60,7 +63,7 @@ class LineDocUtils {
return null;
}
try {
- PsiDocComment methodComment = SkipDocUtils.methodDoc(call.resolveMethod());
+ PsiDocComment methodComment = OwnerToPsiDocSkip.methodDoc(call.resolveMethod());
if (methodComment != null) {
return methodComment;
}
@@ -77,7 +80,7 @@ class LineDocUtils {
if (newExp == null) {
return null;
}
- PsiDocComment methodComment = SkipDocUtils.methodDoc(newExp.resolveMethod());
+ PsiDocComment methodComment = OwnerToPsiDocSkip.methodDoc(newExp.resolveMethod());
if (methodComment != null) {
return methodComment;
}
@@ -104,7 +107,7 @@ class LineDocUtils {
if (element instanceof PsiReference) {
PsiElement resolve = ((PsiReference) element).resolve();
if (resolve instanceof PsiDocCommentOwner) {
- return SkipDocUtils.refDoc(((PsiDocCommentOwner) resolve));
+ return OwnerToPsiDocSkip.refDoc(((PsiDocCommentOwner) resolve));
}
}
// for right to left for
@@ -128,7 +131,7 @@ class LineDocUtils {
}
PsiElement resolve = ref.resolve();
if (resolve instanceof PsiDocCommentOwner) {
- return SkipDocUtils.refDoc(((PsiDocCommentOwner) resolve));
+ return OwnerToPsiDocSkip.refDoc(((PsiDocCommentOwner) resolve));
}
return null;
}
@@ -146,10 +149,10 @@ class LineDocUtils {
}
PsiElement resolve = reference.resolve();
if (resolve instanceof PsiMethod) {
- return SkipDocUtils.methodDoc(((PsiMethod) resolve));
+ return OwnerToPsiDocSkip.methodDoc(((PsiMethod) resolve));
}
if (resolve instanceof PsiDocCommentOwner) {
- return SkipDocUtils.refDoc(((PsiDocCommentOwner) resolve));
+ return OwnerToPsiDocSkip.refDoc(((PsiDocCommentOwner) resolve));
}
}
return null;
diff --git a/src/main/java/io/github/linwancen/plugin/show/line/SkipDocUtils.java b/src/main/java/io/github/linwancen/plugin/show/line/OwnerToPsiDocSkip.java
similarity index 54%
rename from src/main/java/io/github/linwancen/plugin/show/line/SkipDocUtils.java
rename to src/main/java/io/github/linwancen/plugin/show/line/OwnerToPsiDocSkip.java
index 5f93591..ecaae5e 100644
--- a/src/main/java/io/github/linwancen/plugin/show/line/SkipDocUtils.java
+++ b/src/main/java/io/github/linwancen/plugin/show/line/OwnerToPsiDocSkip.java
@@ -4,18 +4,21 @@ import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiDocCommentOwner;
import com.intellij.psi.PsiMethod;
import com.intellij.psi.javadoc.PsiDocComment;
-import io.github.linwancen.plugin.show.doc.DocUtils;
+import io.github.linwancen.plugin.show.doc.OwnerToPsiDocUtils;
import org.jetbrains.annotations.Nullable;
-class SkipDocUtils {
+/**
+ * call RefToPsiDoc, PsiClassSkip
+ */
+class OwnerToPsiDocSkip {
- private SkipDocUtils() {}
+ private OwnerToPsiDocSkip() {}
static PsiDocComment methodDoc(@Nullable PsiMethod psiMethod) {
if (skip(psiMethod)) {
return null;
}
- return DocUtils.methodDoc(psiMethod);
+ return OwnerToPsiDocUtils.methodDoc(psiMethod);
}
static PsiDocComment refDoc(@Nullable PsiDocCommentOwner docOwner) {
@@ -23,18 +26,18 @@ class SkipDocUtils {
return null;
}
if (docOwner instanceof PsiMethod) {
- return DocUtils.methodDoc(((PsiMethod) docOwner));
+ return OwnerToPsiDocUtils.methodDoc(((PsiMethod) docOwner));
}
- return DocUtils.srcOrByteCodeDoc(docOwner);
+ return OwnerToPsiDocUtils.srcOrByteCodeDoc(docOwner);
}
- static boolean skip(@Nullable PsiDocCommentOwner docOwner) {
+ private static boolean skip(@Nullable PsiDocCommentOwner docOwner) {
if (docOwner == null) {
return true;
}
if (docOwner instanceof PsiClass) {
- return SkipUtils.skip((PsiClass) docOwner, docOwner.getProject());
+ return PsiClassSkip.skip((PsiClass) docOwner, docOwner.getProject());
}
- return SkipUtils.skip(docOwner.getContainingClass(), docOwner.getProject());
+ return PsiClassSkip.skip(docOwner.getContainingClass(), docOwner.getProject());
}
}
diff --git a/src/main/java/io/github/linwancen/plugin/show/line/SkipUtils.java b/src/main/java/io/github/linwancen/plugin/show/line/PsiClassSkip.java
similarity index 97%
rename from src/main/java/io/github/linwancen/plugin/show/line/SkipUtils.java
rename to src/main/java/io/github/linwancen/plugin/show/line/PsiClassSkip.java
index 5574bfa..dabcae2 100644
--- a/src/main/java/io/github/linwancen/plugin/show/line/SkipUtils.java
+++ b/src/main/java/io/github/linwancen/plugin/show/line/PsiClassSkip.java
@@ -5,9 +5,9 @@ import com.intellij.psi.PsiClass;
import io.github.linwancen.plugin.show.settings.AppSettingsState;
import io.github.linwancen.plugin.show.settings.ProjectSettingsState;
-class SkipUtils {
+class PsiClassSkip {
- private SkipUtils() {}
+ private PsiClassSkip() {}
static boolean skip(PsiClass psiClass, Project project) {
if (psiClass == null) {
diff --git a/src/main/java/io/github/linwancen/plugin/show/settings/ProjectSettingsState.java b/src/main/java/io/github/linwancen/plugin/show/settings/ProjectSettingsState.java
index e241e86..7e778dc 100644
--- a/src/main/java/io/github/linwancen/plugin/show/settings/ProjectSettingsState.java
+++ b/src/main/java/io/github/linwancen/plugin/show/settings/ProjectSettingsState.java
@@ -8,8 +8,6 @@ import com.intellij.util.xmlb.XmlSerializerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import java.util.regex.Pattern;
-
@State(
name = "io.github.linwancen.plugin.comment.settings.ProjectSettingsState",
storages = @Storage("ShowCommentProject.xml")
@@ -22,8 +20,6 @@ public class ProjectSettingsState implements PersistentStateComponent
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/test/java/io/github/linwancen/plugin/show/line/SkipUtilsTest.java b/src/test/java/io/github/linwancen/plugin/show/line/PsiClassSkipTest.java
similarity index 94%
rename from src/test/java/io/github/linwancen/plugin/show/line/SkipUtilsTest.java
rename to src/test/java/io/github/linwancen/plugin/show/line/PsiClassSkipTest.java
index 4ac4947..738e590 100644
--- a/src/test/java/io/github/linwancen/plugin/show/line/SkipUtilsTest.java
+++ b/src/test/java/io/github/linwancen/plugin/show/line/PsiClassSkipTest.java
@@ -8,9 +8,9 @@ import org.junit.jupiter.api.Test;
import java.util.function.BiPredicate;
/**
- * @see SkipUtils
+ * @see PsiClassSkip
*/
-class SkipUtilsTest {
+class PsiClassSkipTest {
public static final boolean o = true;
public static final boolean x = false;
@@ -65,7 +65,7 @@ class SkipUtilsTest {
String[] include = includes[includeIndex];
for (int excludeIndex = 0, excludesLength = excludes.length; excludeIndex < excludesLength; excludeIndex++) {
String[] exclude = excludes[excludeIndex];
- boolean isSkip = SkipUtils.skipName(name, include, exclude);
+ boolean isSkip = PsiClassSkip.skipName(name, include, exclude);
String tip =
name + "==" + JsonOutput.toJson(include) + "!=" + JsonOutput.toJson(exclude) + "=>" + isSkip;
System.out.println(tip);
@@ -85,7 +85,7 @@ class SkipUtilsTest {
{x, o, o}, // {"io"},
{o, o, o}, // {"java", "io"},
};
- loopTest(SkipUtils::include, results);
+ loopTest(PsiClassSkip::include, results);
}
@Test
@@ -97,7 +97,7 @@ class SkipUtilsTest {
{x, o, o}, // {"io"},
{o, o, o}, // {"java", "io"},
};
- loopTest(SkipUtils::exclude, results);
+ loopTest(PsiClassSkip::exclude, results);
}
private void loopTest(BiPredicate biPredicate, boolean[][] results) {