Skip to content

Commit ff744e8

Browse files
authored
Deprecate editor.deltaDecorations (microsoft#153529)
* Fixes microsoft#148423: Deprecate `editor.deltaDecorations` * Fix compilation
1 parent 0e3304b commit ff744e8

File tree

17 files changed

+127
-96
lines changed

17 files changed

+127
-96
lines changed

src/vs/editor/browser/editorBrowser.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -852,7 +852,7 @@ export interface ICodeEditor extends editorCommon.IEditor {
852852

853853
/**
854854
* All decorations added through this call will get the ownerId of this editor.
855-
* @see {@link ITextModel.deltaDecorations}
855+
* @deprecated
856856
*/
857857
deltaDecorations(oldDecorations: string[], newDecorations: IModelDeltaDecoration[]): string[];
858858

src/vs/editor/browser/widget/codeEditorWidget.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ export class CodeEditorWidget extends Disposable implements editorBrowser.ICodeE
267267

268268
private _bannerDomNode: HTMLElement | null = null;
269269

270-
private _dropIntoEditorDecorationIds: string[] = [];
270+
private _dropIntoEditorDecorations: EditorDecorationsCollection = this.createDecorationsCollection();
271271

272272
constructor(
273273
domElement: HTMLElement,
@@ -1286,6 +1286,9 @@ export class CodeEditorWidget extends Disposable implements editorBrowser.ICodeE
12861286
return this._modelData.model.getDecorationsInRange(range, this._id, filterValidationDecorations(this._configuration.options));
12871287
}
12881288

1289+
/**
1290+
* @deprecated
1291+
*/
12891292
public deltaDecorations(oldDecorations: string[], newDecorations: IModelDeltaDecoration[]): string[] {
12901293
if (!this._modelData) {
12911294
return [];
@@ -1844,12 +1847,12 @@ export class CodeEditorWidget extends Disposable implements editorBrowser.ICodeE
18441847
options: CodeEditorWidget.dropIntoEditorDecorationOptions
18451848
}];
18461849

1847-
this._dropIntoEditorDecorationIds = this.deltaDecorations(this._dropIntoEditorDecorationIds, newDecorations);
1850+
this._dropIntoEditorDecorations.set(newDecorations);
18481851
this.revealPosition(position, editorCommon.ScrollType.Immediate);
18491852
}
18501853

18511854
private removeDropIndicator(): void {
1852-
this._dropIntoEditorDecorationIds = this.deltaDecorations(this._dropIntoEditorDecorationIds, []);
1855+
this._dropIntoEditorDecorations.clear();
18531856
}
18541857
}
18551858

src/vs/editor/browser/widget/diffEditorWidget.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,9 @@ class VisualEditorState {
115115
this._zonesMap = {};
116116

117117
// (2) Model decorations
118-
this._decorations = editor.deltaDecorations(this._decorations, []);
118+
editor.changeDecorations((changeAccessor) => {
119+
this._decorations = changeAccessor.deltaDecorations(this._decorations, []);
120+
});
119121
}
120122

121123
public apply(editor: CodeEditorWidget, overviewRuler: editorBrowser.IOverviewRuler | null, newDecorations: IEditorDiffDecorationsWithZones, restoreScrollState: boolean): void {
@@ -153,7 +155,9 @@ class VisualEditorState {
153155
scrollState?.restore(editor);
154156

155157
// decorations
156-
this._decorations = editor.deltaDecorations(this._decorations, newDecorations.decorations);
158+
editor.changeDecorations((changeAccessor) => {
159+
this._decorations = changeAccessor.deltaDecorations(this._decorations, newDecorations.decorations);
160+
});
157161

158162
// overview ruler
159163
overviewRuler?.setZones(newDecorations.overviewZones);

src/vs/editor/contrib/colorPicker/browser/colorDetector.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -172,10 +172,12 @@ export class ColorDetector extends Disposable implements IEditorContribution {
172172
options: ModelDecorationOptions.EMPTY
173173
}));
174174

