diff --git a/src/vs/editor/browser/editorExtensions.ts b/src/vs/editor/browser/editorExtensions.ts index 2676bb009b2..7cdfebe3ad7 100644 --- a/src/vs/editor/browser/editorExtensions.ts +++ b/src/vs/editor/browser/editorExtensions.ts @@ -24,7 +24,6 @@ import { ThemeIcon } from 'vs/platform/theme/common/themeService'; import { IDisposable } from 'vs/base/common/lifecycle'; import { KeyMod, KeyCode } from 'vs/base/common/keyCodes'; import { ILogService } from 'vs/platform/log/common/log'; -import { Iterable } from 'vs/base/common/iterator'; export type ServicesAccessor = InstantiationServicesAccessor; @@ -491,15 +490,15 @@ export namespace EditorExtensionsRegistry { return EditorContributionRegistry.INSTANCE.getEditorActions(); } - export function getEditorContributions(): Iterable { + export function getEditorContributions(): IEditorContributionDescription[] { return EditorContributionRegistry.INSTANCE.getEditorContributions(); } - export function getSomeEditorContributions(ids: string[]): Iterable { - return Iterable.filter(EditorContributionRegistry.INSTANCE.getEditorContributions(), c => ids.indexOf(c.id) >= 0); + export function getSomeEditorContributions(ids: string[]): IEditorContributionDescription[] { + return EditorContributionRegistry.INSTANCE.getEditorContributions().filter(c => ids.indexOf(c.id) >= 0); } - export function getDiffEditorContributions(): Iterable { + export function getDiffEditorContributions(): IDiffEditorContributionDescription[] { return EditorContributionRegistry.INSTANCE.getDiffEditorContributions(); } } @@ -529,16 +528,16 @@ class EditorContributionRegistry { this.editorContributions.push({ id, ctor: ctor as IEditorContributionCtor }); } - public getEditorContributions(): Iterable { - return this.editorContributions; + public getEditorContributions(): IEditorContributionDescription[] { + return this.editorContributions.slice(0); } public registerDiffEditorContribution(id: string, ctor: { new(editor: IDiffEditor, ...services: Services): IEditorContribution }): void { this.diffEditorContributions.push({ id, ctor: ctor as IDiffEditorContributionCtor }); } - public getDiffEditorContributions(): Iterable { - return this.diffEditorContributions; + public getDiffEditorContributions(): IDiffEditorContributionDescription[] { + return this.diffEditorContributions.slice(0); } public registerEditorAction(action: EditorAction) { diff --git a/src/vs/editor/browser/widget/codeEditorWidget.ts b/src/vs/editor/browser/widget/codeEditorWidget.ts index b851a0e6bd6..65ae5f61c9f 100644 --- a/src/vs/editor/browser/widget/codeEditorWidget.ts +++ b/src/vs/editor/browser/widget/codeEditorWidget.ts @@ -74,7 +74,7 @@ export interface ICodeEditorWidgetOptions { * Contributions to instantiate. * Defaults to EditorExtensionsRegistry.getEditorContributions(). */ - contributions?: Iterable; + contributions?: IEditorContributionDescription[]; /** * Telemetry data associated with this CodeEditorWidget. @@ -326,7 +326,12 @@ export class CodeEditorWidget extends Disposable implements editorBrowser.ICodeE this._contentWidgets = {}; this._overlayWidgets = {}; - const contributions = codeEditorWidgetOptions.contributions ?? EditorExtensionsRegistry.getEditorContributions(); + let contributions: IEditorContributionDescription[]; + if (Array.isArray(codeEditorWidgetOptions.contributions)) { + contributions = codeEditorWidgetOptions.contributions; + } else { + contributions = EditorExtensionsRegistry.getEditorContributions(); + } for (const desc of contributions) { if (this._contributions.has(desc.id)) { onUnexpectedError(new Error(`Cannot have two contributions with the same id ${desc.id}`)); diff --git a/src/vs/editor/browser/widget/diffEditorWidget.ts b/src/vs/editor/browser/widget/diffEditorWidget.ts index d98a84f5ed6..90af6898315 100644 --- a/src/vs/editor/browser/widget/diffEditorWidget.ts +++ b/src/vs/editor/browser/widget/diffEditorWidget.ts @@ -42,7 +42,7 @@ import { IContextMenuService } from 'vs/platform/contextview/browser/contextView import { IDiffLinesChange, InlineDiffMargin } from 'vs/editor/browser/widget/inlineDiffMargin'; import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService'; import { Constants } from 'vs/base/common/uint'; -import { EditorExtensionsRegistry } from 'vs/editor/browser/editorExtensions'; +import { EditorExtensionsRegistry, IDiffEditorContributionDescription } from 'vs/editor/browser/editorExtensions'; import { onUnexpectedError } from 'vs/base/common/errors'; import { IEditorProgressService, IProgressRunner } from 'vs/platform/progress/common/progress'; import { ElementSizeObserver } from 'vs/editor/browser/config/elementSizeObserver'; @@ -368,7 +368,7 @@ export class DiffEditorWidget extends Disposable implements editorBrowser.IDiffE this._containerDomElement.className = DiffEditorWidget._getClassName(this._themeService.getColorTheme(), this._options.renderSideBySide); })); - const contributions = EditorExtensionsRegistry.getDiffEditorContributions(); + const contributions: IDiffEditorContributionDescription[] = EditorExtensionsRegistry.getDiffEditorContributions(); for (const desc of contributions) { try { this._register(instantiationService.createInstance(desc.ctor, this)); diff --git a/src/vs/workbench/contrib/mergeEditor/browser/view/editors/baseCodeEditorView.ts b/src/vs/workbench/contrib/mergeEditor/browser/view/editors/baseCodeEditorView.ts index e318c62d385..2086fc1dcc9 100644 --- a/src/vs/workbench/contrib/mergeEditor/browser/view/editors/baseCodeEditorView.ts +++ b/src/vs/workbench/contrib/mergeEditor/browser/view/editors/baseCodeEditorView.ts @@ -6,7 +6,6 @@ import { h, reset } from 'vs/base/browser/dom'; import { renderLabelWithIcons } from 'vs/base/browser/ui/iconLabel/iconLabels'; import { BugIndicatingError } from 'vs/base/common/errors'; -import { Iterable } from 'vs/base/common/iterator'; import { autorun, autorunWithStore, derived, IObservable } from 'vs/base/common/observable'; import { EditorExtensionsRegistry, IEditorContributionDescription } from 'vs/editor/browser/editorExtensions'; import { IModelDeltaDecoration, MinimapPosition, OverviewRulerLane } from 'vs/editor/common/model'; @@ -158,7 +157,7 @@ export class BaseCodeEditorView extends CodeEditorView { return result; }); - protected override getEditorContributions(): Iterable | undefined { - return Iterable.filter(EditorExtensionsRegistry.getEditorContributions(), c => c.id !== CodeLensContribution.ID); + protected override getEditorContributions(): IEditorContributionDescription[] | undefined { + return EditorExtensionsRegistry.getEditorContributions().filter(c => c.id !== CodeLensContribution.ID); } } diff --git a/src/vs/workbench/contrib/mergeEditor/browser/view/editors/codeEditorView.ts b/src/vs/workbench/contrib/mergeEditor/browser/view/editors/codeEditorView.ts index 4ddab3078e0..4710408ef07 100644 --- a/src/vs/workbench/contrib/mergeEditor/browser/view/editors/codeEditorView.ts +++ b/src/vs/workbench/contrib/mergeEditor/browser/view/editors/codeEditorView.ts @@ -108,7 +108,7 @@ export abstract class CodeEditorView extends Disposable { } - protected getEditorContributions(): Iterable | undefined { + protected getEditorContributions(): IEditorContributionDescription[] | undefined { return undefined; } } diff --git a/src/vs/workbench/contrib/mergeEditor/browser/view/editors/inputCodeEditorView.ts b/src/vs/workbench/contrib/mergeEditor/browser/view/editors/inputCodeEditorView.ts index 684ec7d9067..9b61b9c9279 100644 --- a/src/vs/workbench/contrib/mergeEditor/browser/view/editors/inputCodeEditorView.ts +++ b/src/vs/workbench/contrib/mergeEditor/browser/view/editors/inputCodeEditorView.ts @@ -8,7 +8,6 @@ import { renderLabelWithIcons } from 'vs/base/browser/ui/iconLabel/iconLabels'; import { Toggle } from 'vs/base/browser/ui/toggle/toggle'; import { Action, IAction, Separator } from 'vs/base/common/actions'; import { Codicon } from 'vs/base/common/codicons'; -import { Iterable } from 'vs/base/common/iterator'; import { Disposable } from 'vs/base/common/lifecycle'; import { clamp } from 'vs/base/common/numbers'; import { autorun, autorunWithStore, derived, IObservable, ISettableObservable, ITransaction, observableValue, transaction } from 'vs/base/common/observable'; @@ -209,8 +208,8 @@ export class InputCodeEditorView extends CodeEditorView { return result; }); - protected override getEditorContributions(): Iterable | undefined { - return Iterable.filter(EditorExtensionsRegistry.getEditorContributions(), c => c.id !== CodeLensContribution.ID); + protected override getEditorContributions(): IEditorContributionDescription[] | undefined { + return EditorExtensionsRegistry.getEditorContributions().filter(c => c.id !== CodeLensContribution.ID); } } diff --git a/src/vs/workbench/contrib/mergeEditor/browser/view/editors/resultCodeEditorView.ts b/src/vs/workbench/contrib/mergeEditor/browser/view/editors/resultCodeEditorView.ts index dccc796b2ca..dd5641d28b5 100644 --- a/src/vs/workbench/contrib/mergeEditor/browser/view/editors/resultCodeEditorView.ts +++ b/src/vs/workbench/contrib/mergeEditor/browser/view/editors/resultCodeEditorView.ts @@ -8,7 +8,6 @@ import { ActionBar } from 'vs/base/browser/ui/actionbar/actionbar'; import { renderLabelWithIcons } from 'vs/base/browser/ui/iconLabel/iconLabels'; import { CompareResult } from 'vs/base/common/arrays'; import { BugIndicatingError } from 'vs/base/common/errors'; -import { Iterable } from 'vs/base/common/iterator'; import { toDisposable } from 'vs/base/common/lifecycle'; import { autorun, autorunWithStore, derived, IObservable } from 'vs/base/common/observable'; import { IEditorContributionDescription, EditorExtensionsRegistry } from 'vs/editor/browser/editorExtensions'; @@ -223,7 +222,7 @@ export class ResultCodeEditorView extends CodeEditorView { return result; }); - protected override getEditorContributions(): Iterable | undefined { - return Iterable.filter(EditorExtensionsRegistry.getEditorContributions(), c => c.id !== CodeLensContribution.ID); + protected override getEditorContributions(): IEditorContributionDescription[] | undefined { + return EditorExtensionsRegistry.getEditorContributions().filter(c => c.id !== CodeLensContribution.ID); } } diff --git a/src/vs/workbench/contrib/notebook/browser/notebookBrowser.ts b/src/vs/workbench/contrib/notebook/browser/notebookBrowser.ts index 3ccfcdb46cf..95df7696197 100644 --- a/src/vs/workbench/contrib/notebook/browser/notebookBrowser.ts +++ b/src/vs/workbench/contrib/notebook/browser/notebookBrowser.ts @@ -324,8 +324,8 @@ export interface INotebookEditorContributionDescription { export interface INotebookEditorCreationOptions { readonly isEmbedded?: boolean; readonly isReadOnly?: boolean; - readonly contributions?: Iterable; - readonly cellEditorContributions?: Iterable; + readonly contributions?: INotebookEditorContributionDescription[]; + readonly cellEditorContributions?: IEditorContributionDescription[]; readonly menuIds: { notebookToolbar: MenuId; cellTitleToolbar: MenuId; diff --git a/src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts b/src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts index 1c5bbf4861c..295e86ea211 100644 --- a/src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts +++ b/src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts @@ -46,7 +46,7 @@ import { contrastBorder, diffInserted, diffRemoved, editorBackground, errorForeg import { registerThemingParticipant } from 'vs/platform/theme/common/themeService'; import { EDITOR_PANE_BACKGROUND, PANEL_BORDER, SIDE_BAR_BACKGROUND } from 'vs/workbench/common/theme'; import { debugIconStartForeground } from 'vs/workbench/contrib/debug/browser/debugColors'; -import { CellEditState, CellFindMatchWithIndex, CellFocusMode, CellLayoutContext, CellRevealType, IActiveNotebookEditorDelegate, IBaseCellEditorOptions, ICellOutputViewModel, ICellViewModel, ICommonCellInfo, IDisplayOutputLayoutUpdateRequest, IFocusNotebookCellOptions, IInsetRenderOutput, IModelDecorationsChangeAccessor, INotebookDeltaDecoration, INotebookEditor, INotebookEditorContribution, INotebookEditorCreationOptions, INotebookEditorDelegate, INotebookEditorMouseEvent, INotebookEditorOptions, INotebookEditorViewState, INotebookViewCellsUpdateEvent, INotebookWebviewMessage, RenderOutputType } from 'vs/workbench/contrib/notebook/browser/notebookBrowser'; +import { CellEditState, CellFindMatchWithIndex, CellFocusMode, CellLayoutContext, CellRevealType, IActiveNotebookEditorDelegate, IBaseCellEditorOptions, ICellOutputViewModel, ICellViewModel, ICommonCellInfo, IDisplayOutputLayoutUpdateRequest, IFocusNotebookCellOptions, IInsetRenderOutput, IModelDecorationsChangeAccessor, INotebookDeltaDecoration, INotebookEditor, INotebookEditorContribution, INotebookEditorContributionDescription, INotebookEditorCreationOptions, INotebookEditorDelegate, INotebookEditorMouseEvent, INotebookEditorOptions, INotebookEditorViewState, INotebookViewCellsUpdateEvent, INotebookWebviewMessage, RenderOutputType } from 'vs/workbench/contrib/notebook/browser/notebookBrowser'; import { NotebookEditorExtensionsRegistry } from 'vs/workbench/contrib/notebook/browser/notebookEditorExtensions'; import { INotebookEditorService } from 'vs/workbench/contrib/notebook/browser/services/notebookEditorService'; import { notebookDebug } from 'vs/workbench/contrib/notebook/browser/notebookLogger'; @@ -85,14 +85,13 @@ import { NotebookPerfMarks } from 'vs/workbench/contrib/notebook/common/notebook import { BaseCellEditorOptions } from 'vs/workbench/contrib/notebook/browser/viewModel/cellEditorOptions'; import { ILogService } from 'vs/platform/log/common/log'; import { FloatingClickMenu } from 'vs/workbench/browser/codeeditor'; -import { Iterable } from 'vs/base/common/iterator'; const $ = DOM.$; export function getDefaultNotebookCreationOptions(): INotebookEditorCreationOptions { // We inlined the id to avoid loading comment contrib in tests const skipContributions = ['editor.contrib.review', FloatingClickMenu.ID]; - const contributions = Iterable.filter(EditorExtensionsRegistry.getEditorContributions(), c => skipContributions.indexOf(c.id) === -1); + const contributions = EditorExtensionsRegistry.getEditorContributions().filter(c => skipContributions.indexOf(c.id) === -1); return { menuIds: { @@ -350,7 +349,12 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditorD this._editorEditable.set(!creationOptions.isReadOnly); - const contributions = this.creationOptions.contributions ?? NotebookEditorExtensionsRegistry.getEditorContributions(); + let contributions: INotebookEditorContributionDescription[]; + if (Array.isArray(this.creationOptions.contributions)) { + contributions = this.creationOptions.contributions; + } else { + contributions = NotebookEditorExtensionsRegistry.getEditorContributions(); + } for (const desc of contributions) { let contribution: INotebookEditorContribution | undefined; try { diff --git a/src/vs/workbench/contrib/searchEditor/browser/searchEditor.ts b/src/vs/workbench/contrib/searchEditor/browser/searchEditor.ts index e1a91b5d71f..54be4156b6e 100644 --- a/src/vs/workbench/contrib/searchEditor/browser/searchEditor.ts +++ b/src/vs/workbench/contrib/searchEditor/browser/searchEditor.ts @@ -61,7 +61,6 @@ import { renderSearchMessage } from 'vs/workbench/contrib/search/browser/searchM import { EditorExtensionsRegistry, IEditorContributionDescription } from 'vs/editor/browser/editorExtensions'; import { UnusualLineTerminatorsDetector } from 'vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators'; import { isHighContrast } from 'vs/platform/theme/common/theme'; -import { Iterable } from 'vs/base/common/iterator'; const RESULT_LINE_REGEX = /^(\s+)(\d+)(: | )(\s*)(.*)$/; const FILE_LINE_REGEX = /^(\S.*):$/; @@ -226,9 +225,9 @@ export class SearchEditor extends AbstractTextCodeEditor } } - private _getContributions(): Iterable { + private _getContributions(): IEditorContributionDescription[] { const skipContributions = [UnusualLineTerminatorsDetector.ID]; - return Iterable.filter(EditorExtensionsRegistry.getEditorContributions(), c => skipContributions.indexOf(c.id) === -1); + return EditorExtensionsRegistry.getEditorContributions().filter(c => skipContributions.indexOf(c.id) === -1); } protected override getCodeEditorWidgetOptions(): ICodeEditorWidgetOptions {