Skip to content

Commit 7e9cc35

Browse files
authored
fix: disable textmate bundle when JetBrains plugin is uninstalled (#918)
1 parent 8d5bfe4 commit 7e9cc35

File tree

7 files changed

+61
-11
lines changed

7 files changed

+61
-11
lines changed

packages/ide/jetbrains/.idea/gradle.xml

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/ide/jetbrains/.idea/vcs.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/ide/jetbrains/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ plugins {
55
}
66

77
group = "dev.zenstack"
8-
version = "0.5.0"
8+
version = "1.6.0"
99

1010
repositories {
1111
mavenCentral()
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package dev.zenstack
2+
3+
import com.intellij.lang.javascript.service.JSLanguageServiceUtil
4+
import org.jetbrains.plugins.textmate.TextMateService
5+
import org.jetbrains.plugins.textmate.configuration.TextMateUserBundlesSettings
6+
7+
class Utils {
8+
companion object {
9+
fun addTextMateBundle() {
10+
println("Adding ZenStack textmate bundle")
11+
val textMateBundle = JSLanguageServiceUtil.getPluginDirectory(javaClass, "res/zmodel.tmbundle")
12+
TextMateUserBundlesSettings.instance?.addBundle(textMateBundle.path, "zmodel")
13+
reloadTextMateBundles()
14+
}
15+
16+
fun disableTextMateBundle() {
17+
println("Disabling ZenStack textmate bundle")
18+
val textMateBundle = JSLanguageServiceUtil.getPluginDirectory(javaClass, "res/zmodel.tmbundle")
19+
TextMateUserBundlesSettings.instance?.disableBundle(textMateBundle.path)
20+
reloadTextMateBundles()
21+
}
22+
23+
private fun reloadTextMateBundles() {
24+
val textMateService = TextMateService.getInstance();
25+
textMateService.reloadEnabledBundles()
26+
}
27+
}
28+
}

packages/ide/jetbrains/src/main/kotlin/dev/zenstack/lsp/ZenStackLspServerDescriptor.kt

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package dev.zenstack.lsp
22

3-
import com.intellij.codeInsight.completion.CompletionParameters
43
import com.intellij.execution.ExecutionException
54
import com.intellij.execution.configurations.GeneralCommandLine
65
import com.intellij.javascript.nodejs.interpreter.NodeCommandLineConfigurator
@@ -11,23 +10,17 @@ import com.intellij.lang.javascript.service.JSLanguageServiceUtil
1110
import com.intellij.openapi.project.Project
1211
import com.intellij.openapi.vfs.VirtualFile
1312
import com.intellij.platform.lsp.api.ProjectWideLspServerDescriptor
14-
import com.intellij.platform.lsp.api.customization.LspCompletionSupport
1513
import com.intellij.platform.lsp.api.customization.LspFormattingSupport
16-
import org.jetbrains.plugins.textmate.configuration.TextMateUserBundlesSettings
17-
import org.jetbrains.plugins.textmate.TextMateService;
1814
import dev.zenstack.lang.ZModelFileType
15+
import dev.zenstack.Utils
1916

2017
class ZenStackLspServerDescriptor(project: Project) : ProjectWideLspServerDescriptor(project, "ZenStack") {
2118

2219
override fun isSupportedFile(file: VirtualFile) = file.fileType == ZModelFileType
2320

2421
override fun createCommandLine(): GeneralCommandLine {
2522

26-
// install TextMate bundle
27-
val textMateBundle = JSLanguageServiceUtil.getPluginDirectory(javaClass, "res/zmodel.tmbundle")
28-
TextMateUserBundlesSettings.instance?.addBundle(textMateBundle.path, "zmodel")
29-
val textMateService = TextMateService.getInstance();
30-
textMateService.reloadEnabledBundles()
23+
Utils.Companion.addTextMateBundle()
3124

3225
// start language server
3326
val interpreter = NodeJsInterpreterManager.getInstance(project).interpreter
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package dev.zenstack.plugin
2+
3+
import com.intellij.ide.plugins.DynamicPluginListener
4+
import com.intellij.ide.plugins.IdeaPluginDescriptor
5+
import dev.zenstack.Utils
6+
import org.jetbrains.plugins.textmate.TextMateService
7+
8+
class PluginStateListener: DynamicPluginListener {
9+
override fun beforePluginLoaded(pluginDescriptor: IdeaPluginDescriptor) {
10+
// install TextMate bundle
11+
Utils.Companion.addTextMateBundle()
12+
}
13+
14+
override fun beforePluginUnload(pluginDescriptor: IdeaPluginDescriptor, isUpdate: Boolean) {
15+
// uninstall TextMate bundle
16+
Utils.disableTextMateBundle()
17+
}
18+
}

packages/ide/jetbrains/src/main/resources/META-INF/plugin.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,10 @@
2020
2121
<ul>
2222
<li>Syntax highlighting</li>
23+
<li>Error highlighting</li>
2324
<li>Go to definition</li>
2425
<li>Code completion</li>
26+
<li>Formatting</li>
2527
</ul>
2628
]]></description>
2729

@@ -54,4 +56,12 @@
5456
implementationClass="org.jetbrains.plugins.textmate.language.syntax.highlighting.TextMateSyntaxHighlighterFactory"/>
5557

5658
</extensions>
59+
60+
<applicationListeners>
61+
<listener
62+
class="dev.zenstack.plugin.PluginStateListener"
63+
topic="com.intellij.ide.plugins.DynamicPluginListener"/>
64+
</applicationListeners>
65+
66+
<idea-version since-build="233.2" />
5767
</idea-plugin>

0 commit comments

Comments
 (0)