如何在单个 Intellij 插件中访问 Java、Python 的 PSI 结构

问题描述 投票:0回答:1

我正在为Pycharm开发一个插件,Intellij IDEA。需要在两个 IDE 版本(2022.3.1 及更高版本)中访问 Java 和 Python 语言的 PSI 功能(PSIMethod(java class) & PyFunction) 无法编写一个可以在 PyCharm 和 IDEA 上运行的通用插件。

后来我们希望扩展我们的插件以支持其他语言,例如 c/c++。

如何实现这个功能?

在plugin.xml中添加了可选依赖项,这使我们可以在IDEA和PyCharm中安装插件,而不管java或python插件是否可用。

<depends config-file="jetbrains-java.xml" optional="true">com.intellij.java</depends>
<depends config-file="jetbrains-python.xml" optional="true">com.intellij.modules.python</depends>

在build.gradle.kts中,我有

intellij {
    version.set("2022.3.1")
    type.set("IC")
    plugins.set("com.intellij.java, PythonCore:223.8214.16")
}

但是,对 PythonCore 版本进行硬编码将我们的插件功能限制为仅支持中列出的产品 https://plugins.jetbrains.com/plugin/7322-python-community-edition/versions/stable/263951 但我们也希望支持这些产品的更高版本,例如 Android Studio Hedgehog。

java intellij-idea pycharm gradle-plugin intellij-plugin
1个回答
0
投票

我认为您正在做的事情是添加对其他语言的支持的预期方式。

setPlugins
设置为
runIde
任务安装的插件,它不指定需要存在的插件的版本。

所以,如果您

setPlugins
使用2022.3版本的Python插件,它将与2023版本的Python插件一起使用,只是它将使用旧版本进行编译。

请参阅:https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html

© www.soinside.com 2019 - 2024. All rights reserved.