2.10 not doc comment | 非文档注释

This commit is contained in:
林万程
2023-08-31 08:08:34 +08:00
parent c37148a56a
commit f41dce0241
16 changed files with 185 additions and 72 deletions

View File

@@ -37,7 +37,7 @@ public class JsLangDoc extends BaseLangDoc {
if (text != null) {
return text;
}
if (!lineInfo.appSettings.jsDoc) {
if (lineInfo.appSettings.showLineEndCommentJsBase) {
return super.resolveDocRaw(lineInfo, resolve);
}
return null;

View File

@@ -31,6 +31,11 @@ public class PythonLangDoc extends BaseTagLangDoc<StructuredDocString> {
return lineInfo.appSettings.showLineEndCommentPy;
}
@Override
protected <T extends SettingsInfo> boolean parseBaseComment(@NotNull T settingsInfo) {
return settingsInfo.appSettings.showLineEndCommentPyBase;
}
@Nullable
@Override
protected <T extends SettingsInfo> StructuredDocString toDocElement(@NotNull T settingsInfo,

View File

@@ -69,12 +69,14 @@ public abstract class BaseLangDoc extends EditorLinePainter {
return null;
}
@Nullable String doc = null;
@Nullable String text = null;
@Nullable PsiElement refElement = element;
while ((refElement = Prev.prevRefChild(lineInfo, refElement, refClass)) != null) {
PsiElement parent = refElement.getParent();
@Nullable String filterDoc = refElementDoc(lineInfo, parent);
if (filterDoc != null) {
doc = filterDoc;
text = refElement.getText();
refElement = parent;
break;
}
@@ -87,24 +89,29 @@ public abstract class BaseLangDoc extends EditorLinePainter {
if (refElement == null) {
return doc;
}
String text = refElement.getText();
boolean set = text.startsWith("set");
PsiElement parent = refElement.getParent();
@Nullable String before = refElementDoc(lineInfo, parent);
if (before != null) {
doc = mergeDoc(set, lineInfo.appSettings.getToSet, before, doc);
doc = mergeDoc(refElement.getText(), text, lineInfo.appSettings.getToSet, before, doc);
}
return doc;
}
@NotNull
private String mergeDoc(boolean set, boolean getToSet, String before, String doc) {
if (set) {
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 + " --> " + before;
doc = doc + (same ? " ==> " : " --> ") + before;
} else {
doc = before + " = " + doc;
doc = before + (same ? " <== " : " <-- ") + doc;
}
} else {
doc = before + " | " + doc;

View File

@@ -11,8 +11,8 @@ public abstract class BaseTagLangDoc<DocElement> extends BaseLangDoc {
public @Nullable <T extends SettingsInfo> String resolveDocPrint(@NotNull T settingsInfo,
@NotNull PsiElement resolve) {
@Nullable DocElement docElement = toDocElement(settingsInfo, resolve);
if (docElement == null) {
return null;
if (docElement == null && parseBaseComment(settingsInfo)) {
return super.resolveDocPrint(settingsInfo, resolve);
}
return docElementToStr(settingsInfo, docElement);
}
@@ -44,6 +44,8 @@ public abstract class BaseTagLangDoc<DocElement> extends BaseLangDoc {
return text;
}
protected abstract <T extends SettingsInfo> boolean parseBaseComment(T settingsInfo);
@Nullable
protected abstract <T extends SettingsInfo> DocElement toDocElement(@NotNull T settingsInfo,
@NotNull PsiElement resolve);

View File

@@ -18,7 +18,7 @@ public class Prev {
@Nullable
public static PsiElement prevRefChild(@NotNull LineInfo lineInfo, @NotNull PsiElement element,
@NotNull Class<? extends PsiElement> refClass) {
PsiElement prevParent = element.getParent();
PsiElement prevParent = refClassParent(element, refClass);
while ((element = PsiTreeUtil.prevVisibleLeaf(element)) != null) {
if (element.getTextRange().getEndOffset() < lineInfo.startOffset) {
return null;
@@ -26,7 +26,8 @@ public class Prev {
@Nullable PsiElement parent = refClassParent(element, refClass);
if (parent != null) {
// skip b in a.b.c
if (prevParent.getTextRange().getEndOffset() < lineInfo.endOffset
if (prevParent != null
&& prevParent.getTextRange().getEndOffset() < lineInfo.endOffset
&& PsiTreeUtil.findChildOfType(prevParent, refClass) == parent) {
prevParent = parent;
} else {

View File

@@ -58,7 +58,10 @@ public class ResolveDoc {
if (document == null) {
return null;
}
@Nullable PsiElement psiElement = Prev.prevCompactElement(lineInfo, resolve, document);
@Nullable PsiElement psiElement = PsiTreeUtil.getChildOfType(resolve, PsiComment.class);
if (psiElement == null) {
psiElement = Prev.prevCompactElement(lineInfo, resolve, document);
}
if (!keywords.isEmpty()) {
while (psiElement != null) {
String text = psiElement.getText();