mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-10-01 19:02:13 +07:00
IDEA-131862 Missing quick doc in extension tag completion
This commit is contained in:
@@ -18,21 +18,19 @@ package org.jetbrains.idea.devkit.references.extensions;
|
||||
import com.intellij.codeInsight.javadoc.JavaDocInfoGenerator;
|
||||
import com.intellij.lang.documentation.DocumentationProviderEx;
|
||||
import com.intellij.lang.java.JavaDocumentationProvider;
|
||||
import com.intellij.lang.xml.XMLLanguage;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.ModuleUtilCore;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.pom.PomTarget;
|
||||
import com.intellij.pom.PomTargetPsiElement;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.util.PsiTypesUtil;
|
||||
import com.intellij.psi.xml.XmlFile;
|
||||
import com.intellij.psi.xml.XmlTag;
|
||||
import com.intellij.psi.xml.XmlToken;
|
||||
import com.intellij.psi.xml.XmlTokenType;
|
||||
import com.intellij.util.xml.DomElement;
|
||||
import com.intellij.util.xml.DomTarget;
|
||||
import com.intellij.util.xml.DomUtil;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.idea.devkit.dom.Extension;
|
||||
import org.jetbrains.idea.devkit.dom.ExtensionPoint;
|
||||
import org.jetbrains.idea.devkit.util.DescriptorUtil;
|
||||
|
||||
@@ -43,7 +41,7 @@ public class ExtensionPointDocumentationProvider extends DocumentationProviderEx
|
||||
|
||||
@Override
|
||||
public String getQuickNavigateInfo(PsiElement element, PsiElement originalElement) {
|
||||
ExtensionPoint extensionPoint = findExtensionPoint(originalElement);
|
||||
ExtensionPoint extensionPoint = findExtensionPoint(element);
|
||||
if (extensionPoint == null) return null;
|
||||
|
||||
final XmlFile epDeclarationFile = (XmlFile)extensionPoint.getXmlTag().getContainingFile();
|
||||
@@ -69,7 +67,7 @@ public class ExtensionPointDocumentationProvider extends DocumentationProviderEx
|
||||
|
||||
@Override
|
||||
public String generateDoc(PsiElement element, @Nullable PsiElement originalElement) {
|
||||
ExtensionPoint extensionPoint = findExtensionPoint(originalElement);
|
||||
ExtensionPoint extensionPoint = findExtensionPoint(element);
|
||||
if (extensionPoint == null) return null;
|
||||
|
||||
final PsiClass epClass = getExtensionPointClass(extensionPoint);
|
||||
@@ -89,15 +87,15 @@ public class ExtensionPointDocumentationProvider extends DocumentationProviderEx
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static ExtensionPoint findExtensionPoint(@Nullable PsiElement element) {
|
||||
if (element == null) return null;
|
||||
if (element.getLanguage() == XMLLanguage.INSTANCE &&
|
||||
(element instanceof XmlTag ||
|
||||
element instanceof XmlToken && ((XmlToken)element).getTokenType() == XmlTokenType.XML_NAME) &&
|
||||
private static ExtensionPoint findExtensionPoint(PsiElement element) {
|
||||
if (element instanceof PomTargetPsiElement &&
|
||||
DescriptorUtil.isPluginXml(element.getContainingFile())) {
|
||||
final DomElement domElement = DomUtil.getDomElement(element);
|
||||
if (domElement instanceof Extension) {
|
||||
return ((Extension)domElement).getExtensionPoint();
|
||||
final PomTarget pomTarget = ((PomTargetPsiElement)element).getTarget();
|
||||
if (pomTarget instanceof DomTarget) {
|
||||
final DomElement domElement = ((DomTarget)pomTarget).getDomElement();
|
||||
if (domElement instanceof ExtensionPoint) {
|
||||
return (ExtensionPoint)domElement;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
||||
+6
-10
@@ -3,10 +3,8 @@ package org.jetbrains.idea.devkit.references.extensions;
|
||||
import com.intellij.codeInsight.documentation.DocumentationManager;
|
||||
import com.intellij.lang.documentation.DocumentationProvider;
|
||||
import com.intellij.openapi.application.PluginPathManager;
|
||||
import com.intellij.pom.PomTargetPsiElement;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
|
||||
import com.intellij.util.xml.DomTarget;
|
||||
|
||||
public class ExtensionPointDocumentationProviderTest extends LightCodeInsightFixtureTestCase {
|
||||
@Override
|
||||
@@ -17,12 +15,10 @@ public class ExtensionPointDocumentationProviderTest extends LightCodeInsightFix
|
||||
public void testExtensionPointDocumentation() {
|
||||
myFixture.configureByFiles("extensionPointDocumentation.xml", "bar/MyExtensionPoint.java");
|
||||
|
||||
PsiElement originalElement = myFixture.getFile().findElementAt(myFixture.getCaretOffset());
|
||||
PomTargetPsiElement pomTargetPsiElement = assertInstanceOf(myFixture.getElementAtCaret(), PomTargetPsiElement.class);
|
||||
DomTarget domTarget = assertInstanceOf(pomTargetPsiElement.getTarget(), DomTarget.class);
|
||||
PsiElement epPsiElement = domTarget.getNavigationElement();
|
||||
|
||||
DocumentationProvider provider = DocumentationManager.getProviderFromElement(epPsiElement);
|
||||
final PsiElement docElement =
|
||||
DocumentationManager.getInstance(getProject()).findTargetElement(myFixture.getEditor(),
|
||||
myFixture.getFile());
|
||||
DocumentationProvider provider = DocumentationManager.getProviderFromElement(docElement);
|
||||
|
||||
String epDefinition = "[" + myModule.getName() + "] foo<br/>" +
|
||||
"<b>bar</b> " +
|
||||
@@ -30,7 +26,7 @@ public class ExtensionPointDocumentationProviderTest extends LightCodeInsightFix
|
||||
"<a href=\"psi_element://bar.MyExtensionPoint\"><code>MyExtensionPoint</code></a>";
|
||||
|
||||
assertEquals(epDefinition,
|
||||
provider.getQuickNavigateInfo(epPsiElement, originalElement));
|
||||
provider.getQuickNavigateInfo(docElement, null));
|
||||
|
||||
assertEquals("<em>EP Definition</em><br/>" +
|
||||
epDefinition +
|
||||
@@ -39,6 +35,6 @@ public class ExtensionPointDocumentationProviderTest extends LightCodeInsightFix
|
||||
"<html><head> <style type=\"text/css\"> #error { background-color: #eeeeee; margin-bottom: 10px; } p { margin: 5px 0; } </style></head>" +
|
||||
"<body><small><b>bar</b></small><PRE>public interface <b>MyExtensionPoint</b></PRE>\n" +
|
||||
" MyExtensionPoint JavaDoc.</body></html>",
|
||||
provider.generateDoc(epPsiElement, originalElement));
|
||||
provider.generateDoc(docElement, null));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user