mirror of
https://github.com/Microsoft/vscode
synced 2024-10-14 15:29:54 +00:00
parent
eff6fa7696
commit
c399c8cce7
|
@ -83,7 +83,9 @@ export class BlockDecorations extends ViewPart {
|
|||
this.domNode.appendChild(block);
|
||||
}
|
||||
const top = ctx.getVerticalOffsetForLineNumber(decoration.range.startLineNumber, true);
|
||||
const bottom = ctx.getVerticalOffsetAfterLineNumber(decoration.range.endLineNumber, true);
|
||||
const bottom = decoration.range.isEmpty()
|
||||
? ctx.getVerticalOffsetForLineNumber(decoration.range.startLineNumber, false)
|
||||
: ctx.getVerticalOffsetAfterLineNumber(decoration.range.endLineNumber, true);
|
||||
|
||||
block.setClassName('blockDecorations-block ' + decoration.options.blockClassName);
|
||||
block.setLeft(ctx.scrollLeft);
|
||||
|
|
|
@ -116,6 +116,13 @@ export class LineRange {
|
|||
return new Range(this.startLineNumber, 1, this.endLineNumberExclusive - 1, Constants.MAX_SAFE_SMALL_INTEGER);
|
||||
}
|
||||
|
||||
public toInclusiveRangeOrEmpty(): Range {
|
||||
if (this.isEmpty) {
|
||||
return new Range(this.startLineNumber, 1, this.startLineNumber, 1);
|
||||
}
|
||||
return new Range(this.startLineNumber, 1, this.endLineNumberExclusive - 1, Constants.MAX_SAFE_SMALL_INTEGER);
|
||||
}
|
||||
|
||||
intersects(lineRange: LineRange) {
|
||||
return this.startLineNumber <= lineRange.endLineNumberExclusive
|
||||
&& lineRange.startLineNumber <= this.endLineNumberExclusive;
|
||||
|
|
|
@ -55,38 +55,40 @@ export class BaseCodeEditorView extends CodeEditorView {
|
|||
|
||||
const activeModifiedBaseRange = viewModel.activeModifiedBaseRange.read(reader);
|
||||
|
||||
const result = new Array<IModelDeltaDecoration>();
|
||||
const result: IModelDeltaDecoration[] = [];
|
||||
for (const modifiedBaseRange of model.modifiedBaseRanges.read(reader)) {
|
||||
|
||||
const range = modifiedBaseRange.baseRange;
|
||||
if (range && !range.isEmpty) {
|
||||
const blockClassNames = ['merge-editor-block'];
|
||||
const isHandled = model.isHandled(modifiedBaseRange).read(reader);
|
||||
if (isHandled) {
|
||||
blockClassNames.push('handled');
|
||||
}
|
||||
if (modifiedBaseRange === activeModifiedBaseRange) {
|
||||
blockClassNames.push('focused');
|
||||
}
|
||||
blockClassNames.push('base');
|
||||
|
||||
result.push({
|
||||
range: range.toInclusiveRange()!,
|
||||
options: {
|
||||
isWholeLine: true,
|
||||
blockClassName: blockClassNames.join(' '),
|
||||
description: 'Merge Editor',
|
||||
minimap: {
|
||||
position: MinimapPosition.Gutter,
|
||||
color: { id: isHandled ? handledConflictMinimapOverViewRulerColor : unhandledConflictMinimapOverViewRulerColor },
|
||||
},
|
||||
overviewRuler: modifiedBaseRange.isConflicting ? {
|
||||
position: OverviewRulerLane.Center,
|
||||
color: { id: isHandled ? handledConflictMinimapOverViewRulerColor : unhandledConflictMinimapOverViewRulerColor },
|
||||
} : undefined
|
||||
}
|
||||
});
|
||||
if (!range) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const blockClassNames = ['merge-editor-block'];
|
||||
const isHandled = model.isHandled(modifiedBaseRange).read(reader);
|
||||
if (isHandled) {
|
||||
blockClassNames.push('handled');
|
||||
}
|
||||
if (modifiedBaseRange === activeModifiedBaseRange) {
|
||||
blockClassNames.push('focused');
|
||||
}
|
||||
blockClassNames.push('base');
|
||||
|
||||
result.push({
|
||||
range: range.toInclusiveRangeOrEmpty(),
|
||||
options: {
|
||||
showIfCollapsed: true,
|
||||
blockClassName: blockClassNames.join(' '),
|
||||
description: 'Merge Editor',
|
||||
minimap: {
|
||||
position: MinimapPosition.Gutter,
|
||||
color: { id: isHandled ? handledConflictMinimapOverViewRulerColor : unhandledConflictMinimapOverViewRulerColor },
|
||||
},
|
||||
overviewRuler: modifiedBaseRange.isConflicting ? {
|
||||
position: OverviewRulerLane.Center,
|
||||
color: { id: isHandled ? handledConflictMinimapOverViewRulerColor : unhandledConflictMinimapOverViewRulerColor },
|
||||
} : undefined
|
||||
}
|
||||
});
|
||||
}
|
||||
return result;
|
||||
});
|
||||
|
|
|
@ -115,7 +115,7 @@ export class InputCodeEditorView extends CodeEditorView {
|
|||
|
||||
for (const modifiedBaseRange of model.modifiedBaseRanges.read(reader)) {
|
||||
const range = modifiedBaseRange.getInputRange(this.inputNumber);
|
||||
if (!range || range.isEmpty) {
|
||||
if (!range) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -134,9 +134,9 @@ export class InputCodeEditorView extends CodeEditorView {
|
|||
blockClassNames.push(inputClassName);
|
||||
|
||||
result.push({
|
||||
range: range.toInclusiveRange()!,
|
||||
range: range.toInclusiveRangeOrEmpty(),
|
||||
options: {
|
||||
isWholeLine: true,
|
||||
showIfCollapsed: true,
|
||||
blockClassName: blockClassNames.join(' '),
|
||||
description: 'Merge Editor',
|
||||
minimap: {
|
||||
|
|
|
@ -129,38 +129,36 @@ export class ResultCodeEditorView extends CodeEditorView {
|
|||
const modifiedBaseRange = m.left;
|
||||
|
||||
if (modifiedBaseRange) {
|
||||
const range = model.getLineRangeInResult(modifiedBaseRange.baseRange, reader).toInclusiveRange();
|
||||
if (range) {
|
||||
const blockClassNames = ['merge-editor-block'];
|
||||
const isHandled = model.isHandled(modifiedBaseRange).read(reader);
|
||||
if (isHandled) {
|
||||
blockClassNames.push('handled');
|
||||
}
|
||||
if (modifiedBaseRange === activeModifiedBaseRange) {
|
||||
blockClassNames.push('focused');
|
||||
}
|
||||
if (modifiedBaseRange.isConflicting) {
|
||||
blockClassNames.push('conflicting');
|
||||
}
|
||||
blockClassNames.push('result');
|
||||
|
||||
result.push({
|
||||
range,
|
||||
options: {
|
||||
isWholeLine: true,
|
||||
blockClassName: blockClassNames.join(' '),
|
||||
description: 'Result Diff',
|
||||
minimap: {
|
||||
position: MinimapPosition.Gutter,
|
||||
color: { id: isHandled ? handledConflictMinimapOverViewRulerColor : unhandledConflictMinimapOverViewRulerColor },
|
||||
},
|
||||
overviewRuler: modifiedBaseRange.isConflicting ? {
|
||||
position: OverviewRulerLane.Center,
|
||||
color: { id: isHandled ? handledConflictMinimapOverViewRulerColor : unhandledConflictMinimapOverViewRulerColor },
|
||||
} : undefined
|
||||
}
|
||||
});
|
||||
const blockClassNames = ['merge-editor-block'];
|
||||
const isHandled = model.isHandled(modifiedBaseRange).read(reader);
|
||||
if (isHandled) {
|
||||
blockClassNames.push('handled');
|
||||
}
|
||||
if (modifiedBaseRange === activeModifiedBaseRange) {
|
||||
blockClassNames.push('focused');
|
||||
}
|
||||
if (modifiedBaseRange.isConflicting) {
|
||||
blockClassNames.push('conflicting');
|
||||
}
|
||||
blockClassNames.push('result');
|
||||
|
||||
result.push({
|
||||
range: model.getLineRangeInResult(modifiedBaseRange.baseRange, reader).toInclusiveRangeOrEmpty(),
|
||||
options: {
|
||||
showIfCollapsed: true,
|
||||
blockClassName: blockClassNames.join(' '),
|
||||
description: 'Result Diff',
|
||||
minimap: {
|
||||
position: MinimapPosition.Gutter,
|
||||
color: { id: isHandled ? handledConflictMinimapOverViewRulerColor : unhandledConflictMinimapOverViewRulerColor },
|
||||
},
|
||||
overviewRuler: modifiedBaseRange.isConflicting ? {
|
||||
position: OverviewRulerLane.Center,
|
||||
color: { id: isHandled ? handledConflictMinimapOverViewRulerColor : unhandledConflictMinimapOverViewRulerColor },
|
||||
} : undefined
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue