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 PersistentStateComponentorg.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