175-
this._decorationsIds = this._editor.deltaDecorations(this._decorationsIds, decorations);
175+
this._editor.changeDecorations((changeAccessor) => {
176+
this._decorationsIds = changeAccessor.deltaDecorations(this._decorationsIds, decorations);
176177

177-
this._colorDatas = new Map<string, IColorData>();
178-
this._decorationsIds.forEach((id, i) => this._colorDatas.set(id, colorDatas[i]));
178+
this._colorDatas = new Map<string, IColorData>();
179+
this._decorationsIds.forEach((id, i) => this._colorDatas.set(id, colorDatas[i]));
180+
});
179181
}
180182

181183
private _colorDecorationClassRefs = this._register(new DisposableStore());
@@ -219,7 +221,8 @@ export class ColorDetector extends Disposable implements IEditorContribution {
219221
}
220222

221223
private removeAllDecorations(): void {
222-
this._decorationsIds = this._editor.deltaDecorations(this._decorationsIds, []);
224+
this._editor.removeDecorations(this._decorationsIds);
225+
this._decorationsIds = [];
223226
this._colorDecoratorIds.clear();
224227
this._colorDecorationClassRefs.clear();
225228
}

src/vs/editor/contrib/find/browser/findDecorations.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export class FindDecorations implements IDisposable {
3333
}
3434

3535
public dispose(): void {
36-
this._editor.deltaDecorations(this._allDecorations(), []);
36+
this._editor.removeDecorations(this._allDecorations());
3737

3838
this._decorations = [];
3939
this._overviewRulerApproximateDecorations = [];

src/vs/editor/contrib/folding/browser/foldingDecorations.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import { Codicon } from 'vs/base/common/codicons';
77
import { ICodeEditor } from 'vs/editor/browser/editorBrowser';
8-
import { IModelDecorationsChangeAccessor, IModelDeltaDecoration, TrackedRangeStickiness } from 'vs/editor/common/model';
8+
import { IModelDecorationsChangeAccessor, TrackedRangeStickiness } from 'vs/editor/common/model';
99
import { ModelDecorationOptions } from 'vs/editor/common/model/textModel';
1010
import { IDecorationProvider } from 'vs/editor/contrib/folding/browser/foldingModel';
1111
import { localize } from 'vs/nls';
@@ -72,11 +72,11 @@ export class FoldingDecorationProvider implements IDecorationProvider {
7272
}
7373
}
7474

75-
deltaDecorations(oldDecorations: string[], newDecorations: IModelDeltaDecoration[]): string[] {
76-
return this.editor.deltaDecorations(oldDecorations, newDecorations);
77-
}
78-
7975
changeDecorations<T>(callback: (changeAccessor: IModelDecorationsChangeAccessor) => T): T {
8076
return this.editor.changeDecorations(callback);
8177
}
78+
79+
removeDecorations(decorationIds: string[]): void {
80+
this.editor.removeDecorations(decorationIds);
81+
}
8282
}

src/vs/editor/contrib/folding/browser/foldingModel.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ import { FoldingRegion, FoldingRegions, ILineRange } from './foldingRanges';
99

1010
export interface IDecorationProvider {
1111
getDecorationOption(isCollapsed: boolean, isHidden: boolean): IModelDecorationOptions;
12-
deltaDecorations(oldDecorations: string[], newDecorations: IModelDeltaDecoration[]): string[];
1312
changeDecorations<T>(callback: (changeAccessor: IModelDecorationsChangeAccessor) => T): T | null;
13+
removeDecorations(decorationIds: string[]): void;
1414
}
1515

