diff --git a/platform/core-api/src/com/intellij/openapi/components/ServiceDescriptor.java b/platform/core-api/src/com/intellij/openapi/components/ServiceDescriptor.java index 792f13c0bd88..fc92718766cd 100644 --- a/platform/core-api/src/com/intellij/openapi/components/ServiceDescriptor.java +++ b/platform/core-api/src/com/intellij/openapi/components/ServiceDescriptor.java @@ -14,7 +14,7 @@ import org.jetbrains.annotations.Nullable; */ public final class ServiceDescriptor { public enum PreloadMode { - TRUE, FALSE, AWAIT, NOT_HEADLESS, + TRUE, FALSE, AWAIT, NOT_HEADLESS, NOT_LIGHT_EDIT } @Attribute diff --git a/platform/core-impl/src/com/intellij/ide/plugins/IdeaPluginDescriptorImpl.java b/platform/core-impl/src/com/intellij/ide/plugins/IdeaPluginDescriptorImpl.java index adc576c4d77f..28f1fd823be3 100644 --- a/platform/core-impl/src/com/intellij/ide/plugins/IdeaPluginDescriptorImpl.java +++ b/platform/core-impl/src/com/intellij/ide/plugins/IdeaPluginDescriptorImpl.java @@ -433,6 +433,9 @@ public final class IdeaPluginDescriptorImpl implements IdeaPluginDescriptor, Plu else if (preload.equals("notHeadless")) { descriptor.preload = ServiceDescriptor.PreloadMode.NOT_HEADLESS; } + else if (preload.equals("notLightEdit")) { + descriptor.preload = ServiceDescriptor.PreloadMode.NOT_LIGHT_EDIT; + } else { LOG.error("Unknown preload mode value: " + JDOMUtil.writeElement(element)); } diff --git a/platform/platform-resources/src/META-INF/LangExtensions.xml b/platform/platform-resources/src/META-INF/LangExtensions.xml index 38248cd8e14b..f1682055b425 100644 --- a/platform/platform-resources/src/META-INF/LangExtensions.xml +++ b/platform/platform-resources/src/META-INF/LangExtensions.xml @@ -34,7 +34,7 @@ + serviceImplementation="com.intellij.util.indexing.FileBasedIndexImpl" preload="notLightEdit"/> @@ -42,7 +42,7 @@ serviceImplementation="com.intellij.ide.macro.IdePathMacros" preload="true"/> + serviceImplementation="com.intellij.psi.stubs.StubIndexImpl" preload="notLightEdit"/> { + if (onlyIfAwait || Main.isLightEdit()) { + continue@serviceLoop + } + else { + asyncPreloadedServices + } + } PreloadMode.AWAIT -> { syncPreloadedServices }