mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-06 01:25:38 -05:00
Merge VS Code 1.23.1 (#1520)
This commit is contained in:
@@ -21,18 +21,20 @@ import { Configuration } from 'vs/editor/browser/config/configuration';
|
||||
import * as editorBrowser from 'vs/editor/browser/editorBrowser';
|
||||
import { View, IOverlayWidgetData, IContentWidgetData } from 'vs/editor/browser/view/viewImpl';
|
||||
import { Disposable, IDisposable } from 'vs/base/common/lifecycle';
|
||||
import Event, { Emitter } from 'vs/base/common/event';
|
||||
import { Event, Emitter } from 'vs/base/common/event';
|
||||
import { IKeyboardEvent } from 'vs/base/browser/keyboardEvent';
|
||||
import { InternalEditorAction } from 'vs/editor/common/editorAction';
|
||||
import { IEditorOptions } from 'vs/editor/common/config/editorOptions';
|
||||
import { IPosition } from 'vs/editor/common/core/position';
|
||||
import { IPosition, Position } from 'vs/editor/common/core/position';
|
||||
import { CoreEditorCommand } from 'vs/editor/browser/controller/coreCommands';
|
||||
import { IThemeService, registerThemingParticipant } from 'vs/platform/theme/common/themeService';
|
||||
import { editorErrorForeground, editorErrorBorder, editorWarningForeground, editorWarningBorder, editorInfoBorder, editorInfoForeground } from 'vs/editor/common/view/editorColorRegistry';
|
||||
import { editorErrorForeground, editorErrorBorder, editorWarningForeground, editorWarningBorder, editorInfoBorder, editorInfoForeground, editorHintForeground, editorHintBorder } from 'vs/editor/common/view/editorColorRegistry';
|
||||
import { Color } from 'vs/base/common/color';
|
||||
import { IMouseEvent } from 'vs/base/browser/mouseEvent';
|
||||
import { ClassName } from 'vs/editor/common/model/intervalTree';
|
||||
import { ITextModel, IModelDecorationOptions } from 'vs/editor/common/model';
|
||||
import { ICommandDelegate } from 'vs/editor/browser/view/viewController';
|
||||
import { INotificationService } from 'vs/platform/notification/common/notification';
|
||||
|
||||
export abstract class CodeEditorWidget extends CommonCodeEditor implements editorBrowser.ICodeEditor {
|
||||
|
||||
@@ -86,26 +88,22 @@ export abstract class CodeEditorWidget extends CommonCodeEditor implements edito
|
||||
constructor(
|
||||
domElement: HTMLElement,
|
||||
options: IEditorOptions,
|
||||
isSimpleWidget: boolean,
|
||||
@IInstantiationService instantiationService: IInstantiationService,
|
||||
@ICodeEditorService codeEditorService: ICodeEditorService,
|
||||
@ICommandService commandService: ICommandService,
|
||||
@IContextKeyService contextKeyService: IContextKeyService,
|
||||
@IThemeService themeService: IThemeService
|
||||
@IThemeService themeService: IThemeService,
|
||||
@INotificationService notificationService: INotificationService
|
||||
) {
|
||||
super(domElement, options, instantiationService, contextKeyService);
|
||||
super(domElement, options, isSimpleWidget, instantiationService, contextKeyService, notificationService);
|
||||
this._codeEditorService = codeEditorService;
|
||||
this._commandService = commandService;
|
||||
this._themeService = themeService;
|
||||
|
||||
this._focusTracker = new CodeEditorWidgetFocusTracker(domElement);
|
||||
this._focusTracker.onChange(() => {
|
||||
let hasFocus = this._focusTracker.hasFocus();
|
||||
|
||||
if (hasFocus) {
|
||||
this._onDidFocusEditor.fire();
|
||||
} else {
|
||||
this._onDidBlurEditor.fire();
|
||||
}
|
||||
this._editorFocus.setValue(this._focusTracker.hasFocus());
|
||||
});
|
||||
|
||||
this.contentWidgets = {};
|
||||
@@ -358,8 +356,62 @@ export abstract class CodeEditorWidget extends CommonCodeEditor implements edito
|
||||
}
|
||||
|
||||
protected _createView(): void {
|
||||
let commandDelegate: ICommandDelegate;
|
||||
if (this.isSimpleWidget) {
|
||||
commandDelegate = {
|
||||
paste: (source: string, text: string, pasteOnNewLine: boolean, multicursorText: string[]) => {
|
||||
this.cursor.trigger(source, editorCommon.Handler.Paste, { text, pasteOnNewLine, multicursorText });
|
||||
},
|
||||
type: (source: string, text: string) => {
|
||||
this.cursor.trigger(source, editorCommon.Handler.Type, { text });
|
||||
},
|
||||
replacePreviousChar: (source: string, text: string, replaceCharCnt: number) => {
|
||||
this.cursor.trigger(source, editorCommon.Handler.ReplacePreviousChar, { text, replaceCharCnt });
|
||||
},
|
||||
compositionStart: (source: string) => {
|
||||
this.cursor.trigger(source, editorCommon.Handler.CompositionStart, undefined);
|
||||
},
|
||||
compositionEnd: (source: string) => {
|
||||
this.cursor.trigger(source, editorCommon.Handler.CompositionEnd, undefined);
|
||||
},
|
||||
cut: (source: string) => {
|
||||
this.cursor.trigger(source, editorCommon.Handler.Cut, undefined);
|
||||
}
|
||||
};
|
||||
} else {
|
||||
commandDelegate = {
|
||||
paste: (source: string, text: string, pasteOnNewLine: boolean, multicursorText: string[]) => {
|
||||
this._commandService.executeCommand(editorCommon.Handler.Paste, {
|
||||
text: text,
|
||||
pasteOnNewLine: pasteOnNewLine,
|
||||
multicursorText: multicursorText
|
||||
});
|
||||
},
|
||||
type: (source: string, text: string) => {
|
||||
this._commandService.executeCommand(editorCommon.Handler.Type, {
|
||||
text: text
|
||||
});
|
||||
},
|
||||
replacePreviousChar: (source: string, text: string, replaceCharCnt: number) => {
|
||||
this._commandService.executeCommand(editorCommon.Handler.ReplacePreviousChar, {
|
||||
text: text,
|
||||
replaceCharCnt: replaceCharCnt
|
||||
});
|
||||
},
|
||||
compositionStart: (source: string) => {
|
||||
this._commandService.executeCommand(editorCommon.Handler.CompositionStart, {});
|
||||
},
|
||||
compositionEnd: (source: string) => {
|
||||
this._commandService.executeCommand(editorCommon.Handler.CompositionEnd, {});
|
||||
},
|
||||
cut: (source: string) => {
|
||||
this._commandService.executeCommand(editorCommon.Handler.Cut, {});
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
this._view = new View(
|
||||
this._commandService,
|
||||
commandDelegate,
|
||||
this._configuration,
|
||||
this._themeService,
|
||||
this.viewModel,
|
||||
@@ -375,13 +427,13 @@ export abstract class CodeEditorWidget extends CommonCodeEditor implements edito
|
||||
const viewEventBus = this._view.getInternalEventBus();
|
||||
|
||||
viewEventBus.onDidGainFocus = () => {
|
||||
this._onDidFocusEditorText.fire();
|
||||
this._editorTextFocus.setValue(true);
|
||||
// In IE, the focus is not synchronous, so we give it a little help
|
||||
this._onDidFocusEditor.fire();
|
||||
this._editorFocus.setValue(true);
|
||||
};
|
||||
|
||||
viewEventBus.onDidScroll = (e) => this._onDidScrollChange.fire(e);
|
||||
viewEventBus.onDidLoseFocus = () => this._onDidBlurEditorText.fire();
|
||||
viewEventBus.onDidLoseFocus = () => this._editorTextFocus.setValue(false);
|
||||
viewEventBus.onContextMenu = (e) => this._onContextMenu.fire(e);
|
||||
viewEventBus.onMouseDown = (e) => this._onMouseDown.fire(e);
|
||||
viewEventBus.onMouseUp = (e) => this._onMouseUp.fire(e);
|
||||
@@ -399,7 +451,12 @@ export abstract class CodeEditorWidget extends CommonCodeEditor implements edito
|
||||
return;
|
||||
}
|
||||
if (s && s.cursorState && s.viewState) {
|
||||
this._view.restoreState(this.viewModel.viewLayout.reduceRestoreState(s.viewState));
|
||||
const reducedState = this.viewModel.reduceRestoreState(s.viewState);
|
||||
const linesViewportData = this.viewModel.viewLayout.getLinesViewportDataAtScrollTop(reducedState.scrollTop);
|
||||
const startPosition = this.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new Position(linesViewportData.startLineNumber, 1));
|
||||
const endPosition = this.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new Position(linesViewportData.endLineNumber, 1));
|
||||
this.model.tokenizeViewport(startPosition.lineNumber, endPosition.lineNumber);
|
||||
this._view.restoreState(reducedState);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -455,8 +512,8 @@ class CodeEditorWidgetFocusTracker extends Disposable {
|
||||
private _hasFocus: boolean;
|
||||
private _domFocusTracker: dom.IFocusTracker;
|
||||
|
||||
private _onChange: Emitter<void> = this._register(new Emitter<void>());
|
||||
public onChange: Event<void> = this._onChange.event;
|
||||
private readonly _onChange: Emitter<void> = this._register(new Emitter<void>());
|
||||
public readonly onChange: Event<void> = this._onChange.event;
|
||||
|
||||
constructor(domElement: HTMLElement) {
|
||||
super();
|
||||
@@ -486,6 +543,13 @@ function getSquigglySVGData(color: Color) {
|
||||
return squigglyStart + encodeURIComponent(color.toString()) + squigglyEnd;
|
||||
}
|
||||
|
||||
const dotdotdotStart = encodeURIComponent(`<svg xmlns="http://www.w3.org/2000/svg" height="3" width="12"><g fill="`);
|
||||
const dotdotdotEnd = encodeURIComponent(`"><circle cx="1" cy="1" r="1"/><circle cx="5" cy="1" r="1"/><circle cx="9" cy="1" r="1"/></g></svg>`);
|
||||
|
||||
function getDotDotDotSVGData(color: Color) {
|
||||
return dotdotdotStart + encodeURIComponent(color.toString()) + dotdotdotEnd;
|
||||
}
|
||||
|
||||
registerThemingParticipant((theme, collector) => {
|
||||
let errorBorderColor = theme.getColor(editorErrorBorder);
|
||||
if (errorBorderColor) {
|
||||
@@ -513,4 +577,13 @@ registerThemingParticipant((theme, collector) => {
|
||||
if (infoForeground) {
|
||||
collector.addRule(`.monaco-editor .${ClassName.EditorInfoDecoration} { background: url("data:image/svg+xml;utf8,${getSquigglySVGData(infoForeground)}") repeat-x bottom left; }`);
|
||||
}
|
||||
|
||||
let hintBorderColor = theme.getColor(editorHintBorder);
|
||||
if (hintBorderColor) {
|
||||
collector.addRule(`.monaco-editor .${ClassName.EditorHintDecoration} { border-bottom: 2px dotted ${hintBorderColor}; }`);
|
||||
}
|
||||
let hintForeground = theme.getColor(editorHintForeground);
|
||||
if (hintForeground) {
|
||||
collector.addRule(`.monaco-editor .${ClassName.EditorHintDecoration} { background: url("data:image/svg+xml;utf8,${getDotDotDotSVGData(hintForeground)}") no-repeat bottom left; }`);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -27,10 +27,10 @@ import { LineTokens } from 'vs/editor/common/core/lineTokens';
|
||||
import { Configuration } from 'vs/editor/browser/config/configuration';
|
||||
import { Position, IPosition } from 'vs/editor/common/core/position';
|
||||
import { Selection, ISelection } from 'vs/editor/common/core/selection';
|
||||
import { InlineDecoration, InlineDecorationType } from 'vs/editor/common/viewModel/viewModel';
|
||||
import { InlineDecoration, InlineDecorationType, ViewLineRenderingData } from 'vs/editor/common/viewModel/viewModel';
|
||||
import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection';
|
||||
import { ColorId, MetadataConsts, FontStyle } from 'vs/editor/common/modes';
|
||||
import Event, { Emitter } from 'vs/base/common/event';
|
||||
import { Event, Emitter } from 'vs/base/common/event';
|
||||
import * as editorOptions from 'vs/editor/common/config/editorOptions';
|
||||
import { registerThemingParticipant, IThemeService, ITheme, getThemeTypeSelector } from 'vs/platform/theme/common/themeService';
|
||||
import { scrollbarShadow, diffInserted, diffRemoved, defaultInsertColor, defaultRemoveColor, diffInsertedOutline, diffRemovedOutline } from 'vs/platform/theme/common/colorRegistry';
|
||||
@@ -43,6 +43,7 @@ import URI from 'vs/base/common/uri';
|
||||
import { IStringBuilder, createStringBuilder } from 'vs/editor/common/core/stringBuilder';
|
||||
import { IModelDeltaDecoration, IModelDecorationsChangeAccessor, ITextModel } from 'vs/editor/common/model';
|
||||
import { INotificationService } from 'vs/platform/notification/common/notification';
|
||||
import { StableEditorScrollState } from 'vs/editor/browser/core/editorState';
|
||||
|
||||
interface IEditorDiffDecorations {
|
||||
decorations: IModelDeltaDecoration[];
|
||||
@@ -99,15 +100,13 @@ class VisualEditorState {
|
||||
this._zonesMap = {};
|
||||
|
||||
// (2) Model decorations
|
||||
if (this._decorations.length > 0) {
|
||||
editor.changeDecorations((changeAccessor: IModelDecorationsChangeAccessor) => {
|
||||
changeAccessor.deltaDecorations(this._decorations, []);
|
||||
});
|
||||
}
|
||||
this._decorations = [];
|
||||
this._decorations = editor.deltaDecorations(this._decorations, []);
|
||||
}
|
||||
|
||||
public apply(editor: CodeEditor, overviewRuler: editorBrowser.IOverviewRuler, newDecorations: IEditorDiffDecorationsWithZones): void {
|
||||
public apply(editor: CodeEditor, overviewRuler: editorBrowser.IOverviewRuler, newDecorations: IEditorDiffDecorationsWithZones, restoreScrollState: boolean): void {
|
||||
|
||||
const scrollState = restoreScrollState ? StableEditorScrollState.capture(editor) : null;
|
||||
|
||||
// view zones
|
||||
editor.changeViewZones((viewChangeAccessor: editorBrowser.IViewZoneChangeAccessor) => {
|
||||
for (let i = 0, length = this._zones.length; i < length; i++) {
|
||||
@@ -123,6 +122,10 @@ class VisualEditorState {
|
||||
}
|
||||
});
|
||||
|
||||
if (scrollState) {
|
||||
scrollState.restore(editor);
|
||||
}
|
||||
|
||||
// decorations
|
||||
this._decorations = editor.deltaDecorations(this._decorations, newDecorations.decorations);
|
||||
|
||||
@@ -284,13 +287,22 @@ export class DiffEditorWidget extends Disposable implements editorBrowser.IDiffE
|
||||
|
||||
this._lineChanges = null;
|
||||
|
||||
const services = new ServiceCollection();
|
||||
services.set(IContextKeyService, this._contextKeyService);
|
||||
const leftContextKeyService = this._contextKeyService.createScoped();
|
||||
leftContextKeyService.createKey('isInDiffLeftEditor', true);
|
||||
|
||||
const scopedInstantiationService = instantiationService.createChild(services);
|
||||
const leftServices = new ServiceCollection();
|
||||
leftServices.set(IContextKeyService, leftContextKeyService);
|
||||
const leftScopedInstantiationService = instantiationService.createChild(leftServices);
|
||||
|
||||
this._createLeftHandSideEditor(options, scopedInstantiationService);
|
||||
this._createRightHandSideEditor(options, scopedInstantiationService);
|
||||
const rightContextKeyService = this._contextKeyService.createScoped();
|
||||
rightContextKeyService.createKey('isInDiffRightEditor', true);
|
||||
|
||||
const rightServices = new ServiceCollection();
|
||||
rightServices.set(IContextKeyService, rightContextKeyService);
|
||||
const rightScopedInstantiationService = instantiationService.createChild(rightServices);
|
||||
|
||||
this._createLeftHandSideEditor(options, leftScopedInstantiationService);
|
||||
this._createRightHandSideEditor(options, rightScopedInstantiationService);
|
||||
|
||||
this._reviewPane = new DiffReview(this);
|
||||
this._containerDomElement.appendChild(this._reviewPane.domNode.domNode);
|
||||
@@ -912,8 +924,8 @@ export class DiffEditorWidget extends Disposable implements editorBrowser.IDiffE
|
||||
|
||||
try {
|
||||
this._currentlyChangingViewZones = true;
|
||||
this._originalEditorState.apply(this.originalEditor, this._originalOverviewRuler, diffDecorations.original);
|
||||
this._modifiedEditorState.apply(this.modifiedEditor, this._modifiedOverviewRuler, diffDecorations.modified);
|
||||
this._originalEditorState.apply(this.originalEditor, this._originalOverviewRuler, diffDecorations.original, false);
|
||||
this._modifiedEditorState.apply(this.modifiedEditor, this._modifiedOverviewRuler, diffDecorations.modified, true);
|
||||
} finally {
|
||||
this._currentlyChangingViewZones = false;
|
||||
}
|
||||
@@ -1989,10 +2001,13 @@ class InlineViewZonesComputer extends ViewZonesComputer {
|
||||
sb.appendASCIIString(String(count * config.lineHeight));
|
||||
sb.appendASCIIString('px;width:1000000px;">');
|
||||
|
||||
const isBasicASCII = ViewLineRenderingData.isBasicASCII(lineContent, originalModel.mightContainNonBasicASCII());
|
||||
const containsRTL = ViewLineRenderingData.containsRTL(lineContent, isBasicASCII, originalModel.mightContainRTL());
|
||||
renderViewLine(new RenderLineInput(
|
||||
(config.fontInfo.isMonospace && !config.viewInfo.disableMonospaceOptimizations),
|
||||
lineContent,
|
||||
originalModel.mightContainRTL(),
|
||||
isBasicASCII,
|
||||
containsRTL,
|
||||
0,
|
||||
lineTokens,
|
||||
actualDecorations,
|
||||
@@ -2023,27 +2038,31 @@ function createFakeLinesDiv(): HTMLElement {
|
||||
}
|
||||
|
||||
registerThemingParticipant((theme, collector) => {
|
||||
let added = theme.getColor(diffInserted);
|
||||
const added = theme.getColor(diffInserted);
|
||||
if (added) {
|
||||
collector.addRule(`.monaco-editor .line-insert, .monaco-editor .char-insert { background-color: ${added}; }`);
|
||||
collector.addRule(`.monaco-diff-editor .line-insert, .monaco-diff-editor .char-insert { background-color: ${added}; }`);
|
||||
collector.addRule(`.monaco-editor .inline-added-margin-view-zone { background-color: ${added}; }`);
|
||||
}
|
||||
let removed = theme.getColor(diffRemoved);
|
||||
|
||||
const removed = theme.getColor(diffRemoved);
|
||||
if (removed) {
|
||||
collector.addRule(`.monaco-editor .line-delete, .monaco-editor .char-delete { background-color: ${removed}; }`);
|
||||
collector.addRule(`.monaco-diff-editor .line-delete, .monaco-diff-editor .char-delete { background-color: ${removed}; }`);
|
||||
collector.addRule(`.monaco-editor .inline-deleted-margin-view-zone { background-color: ${removed}; }`);
|
||||
}
|
||||
let addedOutline = theme.getColor(diffInsertedOutline);
|
||||
|
||||
const addedOutline = theme.getColor(diffInsertedOutline);
|
||||
if (addedOutline) {
|
||||
collector.addRule(`.monaco-editor .line-insert, .monaco-editor .char-insert { border: 1px dashed ${addedOutline}; }`);
|
||||
collector.addRule(`.monaco-editor .line-insert, .monaco-editor .char-insert { border: 1px ${theme.type === 'hc' ? 'dashed' : 'solid'} ${addedOutline}; }`);
|
||||
}
|
||||
let removedOutline = theme.getColor(diffRemovedOutline);
|
||||
|
||||
const removedOutline = theme.getColor(diffRemovedOutline);
|
||||
if (removedOutline) {
|
||||
collector.addRule(`.monaco-editor .line-delete, .monaco-editor .char-delete { border: 1px dashed ${removedOutline}; }`);
|
||||
collector.addRule(`.monaco-editor .line-delete, .monaco-editor .char-delete { border: 1px ${theme.type === 'hc' ? 'dashed' : 'solid'} ${removedOutline}; }`);
|
||||
}
|
||||
let shadow = theme.getColor(scrollbarShadow);
|
||||
|
||||
const shadow = theme.getColor(scrollbarShadow);
|
||||
if (shadow) {
|
||||
collector.addRule(`.monaco-diff-editor.side-by-side .editor.modified { box-shadow: -6px 0 5px -5px ${shadow}; }`);
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ import { ILineChange, ScrollType } from 'vs/editor/common/editorCommon';
|
||||
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
|
||||
import { ICursorPositionChangedEvent } from 'vs/editor/common/controller/cursorEvents';
|
||||
import { IDiffEditor } from 'vs/editor/browser/editorBrowser';
|
||||
import Event, { Emitter } from 'vs/base/common/event';
|
||||
import { Event, Emitter } from 'vs/base/common/event';
|
||||
|
||||
|
||||
interface IDiffRange {
|
||||
|
||||
@@ -29,6 +29,7 @@ import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey';
|
||||
import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService';
|
||||
import { ICodeEditor } from 'vs/editor/browser/editorBrowser';
|
||||
import { ITextModel, TextModelResolvedOptions } from 'vs/editor/common/model';
|
||||
import { ViewLineRenderingData } from 'vs/editor/common/viewModel/viewModel';
|
||||
|
||||
const DIFF_LINES_PADDING = 3;
|
||||
|
||||
@@ -583,9 +584,34 @@ export class DiffReview extends Disposable {
|
||||
|
||||
let cell = document.createElement('div');
|
||||
cell.className = 'diff-review-cell diff-review-summary';
|
||||
cell.appendChild(document.createTextNode(`${diffIndex + 1}/${this._diffs.length}: @@ -${minOriginalLine},${maxOriginalLine - minOriginalLine + 1} +${minModifiedLine},${maxModifiedLine - minModifiedLine + 1} @@`));
|
||||
const originalChangedLinesCnt = maxOriginalLine - minOriginalLine + 1;
|
||||
const modifiedChangedLinesCnt = maxModifiedLine - minModifiedLine + 1;
|
||||
cell.appendChild(document.createTextNode(`${diffIndex + 1}/${this._diffs.length}: @@ -${minOriginalLine},${originalChangedLinesCnt} +${minModifiedLine},${modifiedChangedLinesCnt} @@`));
|
||||
header.setAttribute('data-line', String(minModifiedLine));
|
||||
header.setAttribute('aria-label', nls.localize('header', "Difference {0} of {1}: original {2}, {3} lines, modified {4}, {5} lines", (diffIndex + 1), this._diffs.length, minOriginalLine, maxOriginalLine - minOriginalLine + 1, minModifiedLine, maxModifiedLine - minModifiedLine + 1));
|
||||
|
||||
const getAriaLines = (lines: number) => {
|
||||
if (lines === 0) {
|
||||
return nls.localize('no_lines', "no lines");
|
||||
} else if (lines === 1) {
|
||||
return nls.localize('one_line', "1 line");
|
||||
} else {
|
||||
return nls.localize('more_lines', "{0} lines", lines);
|
||||
}
|
||||
};
|
||||
|
||||
const originalChangedLinesCntAria = getAriaLines(originalChangedLinesCnt);
|
||||
const modifiedChangedLinesCntAria = getAriaLines(modifiedChangedLinesCnt);
|
||||
header.setAttribute('aria-label', nls.localize({
|
||||
key: 'header',
|
||||
comment: [
|
||||
'This is the ARIA label for a git diff header.',
|
||||
'A git diff header looks like this: @@ -154,12 +159,39 @@.',
|
||||
'That encodes that at original line 154 (which is now line 159), 12 lines were removed/changed with 39 lines.',
|
||||
'Variables 0 and 1 refer to the diff index out of total number of diffs.',
|
||||
'Variables 2 and 4 will be numbers (a line number).',
|
||||
'Variables 3 and 5 will be "no lines", "1 line" or "X lines", localized separately.'
|
||||
]
|
||||
}, "Difference {0} of {1}: original {2}, {3}, modified {4}, {5}", (diffIndex + 1), this._diffs.length, minOriginalLine, originalChangedLinesCntAria, minModifiedLine, modifiedChangedLinesCntAria));
|
||||
header.appendChild(cell);
|
||||
|
||||
// @@ -504,7 +517,7 @@
|
||||
@@ -738,10 +764,13 @@ export class DiffReview extends Disposable {
|
||||
|
||||
const lineTokens = new LineTokens(tokens, lineContent);
|
||||
|
||||
const isBasicASCII = ViewLineRenderingData.isBasicASCII(lineContent, model.mightContainNonBasicASCII());
|
||||
const containsRTL = ViewLineRenderingData.containsRTL(lineContent, isBasicASCII, model.mightContainRTL());
|
||||
const r = renderViewLine(new RenderLineInput(
|
||||
(config.fontInfo.isMonospace && !config.viewInfo.disableMonospaceOptimizations),
|
||||
lineContent,
|
||||
model.mightContainRTL(),
|
||||
isBasicASCII,
|
||||
containsRTL,
|
||||
0,
|
||||
lineTokens,
|
||||
[],
|
||||
|
||||
@@ -30,9 +30,10 @@ export class EmbeddedCodeEditorWidget extends CodeEditor {
|
||||
@ICodeEditorService codeEditorService: ICodeEditorService,
|
||||
@ICommandService commandService: ICommandService,
|
||||
@IContextKeyService contextKeyService: IContextKeyService,
|
||||
@IThemeService themeService: IThemeService
|
||||
@IThemeService themeService: IThemeService,
|
||||
@INotificationService notificationService: INotificationService
|
||||
) {
|
||||
super(domElement, parentEditor.getRawConfiguration(), instantiationService, codeEditorService, commandService, contextKeyService, themeService);
|
||||
super(domElement, parentEditor.getRawConfiguration(), instantiationService, codeEditorService, commandService, contextKeyService, themeService, notificationService);
|
||||
|
||||
this._parentEditor = parentEditor;
|
||||
this._overwriteOptions = options;
|
||||
|
||||
Reference in New Issue
Block a user