mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Merge branch 'master' of git@git.labs.intellij.net:idea/community
This commit is contained in:
@@ -19,6 +19,7 @@ package com.intellij.psi.jsp;
|
||||
* @author ven
|
||||
*/
|
||||
public enum JspDirectiveKind {
|
||||
/** Mapped to both page and tag directives */
|
||||
PAGE,
|
||||
INCLUDE,
|
||||
TAGLIB,
|
||||
|
||||
@@ -22,8 +22,6 @@ package com.intellij.lang;
|
||||
import com.intellij.lang.documentation.CompositeDocumentationProvider;
|
||||
import com.intellij.lang.documentation.DocumentationProvider;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class LanguageDocumentation extends LanguageExtension<DocumentationProvider> {
|
||||
public static final LanguageDocumentation INSTANCE = new LanguageDocumentation();
|
||||
|
||||
@@ -32,11 +30,6 @@ public class LanguageDocumentation extends LanguageExtension<DocumentationProvid
|
||||
}
|
||||
|
||||
public DocumentationProvider forLanguage(final Language l) {
|
||||
final List<DocumentationProvider> providers = allForLanguage(l);
|
||||
if (providers.size() < 2) {
|
||||
return super.forLanguage(l);
|
||||
}
|
||||
|
||||
return new CompositeDocumentationProvider(providers);
|
||||
return CompositeDocumentationProvider.wrapProviders(allForLanguage(l));
|
||||
}
|
||||
}
|
||||
+14
-13
@@ -28,24 +28,25 @@ public class CompositeDocumentationProvider implements DocumentationProvider, Ex
|
||||
|
||||
private final List<DocumentationProvider> myProviders;
|
||||
|
||||
public CompositeDocumentationProvider (DocumentationProvider ... documentationProviders) {
|
||||
this(Arrays.asList(documentationProviders));
|
||||
public static DocumentationProvider wrapProviders(Collection<DocumentationProvider> providers) {
|
||||
ArrayList<DocumentationProvider> list = new ArrayList<DocumentationProvider>();
|
||||
for (DocumentationProvider provider : providers) {
|
||||
if (provider instanceof CompositeDocumentationProvider) {
|
||||
list.addAll(((CompositeDocumentationProvider)provider).getProviders());
|
||||
}
|
||||
else if (provider != null) {
|
||||
list.add(provider);
|
||||
}
|
||||
}
|
||||
return list.size() == 1 ? list.get(0) : new CompositeDocumentationProvider(Collections.unmodifiableList(list));
|
||||
}
|
||||
|
||||
public CompositeDocumentationProvider(Collection<DocumentationProvider> providers) {
|
||||
myProviders = new ArrayList<DocumentationProvider>(providers);
|
||||
}
|
||||
|
||||
public void inject (DocumentationProvider provider) {
|
||||
myProviders.add ( provider );
|
||||
}
|
||||
|
||||
public void remove (DocumentationProvider provider) {
|
||||
myProviders.remove ( provider );
|
||||
private CompositeDocumentationProvider(List<DocumentationProvider> providers) {
|
||||
myProviders = providers;
|
||||
}
|
||||
|
||||
public List<DocumentationProvider> getProviders() {
|
||||
return Collections.unmodifiableList(myProviders);
|
||||
return myProviders;
|
||||
}
|
||||
|
||||
public String getQuickNavigateInfo(PsiElement element) {
|
||||
|
||||
+4
-11
@@ -64,7 +64,6 @@ import com.intellij.ui.popup.NotLookupOrSearchCondition;
|
||||
import com.intellij.ui.popup.PopupUpdateProcessor;
|
||||
import com.intellij.util.Alarm;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.ui.update.Activatable;
|
||||
import com.intellij.util.ui.update.UiNotifyConnector;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
@@ -777,22 +776,16 @@ public class DocumentationManager {
|
||||
DocumentationProvider elementProvider =
|
||||
element == null || elementLanguage.is(containingFileLanguage) ? null : LanguageDocumentation.INSTANCE.forLanguage(elementLanguage);
|
||||
|
||||
addProviderToResult(result, elementProvider);
|
||||
addProviderToResult(result, originalProvider);
|
||||
result.add(elementProvider);
|
||||
result.add(originalProvider);
|
||||
|
||||
if (containingFile != null) {
|
||||
final Language baseLanguage = containingFile.getViewProvider().getBaseLanguage();
|
||||
if (!baseLanguage.is(containingFileLanguage)) {
|
||||
addProviderToResult(result, LanguageDocumentation.INSTANCE.forLanguage(baseLanguage));
|
||||
result.add(LanguageDocumentation.INSTANCE.forLanguage(baseLanguage));
|
||||
}
|
||||
}
|
||||
// return extensible documentation provider even if the list is empty
|
||||
return new CompositeDocumentationProvider(result);
|
||||
}
|
||||
|
||||
private static void addProviderToResult(final Set<DocumentationProvider> result, final DocumentationProvider t) {
|
||||
if (t instanceof CompositeDocumentationProvider) result.addAll(((CompositeDocumentationProvider)t).getProviders());
|
||||
else ContainerUtil.addIfNotNull(t, result);
|
||||
return CompositeDocumentationProvider.wrapProviders(result);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
Reference in New Issue
Block a user