From 335d9fffffd430120a8e04fe88ef27ec9fa6f17e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9E=97=E4=B8=87=E7=A8=8B?= <1498425439@qq.com>
Date: Fri, 9 Feb 2024 15:59:58 +0800
Subject: [PATCH] =?UTF-8?q?feat(CLangDoc):=20support=20C=20|=20=E6=94=AF?=
=?UTF-8?q?=E6=8C=81=20C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 9 ++---
build.gradle | 15 ++++----
.../linwancen/plugin/show/lang/CLangDoc.java | 34 ++++++++++++++++++
.../show/settings/AppSettingsComponent.java | 12 ++++++-
.../settings/AppSettingsConfigurable.java | 3 ++
.../show/settings/AppSettingsState.java | 1 +
.../linwancen/plugin/show/lang/CLangDoc.class | Bin 0 -> 2334 bytes
src/main/resources/META-INF/c.xml | 5 +++
src/main/resources/META-INF/plugin.xml | 6 ++--
.../io/github/linwancen/plugin/show/demo/c.c | 20 +++++++++++
10 files changed, 90 insertions(+), 15 deletions(-)
create mode 100644 src/main/clion/io/github/linwancen/plugin/show/lang/CLangDoc.java
create mode 100644 src/main/other_lang_class/io/github/linwancen/plugin/show/lang/CLangDoc.class
create mode 100644 src/main/resources/META-INF/c.xml
diff --git a/README.md b/README.md
index b12aa4b..755e48b 100644
--- a/README.md
+++ b/README.md
@@ -13,7 +13,7 @@ Show doc comment at the Project view Tree, line End, json, other
English Note
-- support Java Kotlin JS/TS PHP Python Go Rust SQL
+
- support Java Kotlin JS/TS PHP Python Go Rust C SQL
- tree doc from lang or README.md pom .gradle etc. by settings
- input `doc` `docc` -> /** */
- json doc from xxx.json.tsv
@@ -56,8 +56,9 @@ Show doc comment at the Project view Tree, line End, json, other
中文说明
-- 在行末尾显示 引用对象的文档注释,支持 Java Kotlin JS/TS PHP Python Go Rust SQL
- 在结构树显示 文件注释 或 项目说明 (README.md pom.xml 等,可设置)
+
- 在行末尾显示 引用对象的文档注释,欢迎反馈您想要支持的语言,目前 C# 有技术问题待官方解决
+
- 目前支持 Java Kotlin JS/TS PHP Python Go Rust C SQL
- 输入 doc / docc 等生成 /** */
- json 字段注释从 xxx.json.tsv 读取
- json 字典注释从 键名.tsv 读取
@@ -120,7 +121,7 @@ Show doc comment at the Project view Tree, line End, json, other
English Change Notes:
-- 2.16 Add line-end-comment support Rust, PHP
+
- 2.16 Add line-end-comment support Rust, PHP, C/C++/Object C
- 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
@@ -165,7 +166,7 @@ Show doc comment at the Project view Tree, line End, json, other
中文更新说明:
-- 2.16 增加 行末注释 支持 Rust, PHP
+
- 2.16 增加 行末注释 支持 Rust, PHP, C/C++/Object C
- 2.15 增加 行末注释 java 注解注释
- 2.14 增加 行末注释 java 枚举注释用于 Yes(1, "是")
- 2.13 ★ 缓存用于支持 2023.3
diff --git a/build.gradle b/build.gradle
index bc59ef4..121599a 100644
--- a/build.gradle
+++ b/build.gradle
@@ -57,9 +57,10 @@ sourceSets {
srcDirs = ['src/main/java', 'src/main/rider']
}
}
- test {
+ } else if ('CL' == ideTypeStr) {
+ main {
java {
- srcDirs = ['src/test/java', 'src/test/rider']
+ srcDirs = ['src/main/java', 'src/main/clion']
}
}
} else {
@@ -67,10 +68,8 @@ sourceSets {
java {
srcDirs = ['src/main/java', 'src/main/idea']
}
- }
- test {
- java {
- srcDirs = ['src/test/java', 'src/test/idea']
+ resources {
+ srcDirs = ['src/main/resources', 'src/main/other_lang_class']
}
}
}
@@ -93,7 +92,7 @@ patchPluginXml {
changeNotes = """
English Change Notes:
-- 2.16 Add line-end-comment support Rust, PHP
+
- 2.16 Add line-end-comment support Rust, PHP, C/C++/Object C
- 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
@@ -138,7 +137,7 @@ patchPluginXml {
中文更新说明:
-- 2.16 增加 行末注释 支持 Rust, PHP
+
- 2.16 增加 行末注释 支持 Rust, PHP, C/C++/Object C
- 2.15 增加 行末注释 java 注解注释
- 2.14 增加 行末注释 java 枚举注释用于 Yes(1, "是")
- 2.13 ★ 缓存用于支持 2023.3
diff --git a/src/main/clion/io/github/linwancen/plugin/show/lang/CLangDoc.java b/src/main/clion/io/github/linwancen/plugin/show/lang/CLangDoc.java
new file mode 100644
index 0000000..d7b4cbf
--- /dev/null
+++ b/src/main/clion/io/github/linwancen/plugin/show/lang/CLangDoc.java
@@ -0,0 +1,34 @@
+package io.github.linwancen.plugin.show.lang;
+
+import com.intellij.psi.PsiElement;
+import com.jetbrains.cidr.lang.OCLanguage;
+import com.jetbrains.cidr.lang.psi.OCReferenceElement;
+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 org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+public class CLangDoc extends BaseLangDoc {
+
+ static {
+ LANG_DOC_MAP.put(OCLanguage.getInstance().getID(), new CLangDoc());
+ }
+
+ @Override
+ public @NotNull List> getRefClass() {
+ return List.of(OCReferenceElement.class);
+ }
+
+ @Override
+ public boolean show(@NotNull LineInfo info) {
+ return info.appSettings.showLineEndCommentCBase;
+ }
+
+ @Override
+ protected @Nullable String resolveDocPrint(@NotNull T info, @NotNull PsiElement resolve) {
+ return super.resolveDocPrint(info, resolve.getParent());
+ }
+}
diff --git a/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsComponent.java b/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsComponent.java
index bfae6ed..ae33f1b 100644
--- a/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsComponent.java
+++ b/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsComponent.java
@@ -34,6 +34,7 @@ public class AppSettingsComponent {
private final JBCheckBox showLineEndCommentGo = new JBCheckBox(" Go ");
private final JBCheckBox showLineEndCommentGoBase = new JBCheckBox("// Go ");
private final JBCheckBox showLineEndCommentRustBase = new JBCheckBox("// Rust ");
+ private final JBCheckBox showLineEndCommentCBase = new JBCheckBox("// C ");
private final JBCheckBox showLineEndCommentSql = new JBCheckBox(" sql ");
private final JBCheckBox showLineEndCommentJson = new JBCheckBox(" json ");
private final JBTextField lineTags = new JBTextField();
@@ -80,7 +81,8 @@ public class AppSettingsComponent {
showLineEndCommentJsBase,
showLineEndCommentPhpBase,
showLineEndCommentPyBase,
- showLineEndCommentRustBase
+ showLineEndCommentRustBase,
+ showLineEndCommentCBase
), 1)
.addLabeledComponent(new JBLabel(ShowBundle.message("tree.tags")), treeTags, 1, true)
.addLabeledComponent(new JBLabel(ShowBundle.message("line.tags")), lineTags, 1, true)
@@ -268,6 +270,14 @@ public class AppSettingsComponent {
showLineEndCommentRustBase.setSelected(newStatus);
}
+ public boolean getShowLineEndCommentCBase() {
+ return showLineEndCommentCBase.isSelected();
+ }
+
+ public void setShowLineEndCommentCBase(boolean newStatus) {
+ showLineEndCommentCBase.setSelected(newStatus);
+ }
+
public boolean getShowLineEndCommentSql() {
return showLineEndCommentSql.isSelected();
}
diff --git a/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsConfigurable.java b/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsConfigurable.java
index 897c0dd..f6cf5e9 100644
--- a/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsConfigurable.java
+++ b/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsConfigurable.java
@@ -54,6 +54,7 @@ public class AppSettingsConfigurable implements Configurable {
modified |= mySettingsComponent.getShowLineEndCommentPyBase() != settings.showLineEndCommentPyBase;
modified |= mySettingsComponent.getShowLineEndCommentGoBase() != settings.showLineEndCommentGoBase;
modified |= mySettingsComponent.getShowLineEndCommentRustBase() != settings.showLineEndCommentRustBase;
+ modified |= mySettingsComponent.getShowLineEndCommentCBase() != settings.showLineEndCommentCBase;
modified |= mySettingsComponent.getShowLineEndCommentSql() != settings.showLineEndCommentSql;
modified |= mySettingsComponent.getShowLineEndCommentJson() != settings.showLineEndCommentJson;
@@ -96,6 +97,7 @@ public class AppSettingsConfigurable implements Configurable {
settings.showLineEndCommentPyBase = mySettingsComponent.getShowLineEndCommentPyBase();
settings.showLineEndCommentGoBase = mySettingsComponent.getShowLineEndCommentGoBase();
settings.showLineEndCommentRustBase = mySettingsComponent.getShowLineEndCommentRustBase();
+ settings.showLineEndCommentCBase = mySettingsComponent.getShowLineEndCommentCBase();
settings.showLineEndCommentSql = mySettingsComponent.getShowLineEndCommentSql();
settings.showLineEndCommentJson = mySettingsComponent.getShowLineEndCommentJson();
@@ -141,6 +143,7 @@ public class AppSettingsConfigurable implements Configurable {
mySettingsComponent.setShowLineEndCommentPyBase(settings.showLineEndCommentPyBase);
mySettingsComponent.setShowLineEndCommentGoBase(settings.showLineEndCommentGoBase);
mySettingsComponent.setShowLineEndCommentRustBase(settings.showLineEndCommentRustBase);
+ mySettingsComponent.setShowLineEndCommentCBase(settings.showLineEndCommentCBase);
mySettingsComponent.setShowLineEndCommentSql(settings.showLineEndCommentSql);
mySettingsComponent.setShowLineEndCommentJson(settings.showLineEndCommentJson);
diff --git a/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsState.java b/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsState.java
index 0d0c5ab..d30f4d1 100644
--- a/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsState.java
+++ b/src/main/java/io/github/linwancen/plugin/show/settings/AppSettingsState.java
@@ -42,6 +42,7 @@ public class AppSettingsState implements PersistentStateComponentD>XbMu^k;}I-76_7dN|^-3=Z8
zCx1|G>uzW
zNaHiy&f;_2(Pwwl$l_iG_mS5_!N3<8?#ySgh%XI%CD30`t_l|glDU~D0;!U>B?X4d
z%9U&FW=;B4yXJ6br0msg=ZWnry^c3i;f@Lftg`Z~h6;DuHOo=%bK9*;*J?TKhH|Z7
z$9rx$w%f2uWsXZ;Jui@L$Z%6`mmE8w{zz`7yld~-Ry$MSFU?aOSz$R9JOn;0%dIkYT1!Z>4y15eg!5r+is|ua>d
zRGv#1SIeH?uy$ow^KIn@mVI<+t$E>E+i_@P@=Y7npIhB_QaWUTTe&mSQj@mJcwGY8
z_VP17F#n3P^JKJJRbcu}SR1x)H)SaOt{8`X8FHeoe_5NERSj#PMOzTVPY5;1m<;l9~Ea^ZTX$H(v`km
zVmC=&vhm`IH&8V303`!UCYJHgz#|i1W5vK@6W^e0;tH;sSjC!wbrT!-*2E?%0yq9w
zFB_;X(ObnMy$T6K-`>5m0zOq)U|ds#Zv16;tK>B`MU`|`1O!Q7q6d?a7|ES%
zZmN)sNQ^y%iP9_=*B(7vS}#3YEpBLHKT7wi-J-yi)9PwHs=~J2AS%t*D{c^KW*4{?
zdp)TdkF;pJPpd5nj2`fJHzy2sVc{#N)n-h0Pq_M1iy<-?*9WHfY8&E<5$FR$#RZP<
zaAol+^zQ6F#BZD=Fv77v+8oA3&drVhM)59Jq!WxI6)E53N-Ot|Bwixb%05OVaMLNSrNJjPxlt}2)xfe*iK;JK%ANO!6@-Wtsi9Kjr
zlekPxZ8r@u#)oz@#h;<^>P1SoI8&ih@FTq?`7~$euD?RRz&;EeOY&GIrXo+5J93Af
zOnRE8MV+IMag8`WiRPW1N#uCeiFoEP;#o>)WMfD&Vy
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml
index ce337e9..287029f 100644
--- a/src/main/resources/META-INF/plugin.xml
+++ b/src/main/resources/META-INF/plugin.xml
@@ -11,7 +11,7 @@ Show doc comment at the Project view Tree, line End, json, other
English Note
-- support Java Kotlin JS/TS PHP Python Go Rust SQL
+
- support Java Kotlin JS/TS PHP Python Go Rust C SQL
- tree doc from lang or README.md pom .gradle etc. by settings
- input `doc` `docc` -> /** */
- json doc from xxx.json.tsv
@@ -54,8 +54,9 @@ Show doc comment at the Project view Tree, line End, json, other
中文说明
-- 在行末尾显示 引用对象的文档注释,支持 Java Kotlin JS/TS PHP Python Go Rust SQL
- 在结构树显示 文件注释 或 项目说明 (README.md pom.xml 等,可设置)
+
- 在行末尾显示 引用对象的文档注释,欢迎反馈您想要支持的语言,目前 C# 有技术问题待官方解决
+
- 目前支持 Java Kotlin JS/TS PHP Python Go Rust C SQL
- 输入 doc / docc 等生成 /** */
- json 字段注释从 xxx.json.tsv 读取
- json 字典注释从 键名.tsv 读取
@@ -126,6 +127,7 @@ Show doc comment at the Project view Tree, line End, json, other
org.rust.lang
com.jetbrains.rust
+ com.intellij.modules.c-capable
com.jetbrains.php
diff --git a/src/test/java/io/github/linwancen/plugin/show/demo/c.c b/src/test/java/io/github/linwancen/plugin/show/demo/c.c
index e69de29..baea882 100644
--- a/src/test/java/io/github/linwancen/plugin/show/demo/c.c
+++ b/src/test/java/io/github/linwancen/plugin/show/demo/c.c
@@ -0,0 +1,20 @@
+#include
+
+/*
+ * a
+ */
+int a = 1;
+
+int main() {
+ print()
+ int b = a;
+ return 0;
+}
+
+/*
+ * OCReferenceElement
+ * Language: ObjectiveC
+ */
+void print(){
+ printf("Hello, World!\n");
+}