diff --git a/platform/lang-impl/src/com/intellij/lang/documentation/ide/impl/IdeDocumentationTargetProviderImpl.kt b/platform/lang-impl/src/com/intellij/lang/documentation/ide/impl/IdeDocumentationTargetProviderImpl.kt index 88ea1c5901af..dc8460ce78db 100644 --- a/platform/lang-impl/src/com/intellij/lang/documentation/ide/impl/IdeDocumentationTargetProviderImpl.kt +++ b/platform/lang-impl/src/com/intellij/lang/documentation/ide/impl/IdeDocumentationTargetProviderImpl.kt @@ -6,7 +6,7 @@ import com.intellij.codeInsight.documentation.DocumentationManager import com.intellij.codeInsight.lookup.LookupElement import com.intellij.lang.documentation.ide.IdeDocumentationTargetProvider import com.intellij.lang.documentation.impl.documentationTargets -import com.intellij.lang.documentation.psi.psiDocumentationTargets +import com.intellij.lang.documentation.psi.psiLookupElementDocumentationTargets import com.intellij.lang.documentation.symbol.impl.symbolDocumentationTargets import com.intellij.model.Pointer import com.intellij.model.Symbol @@ -29,7 +29,7 @@ open class IdeDocumentationTargetProviderImpl(private val project: Project) : Id val sourceElement = DocumentationManager.getContextElement(editor, file) val targetElement = DocumentationManager.getElementFromLookup(project, editor, file, lookupElement) ?: return emptyList() - return psiDocumentationTargets(targetElement, sourceElement) + return psiLookupElementDocumentationTargets(targetElement, sourceElement) } override fun documentationTargets(editor: Editor, file: PsiFile, offset: Int): List { diff --git a/platform/lang-impl/src/com/intellij/lang/documentation/psi/util.kt b/platform/lang-impl/src/com/intellij/lang/documentation/psi/util.kt index 91013a61941a..fed08f77d172 100644 --- a/platform/lang-impl/src/com/intellij/lang/documentation/psi/util.kt +++ b/platform/lang-impl/src/com/intellij/lang/documentation/psi/util.kt @@ -9,8 +9,22 @@ import com.intellij.psi.PsiElement @JvmField internal val LOG: Logger = Logger.getInstance("#com.intellij.lang.documentation.psi") -fun psiDocumentationTargets(element: PsiElement, originalElement: PsiElement?): List { - for (ext in PsiDocumentationTargetProvider.EP_NAME.extensionList) { +fun psiLookupElementDocumentationTargets(element: PsiElement, originalElement: PsiElement?): List = + psiDocumentationTargetsImpl( + element, + originalElement, + PsiDocumentationTargetProvider.LOOKUP_ELEMENT_EP_NAME.extensionList + PsiDocumentationTargetProvider.EP_NAME.extensionList + ) + +fun psiDocumentationTargets(element: PsiElement, originalElement: PsiElement?): List = + psiDocumentationTargetsImpl( + element, + originalElement, + PsiDocumentationTargetProvider.EP_NAME.extensionList + ) + +private fun psiDocumentationTargetsImpl(element: PsiElement, originalElement: PsiElement?, providers: List): List { + for (ext in providers) { val targets = ext.documentationTargets(element, originalElement) if (targets.isNotEmpty()) return targets } diff --git a/platform/lang-impl/src/com/intellij/platform/backend/documentation/PsiDocumentationTargetProvider.java b/platform/lang-impl/src/com/intellij/platform/backend/documentation/PsiDocumentationTargetProvider.java index 2c01ba28def8..4743a32d9dac 100644 --- a/platform/lang-impl/src/com/intellij/platform/backend/documentation/PsiDocumentationTargetProvider.java +++ b/platform/lang-impl/src/com/intellij/platform/backend/documentation/PsiDocumentationTargetProvider.java @@ -28,6 +28,11 @@ public interface PsiDocumentationTargetProvider { "com.intellij.platform.backend.documentation.psiTargetProvider" ); + @Internal + ExtensionPointName LOOKUP_ELEMENT_EP_NAME = ExtensionPointName.create( + "com.intellij.platform.backend.lookupElement.documentation.psiTargetProvider" + ); + /** * @return target to handle documentation actions which are invoked on the given {@code element}, * or {@code null} if this provider is not aware of the given element diff --git a/platform/platform-resources/src/META-INF/LangExtensionPoints.xml b/platform/platform-resources/src/META-INF/LangExtensionPoints.xml index cb93dc44bfff..d6f22cf7b271 100644 --- a/platform/platform-resources/src/META-INF/LangExtensionPoints.xml +++ b/platform/platform-resources/src/META-INF/LangExtensionPoints.xml @@ -671,6 +671,8 @@ interface="com.intellij.platform.backend.documentation.SymbolDocumentationTargetProvider"/> +