1616
export interface FoldingModelChangeEvent {
@@ -162,7 +162,9 @@ export class FoldingModel {
162162
k++;
163163
}
164164

165-
this._editorDecorationIds = this._decorationProvider.deltaDecorations(this._editorDecorationIds, newEditorDecorations);
165+
this._decorationProvider.changeDecorations((changeAccessor) => {
166+
this._editorDecorationIds = changeAccessor.deltaDecorations(this._editorDecorationIds, newEditorDecorations);
167+
});
166168
this._regions = newRegions;
167169
this._isInitialized = true;
168170
this._updateEventEmitter.fire({ model: this });
@@ -207,7 +209,7 @@ export class FoldingModel {
207209
}
208210

209211
public dispose() {
210-
this._decorationProvider.deltaDecorations(this._editorDecorationIds, []);
212+
this._decorationProvider.removeDecorations(this._editorDecorationIds);
211213
}
212214

213215
getAllRegionsAtLine(lineNumber: number, filter?: (r: FoldingRegion, level: number) => boolean): FoldingRegion[] {

src/vs/editor/contrib/folding/test/browser/foldingModel.test.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { escapeRegExpCharacters } from 'vs/base/common/strings';
77
import { EditOperation } from 'vs/editor/common/core/editOperation';
88
import { Position } from 'vs/editor/common/core/position';
99
import { Range } from 'vs/editor/common/core/range';
10-
import { IModelDecorationsChangeAccessor, IModelDeltaDecoration, ITextModel, TrackedRangeStickiness } from 'vs/editor/common/model';
10+
import { IModelDecorationsChangeAccessor, ITextModel, TrackedRangeStickiness } from 'vs/editor/common/model';
1111
import { ModelDecorationOptions } from 'vs/editor/common/model/textModel';
1212
import { FoldingModel, getNextFoldLine, getParentFoldLine, getPreviousFoldLine, setCollapseStateAtLevel, setCollapseStateForMatchingLines, setCollapseStateForRest, setCollapseStateLevelsDown, setCollapseStateLevelsUp, setCollapseStateUp } from 'vs/editor/contrib/folding/browser/foldingModel';
1313
import { FoldingRegion } from 'vs/editor/contrib/folding/browser/foldingRanges';
@@ -59,14 +59,16 @@ export class TestDecorationProvider {
5959
return TestDecorationProvider.expandedDecoration;
6060
}
6161

62-
deltaDecorations(oldDecorations: string[], newDecorations: IModelDeltaDecoration[]): string[] {
63-
return this.model.deltaDecorations(oldDecorations, newDecorations);
64-
}
65-
6662
changeDecorations<T>(callback: (changeAccessor: IModelDecorationsChangeAccessor) => T): (T | null) {
6763
return this.model.changeDecorations(callback);
6864
}
6965

66+
removeDecorations(decorationIds: string[]): void {
67+
this.model.changeDecorations((changeAccessor) => {
68+
changeAccessor.deltaDecorations(decorationIds, []);
69+
});
70+
}
71+
7072
getDecorations(): ExpectedDecoration[] {
7173
const decorations = this.model.getAllDecorations();
7274
const res: ExpectedDecoration[] = [];

src/vs/editor/contrib/inlayHints/browser/inlayHintsController.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -597,7 +597,7 @@ export class InlayHintsController implements IEditorContribution {
597597
}
598598

599599
private _removeAllDecorations(): void {
600-
this._editor.deltaDecorations(Array.from(this._decorationsMetadata.keys()), []);
600+
this._editor.removeDecorations(Array.from(this._decorationsMetadata.keys()));
601601
for (const obj of this._decorationsMetadata.values()) {
602602
obj.classNameRef.dispose();
603603
}

src/vs/editor/contrib/inlineCompletions/browser/inlineCompletionsModel.ts

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -577,18 +577,21 @@ export class SynchronizedInlineCompletionsCache extends Disposable {
577577
) {
578578
super();
579579

580-
const decorationIds = editor.deltaDecorations(
581-
[],
582-
completionsSource.items.map(i => ({
583-
range: i.range,
584-
options: {
585-
description: 'inline-completion-tracking-range'
586-
},
587-
}))
588-
);
580+
const decorationIds = editor.changeDecorations((changeAccessor) => {
581+
return changeAccessor.deltaDecorations(
582+
[],
583+
completionsSource.items.map(i => ({
584+
range: i.range,
585+
options: {
586+
description: 'inline-completion-tracking-range'
587+
},
588+
}))
589+
);
590+
});
591+
589592
this._register(toDisposable(() => {
590593
this.isDisposing = true;
591-
editor.deltaDecorations(decorationIds, []);
594+
editor.removeDecorations(decorationIds);
592595
}));
593596

594597
this.completions = completionsSource.items.map((c, idx) => new CachedInlineCompletion(c, decorationIds[idx]));

0 commit comments

Comments
 (0)