mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
register folding builder in env
This commit is contained in:
@@ -15,12 +15,16 @@
|
||||
*/
|
||||
package com.intellij.core;
|
||||
|
||||
import com.intellij.codeInsight.folding.JavaCodeFoldingSettings;
|
||||
import com.intellij.codeInsight.folding.impl.JavaCodeFoldingSettingsBase;
|
||||
import com.intellij.codeInsight.folding.impl.JavaFoldingBuilderBase;
|
||||
import com.intellij.codeInsight.runner.JavaMainMethodProvider;
|
||||
import com.intellij.ide.highlighter.ArchiveFileType;
|
||||
import com.intellij.ide.highlighter.JavaClassFileType;
|
||||
import com.intellij.ide.highlighter.JavaFileType;
|
||||
import com.intellij.lang.LanguageASTFactory;
|
||||
import com.intellij.lang.LanguageParserDefinitions;
|
||||
import com.intellij.lang.folding.LanguageFolding;
|
||||
import com.intellij.lang.java.JavaLanguage;
|
||||
import com.intellij.lang.java.JavaParserDefinition;
|
||||
import com.intellij.navigation.ItemPresentationProviders;
|
||||
@@ -29,9 +33,8 @@ import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.openapi.fileTypes.PlainTextFileType;
|
||||
import com.intellij.openapi.fileTypes.PlainTextLanguage;
|
||||
import com.intellij.openapi.fileTypes.PlainTextParserDefinition;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.projectRoots.JavaVersionService;
|
||||
import com.intellij.openapi.util.ClassExtension;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.augment.PsiAugmentProvider;
|
||||
import com.intellij.psi.impl.EmptySubstitutorImpl;
|
||||
@@ -84,19 +87,22 @@ public class JavaCoreApplicationEnvironment extends CoreApplicationEnvironment {
|
||||
addExplicitExtension(ItemPresentationProviders.INSTANCE, PsiField.class, new FieldPresentationProvider());
|
||||
addExplicitExtension(ItemPresentationProviders.INSTANCE, PsiLocalVariable.class, new VariablePresentationProvider());
|
||||
addExplicitExtension(ItemPresentationProviders.INSTANCE, PsiParameter.class, new VariablePresentationProvider());
|
||||
|
||||
registerApplicationService(JavaCodeFoldingSettings.class, new JavaCodeFoldingSettingsBase());
|
||||
addExplicitExtension(LanguageFolding.INSTANCE, JavaLanguage.INSTANCE, new JavaFoldingBuilderBase() {
|
||||
@Override
|
||||
protected boolean shouldShowExplicitLambdaType(PsiAnonymousClass anonymousClass, PsiNewExpression expression) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isBelowRightMargin(Project project, int lineLength) {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
protected CoreJavaDirectoryService createJavaDirectoryService() {
|
||||
return new CoreJavaDirectoryService();
|
||||
}
|
||||
|
||||
public <T> void addExplicitExtension(final ClassExtension<T> instance, final Class clazz, final T object) {
|
||||
instance.addExplicitExtension(clazz, object);
|
||||
Disposer.register(getParentDisposable(), new Disposable() {
|
||||
@Override
|
||||
public void dispose() {
|
||||
instance.removeExplicitExtension(clazz, object);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,9 @@ import com.intellij.openapi.extensions.ExtensionsArea;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.openapi.fileTypes.*;
|
||||
import com.intellij.openapi.progress.*;
|
||||
import com.intellij.openapi.util.ClassExtension;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.KeyedExtensionCollector;
|
||||
import com.intellij.openapi.util.StaticGetter;
|
||||
import com.intellij.openapi.vfs.VirtualFileManager;
|
||||
import com.intellij.openapi.vfs.VirtualFileSystem;
|
||||
@@ -276,13 +278,7 @@ public class CoreApplicationEnvironment {
|
||||
}
|
||||
|
||||
public <T> void addExplicitExtension(final LanguageExtension<T> instance, final Language language, final T object) {
|
||||
instance.addExplicitExtension(language, object);
|
||||
Disposer.register(myParentDisposable, new Disposable() {
|
||||
@Override
|
||||
public void dispose() {
|
||||
instance.removeExplicitExtension(language, object);
|
||||
}
|
||||
});
|
||||
doAddExplicitExtension(instance, language, object);
|
||||
}
|
||||
|
||||
public void registerParserDefinition(Language language, ParserDefinition parserDefinition) {
|
||||
@@ -290,15 +286,23 @@ public class CoreApplicationEnvironment {
|
||||
}
|
||||
|
||||
public <T> void addExplicitExtension(@NotNull final FileTypeExtension<T> instance, @NotNull final FileType fileType, @NotNull final T object) {
|
||||
instance.addExplicitExtension(fileType, object);
|
||||
doAddExplicitExtension(instance, fileType, object);
|
||||
}
|
||||
|
||||
private <T,U> void doAddExplicitExtension(@NotNull final KeyedExtensionCollector<T,U> instance, @NotNull final U key, @NotNull final T object) {
|
||||
instance.addExplicitExtension(key, object);
|
||||
Disposer.register(myParentDisposable, new Disposable() {
|
||||
@Override
|
||||
public void dispose() {
|
||||
instance.removeExplicitExtension(fileType, object);
|
||||
instance.removeExplicitExtension(key, object);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public <T> void addExplicitExtension(@NotNull final ClassExtension<T> instance, @NotNull final Class aClass, @NotNull final T object) {
|
||||
doAddExplicitExtension(instance, aClass, object);
|
||||
}
|
||||
|
||||
public <T> void addExtension(ExtensionPointName<T> name, final T extension) {
|
||||
final ExtensionPoint<T> extensionPoint = Extensions.getRootArea().getExtensionPoint(name);
|
||||
extensionPoint.registerExtension(extension);
|
||||
|
||||
@@ -1,5 +1,21 @@
|
||||
/*
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.intellij.xml;
|
||||
|
||||
import com.intellij.application.options.editor.XmlFoldingSettings;
|
||||
import com.intellij.codeInspection.XmlSuppressionProvider;
|
||||
import com.intellij.core.CoreApplicationEnvironment;
|
||||
import com.intellij.core.CoreProjectEnvironment;
|
||||
@@ -13,16 +29,14 @@ import com.intellij.lang.LanguageParserDefinitions;
|
||||
import com.intellij.lang.dtd.DTDLanguage;
|
||||
import com.intellij.lang.dtd.DTDParserDefinition;
|
||||
import com.intellij.lang.dtd.DtdSyntaxHighlighterFactory;
|
||||
import com.intellij.lang.folding.LanguageFolding;
|
||||
import com.intellij.lang.html.HTMLLanguage;
|
||||
import com.intellij.lang.html.HTMLParserDefinition;
|
||||
import com.intellij.lang.html.HtmlSyntaxHighlighterFactory;
|
||||
import com.intellij.lang.xhtml.XHTMLLanguage;
|
||||
import com.intellij.lang.xhtml.XHTMLParserDefinition;
|
||||
import com.intellij.lang.xhtml.XhtmlSyntaxHighlighterFactory;
|
||||
import com.intellij.lang.xml.XMLLanguage;
|
||||
import com.intellij.lang.xml.XMLParserDefinition;
|
||||
import com.intellij.lang.xml.XmlASTFactory;
|
||||
import com.intellij.lang.xml.XmlSyntaxHighlighterFactory;
|
||||
import com.intellij.lang.xml.*;
|
||||
import com.intellij.lexer.HtmlEmbeddedTokenTypesProvider;
|
||||
import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.openapi.fileTypes.SyntaxHighlighterFactory;
|
||||
@@ -85,6 +99,11 @@ public class XmlCoreEnvironment {
|
||||
appEnvironment.addExtension(StandardResourceProvider.EP_NAME, new InternalResourceProvider());
|
||||
|
||||
appEnvironment.registerApplicationService(ExternalResourceManager.class, createExternalResourceManager());
|
||||
appEnvironment.registerApplicationService(XmlFoldingSettings.class, new XmlFoldingSettings());
|
||||
appEnvironment.addExplicitExtension(LanguageFolding.INSTANCE, XMLLanguage.INSTANCE, new XmlFoldingBuilder());
|
||||
appEnvironment.addExplicitExtension(LanguageFolding.INSTANCE, HTMLLanguage.INSTANCE, new XmlFoldingBuilder());
|
||||
appEnvironment.addExplicitExtension(LanguageFolding.INSTANCE, XHTMLLanguage.INSTANCE, new XmlFoldingBuilder());
|
||||
appEnvironment.addExplicitExtension(LanguageFolding.INSTANCE, DTDLanguage.INSTANCE, new XmlFoldingBuilder());
|
||||
}
|
||||
|
||||
protected ExternalResourceManagerEx createExternalResourceManager() {
|
||||
|
||||
Reference in New Issue
Block a user