feat: html reference and completition support

This commit is contained in:
Volodymyr 2024-06-15 14:34:01 +03:00
parent 4efe615ae8
commit 02596686c9
3 changed files with 67 additions and 0 deletions

View File

@ -0,0 +1,17 @@
package de.marhali.easyi18n.assistance.completion;
import com.intellij.codeInsight.completion.CompletionContributor;
import com.intellij.codeInsight.completion.CompletionType;
import com.intellij.patterns.PlatformPatterns;
import com.intellij.psi.impl.source.xml.XmlAttributeValueImpl;
/**
* Xml specific completion contributor.
* @author adeptius
*/
public class XmlCompletionContributor extends CompletionContributor {
public XmlCompletionContributor() {
extend(CompletionType.BASIC, PlatformPatterns.psiElement().inside(XmlAttributeValueImpl.class),
new KeyCompletionProvider());
}
}

View File

@ -0,0 +1,38 @@
package de.marhali.easyi18n.assistance.reference;
import com.intellij.openapi.project.Project;
import com.intellij.patterns.PlatformPatterns;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiReference;
import com.intellij.psi.PsiReferenceProvider;
import com.intellij.psi.PsiReferenceRegistrar;
import com.intellij.psi.impl.source.xml.XmlAttributeValueImpl;
import com.intellij.util.ProcessingContext;
import org.jetbrains.annotations.NotNull;
/**
* Xml specific key reference binding
* @author adeptius
*/
public class XmlKeyReferenceContributor extends AbstractKeyReferenceContributor {
@Override
public void registerReferenceProviders(@NotNull PsiReferenceRegistrar registrar) {
registrar.registerReferenceProvider(
PlatformPatterns.psiElement(XmlAttributeValueImpl.class),
getProvider());
}
private PsiReferenceProvider getProvider() {
return new PsiReferenceProvider() {
@Override
public PsiReference @NotNull [] getReferencesByElement(
@NotNull PsiElement element, @NotNull ProcessingContext context) {
Project project = element.getProject();
XmlAttributeValueImpl literalExpression = (XmlAttributeValueImpl) element;
String value = literalExpression.getValue();
return getReferences(project, element, value);
}
};
}
}

View File

@ -1,5 +1,11 @@
<idea-plugin> <idea-plugin>
<extensions defaultExtensionNs="com.intellij"> <extensions defaultExtensionNs="com.intellij">
<psi.referenceContributor
language="HTML"
implementation="de.marhali.easyi18n.assistance.reference.XmlKeyReferenceContributor"
/>
<lang.foldingBuilder <lang.foldingBuilder
language="HTML" language="HTML"
implementationClass="de.marhali.easyi18n.assistance.folding.XmlFoldingBuilder" implementationClass="de.marhali.easyi18n.assistance.folding.XmlFoldingBuilder"
@ -9,5 +15,11 @@
language="HTML" language="HTML"
implementationClass="de.marhali.easyi18n.assistance.documentation.CommonDocumentationProvider" implementationClass="de.marhali.easyi18n.assistance.documentation.CommonDocumentationProvider"
/> />
<completion.contributor
language="HTML"
implementationClass="de.marhali.easyi18n.assistance.completion.XmlCompletionContributor"
/>
</extensions> </extensions>
</idea-plugin> </idea-plugin>