Skip to content

Commit 09cd7c5

Browse files
authored
1 parent 50ad64e commit 09cd7c5

File tree

2 files changed

+38
-17
lines changed

2 files changed

+38
-17
lines changed

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

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -126,11 +126,11 @@ export class DiffEditorWidget2 extends DelegatingEditor implements IDiffEditor {
126126
});
127127
this._register(keepAlive(this._sash, true));
128128

129-
this._register(autorunWithStore2('unchangedRangesFeature', (reader, store) => {
129+
this._register(autorunWithStore2('UnchangedRangesFeature', (reader, store) => {
130130
this.unchangedRangesFeature = store.add(new (readHotReloadableExport(UnchangedRangesFeature, reader))(this._editors, this._diffModel, this._options));
131131
}));
132132

133-
this._register(autorunWithStore2('decorations', (reader, store) => {
133+
this._register(autorunWithStore2('DiffEditorDecorations', (reader, store) => {
134134
store.add(new (readHotReloadableExport(DiffEditorDecorations, reader))(this._editors, this._diffModel, this._options));
135135
}));
136136

@@ -143,16 +143,16 @@ export class DiffEditorWidget2 extends DelegatingEditor implements IDiffEditor {
143143
() => this.unchangedRangesFeature.isUpdatingViewZones,
144144
));
145145

146-
this._register(this._instantiationService.createInstance(
147-
OverviewRulerPart,
148-
this._editors,
149-
this.elements.root,
150-
this._diffModel,
151-
this._rootSizeObserver.width,
152-
this._rootSizeObserver.height,
153-
this._layoutInfo.map(i => i.modifiedEditor),
154-
this._options,
155-
));
146+
this._register(autorunWithStore2('OverviewRulerPart', (reader, store) => {
147+
store.add(this._instantiationService.createInstance(readHotReloadableExport(OverviewRulerPart, reader), this._editors,
148+
this.elements.root,
149+
this._diffModel,
150+
this._rootSizeObserver.width,
151+
this._rootSizeObserver.height,
152+
this._layoutInfo.map(i => i.modifiedEditor),
153+
this._options,
154+
));
155+
}));
156156

157157
this._reviewPane = this._register(this._instantiationService.createInstance(DiffReview2, this));
158158
this.elements.root.appendChild(this._reviewPane.domNode.domNode);

src/vs/editor/browser/widget/diffEditorWidget2/overviewRulerPart.ts

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,15 @@ import { createFastDomNode } from 'vs/base/browser/fastDomNode';
88
import { IMouseWheelEvent } from 'vs/base/browser/mouseEvent';
99
import { Color } from 'vs/base/common/color';
1010
import { Disposable } from 'vs/base/common/lifecycle';
11-
import { IObservable, autorun, derived, observableFromEvent } from 'vs/base/common/observable';
11+
import { IObservable, autorun, derived, observableFromEvent, observableSignalFromEvent } from 'vs/base/common/observable';
1212
import { autorunWithStore2 } from 'vs/base/common/observableImpl/autorun';
13+
import { CodeEditorWidget } from 'vs/editor/browser/widget/codeEditorWidget';
1314
import { DiffEditorEditors } from 'vs/editor/browser/widget/diffEditorWidget2/diffEditorEditors';
1415
import { DiffEditorViewModel } from 'vs/editor/browser/widget/diffEditorWidget2/diffEditorViewModel';
1516
import { appendRemoveOnDispose } from 'vs/editor/browser/widget/diffEditorWidget2/utils';
1617
import { EditorLayoutInfo } from 'vs/editor/common/config/editorOptions';
1718
import { LineRange } from 'vs/editor/common/core/lineRange';
19+
import { Position } from 'vs/editor/common/core/position';
1820
import { OverviewRulerZone } from 'vs/editor/common/viewModel/overviewZoneManager';
1921
import { defaultInsertColor, defaultRemoveColor, diffInserted, diffOverviewRulerInserted, diffOverviewRulerRemoved, diffRemoved } from 'vs/platform/theme/common/colorRegistry';
2022
import { IThemeService } from 'vs/platform/theme/common/themeService';
@@ -90,18 +92,37 @@ export class OverviewRulerPart extends Disposable {
9092
return;
9193
}
9294

95+
const origViewZonesChanged = observableSignalFromEvent('viewZoneChanged', this._editors.original.onDidChangeViewZones);
96+
const modViewZonesChanged = observableSignalFromEvent('viewZoneChanged', this._editors.modified.onDidChangeViewZones);
97+
const origHiddenRangesChanged = observableSignalFromEvent('hiddenRangesChanged', this._editors.original.onDidChangeHiddenAreas);
98+
const modHiddenRangesChanged = observableSignalFromEvent('hiddenRangesChanged', this._editors.modified.onDidChangeHiddenAreas);
99+
93100
store.add(autorun('set overview ruler zones', (reader) => {
101+
origViewZonesChanged.read(reader);
102+
modViewZonesChanged.read(reader);
103+
origHiddenRangesChanged.read(reader);
104+
modHiddenRangesChanged.read(reader);
105+
94106
const colors = currentColors.read(reader);
95107
const diff = m?.diff.read(reader)?.mappings;
96108

97-
function createZones(ranges: LineRange[], color: Color) {
109+
function createZones(ranges: LineRange[], color: Color, editor: CodeEditorWidget) {
110+
const vm = editor._getViewModel();
111+
if (!vm) {
112+
return [];
113+
}
98114
return ranges
99115
.filter(d => d.length > 0)
100-
.map(r => new OverviewRulerZone(r.startLineNumber, r.endLineNumberExclusive, r.length, color.toString()));
116+
.map(r => {
117+
const start = vm.coordinatesConverter.convertModelPositionToViewPosition(new Position(r.startLineNumber, 1));
118+
const end = vm.coordinatesConverter.convertModelPositionToViewPosition(new Position(r.endLineNumberExclusive, 1));
119+
120+
return new OverviewRulerZone(start.lineNumber, end.lineNumber, 0, color.toString());
121+
});
101122
}
102123

103-
originalOverviewRuler?.setZones(createZones((diff || []).map(d => d.lineRangeMapping.originalRange), colors.removeColor));
104-
modifiedOverviewRuler?.setZones(createZones((diff || []).map(d => d.lineRangeMapping.modifiedRange), colors.insertColor));
124+
originalOverviewRuler?.setZones(createZones((diff || []).map(d => d.lineRangeMapping.originalRange), colors.removeColor, this._editors.original));
125+
modifiedOverviewRuler?.setZones(createZones((diff || []).map(d => d.lineRangeMapping.modifiedRange), colors.insertColor, this._editors.modified));
105126
}));
106127

107128
store.add(autorun('layout overview ruler', (reader) => {

0 commit comments

Comments
 (0)