mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Register/unregister CommonCodeStyleSettings from LanguageCodeStyleSettingsProvider
GitOrigin-RevId: f35d03c74fa85d3e0d9bbe70d9cd261c58c18c30
This commit is contained in:
committed by
intellij-monorepo-bot
parent
9035ce470c
commit
e37fc7d205
@@ -1,9 +1,13 @@
|
||||
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.psi.codeStyle;
|
||||
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.components.State;
|
||||
import com.intellij.openapi.components.Storage;
|
||||
import com.intellij.openapi.extensions.ExtensionPointListener;
|
||||
import com.intellij.openapi.extensions.PluginDescriptor;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
@@ -15,6 +19,25 @@ public final class AppCodeStyleSettingsManager extends CodeStyleSettingsManager
|
||||
registerExtensionPointListeners(ApplicationManager.getApplication());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void registerExtensionPointListeners(@NotNull Disposable disposable) {
|
||||
super.registerExtensionPointListeners(disposable);
|
||||
LanguageCodeStyleSettingsProvider.EP_NAME.addExtensionPointListener(
|
||||
new ExtensionPointListener<LanguageCodeStyleSettingsProvider>() {
|
||||
@Override
|
||||
public void extensionAdded(@NotNull LanguageCodeStyleSettingsProvider extension, @NotNull PluginDescriptor pluginDescriptor) {
|
||||
LanguageCodeStyleSettingsProvider.resetSettingsPagesProviders();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void extensionRemoved(@NotNull LanguageCodeStyleSettingsProvider extension, @NotNull PluginDescriptor pluginDescriptor) {
|
||||
LanguageCodeStyleSettingsProvider.resetSettingsPagesProviders();
|
||||
}
|
||||
},
|
||||
disposable
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Collection<CodeStyleSettings> enumSettings() {
|
||||
return getMainProjectCodeStyle() != null ?
|
||||
|
||||
@@ -1413,4 +1413,13 @@ public class CodeStyleSettings extends LegacyCodeStyleSettings implements Clonea
|
||||
return myModificationTracker;
|
||||
}
|
||||
|
||||
@ApiStatus.Internal
|
||||
public void removeSettings(@NotNull LanguageCodeStyleSettingsProvider provider) {
|
||||
myCommonSettingsManager.removeLanguageSettings(provider.getLanguage());
|
||||
}
|
||||
|
||||
@ApiStatus.Internal
|
||||
public void registerSettings(@NotNull LanguageCodeStyleSettingsProvider provider) {
|
||||
myCommonSettingsManager.addLanguageSettings(provider.getLanguage(), provider.getDefaultCommonSettings());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ public class CodeStyleSettingsManager implements PersistentStateComponent<Elemen
|
||||
return ApplicationManager.getApplication().getService(AppCodeStyleSettingsManager.class);
|
||||
}
|
||||
|
||||
protected final void registerExtensionPointListeners(@NotNull Disposable disposable) {
|
||||
protected void registerExtensionPointListeners(@NotNull Disposable disposable) {
|
||||
FileIndentOptionsProvider.EP_NAME.addExtensionPointListener(
|
||||
new ExtensionPointListener<FileIndentOptionsProvider>() {
|
||||
@Override
|
||||
@@ -89,6 +89,19 @@ public class CodeStyleSettingsManager implements PersistentStateComponent<Elemen
|
||||
unregisterFileTypeIndentOptions(enumSettings(), extension.getFileType());
|
||||
}
|
||||
}, disposable);
|
||||
LanguageCodeStyleSettingsProvider.EP_NAME.addExtensionPointListener(
|
||||
new ExtensionPointListener<LanguageCodeStyleSettingsProvider>() {
|
||||
@Override
|
||||
public void extensionAdded(@NotNull LanguageCodeStyleSettingsProvider extension, @NotNull PluginDescriptor pluginDescriptor) {
|
||||
registerLanguageSettings(enumSettings(), extension);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void extensionRemoved(@NotNull LanguageCodeStyleSettingsProvider extension, @NotNull PluginDescriptor pluginDescriptor) {
|
||||
unregisterLanguageSettings(enumSettings(), extension);
|
||||
}
|
||||
}, disposable
|
||||
);
|
||||
}
|
||||
|
||||
protected Collection<CodeStyleSettings> enumSettings() { return Collections.emptyList(); }
|
||||
@@ -108,6 +121,20 @@ public class CodeStyleSettingsManager implements PersistentStateComponent<Elemen
|
||||
notifyCodeStyleSettingsChanged();
|
||||
}
|
||||
|
||||
@ApiStatus.Internal
|
||||
public final void registerLanguageSettings(@NotNull Collection<CodeStyleSettings> allSettings,
|
||||
@NotNull LanguageCodeStyleSettingsProvider provider) {
|
||||
allSettings.forEach(settings -> settings.registerSettings(provider));
|
||||
notifyCodeStyleSettingsChanged();
|
||||
}
|
||||
|
||||
@ApiStatus.Internal
|
||||
public final void unregisterLanguageSettings(@NotNull Collection<CodeStyleSettings> allSettings,
|
||||
@NotNull LanguageCodeStyleSettingsProvider provider) {
|
||||
allSettings.forEach(settings -> settings.removeSettings(provider));
|
||||
notifyCodeStyleSettingsChanged();
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Use one of the following methods:
|
||||
* <ul>
|
||||
|
||||
@@ -247,4 +247,12 @@ class CommonCodeStyleSettingsManager {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void removeLanguageSettings(@NotNull Language language) {
|
||||
myCommonSettingsMap.remove(language);
|
||||
}
|
||||
|
||||
void addLanguageSettings(@NotNull Language language, @NotNull CommonCodeStyleSettings settings) {
|
||||
myCommonSettingsMap.put(language, settings);
|
||||
}
|
||||
}
|
||||
|
||||
+5
@@ -368,6 +368,11 @@ public abstract class LanguageCodeStyleSettingsProvider extends CodeStyleSetting
|
||||
|
||||
private static final AtomicReference<List<LanguageCodeStyleSettingsProvider>> ourSettingsPagesProviders = new AtomicReference<>();
|
||||
|
||||
@ApiStatus.Internal
|
||||
public static void resetSettingsPagesProviders() {
|
||||
ourSettingsPagesProviders.set(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return A list of providers implementing {@link #createConfigurable(CodeStyleSettings, CodeStyleSettings)}
|
||||
*/
|
||||
|
||||
+16
@@ -58,6 +58,22 @@ public abstract class CodeStyleSchemesImpl extends CodeStyleSchemes {
|
||||
.unregisterFileTypeIndentOptions(getAllSettings(), extension.getFileType());
|
||||
}
|
||||
}, ApplicationManager.getApplication());
|
||||
|
||||
LanguageCodeStyleSettingsProvider.EP_NAME.addExtensionPointListener(
|
||||
new ExtensionPointListener<LanguageCodeStyleSettingsProvider>() {
|
||||
@Override
|
||||
public void extensionAdded(@NotNull LanguageCodeStyleSettingsProvider extension, @NotNull PluginDescriptor pluginDescriptor) {
|
||||
//noinspection deprecation
|
||||
CodeStyleSettingsManager.getInstance().registerLanguageSettings(getAllSettings(), extension);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void extensionRemoved(@NotNull LanguageCodeStyleSettingsProvider extension, @NotNull PluginDescriptor pluginDescriptor) {
|
||||
//noinspection deprecation
|
||||
CodeStyleSettingsManager.getInstance().unregisterLanguageSettings(getAllSettings(), extension);
|
||||
}
|
||||
}, ApplicationManager.getApplication()
|
||||
);
|
||||
}
|
||||
|
||||
private List<CodeStyleSettings> getAllSettings() {
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
<extensionPoint name="fileIndentOptionsProvider" interface="com.intellij.psi.codeStyle.FileIndentOptionsProvider" dynamic="true"/>
|
||||
<extensionPoint name="fileCodeStyleProvider" interface="com.intellij.psi.codeStyle.FileCodeStyleProvider" dynamic="true"/>
|
||||
|
||||
<extensionPoint name="langCodeStyleSettingsProvider" interface="com.intellij.psi.codeStyle.LanguageCodeStyleSettingsProvider" dynamic="false"/>
|
||||
<extensionPoint name="langCodeStyleSettingsProvider" interface="com.intellij.psi.codeStyle.LanguageCodeStyleSettingsProvider" dynamic="true"/>
|
||||
<extensionPoint name="predefinedCodeStyle" interface="com.intellij.psi.codeStyle.PredefinedCodeStyle" dynamic="true"/>
|
||||
</extensionPoints>
|
||||
</idea-plugin>
|
||||
|
||||
Reference in New Issue
Block a user