From 938905d82e22fc579dc295ab0dcb0f01e0b27057 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E4=B8=87=E7=A8=8B?= <1498425439@qq.com> Date: Tue, 23 Jan 2024 07:47:15 +0800 Subject: [PATCH] feat(BaseLangDoc): byte to src --- .../plugin/show/java/JavaLangDoc.java | 4 +++ .../show/java/doc/PsiMethodToPsiDoc.java | 25 +++++++++---------- .../show/java/line/NewCallRefToPsiDoc.java | 8 ++++++ .../plugin/show/lang/base/BaseLangDoc.java | 9 +++++++ 4 files changed, 33 insertions(+), 13 deletions(-) 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 9a6438c..21c2b84 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 @@ -61,6 +61,10 @@ public class JavaLangDoc extends BaseTagLangDoc { try { @Nullable PsiMethod resolve = psiNewExpression.resolveMethod(); if (resolve != null) { + PsiElement navElement = resolve.getNavigationElement(); + if (navElement instanceof PsiMethod) { + resolve = (PsiMethod) navElement; + } return resolveDocPrint(info, resolve); } } catch (Throwable ignore) { diff --git a/src/main/idea/io/github/linwancen/plugin/show/java/doc/PsiMethodToPsiDoc.java b/src/main/idea/io/github/linwancen/plugin/show/java/doc/PsiMethodToPsiDoc.java index 86832e9..f5507ae 100644 --- a/src/main/idea/io/github/linwancen/plugin/show/java/doc/PsiMethodToPsiDoc.java +++ b/src/main/idea/io/github/linwancen/plugin/show/java/doc/PsiMethodToPsiDoc.java @@ -14,23 +14,12 @@ public class PsiMethodToPsiDoc { @Nullable static PsiDocComment methodSupperNewPropDoc(@NotNull PsiMethod psiMethod) { - // .class - @Nullable PsiElement navElement; - try { - navElement = psiMethod.getNavigationElement(); - } catch (Exception e) { - return null; - } - if (navElement instanceof PsiMethod) { - psiMethod = (PsiMethod) navElement; - } - @Nullable PsiDocComment docComment = psiMethod.getDocComment(); if (docComment != null) { return docComment; } - // supper + // supper recursion @Nullable PsiDocComment superDoc = supperMethodDoc(psiMethod); if (superDoc != null) { return superDoc; @@ -60,7 +49,17 @@ public class PsiMethodToPsiDoc { return null; } for (@NotNull PsiMethod superMethod : superMethods) { - @Nullable PsiDocComment superDoc = OwnerToPsiDocUtils.methodDoc(superMethod); + // .class + @Nullable PsiElement navElement; + try { + navElement = superMethod.getNavigationElement(); + } catch (Exception e) { + return null; + } + if (navElement instanceof PsiMethod) { + superMethod = (PsiMethod) navElement; + } + @Nullable PsiDocComment superDoc = OwnerToPsiDocUtils.methodSupperNewPropDoc(superMethod); if (superDoc != null) { return superDoc; } diff --git a/src/main/idea/io/github/linwancen/plugin/show/java/line/NewCallRefToPsiDoc.java b/src/main/idea/io/github/linwancen/plugin/show/java/line/NewCallRefToPsiDoc.java index 4dbd771..6938479 100644 --- a/src/main/idea/io/github/linwancen/plugin/show/java/line/NewCallRefToPsiDoc.java +++ b/src/main/idea/io/github/linwancen/plugin/show/java/line/NewCallRefToPsiDoc.java @@ -28,6 +28,14 @@ public class NewCallRefToPsiDoc { // ignore } if (resolve instanceof PsiDocCommentOwner) { + try { + PsiElement navElement = resolve.getNavigationElement(); + if (navElement instanceof PsiDocCommentOwner) { + resolve = navElement; + } + } catch (Throwable ignore) { + // ignore + } return OwnerToPsiDocSkip.refDoc(info, ((PsiDocCommentOwner) resolve)); } return null; diff --git a/src/main/java/io/github/linwancen/plugin/show/lang/base/BaseLangDoc.java b/src/main/java/io/github/linwancen/plugin/show/lang/base/BaseLangDoc.java index 9743139..b010012 100644 --- a/src/main/java/io/github/linwancen/plugin/show/lang/base/BaseLangDoc.java +++ b/src/main/java/io/github/linwancen/plugin/show/lang/base/BaseLangDoc.java @@ -176,6 +176,15 @@ public abstract class BaseLangDoc extends EditorLinePainter { public static @Nullable String resolveDoc(@NotNull T info, @NotNull PsiElement psiElement) { + try { + // byte to src + PsiElement navElement = psiElement.getNavigationElement(); + if (navElement != null) { + psiElement = navElement; + } + } catch (Throwable ignore) { + // ignore + } // support like java <-> kotlin @NotNull Language language = PsiElementTo.language(psiElement); BaseLangDoc lineEnd = LANG_DOC_MAP.get(language.getID());