From bc3e0c747ffb521c1efafbb96ce2037061510b3b 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, 20 Apr 2025 22:42:09 +0800
Subject: [PATCH] =?UTF-8?q?feat(AnnoDoc):=202.23=20kotlin=20anno=20doc=20|?=
=?UTF-8?q?=20kotlin=20=E6=B3=A8=E8=A7=A3=E6=B3=A8=E9=87=8A=20Fixed=20#78?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 104 +-------
build.gradle | 226 +++++++++---------
.../plugin/show/java/JavaLangDoc.java | 4 +-
.../plugin/show/java/KotlinLangDoc.java | 14 ++
.../doc/{AnnoDoc.java => AnnoDocJava.java} | 44 +---
.../plugin/show/java/kt/AnnoDocKt.java | 85 +++++++
.../plugin/show/lang/base/BaseAnnoDoc.java | 47 ++++
.../plugin/show/lang/base/BaseLangDoc.java | 2 +-
8 files changed, 270 insertions(+), 256 deletions(-)
rename src/main/idea/io/github/linwancen/plugin/show/java/doc/{AnnoDoc.java => AnnoDocJava.java} (62%)
create mode 100644 src/main/idea/io/github/linwancen/plugin/show/java/kt/AnnoDocKt.java
create mode 100644 src/main/java/io/github/linwancen/plugin/show/lang/base/BaseAnnoDoc.java
diff --git a/README.md b/README.md
index ce9b0cc..91a74fa 100644
--- a/README.md
+++ b/README.md
@@ -123,109 +123,7 @@ Show doc comment in the Project view Tree, line End, json, other
## Change Notes 更新说明
-
English Change Notes:
-
-- 2.22 Add project-view-tree ollama models blobs comment from manifests
-
- 2.21 Add project-view-tree use JS/TS/Vue "export default" doc for tree doc
-
- 2.20 Add External Comment support Vue src/router tree doc
-
- 2.19 ★ line-end-comment support HTML(Vue) Tag/Attr doc since 2022.3.1
-
- 2.18 Add line-end-comment support injected language like SQL
-
- 2.17 Add External Comment support *.key.regexp and MyBatis xml demo in Git
-
- 2.16 Add line-end-comment support Rust, Ruby, PHP, C/C++/Object C, Scala, Groovy
-
- 2.15 Add line-end-comment java anno doc
-
- 2.14 Add line-end-comment java enum doc for Yes(1, "Yes")
-
- 2.13 ★ Cache for 2023.3
-
- 2.12 Add project-view-tree support Markdown and Asciidoc
-
- 2.11 Add project-view-tree description from pom.xml and build.gradle
-
- 2.10 Add line-end-comment not doc comment
-
- 2.09 Add line-end-comment support Python doc strings
-
- 2.08 Add i18n and chinese
-
- 2.07 Add global-setting reset default
-
- 2.06 Add project-view-tree xx-abc.xxx from Abc.java doc
-
- 2.05 Add line-end-comment json doc from xxx.json.tsv
-
- 2.04 Add line-end-comment json dict doc from (key).tsv
-
- 2.03 Add live-templates input `doc` `docc` -> /** */
-
- 2.02 Add line-end-comment show before doc for `isA(xxx)` and `a.set(b.get)`
-
- 2.01 Add line-end-comment support SQL, JavaScript, Python, Golang, Kotlin
-
- 2.00 ★★ support all JetBrains IDE
-
- 1.24 Add PopupMenu Copy FileName:LineNumber
-
- 1.23 Add project-view-tree setting for show when compact middle packages
-
- 1.22 Add PopupMenu Copy ClassName.MethodName
-
- 1.21 Add line-end-comment default skip only English when system lang is not `en`
-
- 1.20 Add line-end-comment get doc first sentence checkbox
-
- 1.19 Add line-end-comment supper doc at @Override, support doc tag like @author
-
- 1.18 Add External Comment effect at previous layer when folder named -1
-
- 1.17 Add line-end-comment skip doc text or class/member name by regexp
-
- 1.16 Add line-end-comment skip when comments have been added
-
- 1.15 Add line-end-comment support COBOL ext '', 'cbl', 'cob', 'cobol'
-
- 1.14 Add line-end-comment skip Annotation, skip only English (ASCII)
-
- 1.13 Add line-end-comment 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 for package from parent or other project
-
- 1.9 Add project-view-tree for "xx-ClassNameOrSimpleName.json" and SPI file
-
- 1.8 ★ line-end-comment for "xx-ClassNameOrSimpleName.json"
-
- 1.7 Add line-end-comment setting for prefix and count
-
- 1.6 Add line-end-comment independent switch for call, new, ref
-
- 1.5 Add line-end-comment find next loop when none
-
- 1.4 Add line-end-comment find element right to left
-
- 1.3 ★ project-view-tree file and member comment
-
- 1.2 Add line-end-comment settings for class prefix filter
-
- 1.1 Add line-end-comment settings for text color
-
-
-中文更新说明:
-
-- 2.22 增加 文件树注释 ollama models 文件夹从 manifests 获取 blobs 文件注释
-
- 2.21 增加 文件树注释 用 JS/TS/Vue "export default" 注释当文件注释
-
- 2.20 增加 外部注释 支持 Vue 路由标题文件树注释
-
- 2.19 ★ 行末注释 支持 HTML(Vue) 标签/属性 注释从 2022.3.1 起
-
- 2.18 增加 行末注释 支持注入语言如 SQL
-
- 2.17 增加 tsv 注释 支持 *.key.regexp 与 Mybatis xml 示例在 Git
-
- 2.16 增加 行末注释 支持 Rust, Ruby, PHP, C/C++/Object C, Scala, Groovy
-
- 2.15 增加 行末注释 java 注解注释
-
- 2.14 增加 行末注释 java 枚举注释用于 Yes(1, "是")
-
- 2.13 ★ 缓存用于支持 2023.3
-
- 2.12 增加 文件树注释 支持 Markdown and Asciidoc
-
- 2.11 增加 文件树注释 模块描述 来自 pom.xml 和 build.gradle
-
- 2.10 增加 行末注释 非文档注释
-
- 2.09 增加 行末注释 支持 Python 文档字符串
-
- 2.08 增加 多语言与中文支持
-
- 2.07 增加 全局设置 复位默认值
-
- 2.06 增加 文件树注释 xx-abc.xxx 来自 Abc.java 的文档注释
-
- 2.05 增加 行末注释 json 字段注释从 xxx.json.tsv 读取
-
- 2.04 增加 行末注释 json 字典注释从 键名.tsv 读取
-
- 2.03 增加 活动模板 输入 doc / docc 等生成 /** */
-
- 2.02 增加 行末注释 `isA(xxx)` 和 `a.set(b.get)` 显示前一个注释
-
- 2.01 增加 行末注释 支持 SQL, JavaScript, Python, Golang, Kotlin
-
- 2.00 ★★ 支持所有 JetBrains 软件
-
- 1.24 增加 右键菜单 复制 文件名:行号
-
- 1.23 增加 文件树注释 折叠中间包时显示中间包注释设置
-
- 1.22 增加 右键菜单 复制 类名.方法名
-
- 1.21 增加 行末注释 系统语言非英文时 默认 忽略纯英文
-
- 1.20 增加 行末注释 获取第一句注释选项
-
- 1.19 增加 行末注释 @Override 显示父方法注释,支持 @author 等注释标签
-
- 1.18 增加 tsv 注释 文件夹名为 -1 时配置在上一层文件夹生效
-
- 1.17 增加 行末注释 根据正则表达式跳过指定注释文本或类成员名字的注释
-
- 1.16 增加 行末注释 已经添加行末注释时跳过
-
- 1.15 增加 行末注释 COBOL 拓展名支持 无拓展名、cbl、cob、cobol
-
- 1.14 增加 行末注释 忽略注解 与 忽略纯英文
-
- 1.13 增加 行末注释 带注释复制 和 添加注释
-
- 1.12 ★ tsv 注释 用于 COBOL 等
-
- 1.11 增加 json 跳转到字段
-
- 1.10 增加 文件树注释 在父包和其他项目的包中获取
-
- 1.9 增加 文件树注释 "xx-类全名或简名.json" 和 SPI
-
- 1.8 ★ 行末注释 "xx-类全名或简名.json"
-
- 1.7 增加 行末注释 前缀和对象数设置
-
- 1.6 增加 行末调用 new,引用注释独立开关
-
- 1.5 增加 行末注释 没有注释时循环查找下一个对象
-
- 1.4 增加 行末注释 从右往左查找行末注释对象
-
- 1.3 ★ 文件树注释 (左侧项目导航文件树)
-
- 1.2 增加 行末注释 类前缀配置
-
- 1.1 增加 行末注释 颜色配置
-
-
-
+[build.gradle](build.gradle)
### Demo 示例
diff --git a/build.gradle b/build.gradle
index 674cb9c..4adfe03 100644
--- a/build.gradle
+++ b/build.gradle
@@ -4,7 +4,120 @@ plugins {
}
group 'io.github.linwancen'
-version '2.22.0.' + (new Date().format('yyyy.MM.dd_HH.mm'))
+version '2.23.0.' + (new Date().format('yyyy.MM.dd_HH.mm'))
+
+patchPluginXml {
+ // The performance of 2019.3 has been greatly improved.
+ // change plugins without restarting the IDE in 2020.1.
+ // 2020.2 JCEF, 2022.2 JDK17 java2d perf improved, 2023.3 AI
+ sinceBuild = '201.1'
+ untilBuild = ''
+ changeNotes = """
+English Change Notes:
+
+- 2.23 Add line-end-comment kotlin anno doc
+
- 2.22 Add project-view-tree ollama models blobs comment from manifests
+
- 2.21 Add project-view-tree use JS/TS/Vue "export default" doc for tree doc
+
- 2.20 Add External Comment support Vue src/router tree doc
+
- 2.19 ★ line-end-comment support HTML(Vue) Tag/Attr doc since 2022.3.1
+
- 2.18 Add line-end-comment support injected language like SQL
+
- 2.17 Add External Comment support *.key.regexp and MyBatis xml demo in Git
+
- 2.16 Add line-end-comment support Rust, Ruby, PHP, C/C++/Object C, Scala, Groovy
+
- 2.15 Add line-end-comment java anno doc
+
- 2.14 Add line-end-comment java enum doc for Yes(1, "Yes")
+
- 2.13 ★ Cache for 2023.3
+
- 2.12 Add project-view-tree support Markdown and Asciidoc
+
- 2.11 Add project-view-tree description from pom.xml and build.gradle
+
- 2.10 Add line-end-comment not doc comment
+
- 2.09 Add line-end-comment support Python doc strings
+
- 2.08 Add i18n and chinese
+
- 2.07 Add global-setting reset default
+
- 2.06 Add project-view-tree xx-abc.xxx from Abc.java doc
+
- 2.05 Add line-end-comment json doc from xxx.json.tsv
+
- 2.04 Add line-end-comment json dict doc from (key).tsv
+
- 2.03 Add live-templates input `doc` `docc` -> /** */
+
- 2.02 Add line-end-comment show before doc for `isA(xxx)` and `a.set(b.get)`
+
- 2.01 Add line-end-comment support SQL, JavaScript, Python, Golang, Kotlin
+
- 2.00 ★★ support all JetBrains IDE
+
- 1.24 Add PopupMenu Copy FileName:LineNumber
+
- 1.23 Add project-view-tree setting for show when compact middle packages
+
- 1.22 Add PopupMenu Copy ClassName.MethodName
+
- 1.21 Add line-end-comment default skip only English when system lang is not `en`
+
- 1.20 Add line-end-comment get doc first sentence checkbox
+
- 1.19 Add line-end-comment supper doc at @Override, support doc tag like @author
+
- 1.18 Add External Comment effect at previous layer when folder named -1
+
- 1.17 Add line-end-comment skip doc text or class/member name by regexp
+
- 1.16 Add line-end-comment skip when comments have been added
+
- 1.15 Add line-end-comment support COBOL ext '', 'cbl', 'cob', 'cobol'
+
- 1.14 Add line-end-comment skip Annotation, skip only English (ASCII)
+
- 1.13 Add line-end-comment 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 for package from parent or other project
+
- 1.9 Add project-view-tree for "xx-ClassNameOrSimpleName.json" and SPI file
+
- 1.8 ★ line-end-comment for "xx-ClassNameOrSimpleName.json"
+
- 1.7 Add line-end-comment setting for prefix and count
+
- 1.6 Add line-end-comment independent switch for call, new, ref
+
- 1.5 Add line-end-comment find next loop when none
+
- 1.4 Add line-end-comment find element right to left
+
- 1.3 ★ project-view-tree file and member comment
+
- 1.2 Add line-end-comment settings for class prefix filter
+
- 1.1 Add line-end-comment settings for text color
+
+
+中文更新说明:
+
+- 2.23 增加 行末注释 kotlin 注解注释
+
- 2.22 增加 文件树注释 ollama models 文件夹从 manifests 获取 blobs 文件注释
+
- 2.21 增加 文件树注释 用 JS/TS/Vue "export default" 注释当文件注释
+
- 2.20 增加 外部注释 支持 Vue 路由标题文件树注释
+
- 2.19 ★ 行末注释 支持 HTML(Vue) 标签/属性 注释从 2022.3.1 起
+
- 2.18 增加 行末注释 支持注入语言如 SQL
+
- 2.17 增加 tsv 注释 支持 *.key.regexp 与 Mybatis xml 示例在 Git
+
- 2.16 增加 行末注释 支持 Rust, Ruby, PHP, C/C++/Object C, Scala, Groovy
+
- 2.15 增加 行末注释 java 注解注释
+
- 2.14 增加 行末注释 java 枚举注释用于 Yes(1, "是")
+
- 2.13 ★ 缓存用于支持 2023.3
+
- 2.12 增加 文件树注释 支持 Markdown and Asciidoc
+
- 2.11 增加 文件树注释 模块描述 来自 pom.xml 和 build.gradle
+
- 2.10 增加 行末注释 非文档注释
+
- 2.09 增加 行末注释 支持 Python 文档字符串
+
- 2.08 增加 多语言与中文支持
+
- 2.07 增加 全局设置 复位默认值
+
- 2.06 增加 文件树注释 xx-abc.xxx 来自 Abc.java 的文档注释
+
- 2.05 增加 行末注释 json 字段注释从 xxx.json.tsv 读取
+
- 2.04 增加 行末注释 json 字典注释从 键名.tsv 读取
+
- 2.03 增加 活动模板 输入 doc / docc 等生成 /** */
+
- 2.02 增加 行末注释 `isA(xxx)` 和 `a.set(b.get)` 显示前一个注释
+
- 2.01 增加 行末注释 支持 SQL, JavaScript, Python, Golang, Kotlin
+
- 2.00 ★★ 支持所有 JetBrains 软件
+
- 1.24 增加 右键菜单 复制 文件名:行号
+
- 1.23 增加 文件树注释 折叠中间包时显示中间包注释设置
+
- 1.22 增加 右键菜单 复制 类名.方法名
+
- 1.21 增加 行末注释 系统语言非英文时 默认 忽略纯英文
+
- 1.20 增加 行末注释 获取第一句注释选项
+
- 1.19 增加 行末注释 @Override 显示父方法注释,支持 @author 等注释标签
+
- 1.18 增加 tsv 注释 文件夹名为 -1 时配置在上一层文件夹生效
+
- 1.17 增加 行末注释 根据正则表达式跳过指定注释文本或类成员名字的注释
+
- 1.16 增加 行末注释 已经添加行末注释时跳过
+
- 1.15 增加 行末注释 COBOL 拓展名支持 无拓展名、cbl、cob、cobol
+
- 1.14 增加 行末注释 忽略注解 与 忽略纯英文
+
- 1.13 增加 行末注释 带注释复制 和 添加注释
+
- 1.12 ★ tsv 注释 用于 COBOL 等
+
- 1.11 增加 json 跳转到字段
+
- 1.10 增加 文件树注释 在父包和其他项目的包中获取
+
- 1.9 增加 文件树注释 "xx-类全名或简名.json" 和 SPI
+
- 1.8 ★ 行末注释 "xx-类全名或简名.json"
+
- 1.7 增加 行末注释 前缀和对象数设置
+
- 1.6 增加 行末调用 new,引用注释独立开关
+
- 1.5 增加 行末注释 没有注释时循环查找下一个对象
+
- 1.4 增加 行末注释 从右往左查找行末注释对象
+
- 1.3 ★ 文件树注释 (左侧项目导航文件树)
+
- 1.2 增加 行末注释 类前缀配置
+
- 1.1 增加 行末注释 颜色配置
+
+ """
+}
repositories {
mavenCentral()
@@ -86,117 +199,6 @@ tasks.withType(Javadoc) {
options.encoding = 'UTF-8'
}
-patchPluginXml {
- // The performance of 2019.3 has been greatly improved.
- // change plugins without restarting the IDE in 2020.1.
- // 2020.2 JCEF, 2022.2 JDK17 java2d perf improved, 2023.3 AI
- sinceBuild = '201.1'
- untilBuild = ''
- changeNotes = """
-English Change Notes:
-
-- 2.22 Add project-view-tree ollama models blobs comment from manifests
-
- 2.21 Add project-view-tree use JS/TS/Vue "export default" doc for tree doc
-
- 2.20 Add External Comment support Vue src/router tree doc
-
- 2.19 ★ line-end-comment support HTML(Vue) Tag/Attr doc since 2022.3.1
-
- 2.18 Add line-end-comment support injected language like SQL
-
- 2.17 Add External Comment support *.key.regexp and MyBatis xml demo in Git
-
- 2.16 Add line-end-comment support Rust, Ruby, PHP, C/C++/Object C, Scala, Groovy
-
- 2.15 Add line-end-comment java anno doc
-
- 2.14 Add line-end-comment java enum doc for Yes(1, "Yes")
-
- 2.13 ★ Cache for 2023.3
-
- 2.12 Add project-view-tree support Markdown and Asciidoc
-
- 2.11 Add project-view-tree description from pom.xml and build.gradle
-
- 2.10 Add line-end-comment not doc comment
-
- 2.09 Add line-end-comment support Python doc strings
-
- 2.08 Add i18n and chinese
-
- 2.07 Add global-setting reset default
-
- 2.06 Add project-view-tree xx-abc.xxx from Abc.java doc
-
- 2.05 Add line-end-comment json doc from xxx.json.tsv
-
- 2.04 Add line-end-comment json dict doc from (key).tsv
-
- 2.03 Add live-templates input `doc` `docc` -> /** */
-
- 2.02 Add line-end-comment show before doc for `isA(xxx)` and `a.set(b.get)`
-
- 2.01 Add line-end-comment support SQL, JavaScript, Python, Golang, Kotlin
-
- 2.00 ★★ support all JetBrains IDE
-
- 1.24 Add PopupMenu Copy FileName:LineNumber
-
- 1.23 Add project-view-tree setting for show when compact middle packages
-
- 1.22 Add PopupMenu Copy ClassName.MethodName
-
- 1.21 Add line-end-comment default skip only English when system lang is not `en`
-
- 1.20 Add line-end-comment get doc first sentence checkbox
-
- 1.19 Add line-end-comment supper doc at @Override, support doc tag like @author
-
- 1.18 Add External Comment effect at previous layer when folder named -1
-
- 1.17 Add line-end-comment skip doc text or class/member name by regexp
-
- 1.16 Add line-end-comment skip when comments have been added
-
- 1.15 Add line-end-comment support COBOL ext '', 'cbl', 'cob', 'cobol'
-
- 1.14 Add line-end-comment skip Annotation, skip only English (ASCII)
-
- 1.13 Add line-end-comment 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 for package from parent or other project
-
- 1.9 Add project-view-tree for "xx-ClassNameOrSimpleName.json" and SPI file
-
- 1.8 ★ line-end-comment for "xx-ClassNameOrSimpleName.json"
-
- 1.7 Add line-end-comment setting for prefix and count
-
- 1.6 Add line-end-comment independent switch for call, new, ref
-
- 1.5 Add line-end-comment find next loop when none
-
- 1.4 Add line-end-comment find element right to left
-
- 1.3 ★ project-view-tree file and member comment
-
- 1.2 Add line-end-comment settings for class prefix filter
-
- 1.1 Add line-end-comment settings for text color
-
-
-中文更新说明:
-
-- 2.22 增加 文件树注释 ollama models 文件夹从 manifests 获取 blobs 文件注释
-
- 2.21 增加 文件树注释 用 JS/TS/Vue "export default" 注释当文件注释
-
- 2.20 增加 外部注释 支持 Vue 路由标题文件树注释
-
- 2.19 ★ 行末注释 支持 HTML(Vue) 标签/属性 注释从 2022.3.1 起
-
- 2.18 增加 行末注释 支持注入语言如 SQL
-
- 2.17 增加 tsv 注释 支持 *.key.regexp 与 Mybatis xml 示例在 Git
-
- 2.16 增加 行末注释 支持 Rust, Ruby, PHP, C/C++/Object C, Scala, Groovy
-
- 2.15 增加 行末注释 java 注解注释
-
- 2.14 增加 行末注释 java 枚举注释用于 Yes(1, "是")
-
- 2.13 ★ 缓存用于支持 2023.3
-
- 2.12 增加 文件树注释 支持 Markdown and Asciidoc
-
- 2.11 增加 文件树注释 模块描述 来自 pom.xml 和 build.gradle
-
- 2.10 增加 行末注释 非文档注释
-
- 2.09 增加 行末注释 支持 Python 文档字符串
-
- 2.08 增加 多语言与中文支持
-
- 2.07 增加 全局设置 复位默认值
-
- 2.06 增加 文件树注释 xx-abc.xxx 来自 Abc.java 的文档注释
-
- 2.05 增加 行末注释 json 字段注释从 xxx.json.tsv 读取
-
- 2.04 增加 行末注释 json 字典注释从 键名.tsv 读取
-
- 2.03 增加 活动模板 输入 doc / docc 等生成 /** */
-
- 2.02 增加 行末注释 `isA(xxx)` 和 `a.set(b.get)` 显示前一个注释
-
- 2.01 增加 行末注释 支持 SQL, JavaScript, Python, Golang, Kotlin
-
- 2.00 ★★ 支持所有 JetBrains 软件
-
- 1.24 增加 右键菜单 复制 文件名:行号
-
- 1.23 增加 文件树注释 折叠中间包时显示中间包注释设置
-
- 1.22 增加 右键菜单 复制 类名.方法名
-
- 1.21 增加 行末注释 系统语言非英文时 默认 忽略纯英文
-
- 1.20 增加 行末注释 获取第一句注释选项
-
- 1.19 增加 行末注释 @Override 显示父方法注释,支持 @author 等注释标签
-
- 1.18 增加 tsv 注释 文件夹名为 -1 时配置在上一层文件夹生效
-
- 1.17 增加 行末注释 根据正则表达式跳过指定注释文本或类成员名字的注释
-
- 1.16 增加 行末注释 已经添加行末注释时跳过
-
- 1.15 增加 行末注释 COBOL 拓展名支持 无拓展名、cbl、cob、cobol
-
- 1.14 增加 行末注释 忽略注解 与 忽略纯英文
-
- 1.13 增加 行末注释 带注释复制 和 添加注释
-
- 1.12 ★ tsv 注释 用于 COBOL 等
-
- 1.11 增加 json 跳转到字段
-
- 1.10 增加 文件树注释 在父包和其他项目的包中获取
-
- 1.9 增加 文件树注释 "xx-类全名或简名.json" 和 SPI
-
- 1.8 ★ 行末注释 "xx-类全名或简名.json"
-
- 1.7 增加 行末注释 前缀和对象数设置
-
- 1.6 增加 行末调用 new,引用注释独立开关
-
- 1.5 增加 行末注释 没有注释时循环查找下一个对象
-
- 1.4 增加 行末注释 从右往左查找行末注释对象
-
- 1.3 ★ 文件树注释 (左侧项目导航文件树)
-
- 1.2 增加 行末注释 类前缀配置
-
- 1.1 增加 行末注释 颜色配置
-
- """
-}
-
test {
useJUnitPlatform()
}
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 020a835..9b0e9f4 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
@@ -18,7 +18,7 @@ import com.intellij.psi.javadoc.PsiDocTagValue;
import com.intellij.psi.util.PsiTreeUtil;
import io.github.linwancen.plugin.show.bean.LineInfo;
import io.github.linwancen.plugin.show.bean.SettingsInfo;
-import io.github.linwancen.plugin.show.java.doc.AnnoDoc;
+import io.github.linwancen.plugin.show.java.doc.AnnoDocJava;
import io.github.linwancen.plugin.show.java.doc.EnumDoc;
import io.github.linwancen.plugin.show.java.doc.NewDoc;
import io.github.linwancen.plugin.show.java.doc.ParamDoc;
@@ -101,7 +101,7 @@ public class JavaLangDoc extends BaseTagLangDoc {
return EnumDoc.enumDoc((PsiEnumConstant) resolve);
}
if (resolve instanceof PsiJvmModifiersOwner) {
- return AnnoDoc.annoDoc(info, (PsiJvmModifiersOwner) resolve);
+ return AnnoDocJava.INSTANCE.annoDoc(info, (PsiJvmModifiersOwner) resolve);
}
return null;
}
diff --git a/src/main/idea/io/github/linwancen/plugin/show/java/KotlinLangDoc.java b/src/main/idea/io/github/linwancen/plugin/show/java/KotlinLangDoc.java
index 7419821..98bb15a 100644
--- a/src/main/idea/io/github/linwancen/plugin/show/java/KotlinLangDoc.java
+++ b/src/main/idea/io/github/linwancen/plugin/show/java/KotlinLangDoc.java
@@ -5,6 +5,7 @@ import com.intellij.psi.impl.file.PsiPackageBase;
import com.intellij.psi.util.PsiTreeUtil;
import io.github.linwancen.plugin.show.bean.LineInfo;
import io.github.linwancen.plugin.show.bean.SettingsInfo;
+import io.github.linwancen.plugin.show.java.kt.AnnoDocKt;
import io.github.linwancen.plugin.show.lang.base.BaseTagLangDoc;
import io.github.linwancen.plugin.show.lang.base.DocFilter;
import org.jetbrains.annotations.NotNull;
@@ -13,6 +14,7 @@ import org.jetbrains.kotlin.kdoc.psi.api.KDoc;
import org.jetbrains.kotlin.kdoc.psi.impl.KDocName;
import org.jetbrains.kotlin.kdoc.psi.impl.KDocSection;
import org.jetbrains.kotlin.kdoc.psi.impl.KDocTag;
+import org.jetbrains.kotlin.psi.KtAnnotated;
import org.jetbrains.kotlin.psi.KtNameReferenceExpression;
import java.util.List;
@@ -29,6 +31,18 @@ public class KotlinLangDoc extends BaseTagLangDoc {
return info.appSettings.showLineEndCommentKotlin;
}
+ @Override
+ public @Nullable String resolveDocPrint(@NotNull T info, @NotNull PsiElement resolve) {
+ @Nullable String resolveDocPrint = super.resolveDocPrint(info, resolve);
+ if (resolveDocPrint != null) {
+ return resolveDocPrint;
+ }
+ if (resolve instanceof KtAnnotated) {
+ return AnnoDocKt.INSTANCE.annoDoc(info, (KtAnnotated) resolve);
+ }
+ return null;
+ }
+
@Override
protected boolean parseBaseComment(@NotNull T info) {
return info.appSettings.showLineEndCommentKotlinBase;
diff --git a/src/main/idea/io/github/linwancen/plugin/show/java/doc/AnnoDoc.java b/src/main/idea/io/github/linwancen/plugin/show/java/doc/AnnoDocJava.java
similarity index 62%
rename from src/main/idea/io/github/linwancen/plugin/show/java/doc/AnnoDoc.java
rename to src/main/idea/io/github/linwancen/plugin/show/java/doc/AnnoDocJava.java
index 12a8a00..57c0ffa 100644
--- a/src/main/idea/io/github/linwancen/plugin/show/java/doc/AnnoDoc.java
+++ b/src/main/idea/io/github/linwancen/plugin/show/java/doc/AnnoDocJava.java
@@ -10,50 +10,18 @@ import com.intellij.psi.PsiDocCommentOwner;
import com.intellij.psi.PsiField;
import com.intellij.psi.PsiJvmModifiersOwner;
import com.intellij.psi.PsiMethod;
-import io.github.linwancen.plugin.show.bean.SettingsInfo;
-import io.github.linwancen.plugin.show.settings.GlobalSettingsState;
-import io.github.linwancen.plugin.show.settings.ProjectSettingsState;
-import org.apache.commons.lang3.StringUtils;
+import io.github.linwancen.plugin.show.lang.base.BaseAnnoDoc;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-public class AnnoDoc {
+public class AnnoDocJava extends BaseAnnoDoc {
- private AnnoDoc() {}
+ public static AnnoDocJava INSTANCE = new AnnoDocJava();
+
+ private AnnoDocJava() {}
@Nullable
- public static String annoDoc(@NotNull T info, @NotNull PsiJvmModifiersOwner owner) {
- @NotNull ProjectSettingsState projectSettings = info.projectSettings;
- @NotNull GlobalSettingsState globalSettings = info.globalSettings;
- // annoDocEffect first because default false
- if (projectSettings.annoDocEffect && projectSettings.projectFilterEffective) {
- @Nullable String doc = annoDocArr(owner, projectSettings.annoDoc);
- if (StringUtils.isNotBlank(doc)) {
- return doc;
- }
- }
- if (globalSettings.annoDocEffect && projectSettings.globalFilterEffective) {
- return annoDocArr(owner, globalSettings.annoDoc);
- }
- return null;
- }
-
- @Nullable
- private static String annoDocArr(@NotNull PsiJvmModifiersOwner owner, @NotNull String[][] lines) {
- for (@NotNull String[] arr : lines) {
- if (arr.length < 3) {
- continue;
- }
- @Nullable String s = annoDocMatch(owner, arr);
- if (s != null) {
- return s;
- }
- }
- return null;
- }
-
- @Nullable
- private static String annoDocMatch(@NotNull PsiJvmModifiersOwner owner, @NotNull String[] arr) {
+ protected String annoDocMatch(@NotNull PsiJvmModifiersOwner owner, @NotNull String[] arr) {
if (typeMatch(owner, arr[0])) {
return annoDocName(owner, arr);
}
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
new file mode 100644
index 0000000..851c106
--- /dev/null
+++ b/src/main/idea/io/github/linwancen/plugin/show/java/kt/AnnoDocKt.java
@@ -0,0 +1,85 @@
+package io.github.linwancen.plugin.show.java.kt;
+
+import io.github.linwancen.plugin.show.lang.base.BaseAnnoDoc;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+import org.jetbrains.kotlin.name.Name;
+import org.jetbrains.kotlin.psi.KtAnnotated;
+import org.jetbrains.kotlin.psi.KtAnnotationEntry;
+import org.jetbrains.kotlin.psi.KtExpression;
+import org.jetbrains.kotlin.psi.KtFunction;
+import org.jetbrains.kotlin.psi.KtProperty;
+import org.jetbrains.kotlin.psi.KtPureClassOrObject;
+import org.jetbrains.kotlin.psi.KtStringTemplateExpression;
+import org.jetbrains.kotlin.psi.ValueArgument;
+import org.jetbrains.kotlin.psi.ValueArgumentName;
+
+public class AnnoDocKt extends BaseAnnoDoc {
+
+ public static AnnoDocKt INSTANCE = new AnnoDocKt();
+
+ private AnnoDocKt() {}
+
+ @Nullable
+ protected String annoDocMatch(@NotNull KtAnnotated owner, @NotNull String[] arr) {
+ if (typeMatch(owner, arr[0])) {
+ for (KtAnnotationEntry entry : owner.getAnnotationEntries()) {
+ String s = annoDocName(entry, arr);
+ if (s != null) {
+ return s;
+ }
+ }
+ }
+ return null;
+ }
+
+ private static boolean typeMatch(KtAnnotated owner, @NotNull String type) {
+ switch (type) {
+ case "field":
+ return owner instanceof KtProperty;
+ case "method":
+ return owner instanceof KtFunction;
+ case "class":
+ return owner instanceof KtPureClassOrObject;
+ case "!doc":
+ case "all":
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ @Nullable
+ private static String annoDocName(@NotNull KtAnnotationEntry entry, @NotNull String[] arr) {
+ Name shortName = entry.getShortName();
+ if (shortName == null) {
+ return null;
+ }
+ String name = shortName.asString();
+ String annoName = arr[1];
+ int i = annoName.lastIndexOf('.');
+ if (i > 0) {
+ annoName = annoName.substring(i + 1);
+ }
+ if (!annoName.equals(name)) {
+ return null;
+ }
+ for (ValueArgument argument : entry.getValueArguments()) {
+ ValueArgumentName argumentName = argument.getArgumentName();
+ String method = argumentName == null ? "value" : argumentName.getAsName().asString();
+ if (arr[2].equals(method)) {
+ KtExpression expression = argument.getArgumentExpression();
+ if (expression instanceof KtStringTemplateExpression) {
+ String text = expression.getText();
+ if (text.length() >= 2) {
+ String s = text.substring(1, text.length() - 1);
+ if (!s.isEmpty()) {
+ return s;
+ }
+ }
+ }
+ }
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/io/github/linwancen/plugin/show/lang/base/BaseAnnoDoc.java b/src/main/java/io/github/linwancen/plugin/show/lang/base/BaseAnnoDoc.java
new file mode 100644
index 0000000..810a7a7
--- /dev/null
+++ b/src/main/java/io/github/linwancen/plugin/show/lang/base/BaseAnnoDoc.java
@@ -0,0 +1,47 @@
+package io.github.linwancen.plugin.show.lang.base;
+
+import io.github.linwancen.plugin.show.bean.SettingsInfo;
+import io.github.linwancen.plugin.show.settings.GlobalSettingsState;
+import io.github.linwancen.plugin.show.settings.ProjectSettingsState;
+import org.apache.commons.lang3.StringUtils;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public abstract class BaseAnnoDoc {
+
+ @Nullable
+ public String annoDoc(@NotNull T info, @NotNull O owner) {
+ @NotNull ProjectSettingsState projectSettings = info.projectSettings;
+ @NotNull GlobalSettingsState globalSettings = info.globalSettings;
+ // annoDocEffect first because default false
+ if (projectSettings.annoDocEffect && projectSettings.projectFilterEffective) {
+ @Nullable String doc = annoDocArr(owner, projectSettings.annoDoc);
+ if (StringUtils.isNotBlank(doc)) {
+ return doc;
+ }
+ }
+ if (globalSettings.annoDocEffect && projectSettings.globalFilterEffective) {
+ return annoDocArr(owner, globalSettings.annoDoc);
+ }
+ return null;
+ }
+
+ @Nullable
+ protected String annoDocArr(@NotNull O owner, @NotNull String[][] lines) {
+ for (@NotNull String[] arr : lines) {
+ if (arr.length < 3) {
+ continue;
+ }
+ @Nullable String s = annoDocMatch(owner, arr);
+ if (s != null) {
+ return s;
+ }
+ }
+ return null;
+ }
+
+ @Nullable
+ protected String annoDocMatch(@NotNull O owner, @NotNull String[] arr) {
+ 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 3443603..7bc59ad 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
@@ -161,7 +161,7 @@ public abstract class BaseLangDoc extends EditorLinePainter {
return null;
}
if (resolve == null) {
- return null;
+ continue;
}
@Nullable String resolveDoc = resolveDoc(info, resolve);
if (resolveDoc != null) {