Skip to content

Commit 9812344

Browse files
authored
1 parent 38b3b31 commit 9812344

File tree

4 files changed

+36
-4
lines changed

4 files changed

+36
-4
lines changed

src/vs/workbench/contrib/mergeEditor/browser/view/colors.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import { localize } from 'vs/nls';
7-
import { registerColor } from 'vs/platform/theme/common/colorRegistry';
7+
import { mergeCurrentHeaderBackground, mergeIncomingHeaderBackground, registerColor, transparent } from 'vs/platform/theme/common/colorRegistry';
88

99
export const diff = registerColor(
1010
'mergeEditor.change.background',
@@ -71,3 +71,16 @@ export const conflictingLinesBackground = registerColor(
7171
{ dark: '#ffea0047', light: '#ffea0047', hcDark: '#ffea0047', hcLight: '#ffea0047', },
7272
localize('mergeEditor.conflictingLines.background', 'The background of the "Conflicting Lines" text.')
7373
);
74+
75+
const contentTransparency = 0.4;
76+
export const conflictInput1Background = registerColor(
77+
'mergeEditor.conflict.input1.background',
78+
{ dark: transparent(mergeCurrentHeaderBackground, contentTransparency), light: transparent(mergeCurrentHeaderBackground, contentTransparency), hcDark: transparent(mergeCurrentHeaderBackground, contentTransparency), hcLight: transparent(mergeCurrentHeaderBackground, contentTransparency) },
79+
localize('mergeEditor.conflict.input1.background', 'The background color of decorations in input 1.')
80+
);
81+
82+
export const conflictInput2Background = registerColor(
83+
'mergeEditor.conflict.input2.background',
84+
{ dark: transparent(mergeIncomingHeaderBackground, contentTransparency), light: transparent(mergeIncomingHeaderBackground, contentTransparency), hcDark: transparent(mergeIncomingHeaderBackground, contentTransparency), hcLight: transparent(mergeIncomingHeaderBackground, contentTransparency) },
85+
localize('mergeEditor.conflict.input2.background', 'The background color of decorations in input 2.')
86+
);

src/vs/workbench/contrib/mergeEditor/browser/view/editors/codeEditorView.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,12 @@ export abstract class CodeEditorView extends Disposable {
6666

6767
protected readonly showDeletionMarkers = observableFromEvent<boolean>(
6868
this.configurationService.onDidChangeConfiguration,
69-
() => /** @description showDeletionMarkers */ this.configurationService.getValue('mergeEditor.showDeletionMarkers')
69+
() => /** @description showDeletionMarkers */ this.configurationService.getValue('mergeEditor.showDeletionMarkers') ?? true
70+
);
71+
72+
protected readonly useSimplifiedDecorations = observableFromEvent<boolean>(
73+
this.configurationService.onDidChangeConfiguration,
74+
() => /** @description useSimplifiedDecorations */ this.configurationService.getValue('mergeEditor.useSimplifiedDecorations') ?? false
7075
);
7176

7277
public readonly editor = this.instantiationService.createInstance(

src/vs/workbench/contrib/mergeEditor/browser/view/editors/inputCodeEditorView.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,8 @@ export class InputCodeEditorView extends CodeEditorView {
130130

131131
const showNonConflictingChanges = viewModel.showNonConflictingChanges.read(reader);
132132
const showDeletionMarkers = this.showDeletionMarkers.read(reader);
133+
const diffWithThis = viewModel.baseCodeEditorView.read(reader) !== undefined && viewModel.baseShowDiffAgainst.read(reader) === this.inputNumber;
134+
const useSimplifiedDecorations = !diffWithThis && this.useSimplifiedDecorations.read(reader);
133135

134136
for (const modifiedBaseRange of model.modifiedBaseRanges.read(reader)) {
135137
const range = modifiedBaseRange.getInputRange(this.inputNumber);
@@ -148,13 +150,17 @@ export class InputCodeEditorView extends CodeEditorView {
148150
if (modifiedBaseRange.isConflicting) {
149151
blockClassNames.push('conflicting');
150152
}
151-
const inputClassName = this.inputNumber === 1 ? 'input 1' : 'input 2';
153+
const inputClassName = this.inputNumber === 1 ? 'input i1' : 'input i2';
152154
blockClassNames.push(inputClassName);
153155

154156
if (!modifiedBaseRange.isConflicting && !showNonConflictingChanges && isHandled) {
155157
continue;
156158
}
157159

160+
if (useSimplifiedDecorations && !isHandled) {
161+
blockClassNames.push('use-simplified-decorations');
162+
}
163+
158164
result.push({
159165
range: range.toInclusiveRangeOrEmpty(),
160166
options: {
@@ -173,7 +179,7 @@ export class InputCodeEditorView extends CodeEditorView {
173179
}
174180
});
175181

176-
if (modifiedBaseRange.isConflicting || !model.isHandled(modifiedBaseRange).read(reader)) {
182+
if (!useSimplifiedDecorations && (modifiedBaseRange.isConflicting || !model.isHandled(modifiedBaseRange).read(reader))) {
177183
const inputDiffs = modifiedBaseRange.getInputDiffs(this.inputNumber);
178184
for (const diff of inputDiffs) {
179185
const range = diff.outputRange.toInclusiveRange();

src/vs/workbench/contrib/mergeEditor/browser/view/media/mergeEditor.css

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,14 @@
109109
background-color: var(--vscode-mergeEditor-conflict-handledFocused-background);
110110
}
111111

112+
.merge-editor-simplified.input.i1, .merge-editor-block.use-simplified-decorations.input.i1 {
113+
background-color: var(--vscode-mergeEditor-conflict-input1-background);
114+
}
115+
116+
.merge-editor-simplified.input.i2, .merge-editor-block.use-simplified-decorations.input.i2 {
117+
background-color: var(--vscode-mergeEditor-conflict-input2-background);
118+
}
119+
112120
/* END: .merge-editor-block */
113121

114122
.gutter.monaco-editor>div {

0 commit comments

Comments
 (0)