mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 18:46:40 -05:00
Fix schema compare not always showing diff color highlighting (#21413)
* Fix schema compare not always showing diff color highlighting * move helper functions into diffEditorWidget.ts
This commit is contained in:
@@ -1,35 +0,0 @@
|
|||||||
/*---------------------------------------------------------------------------------------------
|
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
||||||
*--------------------------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
import { ILineChange } from 'vs/editor/common/diff/diffComputer';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Swaps the original and modified line changes
|
|
||||||
* @param lineChanges The line changes to be reversed
|
|
||||||
*/
|
|
||||||
export function reverseLineChanges(lineChanges: ILineChange[]): ILineChange[] {
|
|
||||||
let reversedLineChanges = lineChanges.map(linechange => {
|
|
||||||
return {
|
|
||||||
modifiedStartLineNumber: linechange.originalStartLineNumber,
|
|
||||||
modifiedEndLineNumber: linechange.originalEndLineNumber,
|
|
||||||
originalStartLineNumber: linechange.modifiedStartLineNumber,
|
|
||||||
originalEndLineNumber: linechange.modifiedEndLineNumber,
|
|
||||||
charChanges: (linechange.charChanges) ?
|
|
||||||
linechange.charChanges.map(charchange => {
|
|
||||||
return {
|
|
||||||
originalStartColumn: charchange.modifiedStartColumn,
|
|
||||||
originalEndColumn: charchange.modifiedEndColumn,
|
|
||||||
modifiedStartColumn: charchange.originalStartColumn,
|
|
||||||
modifiedEndColumn: charchange.originalEndColumn,
|
|
||||||
modifiedStartLineNumber: charchange.originalStartLineNumber,
|
|
||||||
modifiedEndLineNumber: charchange.originalEndLineNumber,
|
|
||||||
originalStartLineNumber: charchange.modifiedStartLineNumber,
|
|
||||||
originalEndLineNumber: charchange.modifiedEndLineNumber,
|
|
||||||
};
|
|
||||||
}) : undefined
|
|
||||||
};
|
|
||||||
});
|
|
||||||
return reversedLineChanges;
|
|
||||||
}
|
|
||||||
@@ -46,7 +46,6 @@ import { EditorExtensionsRegistry, IDiffEditorContributionDescription } from 'vs
|
|||||||
import { onUnexpectedError } from 'vs/base/common/errors';
|
import { onUnexpectedError } from 'vs/base/common/errors';
|
||||||
import { IEditorProgressService, IProgressRunner } from 'vs/platform/progress/common/progress';
|
import { IEditorProgressService, IProgressRunner } from 'vs/platform/progress/common/progress';
|
||||||
import { ElementSizeObserver } from 'vs/editor/browser/config/elementSizeObserver';
|
import { ElementSizeObserver } from 'vs/editor/browser/config/elementSizeObserver';
|
||||||
import { reverseLineChanges } from 'sql/editor/browser/diffEditorHelper'; // {{SQL CARBON EDIT}}
|
|
||||||
import { Codicon } from 'vs/base/common/codicons';
|
import { Codicon } from 'vs/base/common/codicons';
|
||||||
import { MOUSE_CURSOR_TEXT_CSS_CLASS_NAME } from 'vs/base/browser/ui/mouseCursor/mouseCursor';
|
import { MOUSE_CURSOR_TEXT_CSS_CLASS_NAME } from 'vs/base/browser/ui/mouseCursor/mouseCursor';
|
||||||
import { IViewLineTokens } from 'vs/editor/common/tokens/lineTokens';
|
import { IViewLineTokens } from 'vs/editor/common/tokens/lineTokens';
|
||||||
@@ -1397,19 +1396,17 @@ abstract class DiffEditorWidgetStyle extends Disposable {
|
|||||||
});
|
});
|
||||||
const zones = this._getViewZones(lineChanges, originalWhitespaces, modifiedWhitespaces, renderIndicators);
|
const zones = this._getViewZones(lineChanges, originalWhitespaces, modifiedWhitespaces, renderIndicators);
|
||||||
|
|
||||||
// {{SQL CARBON EDIT}}
|
|
||||||
if (reverse) {
|
|
||||||
lineChanges = reverseLineChanges(lineChanges);
|
|
||||||
[originalEditor, modifiedEditor] = [modifiedEditor, originalEditor];
|
|
||||||
}
|
|
||||||
|
|
||||||
// {{SQL CARBON EDIT}}
|
|
||||||
// Get decorations & overview ruler zones
|
// Get decorations & overview ruler zones
|
||||||
let originalDecorations = this._getOriginalEditorDecorations(zones, lineChanges, ignoreTrimWhitespace, renderIndicators);
|
let originalDecorations = this._getOriginalEditorDecorations(zones, lineChanges, ignoreTrimWhitespace, renderIndicators);
|
||||||
let modifiedDecorations = this._getModifiedEditorDecorations(zones, lineChanges, ignoreTrimWhitespace, renderIndicators);
|
let modifiedDecorations = this._getModifiedEditorDecorations(zones, lineChanges, ignoreTrimWhitespace, renderIndicators);
|
||||||
// {{SQL CARBON EDIT}}
|
|
||||||
|
// {{SQL CARBON EDIT}} - reverse decorations
|
||||||
if (reverse) {
|
if (reverse) {
|
||||||
[originalDecorations, modifiedDecorations] = [modifiedDecorations, originalDecorations];
|
reverseDecorations(originalDecorations.decorations);
|
||||||
|
reverseDecorations(modifiedDecorations.decorations);
|
||||||
|
|
||||||
|
originalDecorations.overviewZones = setOverviewZonesColor(originalDecorations.overviewZones, String(this._insertColor));
|
||||||
|
modifiedDecorations.overviewZones = setOverviewZonesColor(modifiedDecorations.overviewZones, String(this._removeColor));
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@@ -1799,6 +1796,68 @@ const DECORATIONS = {
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// {{SQL CARBON EDIT}} - helper function for reversing colors for schema compare
|
||||||
|
/**
|
||||||
|
* Reverses the decorations of the given array of decorations, so that deletes and inserts are swapped
|
||||||
|
* @param decorations
|
||||||
|
*/
|
||||||
|
function reverseDecorations(decorations: IModelDeltaDecoration[]): void {
|
||||||
|
for (let dec of decorations) {
|
||||||
|
switch (dec.options.description) {
|
||||||
|
case 'diff-editor-char-delete': {
|
||||||
|
dec.options = DECORATIONS.charInsert;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 'diff-editor-char-delete-whole-line': {
|
||||||
|
dec.options = DECORATIONS.charInsertWholeLine;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 'diff-editor-char-insert': {
|
||||||
|
dec.options = DECORATIONS.charDelete;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 'diff-editor-char-insert-whole-line': {
|
||||||
|
dec.options = DECORATIONS.charDeleteWholeLine;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 'diff-editor-line-insert': {
|
||||||
|
dec.options = DECORATIONS.lineDelete;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 'diff-editor-line-insert-with-sign': {
|
||||||
|
dec.options = DECORATIONS.lineDeleteWithSign;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 'diff-editor-line-delete': {
|
||||||
|
dec.options = DECORATIONS.lineInsert;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 'diff-editor-line-delete-with-sign': {
|
||||||
|
dec.options = DECORATIONS.lineInsertWithSign;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// {{SQL CARBON EDIT}} - helper function for reversing colors for schema compare
|
||||||
|
/**
|
||||||
|
* Sets the overview zones to the provided color
|
||||||
|
* @param zones Array of zones to update
|
||||||
|
* @param color Color to set the overview zones to
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
function setOverviewZonesColor(zones: OverviewRulerZone[], color: string): OverviewRulerZone[] {
|
||||||
|
let reversedZones = [];
|
||||||
|
|
||||||
|
for (const zone of zones) {
|
||||||
|
// There color of an overview zone is readonly, so create a new one with the updated color
|
||||||
|
reversedZones.push(new OverviewRulerZone(zone.startLineNumber, zone.endLineNumber, zone.heightInLines, color));
|
||||||
|
}
|
||||||
|
|
||||||
|
return reversedZones;
|
||||||
|
}
|
||||||
|
|
||||||
class DiffEditorWidgetSideBySide extends DiffEditorWidgetStyle implements IVerticalSashLayoutProvider {
|
class DiffEditorWidgetSideBySide extends DiffEditorWidgetStyle implements IVerticalSashLayoutProvider {
|
||||||
|
|
||||||
static readonly MINIMUM_EDITOR_WIDTH = 100;
|
static readonly MINIMUM_EDITOR_WIDTH = 100;
|
||||||
|
|||||||
Reference in New Issue
Block a user