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 9b0e9f4..c4ebc20 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 @@ -27,6 +27,7 @@ import io.github.linwancen.plugin.show.java.line.OwnerToPsiDocSkip; import io.github.linwancen.plugin.show.java.line.SkipUtils; 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; @@ -58,7 +59,7 @@ public class JavaLangDoc extends BaseTagLangDoc { @Override protected @Nullable String refDoc(@NotNull LineInfo info, @NotNull PsiElement ref) { - if ("Override".equals(ref.getText())) { + if ("Override".equals(info.getText(ref))) { @Nullable PsiMethod psiMethod = PsiTreeUtil.getParentOfType(ref, PsiMethod.class); if (psiMethod == null) { return null; @@ -154,11 +155,11 @@ public class JavaLangDoc extends BaseTagLangDoc { @NotNull PsiElement[] children = element.getChildren(); if (children.length > 0) { if (children.length >= 3) { - DocFilter.addHtml(sb, children[children.length - 2].getText()); + DocFilter.addHtml(sb, PsiUnSaveUtils.getText(children[children.length - 2])); } return false; } - DocFilter.addHtml(sb, element.getText()); + DocFilter.addHtml(sb, PsiUnSaveUtils.getText(element)); return false; } @@ -169,11 +170,11 @@ public class JavaLangDoc extends BaseTagLangDoc { for (@NotNull PsiDocTag tag : tags) { @Nullable PsiDocTagValue value = tag.getValueElement(); if (value != null) { - DocFilter.addHtml(tagStrBuilder, value.getText()); + DocFilter.addHtml(tagStrBuilder, PsiUnSaveUtils.getText(value)); } else { @NotNull PsiElement[] dataElements = tag.getDataElements(); if (dataElements.length > 0) { - DocFilter.addHtml(tagStrBuilder, dataElements[0].getText()); + DocFilter.addHtml(tagStrBuilder, PsiUnSaveUtils.getText(dataElements[0])); } } } diff --git a/src/main/idea/io/github/linwancen/plugin/show/java/ScalaLangDoc.java b/src/main/idea/io/github/linwancen/plugin/show/java/ScalaLangDoc.java index 244f3f0..4a2a809 100644 --- a/src/main/idea/io/github/linwancen/plugin/show/java/ScalaLangDoc.java +++ b/src/main/idea/io/github/linwancen/plugin/show/java/ScalaLangDoc.java @@ -8,6 +8,7 @@ import io.github.linwancen.plugin.show.bean.LineInfo; import io.github.linwancen.plugin.show.bean.SettingsInfo; import io.github.linwancen.plugin.show.java.line.OwnerToPsiDocSkip; 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 org.jetbrains.plugins.scala.ScalaLanguage; @@ -58,7 +59,7 @@ public class ScalaLangDoc extends JavaLangDoc { @NotNull StringBuilder sb = new StringBuilder(); for (@NotNull PsiElement element : elements) { if (!(element instanceof PsiDocTag)) { - sb.append(element.getText()); + sb.append(PsiUnSaveUtils.getText(element)); } } return DocFilter.cutDoc(sb.toString(), info, true); @@ -72,7 +73,7 @@ public class ScalaLangDoc extends JavaLangDoc { for (@NotNull PsiDocTag tag : tags) { if (tag instanceof ScDocTag) { @NotNull ScDocTag scDocTag = (ScDocTag) tag; - String doc = scDocTag.getText(); + String doc = PsiUnSaveUtils.getText(scDocTag); doc = doc.replace(key, ""); DocFilter.addHtml(tagStrBuilder, doc); } 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/doc/EnumDoc.java index 6b347ae..b0de7ed 100644 --- a/src/main/idea/io/github/linwancen/plugin/show/java/doc/EnumDoc.java +++ b/src/main/idea/io/github/linwancen/plugin/show/java/doc/EnumDoc.java @@ -3,6 +3,7 @@ package io.github.linwancen.plugin.show.java.doc; import com.intellij.psi.PsiEnumConstant; import com.intellij.psi.PsiExpression; import com.intellij.psi.PsiExpressionList; +import io.github.linwancen.plugin.show.lang.base.PsiUnSaveUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -27,7 +28,7 @@ public class EnumDoc { return null; } return Arrays.stream(exps) - .map(exp -> exp.getText().replace("\"", "")) + .map(exp -> PsiUnSaveUtils.getText(exp).replace("\"", "")) .collect(Collectors.joining("-")); } } 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/doc/ParamDoc.java index 012585d..d97d70b 100644 --- a/src/main/idea/io/github/linwancen/plugin/show/java/doc/ParamDoc.java +++ b/src/main/idea/io/github/linwancen/plugin/show/java/doc/ParamDoc.java @@ -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.lang.base.PsiUnSaveUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -28,10 +29,10 @@ public class ParamDoc { @NotNull PsiDocTag[] params = psiDocComment.findTagsByName("param"); for (@NotNull PsiDocTag param : params) { @Nullable PsiDocTagValue value = param.getValueElement(); - if (value != null && name.equals(value.getText())) { + if (value != null && name.equals(PsiUnSaveUtils.getText(value))) { @NotNull PsiElement[] dataElements = param.getDataElements(); if (dataElements.length > 1) { - return dataElements[1].getText(); + return PsiUnSaveUtils.getText(dataElements[1]); } } } 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/kt/AnnoDocKt.java index 851c106..f7d2fd6 100644 --- a/src/main/idea/io/github/linwancen/plugin/show/java/kt/AnnoDocKt.java +++ b/src/main/idea/io/github/linwancen/plugin/show/java/kt/AnnoDocKt.java @@ -1,6 +1,7 @@ package io.github.linwancen.plugin.show.java.kt; import io.github.linwancen.plugin.show.lang.base.BaseAnnoDoc; +import io.github.linwancen.plugin.show.lang.base.PsiUnSaveUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.name.Name; @@ -70,7 +71,7 @@ public class AnnoDocKt extends BaseAnnoDoc { if (arr[2].equals(method)) { KtExpression expression = argument.getArgumentExpression(); if (expression instanceof KtStringTemplateExpression) { - String text = expression.getText(); + String text = PsiUnSaveUtils.getText(expression); if (text.length() >= 2) { String s = text.substring(1, text.length() - 1); if (!s.isEmpty()) { diff --git a/src/main/idea/io/github/linwancen/plugin/show/java/line/SkipUtils.java b/src/main/idea/io/github/linwancen/plugin/show/java/line/SkipUtils.java index 41363a5..95f3f7c 100644 --- a/src/main/idea/io/github/linwancen/plugin/show/java/line/SkipUtils.java +++ b/src/main/idea/io/github/linwancen/plugin/show/java/line/SkipUtils.java @@ -7,6 +7,7 @@ import com.intellij.psi.javadoc.PsiDocComment; import io.github.linwancen.plugin.show.bean.FuncEnum; import io.github.linwancen.plugin.show.bean.SettingsInfo; import io.github.linwancen.plugin.show.lang.base.DocSkip; +import io.github.linwancen.plugin.show.lang.base.PsiUnSaveUtils; import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -60,7 +61,7 @@ public class SkipUtils { if (info.appSettings.skipBlank && isBlank(doc)) { return null; } - String text = doc.getText(); + String text = PsiUnSaveUtils.getText(doc); boolean skip = DocSkip.skipDoc(info, text); return skip ? null : doc; } @@ -68,7 +69,7 @@ public class SkipUtils { private static boolean isBlank(@NotNull PsiDocComment doc) { @NotNull PsiElement[] elements = doc.getDescriptionElements(); for (@NotNull PsiElement element : elements) { - String text = element.getText(); + String text = PsiUnSaveUtils.getText(element); if (StringUtils.isNotBlank(text)) { return false; } diff --git a/src/main/java/io/github/linwancen/plugin/show/bean/FileInfo.java b/src/main/java/io/github/linwancen/plugin/show/bean/FileInfo.java index ea1ae93..4243ee3 100644 --- a/src/main/java/io/github/linwancen/plugin/show/bean/FileInfo.java +++ b/src/main/java/io/github/linwancen/plugin/show/bean/FileInfo.java @@ -6,8 +6,10 @@ import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.editor.Document; import com.intellij.openapi.fileEditor.FileDocumentManager; 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.PsiElement; import com.intellij.psi.PsiFile; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -53,4 +55,15 @@ public class FileInfo extends SettingsInfo { @NotNull Project project = psiFile.getProject(); return new FileInfo(file, document, project, FuncEnum.LINE); } + + public String getText(PsiElement element) { + try { + TextRange range = element.getTextRange(); + int startOffset = range.getStartOffset(); + int endOffset = range.getEndOffset(); + return document.getText().substring(startOffset, endOffset); + } catch (Exception ignored) { + return element.getText(); + } + } } diff --git a/src/main/java/io/github/linwancen/plugin/show/lang/JsLangDoc.java b/src/main/java/io/github/linwancen/plugin/show/lang/JsLangDoc.java index b5dd41f..ef20359 100644 --- a/src/main/java/io/github/linwancen/plugin/show/lang/JsLangDoc.java +++ b/src/main/java/io/github/linwancen/plugin/show/lang/JsLangDoc.java @@ -16,6 +16,7 @@ import io.github.linwancen.plugin.show.bean.LineInfo; import io.github.linwancen.plugin.show.bean.SettingsInfo; import io.github.linwancen.plugin.show.ext.listener.FileLoader; import io.github.linwancen.plugin.show.lang.base.BaseLangDoc; +import io.github.linwancen.plugin.show.lang.base.PsiUnSaveUtils; import io.github.linwancen.plugin.show.lang.vue.VueRouterCache; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -76,6 +77,6 @@ public class JsLangDoc extends BaseLangDoc { } return null; } - return psiComment.getText(); + return PsiUnSaveUtils.getText(psiComment); } } diff --git a/src/main/java/io/github/linwancen/plugin/show/lang/JsonLangDoc.java b/src/main/java/io/github/linwancen/plugin/show/lang/JsonLangDoc.java index a159884..c03652a 100644 --- a/src/main/java/io/github/linwancen/plugin/show/lang/JsonLangDoc.java +++ b/src/main/java/io/github/linwancen/plugin/show/lang/JsonLangDoc.java @@ -94,7 +94,7 @@ public class JsonLangDoc extends BaseLangDoc { } @NotNull GlobalSearchScope scope = GlobalSearchScope.allScope(info.project); @NotNull String jsonKey = prop.getName(); - String jsonValue = value.getText(); + String jsonValue = info.getText(value); // Read the json.path before if needed @Nullable String dictDoc = jsonDictDoc(info, scope, jsonKey, jsonValue); if (dictDoc != null) { diff --git a/src/main/java/io/github/linwancen/plugin/show/lang/PhpLangDoc.java b/src/main/java/io/github/linwancen/plugin/show/lang/PhpLangDoc.java index 0fd6f4e..99136ef 100644 --- a/src/main/java/io/github/linwancen/plugin/show/lang/PhpLangDoc.java +++ b/src/main/java/io/github/linwancen/plugin/show/lang/PhpLangDoc.java @@ -15,6 +15,7 @@ import io.github.linwancen.plugin.show.bean.LineInfo; import io.github.linwancen.plugin.show.bean.SettingsInfo; 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; @@ -47,7 +48,7 @@ public class PhpLangDoc extends BaseTagLangDoc { for (PsiElement child : children) { @Nullable PsiComment comment = PsiTreeUtil.getChildOfType(child, PsiComment.class); if (comment != null) { - String text = comment.getText(); + String text = PsiUnSaveUtils.getText(comment); return DocFilter.cutDoc(text, info, true); } } @@ -74,7 +75,7 @@ public class PhpLangDoc extends BaseTagLangDoc { @NotNull @Override protected String descDoc(@NotNull T info, @NotNull PhpDocComment phpDocComment) { - String text = phpDocComment.getText(); + String text = PsiUnSaveUtils.getText(phpDocComment); return DocFilter.cutDoc(text, info, true); } diff --git a/src/main/java/io/github/linwancen/plugin/show/lang/XmlLangDoc.java b/src/main/java/io/github/linwancen/plugin/show/lang/XmlLangDoc.java index 483b3c4..4c46b9e 100644 --- a/src/main/java/io/github/linwancen/plugin/show/lang/XmlLangDoc.java +++ b/src/main/java/io/github/linwancen/plugin/show/lang/XmlLangDoc.java @@ -15,6 +15,7 @@ import com.intellij.psi.xml.XmlTag; import io.github.linwancen.plugin.show.bean.LineInfo; import io.github.linwancen.plugin.show.bean.SettingsInfo; import io.github.linwancen.plugin.show.lang.base.BaseLangDoc; +import io.github.linwancen.plugin.show.lang.base.PsiUnSaveUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -48,7 +49,7 @@ public class XmlLangDoc extends BaseLangDoc { return null; } PsiElement psiElement = viewProvider.findElementAt(0); - if (psiElement == null || !"