From 8294940ac6b30b652c8d140d4daa9491d8cfb16b Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 10 Nov 2022 14:57:23 -0800 Subject: Make CodeActionModel an idleValue (#166053) For #164171 --- .../contrib/codeAction/browser/codeActionCommands.ts | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/vs/editor/contrib/codeAction/browser/codeActionCommands.ts b/src/vs/editor/contrib/codeAction/browser/codeActionCommands.ts index c7ec289bde5..0b345e4ecb8 100644 --- a/src/vs/editor/contrib/codeAction/browser/codeActionCommands.ts +++ b/src/vs/editor/contrib/codeAction/browser/codeActionCommands.ts @@ -29,6 +29,7 @@ import { IMarkerService } from 'vs/platform/markers/common/markers'; import { IEditorProgressService } from 'vs/platform/progress/common/progress'; import { CodeActionModel, CodeActionsState, SUPPORTED_CODE_ACTIONS } from './codeActionModel'; import { CodeActionAutoApply, CodeActionCommandArgs, CodeActionFilter, CodeActionItem, CodeActionKind, CodeActionSet, CodeActionTrigger, CodeActionTriggerSource } from '../common/types'; +import { IdleValue } from 'vs/base/common/async'; function contextKeyForSupportedActions(kind: CodeActionKind) { return ContextKeyExpr.regex( @@ -92,7 +93,7 @@ export class CodeActionController extends Disposable implements IEditorContribut } private readonly _editor: ICodeEditor; - private readonly _model: CodeActionModel; + private readonly _model: IdleValue; private readonly _ui: Lazy; constructor( @@ -106,8 +107,14 @@ export class CodeActionController extends Disposable implements IEditorContribut super(); this._editor = editor; - this._model = this._register(new CodeActionModel(this._editor, languageFeaturesService.codeActionProvider, markerService, contextKeyService, progressService)); - this._register(this._model.onDidChangeState(newState => this.update(newState))); + + this._model = this._register(new IdleValue(() => { + const model = this._register(new CodeActionModel(this._editor, languageFeaturesService.codeActionProvider, markerService, contextKeyService, progressService)); + + this._register(model.onDidChangeState(newState => this.update(newState))); + + return model; + })); this._ui = new Lazy(() => this._register(_instantiationService.createInstance(CodeActionUi, editor, QuickFixAction.Id, AutoFixAction.Id, { @@ -149,7 +156,7 @@ export class CodeActionController extends Disposable implements IEditorContribut } private _trigger(trigger: CodeActionTrigger) { - return this._model.trigger(trigger); + return this._model.value.trigger(trigger); } private _applyCodeAction(action: CodeActionItem, preview: boolean): Promise { -- cgit v1.2.3