Пользовательский Плагин Jetbrains — Отсутствует Зависимость

#java #intellij-idea #intellij-plugin #psi

Вопрос:

Я пытаюсь создать свой собственный маркер линии для Clion, следуя этому руководству — https://plugins.jetbrains.com/docs/intellij/line-marker-provider.html . Мой вопрос касается атрибута языка в теге расширения в plugin.xml файле …

 <extensions defaultExtensionNs="com.intellij">
  <codeInsight.lineMarkerProvider language="JAVA"
          implementationClass="org.intellij.sdk.language.SimpleLineMarkerProvider"/>
</extensions>
 

Когда я добавляю это расширение language="JAVA" , оно подсвечивается красным. Какой плагин/зависимость мне нужно добавить, чтобы это было решено?

Моя среда IDE также не может разрешить PsiIdentifier и PsiMethod из предоставленного фрагмента …

 public class MyCorrectLineMarkerProvider implements LineMarkerProvider {
  public LineMarkerInfo getLineMarkerInfo(@NotNull PsiElement element) {
    if (element instanceof PsiIdentifier amp;amp; element.getParent() instanceof PsiMethod) return new LineMarkerInfo(element, ...);
    return null;
  }
}
 

Вот как выглядит мой build.gradle, я знаю, что мне нужно добавить некоторые другие зависимости, но в руководстве, которому я следовал, не очень ясно об этом.

 plugins {
    id 'org.jetbrains.intellij' version '1.2.0'
    id 'java'
}

group 'com.example'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
}

// See https://github.com/JetBrains/gradle-intellij-plugin/
intellij {
    version = '2021.2.2'
}

runIde {
    jvmArgs '--add-exports', 'java.base/jdk.internal.vm=ALL-UNNAMED'
}

patchPluginXml {
    changeNotes = """
      Add change notes here.<br>
      <em>most HTML tags may be used</em>"""
}
test {
    useJUnitPlatform()
}
 

Комментарии:

1. Вы можете использовать форум открытого API сообщества для ответа на вопрос, связанный с разработкой плагинов: intellij-support.jetbrains.com/hc/en-us/community/topics/… .

Ответ №1:

Вы должны добавить зависимость от java плагина в свой build.gradle , вот так

 intellij {
    plugins = ['java']
}
 

Дополнительную информацию о зависимостях плагинов см. в Руководстве разработчика IntelliJ.

Учебник, которому вы следуете, предназначен для добавления поддержки нового языка, вместо этого вы добавляете маркер строки в Java (существующий язык :p). Зависимости плагинов просто выходят за рамки этого руководства.