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
}