package org.intellij.plugins.markdown.lang.references; import com.intellij.openapi.paths.PathReferenceManager; import com.intellij.psi.*; import com.intellij.util.ProcessingContext; import org.intellij.plugins.markdown.lang.psi.impl.MarkdownFile; import org.intellij.plugins.markdown.lang.psi.impl.MarkdownLinkDestinationImpl; import org.jetbrains.annotations.NotNull; import static com.intellij.patterns.PlatformPatterns.psiElement; import static com.intellij.patterns.PlatformPatterns.psiFile; public class MarkdownReferenceProvider extends PsiReferenceContributor { @Override public void registerReferenceProviders(@NotNull PsiReferenceRegistrar registrar) { registrar.registerReferenceProvider(psiElement(MarkdownLinkDestinationImpl.class).inFile(psiFile(MarkdownFile.class)), new LinkDestinationReferenceProvider()); } private static class LinkDestinationReferenceProvider extends PsiReferenceProvider { @NotNull @Override public PsiReference[] getReferencesByElement(@NotNull PsiElement element, @NotNull ProcessingContext context) { return PathReferenceManager.getInstance().createReferences(element, false, false, true); } } }