Как вы поддерживаете com.intellij.psi для плагина, нацеленного на pycharm? - PullRequest
0 голосов
/ 05 ноября 2018

В моем плагине я использую com.intellij.psi.PsiMethod и com.intellij.psi.PsiClass. Когда я нацеливаюсь на Pycharm с моим alternativeIdePath и пытаюсь использовать мой плагин, я получаю ошибку NoClassDefFound для обоих классов, упомянутых выше. На мой вопрос есть 2 части:

  1. Должен ли я использовать специфичные для Python классы пси (PyFunction / PyClass) или базовые com.intellij.psi классы уже совместимы с pycharm?

  2. Если мне нужно добавить другой пси-модуль / библиотеку, как это будет выглядеть в моем файле build.gradle?

Мой раздел intellij в build.gradle выглядит так:

intellij {
  version '182.4505.22'
  alternativeIdePath "redacted\\Toolbox\\apps\\PyCharm-P\\ch-0\\182.4505.26"
}

sdk моего проекта - JDK1.8, и в моих зависимостях от модулей у меня есть Gradle: com.jetbrains:ideaIC:182.4505.22, tools.jar, pycharm.jar и Module Sources.

1 Ответ

0 голосов
/ 06 ноября 2018

com.intellij.psi.PsiClass и PsiMethod не являются "базовыми классами PSI", они являются классами Java PSI и недоступны в продуктах, которые не поддерживают Java. В PyCharm вам нужно использовать PyFunction / PyClass.

Чтобы создать плагин, который поддерживает как IntelliJ, так и PyCharm, вам нужно добавить плагин Python в качестве зависимости для вашего плагина в build.gradle (он предоставляет тот же API, что и PyCharm). В вашем plugin.xml вам нужно использовать необязательные зависимости для com.intellij.modules.java и com.intellij.modules.python, чтобы ваши Java-зависимые компоненты загружались только в Java IDE, а ваши Python-зависимые компоненты загружались только в PyCharm.

...