Code change:
With I went over most editor contributions (50+) and adopted idle value instantiation where I could reason that they would still work correctly. But some editor contributions interact in more complex ways, sometimes with each other, and I wasn't sure. Hence, this issue. I would like to ask that all calls explicitly use . If a contribution uses eager, a reason should be written as a comment next to it. There are multiple options available: Some things to keep in mind when changing an editor contribution to something else than : the contribution will not be created necessarily before a text model is attached. Normally, a contribution is created so early, at a point when the editor has no models. So it is safe for a contribution to simply use to check if the contribution needs to do anything. When being instantiated later, it is possible that the contribution will be created at a time when the editor already has a model, so the contribution should be prepared to deal with that in the ctor. if a contribution needs to be activated via editor events (pasting, typing, mouse events), then most likely you can use . if a contribution is mostly driven by actions or commands, then the contribution will be instantiated when the first action that needs it is executed, so it is safe to use . if a contribution is only driven by actions or commands, it is safe to use . Anyways, here's the remaining list of contributions for which I wasn't sure what would be correct:
Replacing me with who took over quick pick.

Related discussion:
text: *  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ <del> import * as nls from 'vs/nls'; import * as strings from 'vs/base/common/strings'; </del> <ins> import { addDisposableListener } from 'vs/base/browser/dom'; import { DomEmitter } from 'vs/base/browser/event'; import { IKeyboardEvent, StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { distinct, flatten } from 'vs/base/common/arrays'; </ins> import { RunOnceScheduler } from 'vs/base/common/async'; <del> import * as env from 'vs/base/common/platform'; </del> <ins> import { CancellationTokenSource } from 'vs/base/common/cancellation'; import { memoize } from 'vs/base/common/decorators'; import { onUnexpectedExternalError } from 'vs/base/common/errors'; import { Event } from 'vs/base/common/event'; </ins> import { visit } from 'vs/base/common/json'; import { setProperty } from 'vs/base/common/jsonEdit'; <del> import { Constants } from 'vs/base/common/uint'; </del> import { KeyCode } from 'vs/base/common/keyCodes'; <del> import { IKeyboardEvent, StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { InlineValueContext } from 'vs/editor/common/languages'; import { StandardTokenType } from 'vs/editor/common/encodedTokenAttributes'; import { CancellationTokenSource } from 'vs/base/common/cancellation'; import { distinct, flatten } from 'vs/base/common/arrays'; import { onUnexpectedExternalError } from 'vs/base/common/errors'; import { DEFAULT_WORD_REGEXP } from 'vs/editor/common/core/wordHelper'; import { ICodeEditor, IEditorMouseEvent, MouseTargetType, IPartialEditorMouseEvent } from 'vs/editor/browser/editorBrowser'; import { Range } from 'vs/editor/common/core/range'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { ICommandService } from 'vs/platform/commands/common/commands'; import { IDebugEditorContribution, IDebugService, State, IStackFrame, IDebugConfiguration, IExpression, IExceptionInfo, IDebugSession, CONTEXT_EXCEPTION_WIDGET_VISIBLE } from 'vs/workbench/contrib/debug/common/debug'; import { ExceptionWidget } from 'vs/workbench/contrib/debug/browser/exceptionWidget'; import { FloatingClickWidget } from 'vs/workbench/browser/codeeditor'; import { Position } from 'vs/editor/common/core/position'; </del> <ins> import { dispose, IDisposable } from 'vs/base/common/lifecycle'; import { basename } from 'vs/base/common/path'; import * as env from 'vs/base/common/platform'; import * as strings from 'vs/base/common/strings'; import { Constants } from 'vs/base/common/uint'; </ins> import { CoreEditingCommands } from 'vs/editor/browser/coreCommands'; <del> import { memoize } from 'vs/base/common/decorators'; import { IEditorHoverOptions, EditorOption } from 'vs/editor/common/config/editorOptions'; import { DebugHoverWidget } from 'vs/workbench/contrib/debug/browser/debugHover'; import { IModelDeltaDecoration, InjectedTextCursorStops, ITextModel } from 'vs/editor/common/model'; import { Disposable, dispose, IDisposable } from 'vs/base/common/lifecycle'; </del> <ins> import { ICodeEditor, IEditorMouseEvent, IPartialEditorMouseEvent, MouseTargetType } from 'vs/editor/browser/editorBrowser'; import { EditorOption, IEditorHoverOptions } from 'vs/editor/common/config/editorOptions'; </ins> import { EditOperation } from 'vs/editor/common/core/editOperation'; <del> import { basename } from 'vs/base/common/path'; </del> <ins> import { Position } from 'vs/editor/common/core/position'; import { Range } from 'vs/editor/common/core/range'; import { DEFAULT_WORD_REGEXP } from 'vs/editor/common/core/wordHelper'; import { StandardTokenType } from 'vs/editor/common/encodedTokenAttributes'; import { InlineValueContext } from 'vs/editor/common/languages'; import { IModelDeltaDecoration, InjectedTextCursorStops, ITextModel } from 'vs/editor/common/model'; import { IFeatureDebounceInformation, ILanguageFeatureDebounceService } from 'vs/editor/common/services/languageFeatureDebounce'; import { ILanguageFeaturesService } from 'vs/editor/common/services/languageFeatures'; </ins> import { ModesHoverController } from 'vs/editor/contrib/hover/browser/hover'; import { HoverStartMode, HoverStartSource } from 'vs/editor/contrib/hover/browser/hoverOperation'; <del> import { IHostService } from 'vs/workbench/services/host/browser/host'; import { Event } from 'vs/base/common/event'; import { IUriIdentityService } from 'vs/platform/uriIdentity/common/uriIdentity'; </del> <ins> import * as nls from 'vs/nls'; import { ICommandService } from 'vs/platform/commands/common/commands'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; </ins> import { IContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; <del> import { Expression } from 'vs/workbench/contrib/debug/common/debugModel'; </del> <ins> import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; </ins> import { registerColor } from 'vs/platform/theme/common/colorRegistry'; <del> import { addDisposableListener } from 'vs/base/browser/dom'; import { DomEmitter } from 'vs/base/browser/event'; import { ILanguageFeaturesService } from 'vs/editor/common/services/languageFeatures'; import { IFeatureDebounceInformation, ILanguageFeatureDebounceService } from 'vs/editor/common/services/languageFeatureDebounce'; </del> <ins> import { IUriIdentityService } from 'vs/platform/uriIdentity/common/uriIdentity'; import { FloatingClickWidget } from 'vs/workbench/browser/codeeditor'; import { DebugHoverWidget } from 'vs/workbench/contrib/debug/browser/debugHover'; import { ExceptionWidget } from 'vs/workbench/contrib/debug/browser/exceptionWidget'; import { CONTEXT_EXCEPTION_WIDGET_VISIBLE, IDebugConfiguration, IDebugEditorContribution, IDebugService, IDebugSession, IExceptionInfo, IExpression, IStackFrame, State } from 'vs/workbench/contrib/debug/common/debug'; import { Expression } from 'vs/workbench/contrib/debug/common/debugModel'; import { IHostService } from 'vs/workbench/services/host/browser/host'; </ins> const MAX_NUM_INLINE_VALUES = 100; // JS Global scope can have 700+ entries. We want to limit ourselves for perf reasons const MAX_INLINE_DECORATOR_LENGTH = 150; // Max string length of each inline decorator when debugging. If exceeded ... is added