Skip to content

Commit 32511c4

Browse files
authored
Merge pull request microsoft#188362 from microsoft/hediet/b/lengthy-bovid
Fixes inline diff editor
2 parents e6cb8b7 + 0f23d3e commit 32511c4

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

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

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,9 @@ export class ViewZoneManager extends Disposable {
8585
const diff = diffModel?.diff.read(reader);
8686
if (!diffModel || !diff) { return null; }
8787
state.read(reader);
88-
return computeRangeAlignment(this._editors.original, this._editors.modified, diff.mappings, alignmentViewZoneIdsOrig, alignmentViewZoneIdsMod);
88+
const renderSideBySide = this._options.renderSideBySide.read(reader);
89+
const innerHunkAlignment = renderSideBySide;
90+
return computeRangeAlignment(this._editors.original, this._editors.modified, diff.mappings, alignmentViewZoneIdsOrig, alignmentViewZoneIdsMod, innerHunkAlignment);
8991
});
9092

9193
const alignmentsSyncedMovedText = derived<ILineRangeAlignment[] | null>('alignments', (reader) => {
@@ -94,7 +96,7 @@ export class ViewZoneManager extends Disposable {
9496
state.read(reader);
9597
const mappings = syncedMovedText.changes.map(c => new DiffMapping(c));
9698
// TODO dont include alignments outside syncedMovedText
97-
return computeRangeAlignment(this._editors.original, this._editors.modified, mappings, alignmentViewZoneIdsOrig, alignmentViewZoneIdsMod);
99+
return computeRangeAlignment(this._editors.original, this._editors.modified, mappings, alignmentViewZoneIdsOrig, alignmentViewZoneIdsMod, true);
98100
});
99101

100102
function createFakeLinesDiv(): HTMLElement {
@@ -455,6 +457,7 @@ function computeRangeAlignment(
455457
diffs: readonly DiffMapping[],
456458
originalEditorAlignmentViewZones: ReadonlySet<string>,
457459
modifiedEditorAlignmentViewZones: ReadonlySet<string>,
460+
innerHunkAlignment: boolean,
458461
): ILineRangeAlignment[] {
459462
const originalLineHeightOverrides = new ArrayQueue(getAdditionalLineHeights(originalEditor, originalEditorAlignmentViewZones));
460463
const modifiedLineHeightOverrides = new ArrayQueue(getAdditionalLineHeights(modifiedEditor, modifiedEditorAlignmentViewZones));
@@ -546,18 +549,21 @@ function computeRangeAlignment(
546549
modifiedRange,
547550
originalHeightInPx: originalRange.length * origLineHeight + originalAdditionalHeight,
548551
modifiedHeightInPx: modifiedRange.length * modLineHeight + modifiedAdditionalHeight,
552+
diff: m.lineRangeMapping,
549553
});
550554

551555
lastOrigLineNumber = origLineNumberExclusive;
552556
lastModLineNumber = modLineNumberExclusive;
553557
}
554558

555-
for (const i of c.innerChanges || []) {
556-
if (i.originalRange.startColumn > 1 && i.modifiedRange.startColumn > 1) {
557-
// There is some unmodified text on this line
558-
emitAlignment(i.originalRange.startLineNumber, i.modifiedRange.startLineNumber);
559+
if (innerHunkAlignment) {
560+
for (const i of c.innerChanges || []) {
561+
if (i.originalRange.startColumn > 1 && i.modifiedRange.startColumn > 1) {
562+
// There is some unmodified text on this line
563+
emitAlignment(i.originalRange.startLineNumber, i.modifiedRange.startLineNumber);
564+
}
565+
emitAlignment(i.originalRange.endLineNumber, i.modifiedRange.endLineNumber);
559566
}
560-
emitAlignment(i.originalRange.endLineNumber, i.modifiedRange.endLineNumber);
561567
}
562568

563569
emitAlignment(c.originalRange.endLineNumberExclusive, c.modifiedRange.endLineNumberExclusive);

0 commit comments

Comments
 (0)