Vscode merge (#4582)

* Merge from vscode 37cb23d3dd4f9433d56d4ba5ea3203580719a0bd

* fix issues with merges

* bump node version in azpipe

* replace license headers

* remove duplicate launch task

* fix build errors

* fix build errors

* fix tslint issues

* working through package and linux build issues

* more work

* wip

* fix packaged builds

* working through linux build errors

* wip

* wip

* wip

* fix mac and linux file limits

* iterate linux pipeline

* disable editor typing

* revert series to parallel

* remove optimize vscode from linux

* fix linting issues

* revert testing change

* add work round for new node

* readd packaging for extensions

* fix issue with angular not resolving decorator dependencies
This commit is contained in:
Anthony Dresser
2019-03-19 17:44:35 -07:00
committed by GitHub
parent 833d197412
commit 87765e8673
1879 changed files with 54505 additions and 38058 deletions

View File

@@ -14,6 +14,7 @@ import { RenderingContext, RestrictedRenderingContext } from 'vs/editor/common/v
import { ViewContext } from 'vs/editor/common/view/viewContext';
import * as viewEvents from 'vs/editor/common/view/viewEvents';
import { ViewportData } from 'vs/editor/common/viewLayout/viewLinesViewportData';
import { withUndefinedAsNull } from 'vs/base/common/types';
class Coordinate {
_coordinateBrand: void;
@@ -29,7 +30,7 @@ class Coordinate {
export class ViewContentWidgets extends ViewPart {
private _viewDomNode: FastDomNode<HTMLElement>;
private readonly _viewDomNode: FastDomNode<HTMLElement>;
private _widgets: { [key: string]: Widget; };
public domNode: FastDomNode<HTMLElement>;
@@ -59,7 +60,7 @@ export class ViewContentWidgets extends ViewPart {
// --- begin event handlers
public onConfigurationChanged(e: viewEvents.ViewConfigurationChangedEvent): boolean {
let keys = Object.keys(this._widgets);
const keys = Object.keys(this._widgets);
for (const widgetId of keys) {
this._widgets[widgetId].onConfigurationChanged(e);
}
@@ -73,7 +74,7 @@ export class ViewContentWidgets extends ViewPart {
return true;
}
public onLineMappingChanged(e: viewEvents.ViewLineMappingChangedEvent): boolean {
let keys = Object.keys(this._widgets);
const keys = Object.keys(this._widgets);
for (const widgetId of keys) {
this._widgets[widgetId].onLineMappingChanged(e);
}
@@ -139,21 +140,21 @@ export class ViewContentWidgets extends ViewPart {
}
public onBeforeRender(viewportData: ViewportData): void {
let keys = Object.keys(this._widgets);
const keys = Object.keys(this._widgets);
for (const widgetId of keys) {
this._widgets[widgetId].onBeforeRender(viewportData);
}
}
public prepareRender(ctx: RenderingContext): void {
let keys = Object.keys(this._widgets);
const keys = Object.keys(this._widgets);
for (const widgetId of keys) {
this._widgets[widgetId].prepareRender(ctx);
}
}
public render(ctx: RestrictedRenderingContext): void {
let keys = Object.keys(this._widgets);
const keys = Object.keys(this._widgets);
for (const widgetId of keys) {
this._widgets[widgetId].render(ctx);
}
@@ -180,7 +181,7 @@ class Widget {
public readonly allowEditorOverflow: boolean;
public readonly suppressMouseDown: boolean;
private _fixedOverflowWidgets: boolean;
private readonly _fixedOverflowWidgets: boolean;
private _contentWidth: number;
private _contentLeft: number;
private _lineHeight: number;
@@ -242,8 +243,8 @@ class Widget {
}
private _setPosition(position: IPosition | null | undefined, range: IRange | null | undefined): void {
this._position = position || null;
this._range = range || null;
this._position = withUndefinedAsNull(position);
this._range = withUndefinedAsNull(range);
this._viewPosition = null;
this._viewRange = null;
@@ -280,17 +281,17 @@ class Widget {
// Our visible box is split horizontally by the current line => 2 boxes
// a) the box above the line
let aboveLineTop = topLeft.top;
let heightAboveLine = aboveLineTop;
const aboveLineTop = topLeft.top;
const heightAboveLine = aboveLineTop;
// b) the box under the line
let underLineTop = bottomLeft.top + this._lineHeight;
let heightUnderLine = ctx.viewportHeight - underLineTop;
const underLineTop = bottomLeft.top + this._lineHeight;
const heightUnderLine = ctx.viewportHeight - underLineTop;
let aboveTop = aboveLineTop - height;
let fitsAbove = (heightAboveLine >= height);
let belowTop = underLineTop;
let fitsBelow = (heightUnderLine >= height);
const aboveTop = aboveLineTop - height;
const fitsAbove = (heightAboveLine >= height);
const belowTop = underLineTop;
const fitsBelow = (heightUnderLine >= height);
// And its left
let actualAboveLeft = topLeft.left;
@@ -320,8 +321,8 @@ class Widget {
}
private _layoutBoxInPage(topLeft: Coordinate, bottomLeft: Coordinate, width: number, height: number, ctx: RenderingContext): IBoxLayoutResult | null {
let aboveLeft0 = topLeft.left - ctx.scrollLeft;
let belowLeft0 = bottomLeft.left - ctx.scrollLeft;
const aboveLeft0 = topLeft.left - ctx.scrollLeft;
const belowLeft0 = bottomLeft.left - ctx.scrollLeft;
if (aboveLeft0 < 0 || aboveLeft0 > this._contentWidth) {
// Don't render if position is scrolled outside viewport
@@ -333,39 +334,39 @@ class Widget {
let aboveLeft = aboveLeft0 + this._contentLeft;
let belowLeft = belowLeft0 + this._contentLeft;
let domNodePosition = dom.getDomNodePagePosition(this._viewDomNode.domNode);
let absoluteAboveTop = domNodePosition.top + aboveTop - dom.StandardWindow.scrollY;
let absoluteBelowTop = domNodePosition.top + belowTop - dom.StandardWindow.scrollY;
const domNodePosition = dom.getDomNodePagePosition(this._viewDomNode.domNode);
const absoluteAboveTop = domNodePosition.top + aboveTop - dom.StandardWindow.scrollY;
const absoluteBelowTop = domNodePosition.top + belowTop - dom.StandardWindow.scrollY;
let absoluteAboveLeft = domNodePosition.left + aboveLeft - dom.StandardWindow.scrollX;
let absoluteBelowLeft = domNodePosition.left + belowLeft - dom.StandardWindow.scrollX;
let INNER_WIDTH = window.innerWidth || document.documentElement!.clientWidth || document.body.clientWidth;
let INNER_HEIGHT = window.innerHeight || document.documentElement!.clientHeight || document.body.clientHeight;
const INNER_WIDTH = window.innerWidth || document.documentElement!.clientWidth || document.body.clientWidth;
const INNER_HEIGHT = window.innerHeight || document.documentElement!.clientHeight || document.body.clientHeight;
// Leave some clearance to the bottom
let TOP_PADDING = 22;
let BOTTOM_PADDING = 22;
const TOP_PADDING = 22;
const BOTTOM_PADDING = 22;
let fitsAbove = (absoluteAboveTop >= TOP_PADDING),
const fitsAbove = (absoluteAboveTop >= TOP_PADDING),
fitsBelow = (absoluteBelowTop + height <= INNER_HEIGHT - BOTTOM_PADDING);
if (absoluteAboveLeft + width + 20 > INNER_WIDTH) {
let delta = absoluteAboveLeft - (INNER_WIDTH - width - 20);
const delta = absoluteAboveLeft - (INNER_WIDTH - width - 20);
absoluteAboveLeft -= delta;
aboveLeft -= delta;
}
if (absoluteBelowLeft + width + 20 > INNER_WIDTH) {
let delta = absoluteBelowLeft - (INNER_WIDTH - width - 20);
const delta = absoluteBelowLeft - (INNER_WIDTH - width - 20);
absoluteBelowLeft -= delta;
belowLeft -= delta;
}
if (absoluteAboveLeft < 0) {
let delta = absoluteAboveLeft;
const delta = absoluteAboveLeft;
absoluteAboveLeft -= delta;
aboveLeft -= delta;
}
if (absoluteBelowLeft < 0) {
let delta = absoluteBelowLeft;
const delta = absoluteBelowLeft;
absoluteBelowLeft -= delta;
belowLeft -= delta;
}

View File

@@ -12,7 +12,7 @@ import * as viewEvents from 'vs/editor/common/view/viewEvents';
import { registerThemingParticipant } from 'vs/platform/theme/common/themeService';
export class CurrentLineHighlightOverlay extends DynamicViewOverlay {
private _context: ViewContext;
private readonly _context: ViewContext;
private _lineHeight: number;
private _renderLineHighlight: 'none' | 'gutter' | 'line' | 'all';
private _selectionIsEmpty: boolean;

View File

@@ -12,7 +12,7 @@ import * as viewEvents from 'vs/editor/common/view/viewEvents';
import { registerThemingParticipant } from 'vs/platform/theme/common/themeService';
export class CurrentLineMarginHighlightOverlay extends DynamicViewOverlay {
private _context: ViewContext;
private readonly _context: ViewContext;
private _lineHeight: number;
private _renderLineHighlight: 'none' | 'gutter' | 'line' | 'all';
private _selectionIsEmpty: boolean;

View File

@@ -13,7 +13,7 @@ import { ViewModelDecoration } from 'vs/editor/common/viewModel/viewModel';
export class DecorationsOverlay extends DynamicViewOverlay {
private _context: ViewContext;
private readonly _context: ViewContext;
private _lineHeight: number;
private _typicalHalfwidthCharacterWidth: number;
private _renderResult: string[] | null;
@@ -69,12 +69,12 @@ export class DecorationsOverlay extends DynamicViewOverlay {
// --- end event handlers
public prepareRender(ctx: RenderingContext): void {
let _decorations = ctx.getDecorationsInViewport();
const _decorations = ctx.getDecorationsInViewport();
// Keep only decorations with `className`
let decorations: ViewModelDecoration[] = [], decorationsLen = 0;
for (let i = 0, len = _decorations.length; i < len; i++) {
let d = _decorations[i];
const d = _decorations[i];
if (d.options.className) {
decorations[decorationsLen++] = d;
}
@@ -101,11 +101,11 @@ export class DecorationsOverlay extends DynamicViewOverlay {
return Range.compareRangesUsingStarts(a.range, b.range);
});
let visibleStartLineNumber = ctx.visibleRange.startLineNumber;
let visibleEndLineNumber = ctx.visibleRange.endLineNumber;
let output: string[] = [];
const visibleStartLineNumber = ctx.visibleRange.startLineNumber;
const visibleEndLineNumber = ctx.visibleRange.endLineNumber;
const output: string[] = [];
for (let lineNumber = visibleStartLineNumber; lineNumber <= visibleEndLineNumber; lineNumber++) {
let lineIndex = lineNumber - visibleStartLineNumber;
const lineIndex = lineNumber - visibleStartLineNumber;
output[lineIndex] = '';
}
@@ -116,18 +116,18 @@ export class DecorationsOverlay extends DynamicViewOverlay {
}
private _renderWholeLineDecorations(ctx: RenderingContext, decorations: ViewModelDecoration[], output: string[]): void {
let lineHeight = String(this._lineHeight);
let visibleStartLineNumber = ctx.visibleRange.startLineNumber;
let visibleEndLineNumber = ctx.visibleRange.endLineNumber;
const lineHeight = String(this._lineHeight);
const visibleStartLineNumber = ctx.visibleRange.startLineNumber;
const visibleEndLineNumber = ctx.visibleRange.endLineNumber;
for (let i = 0, lenI = decorations.length; i < lenI; i++) {
let d = decorations[i];
const d = decorations[i];
if (!d.options.isWholeLine) {
continue;
}
let decorationOutput = (
const decorationOutput = (
'<div class="cdr '
+ d.options.className
+ '" style="left:0;width:100%;height:'
@@ -135,10 +135,10 @@ export class DecorationsOverlay extends DynamicViewOverlay {
+ 'px;"></div>'
);
let startLineNumber = Math.max(d.range.startLineNumber, visibleStartLineNumber);
let endLineNumber = Math.min(d.range.endLineNumber, visibleEndLineNumber);
const startLineNumber = Math.max(d.range.startLineNumber, visibleStartLineNumber);
const endLineNumber = Math.min(d.range.endLineNumber, visibleEndLineNumber);
for (let j = startLineNumber; j <= endLineNumber; j++) {
let lineIndex = j - visibleStartLineNumber;
const lineIndex = j - visibleStartLineNumber;
output[lineIndex] += decorationOutput;
}
}
@@ -189,13 +189,13 @@ export class DecorationsOverlay extends DynamicViewOverlay {
}
private _renderNormalDecoration(ctx: RenderingContext, range: Range, className: string, showIfCollapsed: boolean, lineHeight: string, visibleStartLineNumber: number, output: string[]): void {
let linesVisibleRanges = ctx.linesVisibleRangesForRange(range, /*TODO@Alex*/className === 'findMatch');
const linesVisibleRanges = ctx.linesVisibleRangesForRange(range, /*TODO@Alex*/className === 'findMatch');
if (!linesVisibleRanges) {
return;
}
for (let j = 0, lenJ = linesVisibleRanges.length; j < lenJ; j++) {
let lineVisibleRanges = linesVisibleRanges[j];
const lineVisibleRanges = linesVisibleRanges[j];
const lineIndex = lineVisibleRanges.lineNumber - visibleStartLineNumber;
if (showIfCollapsed && lineVisibleRanges.ranges.length === 1) {
@@ -228,7 +228,7 @@ export class DecorationsOverlay extends DynamicViewOverlay {
if (!this._renderResult) {
return '';
}
let lineIndex = lineNumber - startLineNumber;
const lineIndex = lineNumber - startLineNumber;
if (lineIndex < 0 || lineIndex >= this._renderResult.length) {
return '';
}

View File

@@ -17,8 +17,8 @@ import { getThemeTypeSelector } from 'vs/platform/theme/common/themeService';
export class EditorScrollbar extends ViewPart {
private scrollbar: SmoothScrollableElement;
private scrollbarDomNode: FastDomNode<HTMLElement>;
private readonly scrollbar: SmoothScrollableElement;
private readonly scrollbarDomNode: FastDomNode<HTMLElement>;
constructor(
context: ViewContext,
@@ -31,7 +31,7 @@ export class EditorScrollbar extends ViewPart {
const editor = this._context.configuration.editor;
const configScrollbarOpts = editor.viewInfo.scrollbar;
let scrollbarOptions: ScrollableElementCreationOptions = {
const scrollbarOptions: ScrollableElementCreationOptions = {
listenOnDomNode: viewDomNode.domNode,
className: 'editor-scrollable' + ' ' + getThemeTypeSelector(context.theme.type),
useShadows: false,
@@ -62,11 +62,11 @@ export class EditorScrollbar extends ViewPart {
// the browser will try desperately to reveal that dom node, unexpectedly
// changing the .scrollTop of this.linesContent
let onBrowserDesperateReveal = (domNode: HTMLElement, lookAtScrollTop: boolean, lookAtScrollLeft: boolean) => {
let newScrollPosition: INewScrollPosition = {};
const onBrowserDesperateReveal = (domNode: HTMLElement, lookAtScrollTop: boolean, lookAtScrollLeft: boolean) => {
const newScrollPosition: INewScrollPosition = {};
if (lookAtScrollTop) {
let deltaTop = domNode.scrollTop;
const deltaTop = domNode.scrollTop;
if (deltaTop) {
newScrollPosition.scrollTop = this._context.viewLayout.getCurrentScrollTop() + deltaTop;
domNode.scrollTop = 0;
@@ -74,7 +74,7 @@ export class EditorScrollbar extends ViewPart {
}
if (lookAtScrollLeft) {
let deltaLeft = domNode.scrollLeft;
const deltaLeft = domNode.scrollLeft;
if (deltaLeft) {
newScrollPosition.scrollLeft = this._context.viewLayout.getCurrentScrollLeft() + deltaLeft;
domNode.scrollLeft = 0;
@@ -126,7 +126,7 @@ export class EditorScrollbar extends ViewPart {
public onConfigurationChanged(e: viewEvents.ViewConfigurationChangedEvent): boolean {
if (e.viewInfo) {
const editor = this._context.configuration.editor;
let newOpts: ScrollableElementChangeOptions = {
const newOpts: ScrollableElementChangeOptions = {
handleMouseWheel: editor.viewInfo.scrollbar.handleMouseWheel,
mouseWheelScrollSensitivity: editor.viewInfo.scrollbar.mouseWheelScrollSensitivity,
fastScrollSensitivity: editor.viewInfo.scrollbar.fastScrollSensitivity

View File

@@ -27,9 +27,9 @@ export abstract class DedupOverlay extends DynamicViewOverlay {
protected _render(visibleStartLineNumber: number, visibleEndLineNumber: number, decorations: DecorationToRender[]): string[][] {
let output: string[][] = [];
const output: string[][] = [];
for (let lineNumber = visibleStartLineNumber; lineNumber <= visibleEndLineNumber; lineNumber++) {
let lineIndex = lineNumber - visibleStartLineNumber;
const lineIndex = lineNumber - visibleStartLineNumber;
output[lineIndex] = [];
}
@@ -50,10 +50,10 @@ export abstract class DedupOverlay extends DynamicViewOverlay {
let prevClassName: string | null = null;
let prevEndLineIndex = 0;
for (let i = 0, len = decorations.length; i < len; i++) {
let d = decorations[i];
let className = d.className;
const d = decorations[i];
const className = d.className;
let startLineIndex = Math.max(d.startLineNumber, visibleStartLineNumber) - visibleStartLineNumber;
let endLineIndex = Math.min(d.endLineNumber, visibleEndLineNumber) - visibleStartLineNumber;
const endLineIndex = Math.min(d.endLineNumber, visibleEndLineNumber) - visibleStartLineNumber;
if (prevClassName === className) {
startLineIndex = Math.max(prevEndLineIndex + 1, startLineIndex);
@@ -74,7 +74,7 @@ export abstract class DedupOverlay extends DynamicViewOverlay {
export class GlyphMarginOverlay extends DedupOverlay {
private _context: ViewContext;
private readonly _context: ViewContext;
private _lineHeight: number;
private _glyphMargin: boolean;
private _glyphMarginLeft: number;
@@ -138,11 +138,11 @@ export class GlyphMarginOverlay extends DedupOverlay {
// --- end event handlers
protected _getDecorations(ctx: RenderingContext): DecorationToRender[] {
let decorations = ctx.getDecorationsInViewport();
const decorations = ctx.getDecorationsInViewport();
let r: DecorationToRender[] = [], rLen = 0;
for (let i = 0, len = decorations.length; i < len; i++) {
let d = decorations[i];
let glyphMarginClassName = d.options.glyphMarginClassName;
const d = decorations[i];
const glyphMarginClassName = d.options.glyphMarginClassName;
if (glyphMarginClassName) {
r[rLen++] = new DecorationToRender(d.range.startLineNumber, d.range.endLineNumber, glyphMarginClassName);
}
@@ -156,19 +156,19 @@ export class GlyphMarginOverlay extends DedupOverlay {
return;
}
let visibleStartLineNumber = ctx.visibleRange.startLineNumber;
let visibleEndLineNumber = ctx.visibleRange.endLineNumber;
let toRender = this._render(visibleStartLineNumber, visibleEndLineNumber, this._getDecorations(ctx));
const visibleStartLineNumber = ctx.visibleRange.startLineNumber;
const visibleEndLineNumber = ctx.visibleRange.endLineNumber;
const toRender = this._render(visibleStartLineNumber, visibleEndLineNumber, this._getDecorations(ctx));
let lineHeight = this._lineHeight.toString();
let left = this._glyphMarginLeft.toString();
let width = this._glyphMarginWidth.toString();
let common = '" style="left:' + left + 'px;width:' + width + 'px' + ';height:' + lineHeight + 'px;"></div>';
const lineHeight = this._lineHeight.toString();
const left = this._glyphMarginLeft.toString();
const width = this._glyphMarginWidth.toString();
const common = '" style="left:' + left + 'px;width:' + width + 'px' + ';height:' + lineHeight + 'px;"></div>';
let output: string[] = [];
const output: string[] = [];
for (let lineNumber = visibleStartLineNumber; lineNumber <= visibleEndLineNumber; lineNumber++) {
let lineIndex = lineNumber - visibleStartLineNumber;
let classNames = toRender[lineIndex];
const lineIndex = lineNumber - visibleStartLineNumber;
const classNames = toRender[lineIndex];
if (classNames.length === 0) {
output[lineIndex] = '';
@@ -188,7 +188,7 @@ export class GlyphMarginOverlay extends DedupOverlay {
if (!this._renderResult) {
return '';
}
let lineIndex = lineNumber - startLineNumber;
const lineIndex = lineNumber - startLineNumber;
if (lineIndex < 0 || lineIndex >= this._renderResult.length) {
return '';
}

View File

@@ -14,7 +14,7 @@ import { registerThemingParticipant } from 'vs/platform/theme/common/themeServic
export class IndentGuidesOverlay extends DynamicViewOverlay {
private _context: ViewContext;
private readonly _context: ViewContext;
private _primaryLineNumber: number;
private _lineHeight: number;
private _spaceWidth: number;
@@ -103,11 +103,10 @@ export class IndentGuidesOverlay extends DynamicViewOverlay {
const visibleStartLineNumber = ctx.visibleRange.startLineNumber;
const visibleEndLineNumber = ctx.visibleRange.endLineNumber;
const tabSize = this._context.model.getTabSize();
const tabWidth = tabSize * this._spaceWidth;
const { indentSize } = this._context.model.getOptions();
const indentWidth = indentSize * this._spaceWidth;
const scrollWidth = ctx.scrollWidth;
const lineHeight = this._lineHeight;
const indentGuideWidth = tabWidth;
const indents = this._context.model.getLinesIndentGuides(visibleStartLineNumber, visibleEndLineNumber);
@@ -121,19 +120,19 @@ export class IndentGuidesOverlay extends DynamicViewOverlay {
activeIndentLevel = activeIndentInfo.indent;
}
let output: string[] = [];
const output: string[] = [];
for (let lineNumber = visibleStartLineNumber; lineNumber <= visibleEndLineNumber; lineNumber++) {
const containsActiveIndentGuide = (activeIndentStartLineNumber <= lineNumber && lineNumber <= activeIndentEndLineNumber);
const lineIndex = lineNumber - visibleStartLineNumber;
const indent = indents[lineIndex];
let result = '';
let leftMostVisiblePosition = ctx.visibleRangeForPosition(new Position(lineNumber, 1));
const leftMostVisiblePosition = ctx.visibleRangeForPosition(new Position(lineNumber, 1));
let left = leftMostVisiblePosition ? leftMostVisiblePosition.left : 0;
for (let i = 1; i <= indent; i++) {
let className = (containsActiveIndentGuide && i === activeIndentLevel ? 'cigra' : 'cigr');
result += `<div class="${className}" style="left:${left}px;height:${lineHeight}px;width:${indentGuideWidth}px"></div>`;
left += tabWidth;
const className = (containsActiveIndentGuide && i === activeIndentLevel ? 'cigra' : 'cigr');
result += `<div class="${className}" style="left:${left}px;height:${lineHeight}px;width:${indentWidth}px"></div>`;
left += indentWidth;
if (left > scrollWidth) {
break;
}
@@ -148,7 +147,7 @@ export class IndentGuidesOverlay extends DynamicViewOverlay {
if (!this._renderResult) {
return '';
}
let lineIndex = lineNumber - startLineNumber;
const lineIndex = lineNumber - startLineNumber;
if (lineIndex < 0 || lineIndex >= this._renderResult.length) {
return '';
}

View File

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="30" height="42" viewBox="0 0 30 42" style="enable-background:new 0 0 30 42;"><polygon style="fill:#FFFFFF;stroke:#000000;stroke-width:2;" points="29,2.4 3.8,27.6 14.3,27.6 9,38.1 15.4,40.2 20.6,29.7 29,36"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="30" height="50" viewBox="0 0 30 50" style="enable-background:new 0 0 30 50;"><polygon style="fill:#FFFFFF;stroke:#000000;stroke-width:2;" points="29,2.4 3.8,27.6 14,27.6 6.4,43 12.6,45 20.2,29.8 29,36"/></svg>

Before

Width:  |  Height:  |  Size: 277 B

After

Width:  |  Height:  |  Size: 273 B

View File

@@ -1 +1,2 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="36" viewBox="0 0 24 36.1"><defs><style>.a{fill:#fff;}</style></defs><title>flipped-cursor-mac-2x</title><polygon points="8.6 33.1 11.8 23.9 2.2 23.9 23 2.5 23 31.3 17.4 26.1 14.2 35.1 8.6 33.1"/><path class="a" d="M22,29.1l-5-4.6-3.062,8.938-4.062-1.5L13,23H5L22,5M0,25H10.4l-3,8.3L15,36.1l3.125-7.662L24,33V0Z"/></svg>
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 26 38" style="enable-background:new 0 0 26 38;" width="26" height="38"><style type="text/css">.st0{stroke:#FFFFFF;stroke-miterlimit:10;}</style> <title>flipped-cursor-mac</title><path class="st0" d="M10.6,33.2l3.2-9.4H4.2L25,2.4v28.8L19.4,26l-3.2,9.2c-0.4,1-1.6,1.6-2.6,1.2L12,35.8 C10.8,35.4,10.2,34.4,10.6,33.2z"/></svg>

Before

Width:  |  Height:  |  Size: 378 B

After

Width:  |  Height:  |  Size: 447 B

View File

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="18" viewBox="0 0 12 18"><style>.st0{fill:#fff}</style><title>flipped-cursor-mac</title><path d="M4.3 16.5l1.6-4.6H1.1L11.5 1.2v14.4L8.7 13l-1.6 4.5z"/><path class="st0" d="M11 14.5l-2.5-2.3L7 16.7 5 16l1.6-4.5h-4l8.5-9M0 12.5h5.2l-1.5 4.1L7.5 18 9 14.2l2.9 2.3V0L0 12.5z"/></svg>
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 13 19" style="enable-background:new 0 0 13 19;" width="13" height="19"><style type="text/css">.st0{stroke:#FFFFFF;stroke-miterlimit:10;}</style><title>flipped-cursor-mac</title><path class="st0" d="M5.3,16.6l1.6-4.7H2.1L12.5,1.2v14.4L9.7,13l-1.6,4.6c-0.2,0.5-0.8,0.8-1.3,0.6L6,17.9 C5.4,17.7,5.1,17.2,5.3,16.6z"/></svg>

Before

Width:  |  Height:  |  Size: 338 B

After

Width:  |  Height:  |  Size: 443 B

View File

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="15" height="21" x="0px" y="0px" viewBox="0 0 15 21" style="enable-background:new 0 0 15 21;"><polygon style="fill:#FFFFFF;stroke:#000000" points="14.5,1.2 1.9,13.8 7.1,13.8 4.5,19.1 7.7,20.1 10.3,14.9 14.5,18"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="15" height="25" x="0px" y="0px" viewBox="0 0 15 25" style="enable-background:new 0 0 15 25;"><polygon style="fill:#FFFFFF;stroke:#000000" points="14.5,1.2 1.9,13.8 7,13.8 3.2,21.5 6.3,22.5 10.1,14.9 14.5,18"/></svg>

Before

Width:  |  Height:  |  Size: 264 B

After

Width:  |  Height:  |  Size: 262 B

View File

@@ -18,11 +18,12 @@ export class LineNumbersOverlay extends DynamicViewOverlay {
public static readonly CLASS_NAME = 'line-numbers';
private _context: ViewContext;
private readonly _context: ViewContext;
private _lineHeight: number;
private _renderLineNumbers: RenderLineNumbersType;
private _renderCustomLineNumbers: ((lineNumber: number) => string) | null;
private _renderFinalNewline: boolean;
private _lineNumbersLeft: number;
private _lineNumbersWidth: number;
private _lastCursorModelPosition: Position;
@@ -44,6 +45,7 @@ export class LineNumbersOverlay extends DynamicViewOverlay {
this._lineHeight = config.lineHeight;
this._renderLineNumbers = config.viewInfo.renderLineNumbers;
this._renderCustomLineNumbers = config.viewInfo.renderCustomLineNumbers;
this._renderFinalNewline = config.viewInfo.renderFinalNewline;
this._lineNumbersLeft = config.layoutInfo.lineNumbersLeft;
this._lineNumbersWidth = config.layoutInfo.lineNumbersWidth;
}
@@ -95,14 +97,23 @@ export class LineNumbersOverlay extends DynamicViewOverlay {
if (modelPosition.column !== 1) {
return '';
}
let modelLineNumber = modelPosition.lineNumber;
const modelLineNumber = modelPosition.lineNumber;
if (!this._renderFinalNewline) {
const lineCount = this._context.model.getLineCount();
const lineContent = this._context.model.getLineContent(modelLineNumber);
if (modelLineNumber === lineCount && lineContent === '') {
return '';
}
}
if (this._renderCustomLineNumbers) {
return this._renderCustomLineNumbers(modelLineNumber);
}
if (this._renderLineNumbers === RenderLineNumbersType.Relative) {
let diff = Math.abs(this._lastCursorModelPosition.lineNumber - modelLineNumber);
const diff = Math.abs(this._lastCursorModelPosition.lineNumber - modelLineNumber);
if (diff === 0) {
return '<span class="relative-current-line-number">' + modelLineNumber + '</span>';
}
@@ -128,16 +139,16 @@ export class LineNumbersOverlay extends DynamicViewOverlay {
return;
}
let lineHeightClassName = (platform.isLinux ? (this._lineHeight % 2 === 0 ? ' lh-even' : ' lh-odd') : '');
let visibleStartLineNumber = ctx.visibleRange.startLineNumber;
let visibleEndLineNumber = ctx.visibleRange.endLineNumber;
let common = '<div class="' + LineNumbersOverlay.CLASS_NAME + lineHeightClassName + '" style="left:' + this._lineNumbersLeft.toString() + 'px;width:' + this._lineNumbersWidth.toString() + 'px;">';
const lineHeightClassName = (platform.isLinux ? (this._lineHeight % 2 === 0 ? ' lh-even' : ' lh-odd') : '');
const visibleStartLineNumber = ctx.visibleRange.startLineNumber;
const visibleEndLineNumber = ctx.visibleRange.endLineNumber;
const common = '<div class="' + LineNumbersOverlay.CLASS_NAME + lineHeightClassName + '" style="left:' + this._lineNumbersLeft.toString() + 'px;width:' + this._lineNumbersWidth.toString() + 'px;">';
let output: string[] = [];
const output: string[] = [];
for (let lineNumber = visibleStartLineNumber; lineNumber <= visibleEndLineNumber; lineNumber++) {
let lineIndex = lineNumber - visibleStartLineNumber;
const lineIndex = lineNumber - visibleStartLineNumber;
let renderLineNumber = this._getLineRenderLineNumber(lineNumber);
const renderLineNumber = this._getLineRenderLineNumber(lineNumber);
if (renderLineNumber) {
output[lineIndex] = (
@@ -157,7 +168,7 @@ export class LineNumbersOverlay extends DynamicViewOverlay {
if (!this._renderResult) {
return '';
}
let lineIndex = lineNumber - startLineNumber;
const lineIndex = lineNumber - startLineNumber;
if (lineIndex < 0 || lineIndex >= this._renderResult.length) {
return '';
}

View File

@@ -49,7 +49,7 @@ export class RangeUtil {
}
private static _readClientRects(startElement: Node, startOffset: number, endElement: Node, endOffset: number, endNode: HTMLElement): ClientRectList | DOMRectList | null {
let range = this._createRange();
const range = this._createRange();
try {
range.setStart(startElement, startOffset);
range.setEnd(endElement, endOffset);
@@ -102,7 +102,7 @@ export class RangeUtil {
// We go through FloatHorizontalRange because it has been observed in bi-di text
// that the clientRects are not coming in sorted from the browser
let result: FloatHorizontalRange[] = [];
const result: FloatHorizontalRange[] = [];
for (let i = 0, len = clientRects.length; i < len; i++) {
const clientRect = clientRects[i];
result[i] = new FloatHorizontalRange(Math.max(0, clientRect.left - clientRectDeltaLeft), clientRect.width);
@@ -113,8 +113,8 @@ export class RangeUtil {
public static readHorizontalRanges(domNode: HTMLElement, startChildIndex: number, startOffset: number, endChildIndex: number, endOffset: number, clientRectDeltaLeft: number, endNode: HTMLElement): HorizontalRange[] | null {
// Panic check
let min = 0;
let max = domNode.children.length - 1;
const min = 0;
const max = domNode.children.length - 1;
if (min > max) {
return null;
}
@@ -152,7 +152,7 @@ export class RangeUtil {
startOffset = Math.min(startElement.textContent!.length, Math.max(0, startOffset));
endOffset = Math.min(endElement.textContent!.length, Math.max(0, endOffset));
let clientRects = this._readClientRects(startElement, startOffset, endElement, endOffset, endNode);
const clientRects = this._readClientRects(startElement, startOffset, endElement, endOffset, endNode);
return this._createHorizontalRangesFromClientRects(clientRects, clientRectDeltaLeft);
}
}

View File

@@ -180,8 +180,8 @@ export class ViewLine implements IVisibleLine {
continue;
}
let startColumn = (selection.startLineNumber === lineNumber ? selection.startColumn : lineData.minColumn);
let endColumn = (selection.endLineNumber === lineNumber ? selection.endColumn : lineData.maxColumn);
const startColumn = (selection.startLineNumber === lineNumber ? selection.startColumn : lineData.minColumn);
const endColumn = (selection.endLineNumber === lineNumber ? selection.endColumn : lineData.maxColumn);
if (startColumn < endColumn) {
actualInlineDecorations.push(new LineDecoration(startColumn, endColumn, 'inline-selected-text', InlineDecorationType.Regular));
@@ -189,7 +189,7 @@ export class ViewLine implements IVisibleLine {
}
}
let renderLineInput = new RenderLineInput(
const renderLineInput = new RenderLineInput(
options.useMonospaceOptimizations,
options.canUseHalfwidthRightwardsArrow,
lineData.content,
@@ -369,7 +369,7 @@ class FastRenderedViewLine implements IRenderedViewLine {
}
public getColumnOfNodeOffset(lineNumber: number, spanNode: HTMLElement, offset: number): number {
let spanNodeTextContentLength = spanNode.textContent!.length;
const spanNodeTextContentLength = spanNode.textContent!.length;
let spanIndex = -1;
while (spanNode) {
@@ -377,7 +377,7 @@ class FastRenderedViewLine implements IRenderedViewLine {
spanIndex++;
}
let charOffset = this._characterMapping.partDataToCharOffset(spanIndex, spanNodeTextContentLength, offset);
const charOffset = this._characterMapping.partDataToCharOffset(spanIndex, spanNodeTextContentLength, offset);
return charOffset + 1;
}
}
@@ -398,7 +398,7 @@ class RenderedViewLine implements IRenderedViewLine {
/**
* This is a map that is used only when the line is guaranteed to have no RTL text.
*/
private _pixelOffsetCache: Int32Array | null;
private readonly _pixelOffsetCache: Int32Array | null;
constructor(domNode: FastDomNode<HTMLElement>, renderLineInput: RenderLineInput, characterMapping: CharacterMapping, containsRTL: boolean, containsForeignElements: ForeignElementType) {
this.domNode = domNode;
@@ -446,12 +446,12 @@ class RenderedViewLine implements IRenderedViewLine {
public getVisibleRangesForRange(startColumn: number, endColumn: number, context: DomReadingContext): HorizontalRange[] | null {
if (this._pixelOffsetCache !== null) {
// the text is LTR
let startOffset = this._readPixelOffset(startColumn, context);
const startOffset = this._readPixelOffset(startColumn, context);
if (startOffset === -1) {
return null;
}
let endOffset = this._readPixelOffset(endColumn, context);
const endOffset = this._readPixelOffset(endColumn, context);
if (endOffset === -1) {
return null;
}
@@ -464,7 +464,7 @@ class RenderedViewLine implements IRenderedViewLine {
protected _readVisibleRangesForRange(startColumn: number, endColumn: number, context: DomReadingContext): HorizontalRange[] | null {
if (startColumn === endColumn) {
let pixelOffset = this._readPixelOffset(startColumn, context);
const pixelOffset = this._readPixelOffset(startColumn, context);
if (pixelOffset === -1) {
return null;
} else {
@@ -495,12 +495,12 @@ class RenderedViewLine implements IRenderedViewLine {
if (this._pixelOffsetCache !== null) {
// the text is LTR
let cachedPixelOffset = this._pixelOffsetCache[column];
const cachedPixelOffset = this._pixelOffsetCache[column];
if (cachedPixelOffset !== -1) {
return cachedPixelOffset;
}
let result = this._actualReadPixelOffset(column, context);
const result = this._actualReadPixelOffset(column, context);
this._pixelOffsetCache[column] = result;
return result;
}
@@ -511,7 +511,7 @@ class RenderedViewLine implements IRenderedViewLine {
private _actualReadPixelOffset(column: number, context: DomReadingContext): number {
if (this._characterMapping.length === 0) {
// This line has no content
let r = RangeUtil.readHorizontalRanges(this._getReadingTarget(), 0, 0, 0, 0, context.clientRectDeltaLeft, context.endNode);
const r = RangeUtil.readHorizontalRanges(this._getReadingTarget(), 0, 0, 0, 0, context.clientRectDeltaLeft, context.endNode);
if (!r || r.length === 0) {
return -1;
}
@@ -523,11 +523,11 @@ class RenderedViewLine implements IRenderedViewLine {
return this.getWidth();
}
let partData = this._characterMapping.charOffsetToPartData(column - 1);
let partIndex = CharacterMapping.getPartIndex(partData);
let charOffsetInPart = CharacterMapping.getCharIndex(partData);
const partData = this._characterMapping.charOffsetToPartData(column - 1);
const partIndex = CharacterMapping.getPartIndex(partData);
const charOffsetInPart = CharacterMapping.getCharIndex(partData);
let r = RangeUtil.readHorizontalRanges(this._getReadingTarget(), partIndex, charOffsetInPart, partIndex, charOffsetInPart, context.clientRectDeltaLeft, context.endNode);
const r = RangeUtil.readHorizontalRanges(this._getReadingTarget(), partIndex, charOffsetInPart, partIndex, charOffsetInPart, context.clientRectDeltaLeft, context.endNode);
if (!r || r.length === 0) {
return -1;
}
@@ -542,13 +542,13 @@ class RenderedViewLine implements IRenderedViewLine {
return [new HorizontalRange(0, this.getWidth())];
}
let startPartData = this._characterMapping.charOffsetToPartData(startColumn - 1);
let startPartIndex = CharacterMapping.getPartIndex(startPartData);
let startCharOffsetInPart = CharacterMapping.getCharIndex(startPartData);
const startPartData = this._characterMapping.charOffsetToPartData(startColumn - 1);
const startPartIndex = CharacterMapping.getPartIndex(startPartData);
const startCharOffsetInPart = CharacterMapping.getCharIndex(startPartData);
let endPartData = this._characterMapping.charOffsetToPartData(endColumn - 1);
let endPartIndex = CharacterMapping.getPartIndex(endPartData);
let endCharOffsetInPart = CharacterMapping.getCharIndex(endPartData);
const endPartData = this._characterMapping.charOffsetToPartData(endColumn - 1);
const endPartIndex = CharacterMapping.getPartIndex(endPartData);
const endCharOffsetInPart = CharacterMapping.getCharIndex(endPartData);
return RangeUtil.readHorizontalRanges(this._getReadingTarget(), startPartIndex, startCharOffsetInPart, endPartIndex, endCharOffsetInPart, context.clientRectDeltaLeft, context.endNode);
}
@@ -557,7 +557,7 @@ class RenderedViewLine implements IRenderedViewLine {
* Returns the column for the text found at a specific offset inside a rendered dom node
*/
public getColumnOfNodeOffset(lineNumber: number, spanNode: HTMLElement, offset: number): number {
let spanNodeTextContentLength = spanNode.textContent!.length;
const spanNodeTextContentLength = spanNode.textContent!.length;
let spanIndex = -1;
while (spanNode) {
@@ -565,14 +565,14 @@ class RenderedViewLine implements IRenderedViewLine {
spanIndex++;
}
let charOffset = this._characterMapping.partDataToCharOffset(spanIndex, spanNodeTextContentLength, offset);
const charOffset = this._characterMapping.partDataToCharOffset(spanIndex, spanNodeTextContentLength, offset);
return charOffset + 1;
}
}
class WebKitRenderedViewLine extends RenderedViewLine {
protected _readVisibleRangesForRange(startColumn: number, endColumn: number, context: DomReadingContext): HorizontalRange[] | null {
let output = super._readVisibleRangesForRange(startColumn, endColumn, context);
const output = super._readVisibleRangesForRange(startColumn, endColumn, context);
if (!output || output.length === 0 || startColumn === endColumn || (startColumn === 1 && endColumn === this._characterMapping.length)) {
return output;
@@ -583,9 +583,9 @@ class WebKitRenderedViewLine extends RenderedViewLine {
if (!this.input.containsRTL) {
// This is an attempt to patch things up
// Find position of last column
let endPixelOffset = this._readPixelOffset(endColumn, context);
const endPixelOffset = this._readPixelOffset(endColumn, context);
if (endPixelOffset !== -1) {
let lastRange = output[output.length - 1];
const lastRange = output[output.length - 1];
if (lastRange.left < endPixelOffset) {
// Trim down the width of the last visible range to not go after the last column's position
lastRange.width = endPixelOffset - lastRange.left;

View File

@@ -76,10 +76,10 @@ export class ViewLines extends ViewPart implements IVisibleLinesHost<ViewLine>,
// --- width
private _maxLineWidth: number;
private _asyncUpdateLineWidths: RunOnceScheduler;
private readonly _asyncUpdateLineWidths: RunOnceScheduler;
private _horizontalRevealRequest: HorizontalRevealRequest | null;
private _lastRenderedData: LastRenderedData;
private readonly _lastRenderedData: LastRenderedData;
constructor(context: ViewContext, linesContent: FastDomNode<HTMLElement>) {
super(context);
@@ -169,14 +169,14 @@ export class ViewLines extends ViewPart implements IVisibleLinesHost<ViewLine>,
private _onOptionsMaybeChanged(): boolean {
const conf = this._context.configuration;
let newViewLineOptions = new ViewLineOptions(conf, this._context.theme.type);
const newViewLineOptions = new ViewLineOptions(conf, this._context.theme.type);
if (!this._viewLineOptions.equals(newViewLineOptions)) {
this._viewLineOptions = newViewLineOptions;
let startLineNumber = this._visibleLines.getStartLineNumber();
let endLineNumber = this._visibleLines.getEndLineNumber();
const startLineNumber = this._visibleLines.getStartLineNumber();
const endLineNumber = this._visibleLines.getEndLineNumber();
for (let lineNumber = startLineNumber; lineNumber <= endLineNumber; lineNumber++) {
let line = this._visibleLines.getVisibleLine(lineNumber);
const line = this._visibleLines.getVisibleLine(lineNumber);
line.onOptionsChanged(this._viewLineOptions);
}
return true;
@@ -185,8 +185,8 @@ export class ViewLines extends ViewPart implements IVisibleLinesHost<ViewLine>,
return false;
}
public onCursorStateChanged(e: viewEvents.ViewCursorStateChangedEvent): boolean {
let rendStartLineNumber = this._visibleLines.getStartLineNumber();
let rendEndLineNumber = this._visibleLines.getEndLineNumber();
const rendStartLineNumber = this._visibleLines.getStartLineNumber();
const rendEndLineNumber = this._visibleLines.getEndLineNumber();
let r = false;
for (let lineNumber = rendStartLineNumber; lineNumber <= rendEndLineNumber; lineNumber++) {
r = this._visibleLines.getVisibleLine(lineNumber).onSelectionChanged() || r;
@@ -195,8 +195,8 @@ export class ViewLines extends ViewPart implements IVisibleLinesHost<ViewLine>,
}
public onDecorationsChanged(e: viewEvents.ViewDecorationsChangedEvent): boolean {
if (true/*e.inlineDecorationsChanged*/) {
let rendStartLineNumber = this._visibleLines.getStartLineNumber();
let rendEndLineNumber = this._visibleLines.getEndLineNumber();
const rendStartLineNumber = this._visibleLines.getStartLineNumber();
const rendEndLineNumber = this._visibleLines.getEndLineNumber();
for (let lineNumber = rendStartLineNumber; lineNumber <= rendEndLineNumber; lineNumber++) {
this._visibleLines.getVisibleLine(lineNumber).onDecorationsChanged();
}
@@ -204,7 +204,7 @@ export class ViewLines extends ViewPart implements IVisibleLinesHost<ViewLine>,
return true;
}
public onFlushed(e: viewEvents.ViewFlushedEvent): boolean {
let shouldRender = this._visibleLines.onFlushed(e);
const shouldRender = this._visibleLines.onFlushed(e);
this._maxLineWidth = 0;
return shouldRender;
}
@@ -282,12 +282,12 @@ export class ViewLines extends ViewPart implements IVisibleLinesHost<ViewLine>,
// ----------- HELPERS FOR OTHERS
public getPositionFromDOMInfo(spanNode: HTMLElement, offset: number): Position | null {
let viewLineDomNode = this._getViewLineDomNode(spanNode);
const viewLineDomNode = this._getViewLineDomNode(spanNode);
if (viewLineDomNode === null) {
// Couldn't find view line node
return null;
}
let lineNumber = this._getLineNumberFor(viewLineDomNode);
const lineNumber = this._getLineNumberFor(viewLineDomNode);
if (lineNumber === -1) {
// Couldn't find view line node
@@ -304,15 +304,15 @@ export class ViewLines extends ViewPart implements IVisibleLinesHost<ViewLine>,
return new Position(lineNumber, 1);
}
let rendStartLineNumber = this._visibleLines.getStartLineNumber();
let rendEndLineNumber = this._visibleLines.getEndLineNumber();
const rendStartLineNumber = this._visibleLines.getStartLineNumber();
const rendEndLineNumber = this._visibleLines.getEndLineNumber();
if (lineNumber < rendStartLineNumber || lineNumber > rendEndLineNumber) {
// Couldn't find line
return null;
}
let column = this._visibleLines.getVisibleLine(lineNumber).getColumnOfNodeOffset(lineNumber, spanNode, offset);
let minColumn = this._context.model.getLineMinColumn(lineNumber);
const minColumn = this._context.model.getLineMinColumn(lineNumber);
if (column < minColumn) {
column = minColumn;
}
@@ -333,10 +333,10 @@ export class ViewLines extends ViewPart implements IVisibleLinesHost<ViewLine>,
* @returns the line number of this view line dom node.
*/
private _getLineNumberFor(domNode: HTMLElement): number {
let startLineNumber = this._visibleLines.getStartLineNumber();
let endLineNumber = this._visibleLines.getEndLineNumber();
const startLineNumber = this._visibleLines.getStartLineNumber();
const endLineNumber = this._visibleLines.getEndLineNumber();
for (let lineNumber = startLineNumber; lineNumber <= endLineNumber; lineNumber++) {
let line = this._visibleLines.getVisibleLine(lineNumber);
const line = this._visibleLines.getVisibleLine(lineNumber);
if (domNode === line.getDomNode()) {
return lineNumber;
}
@@ -345,8 +345,8 @@ export class ViewLines extends ViewPart implements IVisibleLinesHost<ViewLine>,
}
public getLineWidth(lineNumber: number): number {
let rendStartLineNumber = this._visibleLines.getStartLineNumber();
let rendEndLineNumber = this._visibleLines.getEndLineNumber();
const rendStartLineNumber = this._visibleLines.getStartLineNumber();
const rendEndLineNumber = this._visibleLines.getEndLineNumber();
if (lineNumber < rendStartLineNumber || lineNumber > rendEndLineNumber) {
// Couldn't find line
return -1;
@@ -362,38 +362,38 @@ export class ViewLines extends ViewPart implements IVisibleLinesHost<ViewLine>,
return null;
}
let originalEndLineNumber = _range.endLineNumber;
const originalEndLineNumber = _range.endLineNumber;
const range = Range.intersectRanges(_range, this._lastRenderedData.getCurrentVisibleRange());
if (!range) {
return null;
}
let visibleRanges: LineVisibleRanges[] = [], visibleRangesLen = 0;
let domReadingContext = new DomReadingContext(this.domNode.domNode, this._textRangeRestingSpot);
const domReadingContext = new DomReadingContext(this.domNode.domNode, this._textRangeRestingSpot);
let nextLineModelLineNumber: number = 0;
if (includeNewLines) {
nextLineModelLineNumber = this._context.model.coordinatesConverter.convertViewPositionToModelPosition(new Position(range.startLineNumber, 1)).lineNumber;
}
let rendStartLineNumber = this._visibleLines.getStartLineNumber();
let rendEndLineNumber = this._visibleLines.getEndLineNumber();
const rendStartLineNumber = this._visibleLines.getStartLineNumber();
const rendEndLineNumber = this._visibleLines.getEndLineNumber();
for (let lineNumber = range.startLineNumber; lineNumber <= range.endLineNumber; lineNumber++) {
if (lineNumber < rendStartLineNumber || lineNumber > rendEndLineNumber) {
continue;
}
let startColumn = lineNumber === range.startLineNumber ? range.startColumn : 1;
let endColumn = lineNumber === range.endLineNumber ? range.endColumn : this._context.model.getLineMaxColumn(lineNumber);
let visibleRangesForLine = this._visibleLines.getVisibleLine(lineNumber).getVisibleRangesForRange(startColumn, endColumn, domReadingContext);
const startColumn = lineNumber === range.startLineNumber ? range.startColumn : 1;
const endColumn = lineNumber === range.endLineNumber ? range.endColumn : this._context.model.getLineMaxColumn(lineNumber);
const visibleRangesForLine = this._visibleLines.getVisibleLine(lineNumber).getVisibleRangesForRange(startColumn, endColumn, domReadingContext);
if (!visibleRangesForLine || visibleRangesForLine.length === 0) {
continue;
}
if (includeNewLines && lineNumber < originalEndLineNumber) {
let currentLineModelLineNumber = nextLineModelLineNumber;
const currentLineModelLineNumber = nextLineModelLineNumber;
nextLineModelLineNumber = this._context.model.coordinatesConverter.convertViewPositionToModelPosition(new Position(lineNumber + 1, 1)).lineNumber;
if (currentLineModelLineNumber !== nextLineModelLineNumber) {
@@ -425,19 +425,19 @@ export class ViewLines extends ViewPart implements IVisibleLinesHost<ViewLine>,
}
let result: HorizontalRange[] = [];
let domReadingContext = new DomReadingContext(this.domNode.domNode, this._textRangeRestingSpot);
const domReadingContext = new DomReadingContext(this.domNode.domNode, this._textRangeRestingSpot);
let rendStartLineNumber = this._visibleLines.getStartLineNumber();
let rendEndLineNumber = this._visibleLines.getEndLineNumber();
const rendStartLineNumber = this._visibleLines.getStartLineNumber();
const rendEndLineNumber = this._visibleLines.getEndLineNumber();
for (let lineNumber = range.startLineNumber; lineNumber <= range.endLineNumber; lineNumber++) {
if (lineNumber < rendStartLineNumber || lineNumber > rendEndLineNumber) {
continue;
}
let startColumn = lineNumber === range.startLineNumber ? range.startColumn : 1;
let endColumn = lineNumber === range.endLineNumber ? range.endColumn : this._context.model.getLineMaxColumn(lineNumber);
let visibleRangesForLine = this._visibleLines.getVisibleLine(lineNumber).getVisibleRangesForRange(startColumn, endColumn, domReadingContext);
const startColumn = lineNumber === range.startLineNumber ? range.startColumn : 1;
const endColumn = lineNumber === range.endLineNumber ? range.endColumn : this._context.model.getLineMaxColumn(lineNumber);
const visibleRangesForLine = this._visibleLines.getVisibleLine(lineNumber).getVisibleRangesForRange(startColumn, endColumn, domReadingContext);
if (!visibleRangesForLine || visibleRangesForLine.length === 0) {
continue;
@@ -542,9 +542,9 @@ export class ViewLines extends ViewPart implements IVisibleLinesHost<ViewLine>,
this.onDidRender();
// compute new scroll position
let newScrollLeft = this._computeScrollLeftToRevealRange(revealLineNumber, revealStartColumn, revealEndColumn);
const newScrollLeft = this._computeScrollLeftToRevealRange(revealLineNumber, revealStartColumn, revealEndColumn);
let isViewportWrapping = this._isViewportWrapping;
const isViewportWrapping = this._isViewportWrapping;
if (!isViewportWrapping) {
// ensure `scrollWidth` is large enough
this._ensureMaxLineWidth(newScrollLeft.maxHorizontalOffset);
@@ -579,7 +579,7 @@ export class ViewLines extends ViewPart implements IVisibleLinesHost<ViewLine>,
// --- width
private _ensureMaxLineWidth(lineWidth: number): void {
let iLineWidth = Math.ceil(lineWidth);
const iLineWidth = Math.ceil(lineWidth);
if (this._maxLineWidth < iLineWidth) {
this._maxLineWidth = iLineWidth;
this._context.viewLayout.onMaxLineWidthChanged(this._maxLineWidth);
@@ -587,9 +587,9 @@ export class ViewLines extends ViewPart implements IVisibleLinesHost<ViewLine>,
}
private _computeScrollTopToRevealRange(viewport: Viewport, range: Range, verticalType: viewEvents.VerticalRevealType): number {
let viewportStartY = viewport.top;
let viewportHeight = viewport.height;
let viewportEndY = viewportStartY + viewportHeight;
const viewportStartY = viewport.top;
const viewportHeight = viewport.height;
const viewportEndY = viewportStartY + viewportHeight;
let boxStartY: number;
let boxEndY: number;
@@ -609,7 +609,7 @@ export class ViewLines extends ViewPart implements IVisibleLinesHost<ViewLine>,
newScrollTop = viewportStartY;
} else {
// Box is outside the viewport... center it
let boxMiddleY = (boxStartY + boxEndY) / 2;
const boxMiddleY = (boxStartY + boxEndY) / 2;
newScrollTop = Math.max(0, boxMiddleY - viewportHeight / 2);
}
} else {
@@ -623,11 +623,11 @@ export class ViewLines extends ViewPart implements IVisibleLinesHost<ViewLine>,
let maxHorizontalOffset = 0;
let viewport = this._context.viewLayout.getCurrentViewport();
let viewportStartX = viewport.left;
let viewportEndX = viewportStartX + viewport.width;
const viewport = this._context.viewLayout.getCurrentViewport();
const viewportStartX = viewport.left;
const viewportEndX = viewportStartX + viewport.width;
let visibleRanges = this.visibleRangesForRange2(new Range(lineNumber, startColumn, lineNumber, endColumn));
const visibleRanges = this.visibleRangesForRange2(new Range(lineNumber, startColumn, lineNumber, endColumn));
let boxStartX = Number.MAX_VALUE;
let boxEndX = 0;
@@ -653,7 +653,7 @@ export class ViewLines extends ViewPart implements IVisibleLinesHost<ViewLine>,
boxStartX = Math.max(0, boxStartX - ViewLines.HORIZONTAL_EXTRA_PX);
boxEndX += this._revealHorizontalRightPadding;
let newScrollLeft = this._computeMinimumScrolling(viewportStartX, viewportEndX, boxStartX, boxEndX);
const newScrollLeft = this._computeMinimumScrolling(viewportStartX, viewportEndX, boxStartX, boxEndX);
return {
scrollLeft: newScrollLeft,
maxHorizontalOffset: maxHorizontalOffset
@@ -668,8 +668,8 @@ export class ViewLines extends ViewPart implements IVisibleLinesHost<ViewLine>,
revealAtStart = !!revealAtStart;
revealAtEnd = !!revealAtEnd;
let viewportLength = viewportEnd - viewportStart;
let boxLength = boxEnd - boxStart;
const viewportLength = viewportEnd - viewportStart;
const boxLength = boxEnd - boxStart;
if (boxLength < viewportLength) {
// The box would fit in the viewport

View File

@@ -11,7 +11,7 @@ import * as viewEvents from 'vs/editor/common/view/viewEvents';
export class LinesDecorationsOverlay extends DedupOverlay {
private _context: ViewContext;
private readonly _context: ViewContext;
private _decorationsLeft: number;
private _decorationsWidth: number;
@@ -66,11 +66,11 @@ export class LinesDecorationsOverlay extends DedupOverlay {
// --- end event handlers
protected _getDecorations(ctx: RenderingContext): DecorationToRender[] {
let decorations = ctx.getDecorationsInViewport();
const decorations = ctx.getDecorationsInViewport();
let r: DecorationToRender[] = [], rLen = 0;
for (let i = 0, len = decorations.length; i < len; i++) {
let d = decorations[i];
let linesDecorationsClassName = d.options.linesDecorationsClassName;
const d = decorations[i];
const linesDecorationsClassName = d.options.linesDecorationsClassName;
if (linesDecorationsClassName) {
r[rLen++] = new DecorationToRender(d.range.startLineNumber, d.range.endLineNumber, linesDecorationsClassName);
}
@@ -79,18 +79,18 @@ export class LinesDecorationsOverlay extends DedupOverlay {
}
public prepareRender(ctx: RenderingContext): void {
let visibleStartLineNumber = ctx.visibleRange.startLineNumber;
let visibleEndLineNumber = ctx.visibleRange.endLineNumber;
let toRender = this._render(visibleStartLineNumber, visibleEndLineNumber, this._getDecorations(ctx));
const visibleStartLineNumber = ctx.visibleRange.startLineNumber;
const visibleEndLineNumber = ctx.visibleRange.endLineNumber;
const toRender = this._render(visibleStartLineNumber, visibleEndLineNumber, this._getDecorations(ctx));
let left = this._decorationsLeft.toString();
let width = this._decorationsWidth.toString();
let common = '" style="left:' + left + 'px;width:' + width + 'px;"></div>';
const left = this._decorationsLeft.toString();
const width = this._decorationsWidth.toString();
const common = '" style="left:' + left + 'px;width:' + width + 'px;"></div>';
let output: string[] = [];
const output: string[] = [];
for (let lineNumber = visibleStartLineNumber; lineNumber <= visibleEndLineNumber; lineNumber++) {
let lineIndex = lineNumber - visibleStartLineNumber;
let classNames = toRender[lineIndex];
const lineIndex = lineNumber - visibleStartLineNumber;
const classNames = toRender[lineIndex];
let lineOutput = '';
for (let i = 0, len = classNames.length; i < len; i++) {
lineOutput += '<div class="cldr ' + classNames[i] + common;

View File

@@ -14,7 +14,7 @@ export class Margin extends ViewPart {
public static readonly CLASS_NAME = 'glyph-margin';
public static readonly OUTER_CLASS_NAME = 'margin';
private _domNode: FastDomNode<HTMLElement>;
private readonly _domNode: FastDomNode<HTMLElement>;
private _canUseLayerHinting: boolean;
private _contentLeft: number;
private _glyphMarginLeft: number;
@@ -40,7 +40,7 @@ export class Margin extends ViewPart {
}
private _createDomNode(): FastDomNode<HTMLElement> {
let domNode = createFastDomNode(document.createElement('div'));
const domNode = createFastDomNode(document.createElement('div'));
domNode.setClassName(Margin.OUTER_CLASS_NAME);
domNode.setPosition('absolute');
domNode.setAttribute('role', 'presentation');
@@ -83,7 +83,7 @@ export class Margin extends ViewPart {
const adjustedScrollTop = ctx.scrollTop - ctx.bigNumbersDelta;
this._domNode.setTop(-adjustedScrollTop);
let height = Math.min(ctx.scrollHeight, 1000000);
const height = Math.min(ctx.scrollHeight, 1000000);
this._domNode.setHeight(height);
this._domNode.setWidth(this._contentLeft);

View File

@@ -10,7 +10,7 @@ import { ViewContext } from 'vs/editor/common/view/viewContext';
import * as viewEvents from 'vs/editor/common/view/viewEvents';
export class MarginViewLineDecorationsOverlay extends DedupOverlay {
private _context: ViewContext;
private readonly _context: ViewContext;
private _renderResult: string[] | null;
constructor(context: ViewContext) {
@@ -56,11 +56,11 @@ export class MarginViewLineDecorationsOverlay extends DedupOverlay {
// --- end event handlers
protected _getDecorations(ctx: RenderingContext): DecorationToRender[] {
let decorations = ctx.getDecorationsInViewport();
const decorations = ctx.getDecorationsInViewport();
let r: DecorationToRender[] = [], rLen = 0;
for (let i = 0, len = decorations.length; i < len; i++) {
let d = decorations[i];
let marginClassName = d.options.marginClassName;
const d = decorations[i];
const marginClassName = d.options.marginClassName;
if (marginClassName) {
r[rLen++] = new DecorationToRender(d.range.startLineNumber, d.range.endLineNumber, marginClassName);
}
@@ -69,14 +69,14 @@ export class MarginViewLineDecorationsOverlay extends DedupOverlay {
}
public prepareRender(ctx: RenderingContext): void {
let visibleStartLineNumber = ctx.visibleRange.startLineNumber;
let visibleEndLineNumber = ctx.visibleRange.endLineNumber;
let toRender = this._render(visibleStartLineNumber, visibleEndLineNumber, this._getDecorations(ctx));
const visibleStartLineNumber = ctx.visibleRange.startLineNumber;
const visibleEndLineNumber = ctx.visibleRange.endLineNumber;
const toRender = this._render(visibleStartLineNumber, visibleEndLineNumber, this._getDecorations(ctx));
let output: string[] = [];
const output: string[] = [];
for (let lineNumber = visibleStartLineNumber; lineNumber <= visibleEndLineNumber; lineNumber++) {
let lineIndex = lineNumber - visibleStartLineNumber;
let classNames = toRender[lineIndex];
const lineIndex = lineNumber - visibleStartLineNumber;
const classNames = toRender[lineIndex];
let lineOutput = '';
for (let i = 0, len = classNames.length; i < len; i++) {
lineOutput += '<div class="cmdr ' + classNames[i] + '" style=""></div>';

View File

@@ -200,7 +200,7 @@ class MinimapLayout {
* Compute a desired `scrollPosition` such that the slider moves by `delta`.
*/
public getDesiredScrollTopFromDelta(delta: number): number {
let desiredSliderPosition = this.sliderTop + delta;
const desiredSliderPosition = this.sliderTop + delta;
return Math.round(desiredSliderPosition / this._computedSliderRatio);
}
@@ -350,7 +350,7 @@ class RenderData {
}
_get(): { imageData: ImageData; rendLineNumberStart: number; lines: MinimapLine[]; } {
let tmp = this._renderedLines._get();
const tmp = this._renderedLines._get();
return {
imageData: this._imageData,
rendLineNumberStart: tmp.rendLineNumberStart,
@@ -396,7 +396,7 @@ class MinimapBuffers {
public getBuffer(): ImageData {
// rotate buffers
this._lastUsedBuffer = 1 - this._lastUsedBuffer;
let result = this._buffers[this._lastUsedBuffer];
const result = this._buffers[this._lastUsedBuffer];
// fill with background color
result.data.set(this._backgroundFillData);
@@ -409,7 +409,7 @@ class MinimapBuffers {
const backgroundG = background.g;
const backgroundB = background.b;
let result = new Uint8ClampedArray(WIDTH * HEIGHT * 4);
const result = new Uint8ClampedArray(WIDTH * HEIGHT * 4);
let offset = 0;
for (let i = 0; i < HEIGHT; i++) {
for (let j = 0; j < WIDTH; j++) {
@@ -584,7 +584,7 @@ export class Minimap extends ViewPart {
}
private _onOptionsMaybeChanged(): boolean {
let opts = new MinimapOptions(this._context.configuration);
const opts = new MinimapOptions(this._context.configuration);
if (this._options.equals(opts)) {
return false;
}
@@ -721,7 +721,7 @@ export class Minimap extends ViewPart {
// Render the rest of lines
let dy = 0;
let renderedLines: MinimapLine[] = [];
const renderedLines: MinimapLine[] = [];
for (let lineIndex = 0, lineCount = endLineNumber - startLineNumber + 1; lineIndex < lineCount; lineIndex++) {
if (needed[lineIndex]) {
Minimap._renderLine(
@@ -764,7 +764,7 @@ export class Minimap extends ViewPart {
lastRenderData: RenderData | null,
): [number, number, boolean[]] {
let needed: boolean[] = [];
const needed: boolean[] = [];
if (!lastRenderData) {
for (let i = 0, len = endLineNumber - startLineNumber + 1; i < len; i++) {
needed[i] = true;
@@ -801,10 +801,10 @@ export class Minimap extends ViewPart {
continue;
}
let sourceStart = source_dy * WIDTH * 4;
let sourceEnd = (source_dy + minimapLineHeight) * WIDTH * 4;
let destStart = dest_dy * WIDTH * 4;
let destEnd = (dest_dy + minimapLineHeight) * WIDTH * 4;
const sourceStart = source_dy * WIDTH * 4;
const sourceEnd = (source_dy + minimapLineHeight) * WIDTH * 4;
const destStart = dest_dy * WIDTH * 4;
const destEnd = (dest_dy + minimapLineHeight) * WIDTH * 4;
if (copySourceEnd === sourceStart && copyDestEnd === destStart) {
// contiguous zone => extend copy request
@@ -881,7 +881,7 @@ export class Minimap extends ViewPart {
const charCode = content.charCodeAt(charIndex);
if (charCode === CharCode.Tab) {
let insertSpacesCount = tabSize - (charIndex + tabsCharDelta) % tabSize;
const insertSpacesCount = tabSize - (charIndex + tabsCharDelta) % tabSize;
tabsCharDelta += insertSpacesCount - 1;
// No need to render anything since tab is invisible
dx += insertSpacesCount * charWidth;
@@ -890,7 +890,7 @@ export class Minimap extends ViewPart {
dx += charWidth;
} else {
// Render twice for a full width character
let count = strings.isFullWidthCharacter(charCode) ? 2 : 1;
const count = strings.isFullWidthCharacter(charCode) ? 2 : 1;
for (let i = 0; i < count; i++) {
if (renderMinimap === RenderMinimap.Large) {

View File

@@ -24,7 +24,7 @@ interface IWidgetMap {
export class ViewOverlayWidgets extends ViewPart {
private _widgets: IWidgetMap;
private _domNode: FastDomNode<HTMLElement>;
private readonly _domNode: FastDomNode<HTMLElement>;
private _verticalScrollbarWidth: number;
private _minimapWidth: number;
@@ -90,7 +90,7 @@ export class ViewOverlayWidgets extends ViewPart {
}
public setWidgetPosition(widget: IOverlayWidget, preference: OverlayWidgetPositionPreference | null): boolean {
let widgetData = this._widgets[widget.getId()];
const widgetData = this._widgets[widget.getId()];
if (widgetData.preference === preference) {
return false;
}
@@ -102,7 +102,7 @@ export class ViewOverlayWidgets extends ViewPart {
}
public removeWidget(widget: IOverlayWidget): void {
let widgetId = widget.getId();
const widgetId = widget.getId();
if (this._widgets.hasOwnProperty(widgetId)) {
const widgetData = this._widgets[widgetId];
const domNode = widgetData.domNode.domNode;
@@ -125,7 +125,7 @@ export class ViewOverlayWidgets extends ViewPart {
domNode.setTop(0);
domNode.setRight((2 * this._verticalScrollbarWidth) + this._minimapWidth);
} else if (widgetData.preference === OverlayWidgetPositionPreference.BOTTOM_RIGHT_CORNER) {
let widgetHeight = domNode.domNode.clientHeight;
const widgetHeight = domNode.domNode.clientHeight;
domNode.setTop((this._editorHeight - widgetHeight - 2 * this._horizontalScrollbarHeight));
domNode.setRight((2 * this._verticalScrollbarWidth) + this._minimapWidth);
} else if (widgetData.preference === OverlayWidgetPositionPreference.TOP_CENTER) {
@@ -141,9 +141,9 @@ export class ViewOverlayWidgets extends ViewPart {
public render(ctx: RestrictedRenderingContext): void {
this._domNode.setWidth(this._editorWidth);
let keys = Object.keys(this._widgets);
const keys = Object.keys(this._widgets);
for (let i = 0, len = keys.length; i < len; i++) {
let widgetId = keys[i];
const widgetId = keys[i];
this._renderWidget(this._widgets[widgetId]);
}
}

View File

@@ -340,7 +340,7 @@ export class DecorationsOverviewRuler extends ViewPart {
let y1 = (viewLayout.getVerticalOffsetForLineNumber(startLineNumber) * heightRatio) | 0;
let y2 = ((viewLayout.getVerticalOffsetForLineNumber(endLineNumber) + lineHeight) * heightRatio) | 0;
let height = y2 - y1;
const height = y2 - y1;
if (height < minDecorationHeight) {
let yCenter = ((y1 + y2) / 2) | 0;
if (yCenter < halfMinDecorationHeight) {

View File

@@ -13,9 +13,9 @@ import { ViewEventHandler } from 'vs/editor/common/viewModel/viewEventHandler';
export class OverviewRuler extends ViewEventHandler implements IOverviewRuler {
private _context: ViewContext;
private _domNode: FastDomNode<HTMLCanvasElement>;
private _zoneManager: OverviewZoneManager;
private readonly _context: ViewContext;
private readonly _domNode: FastDomNode<HTMLCanvasElement>;
private readonly _zoneManager: OverviewZoneManager;
constructor(context: ViewContext, cssClassName: string) {
super();
@@ -114,10 +114,10 @@ export class OverviewRuler extends ViewEventHandler implements IOverviewRuler {
const width = this._zoneManager.getCanvasWidth();
const height = this._zoneManager.getCanvasHeight();
let colorZones = this._zoneManager.resolveColorZones();
let id2Color = this._zoneManager.getId2Color();
const colorZones = this._zoneManager.resolveColorZones();
const id2Color = this._zoneManager.getId2Color();
let ctx = this._domNode.domNode.getContext('2d')!;
const ctx = this._domNode.domNode.getContext('2d')!;
ctx.clearRect(0, 0, width, height);
if (colorZones.length > 0) {
this._renderOneLane(ctx, colorZones, id2Color, width);

View File

@@ -15,7 +15,7 @@ import { registerThemingParticipant } from 'vs/platform/theme/common/themeServic
export class Rulers extends ViewPart {
public domNode: FastDomNode<HTMLElement>;
private _renderedRulers: FastDomNode<HTMLElement>[];
private readonly _renderedRulers: FastDomNode<HTMLElement>[];
private _rulers: number[];
private _typicalHalfwidthCharacterWidth: number;
@@ -64,10 +64,11 @@ export class Rulers extends ViewPart {
}
if (currentCount < desiredCount) {
const rulerWidth = this._context.model.getTabSize();
const { tabSize } = this._context.model.getOptions();
const rulerWidth = tabSize;
let addCount = desiredCount - currentCount;
while (addCount > 0) {
let node = createFastDomNode(document.createElement('div'));
const node = createFastDomNode(document.createElement('div'));
node.setClassName('view-ruler');
node.setWidth(rulerWidth);
this.domNode.appendChild(node);
@@ -79,7 +80,7 @@ export class Rulers extends ViewPart {
let removeCount = currentCount - desiredCount;
while (removeCount > 0) {
let node = this._renderedRulers.pop()!;
const node = this._renderedRulers.pop()!;
this.domNode.removeChild(node);
removeCount--;
}
@@ -90,7 +91,7 @@ export class Rulers extends ViewPart {
this._ensureRulersCount();
for (let i = 0, len = this._rulers.length; i < len; i++) {
let node = this._renderedRulers[i];
const node = this._renderedRulers[i];
node.setHeight(Math.min(ctx.scrollHeight, 1000000));
node.setLeft(this._rulers[i] * this._typicalHalfwidthCharacterWidth);

View File

@@ -14,7 +14,7 @@ import { registerThemingParticipant } from 'vs/platform/theme/common/themeServic
export class ScrollDecorationViewPart extends ViewPart {
private _domNode: FastDomNode<HTMLElement>;
private readonly _domNode: FastDomNode<HTMLElement>;
private _scrollTop: number;
private _width: number;
private _shouldShow: boolean;
@@ -38,7 +38,7 @@ export class ScrollDecorationViewPart extends ViewPart {
}
private _updateShouldShow(): boolean {
let newShouldShow = (this._useShadows && this._scrollTop > 0);
const newShouldShow = (this._useShadows && this._scrollTop > 0);
if (this._shouldShow !== newShouldShow) {
this._shouldShow = newShouldShow;
return true;

View File

@@ -73,7 +73,7 @@ export class SelectionsOverlay extends DynamicViewOverlay {
private static readonly ROUNDED_PIECE_WIDTH = 10;
private _context: ViewContext;
private readonly _context: ViewContext;
private _lineHeight: number;
private _roundedSelection: boolean;
private _typicalHalfwidthCharacterWidth: number;
@@ -143,7 +143,7 @@ export class SelectionsOverlay extends DynamicViewOverlay {
private _visibleRangesHaveGaps(linesVisibleRanges: LineVisibleRangesWithStyle[]): boolean {
for (let i = 0, len = linesVisibleRanges.length; i < len; i++) {
let lineVisibleRanges = linesVisibleRanges[i];
const lineVisibleRanges = linesVisibleRanges[i];
if (lineVisibleRanges.ranges.length > 1) {
// There are two ranges on the same line
@@ -161,7 +161,7 @@ export class SelectionsOverlay extends DynamicViewOverlay {
if (previousFrame && previousFrame.length > 0 && linesVisibleRanges.length > 0) {
let topLineNumber = linesVisibleRanges[0].lineNumber;
const topLineNumber = linesVisibleRanges[0].lineNumber;
if (topLineNumber === viewport.startLineNumber) {
for (let i = 0; !previousFrameTop && i < previousFrame.length; i++) {
if (previousFrame[i].lineNumber === topLineNumber) {
@@ -170,7 +170,7 @@ export class SelectionsOverlay extends DynamicViewOverlay {
}
}
let bottomLineNumber = linesVisibleRanges[linesVisibleRanges.length - 1].lineNumber;
const bottomLineNumber = linesVisibleRanges[linesVisibleRanges.length - 1].lineNumber;
if (bottomLineNumber === viewport.endLineNumber) {
for (let i = previousFrame.length - 1; !previousFrameBottom && i >= 0; i--) {
if (previousFrame[i].lineNumber === bottomLineNumber) {
@@ -189,24 +189,24 @@ export class SelectionsOverlay extends DynamicViewOverlay {
for (let i = 0, len = linesVisibleRanges.length; i < len; i++) {
// We know for a fact that there is precisely one range on each line
let curLineRange = linesVisibleRanges[i].ranges[0];
let curLeft = curLineRange.left;
let curRight = curLineRange.left + curLineRange.width;
const curLineRange = linesVisibleRanges[i].ranges[0];
const curLeft = curLineRange.left;
const curRight = curLineRange.left + curLineRange.width;
let startStyle = {
const startStyle = {
top: CornerStyle.EXTERN,
bottom: CornerStyle.EXTERN
};
let endStyle = {
const endStyle = {
top: CornerStyle.EXTERN,
bottom: CornerStyle.EXTERN
};
if (i > 0) {
// Look above
let prevLeft = linesVisibleRanges[i - 1].ranges[0].left;
let prevRight = linesVisibleRanges[i - 1].ranges[0].left + linesVisibleRanges[i - 1].ranges[0].width;
const prevLeft = linesVisibleRanges[i - 1].ranges[0].left;
const prevRight = linesVisibleRanges[i - 1].ranges[0].left + linesVisibleRanges[i - 1].ranges[0].width;
if (abs(curLeft - prevLeft) < epsilon) {
startStyle.top = CornerStyle.FLAT;
@@ -227,8 +227,8 @@ export class SelectionsOverlay extends DynamicViewOverlay {
if (i + 1 < len) {
// Look below
let nextLeft = linesVisibleRanges[i + 1].ranges[0].left;
let nextRight = linesVisibleRanges[i + 1].ranges[0].left + linesVisibleRanges[i + 1].ranges[0].width;
const nextLeft = linesVisibleRanges[i + 1].ranges[0].left;
const nextRight = linesVisibleRanges[i + 1].ranges[0].left + linesVisibleRanges[i + 1].ranges[0].width;
if (abs(curLeft - nextLeft) < epsilon) {
startStyle.bottom = CornerStyle.FLAT;
@@ -253,9 +253,9 @@ export class SelectionsOverlay extends DynamicViewOverlay {
}
private _getVisibleRangesWithStyle(selection: Range, ctx: RenderingContext, previousFrame: LineVisibleRangesWithStyle[] | null): LineVisibleRangesWithStyle[] {
let _linesVisibleRanges = ctx.linesVisibleRangesForRange(selection, true) || [];
let linesVisibleRanges = _linesVisibleRanges.map(toStyled);
let visibleRangesHaveGaps = this._visibleRangesHaveGaps(linesVisibleRanges);
const _linesVisibleRanges = ctx.linesVisibleRangesForRange(selection, true) || [];
const linesVisibleRanges = _linesVisibleRanges.map(toStyled);
const visibleRangesHaveGaps = this._visibleRangesHaveGaps(linesVisibleRanges);
if (!isIEWithZoomingIssuesNearRoundedBorders && !visibleRangesHaveGaps && this._roundedSelection) {
this._enrichVisibleRangesWithStyle(ctx.visibleRange, linesVisibleRanges, previousFrame);
@@ -282,25 +282,25 @@ export class SelectionsOverlay extends DynamicViewOverlay {
}
private _actualRenderOneSelection(output2: string[], visibleStartLineNumber: number, hasMultipleSelections: boolean, visibleRanges: LineVisibleRangesWithStyle[]): void {
let visibleRangesHaveStyle = (visibleRanges.length > 0 && visibleRanges[0].ranges[0].startStyle);
let fullLineHeight = (this._lineHeight).toString();
let reducedLineHeight = (this._lineHeight - 1).toString();
const visibleRangesHaveStyle = (visibleRanges.length > 0 && visibleRanges[0].ranges[0].startStyle);
const fullLineHeight = (this._lineHeight).toString();
const reducedLineHeight = (this._lineHeight - 1).toString();
let firstLineNumber = (visibleRanges.length > 0 ? visibleRanges[0].lineNumber : 0);
let lastLineNumber = (visibleRanges.length > 0 ? visibleRanges[visibleRanges.length - 1].lineNumber : 0);
const firstLineNumber = (visibleRanges.length > 0 ? visibleRanges[0].lineNumber : 0);
const lastLineNumber = (visibleRanges.length > 0 ? visibleRanges[visibleRanges.length - 1].lineNumber : 0);
for (let i = 0, len = visibleRanges.length; i < len; i++) {
let lineVisibleRanges = visibleRanges[i];
let lineNumber = lineVisibleRanges.lineNumber;
let lineIndex = lineNumber - visibleStartLineNumber;
const lineVisibleRanges = visibleRanges[i];
const lineNumber = lineVisibleRanges.lineNumber;
const lineIndex = lineNumber - visibleStartLineNumber;
let lineHeight = hasMultipleSelections ? (lineNumber === lastLineNumber || lineNumber === firstLineNumber ? reducedLineHeight : fullLineHeight) : fullLineHeight;
let top = hasMultipleSelections ? (lineNumber === firstLineNumber ? 1 : 0) : 0;
const lineHeight = hasMultipleSelections ? (lineNumber === lastLineNumber || lineNumber === firstLineNumber ? reducedLineHeight : fullLineHeight) : fullLineHeight;
const top = hasMultipleSelections ? (lineNumber === firstLineNumber ? 1 : 0) : 0;
let lineOutput = '';
for (let j = 0, lenJ = lineVisibleRanges.ranges.length; j < lenJ; j++) {
let visibleRange = lineVisibleRanges.ranges[j];
const visibleRange = lineVisibleRanges.ranges[j];
if (visibleRangesHaveStyle) {
const startStyle = visibleRange.startStyle!;
@@ -366,23 +366,23 @@ export class SelectionsOverlay extends DynamicViewOverlay {
private _previousFrameVisibleRangesWithStyle: (LineVisibleRangesWithStyle[] | null)[] = [];
public prepareRender(ctx: RenderingContext): void {
let output: string[] = [];
let visibleStartLineNumber = ctx.visibleRange.startLineNumber;
let visibleEndLineNumber = ctx.visibleRange.endLineNumber;
const output: string[] = [];
const visibleStartLineNumber = ctx.visibleRange.startLineNumber;
const visibleEndLineNumber = ctx.visibleRange.endLineNumber;
for (let lineNumber = visibleStartLineNumber; lineNumber <= visibleEndLineNumber; lineNumber++) {
let lineIndex = lineNumber - visibleStartLineNumber;
const lineIndex = lineNumber - visibleStartLineNumber;
output[lineIndex] = '';
}
let thisFrameVisibleRangesWithStyle: (LineVisibleRangesWithStyle[] | null)[] = [];
const thisFrameVisibleRangesWithStyle: (LineVisibleRangesWithStyle[] | null)[] = [];
for (let i = 0, len = this._selections.length; i < len; i++) {
let selection = this._selections[i];
const selection = this._selections[i];
if (selection.isEmpty()) {
thisFrameVisibleRangesWithStyle[i] = null;
continue;
}
let visibleRangesWithStyle = this._getVisibleRangesWithStyle(selection, ctx, this._previousFrameVisibleRangesWithStyle[i]);
const visibleRangesWithStyle = this._getVisibleRangesWithStyle(selection, ctx, this._previousFrameVisibleRangesWithStyle[i]);
thisFrameVisibleRangesWithStyle[i] = visibleRangesWithStyle;
this._actualRenderOneSelection(output, visibleStartLineNumber, this._selections.length > 1, visibleRangesWithStyle);
}
@@ -395,7 +395,7 @@ export class SelectionsOverlay extends DynamicViewOverlay {
if (!this._renderResult) {
return '';
}
let lineIndex = lineNumber - startLineNumber;
const lineIndex = lineNumber - startLineNumber;
if (lineIndex < 0 || lineIndex >= this._renderResult.length) {
return '';
}

View File

@@ -28,16 +28,16 @@ export class ViewCursors extends ViewPart {
private _isVisible: boolean;
private _domNode: FastDomNode<HTMLElement>;
private readonly _domNode: FastDomNode<HTMLElement>;
private _startCursorBlinkAnimation: TimeoutTimer;
private _cursorFlatBlinkInterval: IntervalTimer;
private readonly _startCursorBlinkAnimation: TimeoutTimer;
private readonly _cursorFlatBlinkInterval: IntervalTimer;
private _blinkingEnabled: boolean;
private _editorHasFocus: boolean;
private _primaryCursor: ViewCursor;
private _secondaryCursors: ViewCursor[];
private readonly _primaryCursor: ViewCursor;
private readonly _secondaryCursors: ViewCursor[];
private _renderData: IViewCursorRenderData[];
constructor(context: ViewContext) {
@@ -108,15 +108,15 @@ export class ViewCursors extends ViewPart {
if (this._secondaryCursors.length < secondaryPositions.length) {
// Create new cursors
let addCnt = secondaryPositions.length - this._secondaryCursors.length;
const addCnt = secondaryPositions.length - this._secondaryCursors.length;
for (let i = 0; i < addCnt; i++) {
let newCursor = new ViewCursor(this._context);
const newCursor = new ViewCursor(this._context);
this._domNode.domNode.insertBefore(newCursor.getDomNode().domNode, this._primaryCursor.getDomNode().domNode.nextSibling);
this._secondaryCursors.push(newCursor);
}
} else if (this._secondaryCursors.length > secondaryPositions.length) {
// Remove some cursors
let removeCnt = this._secondaryCursors.length - secondaryPositions.length;
const removeCnt = this._secondaryCursors.length - secondaryPositions.length;
for (let i = 0; i < removeCnt; i++) {
this._domNode.removeChild(this._secondaryCursors[0].getDomNode());
this._secondaryCursors.splice(0, 1);
@@ -129,7 +129,7 @@ export class ViewCursors extends ViewPart {
}
public onCursorStateChanged(e: viewEvents.ViewCursorStateChangedEvent): boolean {
let positions: Position[] = [];
const positions: Position[] = [];
for (let i = 0, len = e.selections.length; i < len; i++) {
positions[i] = e.selections[i].getPosition();
}
@@ -169,7 +169,7 @@ export class ViewCursors extends ViewPart {
return true;
}
public onTokensChanged(e: viewEvents.ViewTokensChangedEvent): boolean {
let shouldRender = (position: Position) => {
const shouldRender = (position: Position) => {
for (let i = 0, len = e.ranges.length; i < len; i++) {
if (e.ranges[i].fromLineNumber <= position.lineNumber && position.lineNumber <= e.ranges[i].toLineNumber) {
return true;
@@ -209,11 +209,11 @@ export class ViewCursors extends ViewPart {
this._startCursorBlinkAnimation.cancel();
this._cursorFlatBlinkInterval.cancel();
let blinkingStyle = this._getCursorBlinking();
const blinkingStyle = this._getCursorBlinking();
// hidden and solid are special as they involve no animations
let isHidden = (blinkingStyle === TextEditorCursorBlinkingStyle.Hidden);
let isSolid = (blinkingStyle === TextEditorCursorBlinkingStyle.Solid);
const isHidden = (blinkingStyle === TextEditorCursorBlinkingStyle.Hidden);
const isSolid = (blinkingStyle === TextEditorCursorBlinkingStyle.Solid);
if (isHidden) {
this._hide();

View File

@@ -69,11 +69,11 @@ export class ViewZones extends ViewPart {
private _recomputeWhitespacesProps(): boolean {
let hadAChange = false;
let keys = Object.keys(this._zones);
const keys = Object.keys(this._zones);
for (let i = 0, len = keys.length; i < len; i++) {
let id = keys[i];
let zone = this._zones[id];
let props = this._computeWhitespaceProps(zone.delegate);
const id = keys[i];
const zone = this._zones[id];
const props = this._computeWhitespaceProps(zone.delegate);
if (this._context.viewLayout.changeWhitespace(parseInt(id, 10), props.afterViewLineNumber, props.heightInPx)) {
this._safeCallOnComputedHeight(zone.delegate, props.heightInPx);
hadAChange = true;
@@ -150,7 +150,7 @@ export class ViewZones extends ViewPart {
column: zone.afterColumn
});
} else {
let validAfterLineNumber = this._context.model.validateModelPosition({
const validAfterLineNumber = this._context.model.validateModelPosition({
lineNumber: zone.afterLineNumber,
column: 1
}).lineNumber;
@@ -174,8 +174,8 @@ export class ViewZones extends ViewPart {
});
}
let viewPosition = this._context.model.coordinatesConverter.convertModelPositionToViewPosition(zoneAfterModelPosition);
let isVisible = this._context.model.coordinatesConverter.modelPositionIsVisible(zoneBeforeModelPosition);
const viewPosition = this._context.model.coordinatesConverter.convertModelPositionToViewPosition(zoneAfterModelPosition);
const isVisible = this._context.model.coordinatesConverter.modelPositionIsVisible(zoneBeforeModelPosition);
return {
afterViewLineNumber: viewPosition.lineNumber,
heightInPx: (isVisible ? this._heightInPixels(zone) : 0),
@@ -184,10 +184,10 @@ export class ViewZones extends ViewPart {
}
public addZone(zone: IViewZone): number {
let props = this._computeWhitespaceProps(zone);
let whitespaceId = this._context.viewLayout.addWhitespace(props.afterViewLineNumber, this._getZoneOrdinal(zone), props.heightInPx, props.minWidthInPx);
const props = this._computeWhitespaceProps(zone);
const whitespaceId = this._context.viewLayout.addWhitespace(props.afterViewLineNumber, this._getZoneOrdinal(zone), props.heightInPx, props.minWidthInPx);
let myZone: IMyViewZone = {
const myZone: IMyViewZone = {
whitespaceId: whitespaceId,
delegate: zone,
isVisible: false,
@@ -221,7 +221,7 @@ export class ViewZones extends ViewPart {
public removeZone(id: number): boolean {
if (this._zones.hasOwnProperty(id.toString())) {
let zone = this._zones[id.toString()];
const zone = this._zones[id.toString()];
delete this._zones[id.toString()];
this._context.viewLayout.removeWhitespace(zone.whitespaceId);
@@ -245,9 +245,9 @@ export class ViewZones extends ViewPart {
public layoutZone(id: number): boolean {
let changed = false;
if (this._zones.hasOwnProperty(id.toString())) {
let zone = this._zones[id.toString()];
let props = this._computeWhitespaceProps(zone.delegate);
// let newOrdinal = this._getZoneOrdinal(zone.delegate);
const zone = this._zones[id.toString()];
const props = this._computeWhitespaceProps(zone.delegate);
// const newOrdinal = this._getZoneOrdinal(zone.delegate);
changed = this._context.viewLayout.changeWhitespace(zone.whitespaceId, props.afterViewLineNumber, props.heightInPx) || changed;
// TODO@Alex: change `newOrdinal` too
@@ -261,7 +261,7 @@ export class ViewZones extends ViewPart {
public shouldSuppressMouseDownOnViewZone(id: number): boolean {
if (this._zones.hasOwnProperty(id.toString())) {
let zone = this._zones[id.toString()];
const zone = this._zones[id.toString()];
return Boolean(zone.delegate.suppressMouseDown);
}
return false;
@@ -310,7 +310,7 @@ export class ViewZones extends ViewPart {
public render(ctx: RestrictedRenderingContext): void {
const visibleWhitespaces = ctx.viewportData.whitespaceViewportData;
let visibleZones: { [id: string]: IViewWhitespaceViewportData; } = {};
const visibleZones: { [id: string]: IViewWhitespaceViewportData; } = {};
let hasVisibleZone = false;
for (let i = 0, len = visibleWhitespaces.length; i < len; i++) {
@@ -318,10 +318,10 @@ export class ViewZones extends ViewPart {
hasVisibleZone = true;
}
let keys = Object.keys(this._zones);
const keys = Object.keys(this._zones);
for (let i = 0, len = keys.length; i < len; i++) {
let id = keys[i];
let zone = this._zones[id];
const id = keys[i];
const zone = this._zones[id];
let newTop = 0;
let newHeight = 0;