mark FileLookupInfoProvider as dynamic

GitOrigin-RevId: 49958dc2128225ed49ae606218b531087658ffce
This commit is contained in:
Sergey Ignatov
2019-11-21 15:11:54 +00:00
committed by intellij-monorepo-bot
parent bc643fd373
commit 7b67929a96
2 changed files with 22 additions and 6 deletions
@@ -19,17 +19,19 @@ package com.intellij.psi.impl.source.resolve.reference.impl.providers;
import com.intellij.codeInsight.lookup.LookupElementBuilder;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.extensions.ExtensionPointListener;
import com.intellij.openapi.extensions.PluginDescriptor;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.file.FileLookupInfoProvider;
import java.util.HashMap;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.util.HashMap;
import java.util.Map;
/**
@@ -39,13 +41,27 @@ public class FileInfoManager implements Disposable {
private final Map<FileType, FileLookupInfoProvider> myFileType2InfoProvider = new HashMap<>();
public FileInfoManager() {
final FileLookupInfoProvider[] providers = FileLookupInfoProvider.EP_NAME.getExtensions();
for (final FileLookupInfoProvider provider : providers) {
final FileType[] types = provider.getFileTypes();
for (FileType type : types) {
for (FileLookupInfoProvider provider : FileLookupInfoProvider.EP_NAME.getExtensions()) {
for (FileType type : provider.getFileTypes()) {
myFileType2InfoProvider.put(type, provider);
}
}
FileLookupInfoProvider.EP_NAME.addExtensionPointListener(new ExtensionPointListener<FileLookupInfoProvider>() {
@Override
public void extensionAdded(@NotNull FileLookupInfoProvider extension, @NotNull PluginDescriptor pluginDescriptor) {
for (FileType type : extension.getFileTypes()) {
myFileType2InfoProvider.put(type, extension);
}
}
@Override
public void extensionRemoved(@NotNull FileLookupInfoProvider extension, @NotNull PluginDescriptor pluginDescriptor) {
for (FileType type : extension.getFileTypes()) {
myFileType2InfoProvider.remove(type);
}
}
}, this);
}
public static FileInfoManager getFileInfoManager() {
@@ -522,7 +522,7 @@
<with attribute="implementationClass" implements="com.intellij.codeInsight.TargetElementEvaluator"/>
</extensionPoint>
<extensionPoint name="fileLookupInfoProvider" interface="com.intellij.psi.file.FileLookupInfoProvider"/>
<extensionPoint name="fileLookupInfoProvider" interface="com.intellij.psi.file.FileLookupInfoProvider" dynamic="true"/>
<extensionPoint name="idIndexer" beanClass="com.intellij.openapi.fileTypes.FileTypeExtensionPoint">
<with attribute="implementationClass" implements="com.intellij.psi.impl.cache.impl.id.IdIndexer"/>