From 82081ae8ecdad29a872fd5544b719edef332d970 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E4=B8=87=E7=A8=8B?= <1498425439@qq.com> Date: Tue, 20 Feb 2024 21:25:58 +0800 Subject: [PATCH] =?UTF-8?q?feat(SwiftLangDoc):=20support=20Swift=20|=20?= =?UTF-8?q?=E6=94=AF=E6=8C=81=20Swift?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 2 + .../plugin/show/lang/SwiftLangDoc.java | 37 ++++++++++++++++++ .../show/settings/AppSettingsComponent.java | 12 +++++- .../settings/AppSettingsConfigurable.java | 3 ++ .../show/settings/AppSettingsState.java | 1 + .../plugin/show/lang/SwiftLangDoc.class | Bin 0 -> 2342 bytes src/main/resources/META-INF/plugin.xml | 4 +- src/main/resources/META-INF/swift.xml | 5 +++ 8 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 src/main/clion/io/github/linwancen/plugin/show/lang/SwiftLangDoc.java create mode 100644 src/main/other_lang_class/io/github/linwancen/plugin/show/lang/SwiftLangDoc.class create mode 100644 src/main/resources/META-INF/swift.xml diff --git a/build.gradle b/build.gradle index 121599a..a79bef7 100644 --- a/build.gradle +++ b/build.gradle @@ -40,6 +40,8 @@ intellij { if ('IC' == ideTypeStr || 'IU' == ideTypeStr) { plugins.add('java') plugins.add('org.jetbrains.kotlin') + } else if ('CL' == ideTypeStr) { + plugins.add('com.intellij.clion-swift:201.6668.126') } if (!ideTypeStr.endsWith('C')) { plugins.add('JavaScript') diff --git a/src/main/clion/io/github/linwancen/plugin/show/lang/SwiftLangDoc.java b/src/main/clion/io/github/linwancen/plugin/show/lang/SwiftLangDoc.java new file mode 100644 index 0000000..58ba60e --- /dev/null +++ b/src/main/clion/io/github/linwancen/plugin/show/lang/SwiftLangDoc.java @@ -0,0 +1,37 @@ +package io.github.linwancen.plugin.show.lang; + +import com.intellij.psi.PsiElement; +import com.jetbrains.cidr.lang.psi.OCReferenceElement; +import com.jetbrains.swift.SwiftLanguage; +import com.jetbrains.swift.psi.SwiftReferenceElement; +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 SwiftLangDoc extends BaseLangDoc { + + static { + LANG_DOC_MAP.put(SwiftLanguage.INSTANCE.getID(), new SwiftLangDoc()); + } + + @Override + public @NotNull List> getRefClass() { + // guess + return List.of(SwiftReferenceElement.class); + } + + @Override + public boolean show(@NotNull LineInfo info) { + return info.appSettings.showLineEndCommentSwiftBase; + } + + @Override + protected @Nullable String resolveDocPrint(@NotNull T info, @NotNull PsiElement resolve) { + // Copy from C + 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 ae33f1b..2e28f17 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 @@ -35,6 +35,7 @@ public class AppSettingsComponent { private final JBCheckBox showLineEndCommentGoBase = new JBCheckBox("// Go "); private final JBCheckBox showLineEndCommentRustBase = new JBCheckBox("// Rust "); private final JBCheckBox showLineEndCommentCBase = new JBCheckBox("// C "); + private final JBCheckBox showLineEndCommentSwiftBase = new JBCheckBox("// Swift "); private final JBCheckBox showLineEndCommentSql = new JBCheckBox(" sql "); private final JBCheckBox showLineEndCommentJson = new JBCheckBox(" json "); private final JBTextField lineTags = new JBTextField(); @@ -82,7 +83,8 @@ public class AppSettingsComponent { showLineEndCommentPhpBase, showLineEndCommentPyBase, showLineEndCommentRustBase, - showLineEndCommentCBase + showLineEndCommentCBase, + showLineEndCommentSwiftBase ), 1) .addLabeledComponent(new JBLabel(ShowBundle.message("tree.tags")), treeTags, 1, true) .addLabeledComponent(new JBLabel(ShowBundle.message("line.tags")), lineTags, 1, true) @@ -278,6 +280,14 @@ public class AppSettingsComponent { showLineEndCommentCBase.setSelected(newStatus); } + public boolean getShowLineEndCommentSwiftBase() { + return showLineEndCommentSwiftBase.isSelected(); + } + + public void setShowLineEndCommentSwiftBase(boolean newStatus) { + showLineEndCommentSwiftBase.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 f6cf5e9..7fd9e0d 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 @@ -55,6 +55,7 @@ public class AppSettingsConfigurable implements Configurable { modified |= mySettingsComponent.getShowLineEndCommentGoBase() != settings.showLineEndCommentGoBase; modified |= mySettingsComponent.getShowLineEndCommentRustBase() != settings.showLineEndCommentRustBase; modified |= mySettingsComponent.getShowLineEndCommentCBase() != settings.showLineEndCommentCBase; + modified |= mySettingsComponent.getShowLineEndCommentSwiftBase() != settings.showLineEndCommentSwiftBase; modified |= mySettingsComponent.getShowLineEndCommentSql() != settings.showLineEndCommentSql; modified |= mySettingsComponent.getShowLineEndCommentJson() != settings.showLineEndCommentJson; @@ -98,6 +99,7 @@ public class AppSettingsConfigurable implements Configurable { settings.showLineEndCommentGoBase = mySettingsComponent.getShowLineEndCommentGoBase(); settings.showLineEndCommentRustBase = mySettingsComponent.getShowLineEndCommentRustBase(); settings.showLineEndCommentCBase = mySettingsComponent.getShowLineEndCommentCBase(); + settings.showLineEndCommentSwiftBase = mySettingsComponent.getShowLineEndCommentSwiftBase(); settings.showLineEndCommentSql = mySettingsComponent.getShowLineEndCommentSql(); settings.showLineEndCommentJson = mySettingsComponent.getShowLineEndCommentJson(); @@ -144,6 +146,7 @@ public class AppSettingsConfigurable implements Configurable { mySettingsComponent.setShowLineEndCommentGoBase(settings.showLineEndCommentGoBase); mySettingsComponent.setShowLineEndCommentRustBase(settings.showLineEndCommentRustBase); mySettingsComponent.setShowLineEndCommentCBase(settings.showLineEndCommentCBase); + mySettingsComponent.setShowLineEndCommentSwiftBase(settings.showLineEndCommentSwiftBase); 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 d30f4d1..410d2f7 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 @@ -43,6 +43,7 @@ public class AppSettingsState implements PersistentStateComponent=%AJCL?fl72vuR7Ex%GiZAR zu>O`nzM~M@4z1)DOLeztNGGstTOJrKUmDxKT(_;J+D;&w)`oK^eaTn~ zj^hSqAYF$rW=pQuFb=Gs=9$v*4fE`wQFeoJ+qP+A`b`_vUt7I)5-MzgJK2G$sadAO zcpU=Tb93`Qu?CVW0Ui#>YOkum+?%krP0wsvf#vnYIObWtYad!H!?wp{3G7}FX2l8u z=`{QhYTsN(#q88QpqB>IHn>m1hwR4cO!oFDYZCQoyjrFEU-H$57t3i6 zg4Haw`+7b%*tve4#5Pi6L{Q0mog))YV7lVAy}I>Ss(HKIJuS;>GIWgLlE9K`@v{c? z)lh|<9x8C4EYITnMNO}vpyLsW8rF2I!i*Cxq*%0N4;+p&h#qe4OPSkgM7bJnS7*}Le2lWvs-kVimAd%s>}!o z^1)OeQX@x_MmgtHBQKF7`v?=MUMiHIJYU-?KHn^CE1o|~`KH;Tz|48=b=r$PfiUk;R~(IH~oSQD5y;qYEw80i7QS5d3YVD6t&_jh(eXfSFH%Rs z1jdL7j}Md9#2{q$Pg-XHC^cLq`Us$~P3c~`&&{Qn(u1w5^ zo^EvHPCe=LG)IdnN1xzR;`l6FcTT2}<+D!2^QRFnP(mS_M4So=m3QunGB!;E`0nayV ABLDyZ literal 0 HcmV?d00001 diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index 287029f..a191739 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -122,13 +122,15 @@ Show doc comment at the Project view Tree, line End, json, other org.jetbrains.kotlin com.intellij.database JavaScript + com.jetbrains.php com.intellij.modules.python org.jetbrains.plugins.go org.rust.lang + com.jetbrains.rust com.intellij.modules.c-capable - com.jetbrains.php + com.intellij.modules.swift-capable diff --git a/src/main/resources/META-INF/swift.xml b/src/main/resources/META-INF/swift.xml new file mode 100644 index 0000000..ef83092 --- /dev/null +++ b/src/main/resources/META-INF/swift.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file