Merge pull request #412 from Adeptius/feature/html-reference-completition
feat: html reference and completition support
This commit is contained in:
commit
5fa8c19ecb
@ -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());
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,27 @@
|
||||
package de.marhali.easyi18n.assistance.intention;
|
||||
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.xml.XmlAttributeValue;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* Xml specific translation key intention.
|
||||
* @author adeptius
|
||||
*/
|
||||
public class XmlTranslationIntention extends AbstractTranslationIntention {
|
||||
@Override
|
||||
protected @Nullable String extractText(@NotNull PsiElement element) {
|
||||
if(!(element.getParent() instanceof XmlAttributeValue)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return ((XmlAttributeValue) element.getParent()).getValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull TextRange convertRange(@NotNull TextRange input) {
|
||||
return new TextRange(input.getStartOffset() + 1, input.getEndOffset() - 1);
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@ -1,5 +1,11 @@
|
||||
<idea-plugin>
|
||||
<extensions defaultExtensionNs="com.intellij">
|
||||
|
||||
<psi.referenceContributor
|
||||
language="HTML"
|
||||
implementation="de.marhali.easyi18n.assistance.reference.XmlKeyReferenceContributor"
|
||||
/>
|
||||
|
||||
<lang.foldingBuilder
|
||||
language="HTML"
|
||||
implementationClass="de.marhali.easyi18n.assistance.folding.XmlFoldingBuilder"
|
||||
@ -9,5 +15,14 @@
|
||||
language="HTML"
|
||||
implementationClass="de.marhali.easyi18n.assistance.documentation.CommonDocumentationProvider"
|
||||
/>
|
||||
|
||||
<completion.contributor
|
||||
language="HTML"
|
||||
implementationClass="de.marhali.easyi18n.assistance.completion.XmlCompletionContributor"
|
||||
/>
|
||||
|
||||
<intentionAction>
|
||||
<className>de.marhali.easyi18n.assistance.intention.XmlTranslationIntention</className>
|
||||
</intentionAction>
|
||||
</extensions>
|
||||
</idea-plugin>
|
||||
Loading…
x
Reference in New Issue
Block a user