diff options
author | Matt Bierner <matb@microsoft.com> | 2022-11-11 01:57:23 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-11 01:57:23 +0300 |
commit | 8294940ac6b30b652c8d140d4daa9491d8cfb16b (patch) | |
tree | 4ced63a1de698fdf92af22c4dc0056e13b3bb269 | |
parent | 4f30fd5a83b31b86d4e141fe38c1cd27062d01d7 (diff) |
Make CodeActionModel an idleValue (#166053)
For #164171
-rw-r--r-- | src/vs/editor/contrib/codeAction/browser/codeActionCommands.ts | 15 |
1 files 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<CodeActionModel>; private readonly _ui: Lazy<CodeActionUi>; 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<void> { |