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 f17c106..011f72c 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 @@ -93,37 +93,14 @@ public abstract class BaseLangDoc extends EditorLinePainter { return null; } // before doc - refElement = Prev.prevRefChild(info, refElement, refClass); - if (refElement == null) { + @Nullable PsiElement beforeRefElement = Prev.prevRefChild(info, refElement, refClass); + if (beforeRefElement == null) { return doc; } - PsiElement parent = refElement.getParent(); - @Nullable String before = refElementDoc(info, parent); - if (before != null) { - doc = mergeDoc(refElement.getText(), text, info.appSettings.getToSet, before, doc); - } - return doc; - } - - @NotNull - private String mergeDoc(@NotNull String beforeText, @NotNull String text, - boolean getToSet, String before, String doc) { - if (beforeText.startsWith("set")) { - beforeText = beforeText.substring(3); - if (text.startsWith("get")) { - text = text.substring(3); - } else if (text.startsWith("is")) { - text = text.substring(2); - } - boolean same = beforeText.equals(text); - if (getToSet) { - // because lambda is -> or => - doc = doc + (same ? " ==> " : " --> ") + before; - } else { - doc = before + (same ? " <== " : " <-- ") + doc; - } - } else { - doc = before + " | " + doc; + PsiElement parent = beforeRefElement.getParent(); + @Nullable String beforeDoc = refElementDoc(info, parent); + if (beforeDoc != null) { + doc = MergeDoc.mergeDoc(beforeRefElement.getText(), text, beforeDoc, doc, info.appSettings.getToSet); } return doc; } diff --git a/src/main/java/io/github/linwancen/plugin/show/lang/base/MergeDoc.java b/src/main/java/io/github/linwancen/plugin/show/lang/base/MergeDoc.java new file mode 100644 index 0000000..c8e4b1b --- /dev/null +++ b/src/main/java/io/github/linwancen/plugin/show/lang/base/MergeDoc.java @@ -0,0 +1,31 @@ +package io.github.linwancen.plugin.show.lang.base; + +import org.jetbrains.annotations.NotNull; + +public class MergeDoc { + @NotNull + static String mergeDoc(@NotNull String beforeText, @NotNull String text, + @NotNull String beforeDoc, @NotNull String doc, boolean getToSet) { + if (!beforeText.startsWith("set")) { + // doc same + if (beforeDoc.equals(doc)) { + return doc; + } + return beforeDoc + " | " + doc; + } + beforeText = beforeText.substring(3); + if (text.startsWith("get")) { + text = text.substring(3); + } else if (text.startsWith("is")) { + text = text.substring(2); + } + // method name, not doc same + boolean same = beforeText.equals(text); + if (getToSet) { + // because lambda is -> or => + return doc + (same ? " ==> " : " --> ") + beforeDoc; + } else { + return beforeDoc + (same ? " <== " : " <-- ") + doc; + } + } +}