提交 9c850946 编写于 作者: A Alex Dima

Fixes #3559: C# folding error

上级 33a4ec72
...@@ -174,11 +174,8 @@ export class LayoutProvider extends ViewEventHandler implements IDisposable, ILa ...@@ -174,11 +174,8 @@ export class LayoutProvider extends ViewEventHandler implements IDisposable, ILa
public addWhitespace(afterLineNumber:number, ordinal:number, height:number): number { public addWhitespace(afterLineNumber:number, ordinal:number, height:number): number {
return this.linesLayout.insertWhitespace(afterLineNumber, ordinal, height); return this.linesLayout.insertWhitespace(afterLineNumber, ordinal, height);
} }
public changeWhitespace(id:number, newHeight:number): boolean { public changeWhitespace(id:number, newAfterLineNumber:number, newHeight:number): boolean {
return this.linesLayout.changeWhitespace(id, newHeight); return this.linesLayout.changeWhitespace(id, newAfterLineNumber, newHeight);
}
public changeAfterLineNumberForWhitespace(id:number, newAfterLineNumber:number): boolean {
return this.linesLayout.changeAfterLineNumberForWhitespace(id, newAfterLineNumber);
} }
public removeWhitespace(id:number): boolean { public removeWhitespace(id:number): boolean {
return this.linesLayout.removeWhitespace(id); return this.linesLayout.removeWhitespace(id);
......
...@@ -297,11 +297,14 @@ export class ViewContentWidgets extends ViewPart { ...@@ -297,11 +297,14 @@ export class ViewContentWidgets extends ViewPart {
} }
// Do not trust that widgets have a valid position // Do not trust that widgets have a valid position
let validModelPosition = this._context.model.validateModelPosition(widgetData.position), let validModelPosition = this._context.model.validateModelPosition(widgetData.position);
position = this._context.model.convertModelPositionToViewPosition(validModelPosition.lineNumber, validModelPosition.column),
pref:ContentWidgetPositionPreference, if (!this._context.model.modelPositionIsVisible(validModelPosition)) {
pass:number, // this position is hidden by the view model
i:number; return null;
}
let position = this._context.model.convertModelPositionToViewPosition(validModelPosition.lineNumber, validModelPosition.column);
let placement: IBoxLayoutResult = null; let placement: IBoxLayoutResult = null;
let fetchPlacement = () => { let fetchPlacement = () => {
...@@ -318,9 +321,9 @@ export class ViewContentWidgets extends ViewPart { ...@@ -318,9 +321,9 @@ export class ViewContentWidgets extends ViewPart {
}; };
// Do two passes, first for perfect fit, second picks first option // Do two passes, first for perfect fit, second picks first option
for (pass = 1; pass <= 2; pass++) { for (let pass = 1; pass <= 2; pass++) {
for (i = 0; i < widgetData.preference.length; i++) { for (let i = 0; i < widgetData.preference.length; i++) {
pref = widgetData.preference[i]; let pref = widgetData.preference[i];
if (pref === ContentWidgetPositionPreference.ABOVE) { if (pref === ContentWidgetPositionPreference.ABOVE) {
fetchPlacement(); fetchPlacement();
if (!placement) { if (!placement) {
......
...@@ -20,6 +20,11 @@ export interface IMyRenderData { ...@@ -20,6 +20,11 @@ export interface IMyRenderData {
data: editorCommon.IViewWhitespaceViewportData[]; data: editorCommon.IViewWhitespaceViewportData[];
} }
interface IComputedViewZoneProps {
afterViewLineNumber: number;
heightInPx: number;
}
export class ViewZones extends ViewPart { export class ViewZones extends ViewPart {
private _whitespaceManager:editorCommon.IWhitespaceManager; private _whitespaceManager:editorCommon.IWhitespaceManager;
...@@ -46,24 +51,24 @@ export class ViewZones extends ViewPart { ...@@ -46,24 +51,24 @@ export class ViewZones extends ViewPart {
// ---- begin view event handlers // ---- begin view event handlers
public onConfigurationChanged(e:editorCommon.IConfigurationChangedEvent): boolean { private _recomputeWhitespacesProps(): boolean {
let id:string;
if (e.lineHeight) { let zone2Height:{[id:string]:number;} = {};
var id:string, let hadAChange = false;
zone:IMyViewZone,
newComputedHeight:number,
zone2Height:{[id:string]:number;} = {};
for (id in this._zones) { for (id in this._zones) {
if (this._zones.hasOwnProperty(id)) { if (this._zones.hasOwnProperty(id)) {
zone = this._zones[id]; let zone = this._zones[id];
newComputedHeight = this._heightInPixels(zone.delegate); let props = this._computeWhitespaceProps(zone.delegate);
this._safeCallOnComputedHeight(zone.delegate, newComputedHeight); if (this._whitespaceManager.changeWhitespace(parseInt(id, 10), props.afterViewLineNumber, props.heightInPx)) {
zone2Height[id] = newComputedHeight; this._safeCallOnComputedHeight(zone.delegate, props.heightInPx);
this._whitespaceManager.changeWhitespace(parseInt(id, 10), newComputedHeight); zone2Height[id] = props.heightInPx;
hadAChange = true;
} }
} }
}
if (hadAChange) {
this._requestModificationFrame(() => { this._requestModificationFrame(() => {
for (id in this._zones) { for (id in this._zones) {
if (this._zones.hasOwnProperty(id)) { if (this._zones.hasOwnProperty(id)) {
...@@ -74,28 +79,22 @@ export class ViewZones extends ViewPart { ...@@ -74,28 +79,22 @@ export class ViewZones extends ViewPart {
} }
} }
}); });
return true;
} }
return false; return hadAChange;
} }
public onLineMappingChanged(): boolean { public onConfigurationChanged(e:editorCommon.IConfigurationChangedEvent): boolean {
var hadAChange = false,
zone:IMyViewZone,
id:string;
for (id in this._zones) { if (e.lineHeight) {
if (this._zones.hasOwnProperty(id)) { return this._recomputeWhitespacesProps();
zone = this._zones[id];
var newAfterLineNumber = this._computeWhitespaceAfterLineNumber(zone.delegate);
hadAChange = this._whitespaceManager.changeAfterLineNumberForWhitespace(parseInt(id, 10), newAfterLineNumber) || hadAChange;
}
} }
return hadAChange; return false;
}
public onLineMappingChanged(): boolean {
return this._recomputeWhitespacesProps();
} }
public onLayoutChanged(layoutInfo:editorCommon.IEditorLayoutInfo): boolean { public onLayoutChanged(layoutInfo:editorCommon.IEditorLayoutInfo): boolean {
...@@ -134,19 +133,22 @@ export class ViewZones extends ViewPart { ...@@ -134,19 +133,22 @@ export class ViewZones extends ViewPart {
} }
private _computeWhitespaceAfterLineNumber(zone:IViewZone): number { private _computeWhitespaceProps(zone:IViewZone): IComputedViewZoneProps {
if (zone.afterLineNumber === 0) { if (zone.afterLineNumber === 0) {
return 0; return {
afterViewLineNumber: 0,
heightInPx: this._heightInPixels(zone)
};
} }
var zoneAfterModelPosition:editorCommon.IPosition; let zoneAfterModelPosition:editorCommon.IPosition;
if (typeof zone.afterColumn !== 'undefined') { if (typeof zone.afterColumn !== 'undefined') {
zoneAfterModelPosition = this._context.model.validateModelPosition({ zoneAfterModelPosition = this._context.model.validateModelPosition({
lineNumber: zone.afterLineNumber, lineNumber: zone.afterLineNumber,
column: zone.afterColumn column: zone.afterColumn
}); });
} else { } else {
var validAfterLineNumber = this._context.model.validateModelPosition({ let validAfterLineNumber = this._context.model.validateModelPosition({
lineNumber: zone.afterLineNumber, lineNumber: zone.afterLineNumber,
column: 1 column: 1
}).lineNumber; }).lineNumber;
...@@ -157,21 +159,38 @@ export class ViewZones extends ViewPart { ...@@ -157,21 +159,38 @@ export class ViewZones extends ViewPart {
}; };
} }
var viewPosition = this._context.model.convertModelPositionToViewPosition(zoneAfterModelPosition.lineNumber, zoneAfterModelPosition.column); let zoneBeforeModelPosition:editorCommon.IPosition;
return viewPosition.lineNumber; if (zoneAfterModelPosition.column === this._context.model.getModelLineMaxColumn(zoneAfterModelPosition.lineNumber)) {
zoneBeforeModelPosition = this._context.model.validateModelPosition({
lineNumber: zoneAfterModelPosition.lineNumber + 1,
column: 1
});
} else {
zoneBeforeModelPosition = this._context.model.validateModelPosition({
lineNumber: zoneAfterModelPosition.lineNumber,
column: zoneAfterModelPosition.column + 1
});
}
let viewPosition = this._context.model.convertModelPositionToViewPosition(zoneAfterModelPosition.lineNumber, zoneAfterModelPosition.column);
let isVisible = this._context.model.modelPositionIsVisible(zoneBeforeModelPosition);
return {
afterViewLineNumber: viewPosition.lineNumber,
heightInPx: (isVisible ? this._heightInPixels(zone) : 0)
};
} }
public addZone(zone:IViewZone): number { public addZone(zone:IViewZone): number {
var computedHeight = this._heightInPixels(zone); let props = this._computeWhitespaceProps(zone);
var whitespaceId = this._whitespaceManager.addWhitespace(this._computeWhitespaceAfterLineNumber(zone), this._getZoneOrdinal(zone), computedHeight); let whitespaceId = this._whitespaceManager.addWhitespace(props.afterViewLineNumber, this._getZoneOrdinal(zone), props.heightInPx);
var myZone:IMyViewZone = { let myZone:IMyViewZone = {
whitespaceId: whitespaceId, whitespaceId: whitespaceId,
delegate: zone, delegate: zone,
isVisible: false isVisible: false
}; };
this._safeCallOnComputedHeight(myZone.delegate, computedHeight); this._safeCallOnComputedHeight(myZone.delegate, props.heightInPx);
this._requestModificationFrame(() => { this._requestModificationFrame(() => {
if (!myZone.delegate.domNode.hasAttribute('monaco-view-zone')) { if (!myZone.delegate.domNode.hasAttribute('monaco-view-zone')) {
...@@ -179,7 +198,7 @@ export class ViewZones extends ViewPart { ...@@ -179,7 +198,7 @@ export class ViewZones extends ViewPart {
return; return;
} }
myZone.delegate.domNode.style.position = 'absolute'; myZone.delegate.domNode.style.position = 'absolute';
StyleMutator.setHeight(myZone.delegate.domNode, computedHeight); StyleMutator.setHeight(myZone.delegate.domNode, props.heightInPx);
myZone.delegate.domNode.style.width = '100%'; myZone.delegate.domNode.style.width = '100%';
StyleMutator.setDisplay(myZone.delegate.domNode, 'none'); StyleMutator.setDisplay(myZone.delegate.domNode, 'none');
}); });
...@@ -216,16 +235,12 @@ export class ViewZones extends ViewPart { ...@@ -216,16 +235,12 @@ export class ViewZones extends ViewPart {
} }
public layoutZone(id: number): boolean { public layoutZone(id: number): boolean {
var changed = false; let changed = false;
if (this._zones.hasOwnProperty(id.toString())) { if (this._zones.hasOwnProperty(id.toString())) {
var zone = this._zones[id.toString()]; let zone = this._zones[id.toString()];
let props = this._computeWhitespaceProps(zone.delegate);
var newComputedHeight = this._heightInPixels(zone.delegate); // let newOrdinal = this._getZoneOrdinal(zone.delegate);
var newAfterLineNumber = this._computeWhitespaceAfterLineNumber(zone.delegate); changed = this._whitespaceManager.changeWhitespace(zone.whitespaceId, props.afterViewLineNumber, props.heightInPx) || changed;
// var newOrdinal = this._getZoneOrdinal(zone.delegate);
changed = this._whitespaceManager.changeWhitespace(zone.whitespaceId, newComputedHeight) || changed;
changed = this._whitespaceManager.changeAfterLineNumberForWhitespace(zone.whitespaceId, newAfterLineNumber) || changed;
// TODO@Alex: change `newOrdinal` too // TODO@Alex: change `newOrdinal` too
} }
return changed; return changed;
......
...@@ -2504,16 +2504,10 @@ export interface IWhitespaceManager { ...@@ -2504,16 +2504,10 @@ export interface IWhitespaceManager {
addWhitespace(afterLineNumber:number, ordinal:number, height:number): number; addWhitespace(afterLineNumber:number, ordinal:number, height:number): number;
/** /**
* Change the height of a whitespace. * Change the properties of a whitespace.
* @param height is specified in pixels. * @param height is specified in pixels.
*/ */
changeWhitespace(id:number, newHeight:number): boolean; changeWhitespace(id:number, newAfterLineNumber:number, newHeight:number): boolean;
/**
* Change the `afterLineNumber` of a whitespace.
* @return a boolean indicating if something has actually changed
*/
changeAfterLineNumberForWhitespace(id:number, newAfterLineNumber:number): boolean;
/** /**
* Remove rendering space * Remove rendering space
...@@ -2553,6 +2547,7 @@ export interface IViewModel extends IEventEmitter, IDisposable { ...@@ -2553,6 +2547,7 @@ export interface IViewModel extends IEventEmitter, IDisposable {
convertViewRangeToModelRange(viewRange:IRange): IEditorRange; convertViewRangeToModelRange(viewRange:IRange): IEditorRange;
convertModelPositionToViewPosition(modelLineNumber:number, modelColumn:number): IEditorPosition; convertModelPositionToViewPosition(modelLineNumber:number, modelColumn:number): IEditorPosition;
convertModelSelectionToViewSelection(modelSelection:IEditorSelection): IEditorSelection; convertModelSelectionToViewSelection(modelSelection:IEditorSelection): IEditorSelection;
modelPositionIsVisible(position:IPosition): boolean;
} }
export interface IViewEventNames { export interface IViewEventNames {
......
...@@ -40,26 +40,8 @@ export class LinesLayout { ...@@ -40,26 +40,8 @@ export class LinesLayout {
return this.verticalObjects.insertWhitespace(afterLineNumber, ordinal, height); return this.verticalObjects.insertWhitespace(afterLineNumber, ordinal, height);
} }
/** public changeWhitespace(id:number, newAfterLineNumber:number, newHeight:number): boolean {
* Change the height of an existing whitespace return this.verticalObjects.changeWhitespace(id, newAfterLineNumber, newHeight);
*
* @param id The whitespace to change
* @param newHeightInPx The new height of the whitespace, in pixels
* @return Returns true if the whitespace is found and if the new height is different than the old height
*/
public changeWhitespace(id:number, newHeight:number): boolean {
return this.verticalObjects.changeWhitespace(id, newHeight);
}
/**
* Change the line number after which an existing whitespace flows.
*
* @param id The whitespace to change
* @param newAfterLineNumber The new line number the whitespace will follow
* @return Returns true if the whitespace is found and if the new line number is different than the old line number
*/
public changeAfterLineNumberForWhitespace(id:number, newAfterLineNumber:number): boolean {
return this.verticalObjects.changeAfterLineNumberForWhitespace(id, newAfterLineNumber);
} }
/** /**
......
...@@ -53,26 +53,8 @@ export class VerticalObjects { ...@@ -53,26 +53,8 @@ export class VerticalObjects {
return this.whitespaces.insertWhitespace(afterLineNumber, ordinal, heightInPx); return this.whitespaces.insertWhitespace(afterLineNumber, ordinal, heightInPx);
} }
/** public changeWhitespace(id:number, newAfterLineNumber:number, newHeight:number): boolean {
* Change the height of an existing whitespace return this.whitespaces.changeWhitespace(id, newAfterLineNumber, newHeight);
*
* @param id The whitespace to change
* @param newHeightInPx The new height of the whitespace, in pixels
* @return Returns true if the whitespace is found and if the new height is different than the old height
*/
public changeWhitespace(id:number, newHeightInPx:number): boolean {
return this.whitespaces.changeWhitespace(id, newHeightInPx);
}
/**
* Change the line number after which an existing whitespace flows.
*
* @param id The whitespace to change
* @param newAfterLineNumber The new line number the whitespace will follow
* @return Returns true if the whitespace is found and if the new line number is different than the old line number
*/
public changeAfterLineNumberForWhitespace(id:number, newAfterLineNumber:number): boolean {
return this.whitespaces.changeAfterLineNumberForWhitespace(id, newAfterLineNumber);
} }
/** /**
......
...@@ -133,6 +133,13 @@ export class WhitespaceComputer { ...@@ -133,6 +133,13 @@ export class WhitespaceComputer {
this.prefixSumValidIndex = Math.min(this.prefixSumValidIndex, insertIndex - 1); this.prefixSumValidIndex = Math.min(this.prefixSumValidIndex, insertIndex - 1);
} }
public changeWhitespace(id:number, newAfterLineNumber:number, newHeight:number): boolean {
let hasChanges = false;
hasChanges = this.changeWhitespaceHeight(id, newHeight) || hasChanges;
hasChanges = this.changeWhitespaceAfterLineNumber(id, newAfterLineNumber) || hasChanges;
return hasChanges;
}
/** /**
* Change the height of an existing whitespace * Change the height of an existing whitespace
* *
...@@ -140,7 +147,7 @@ export class WhitespaceComputer { ...@@ -140,7 +147,7 @@ export class WhitespaceComputer {
* @param newHeightInPx The new height of the whitespace, in pixels * @param newHeightInPx The new height of the whitespace, in pixels
* @return Returns true if the whitespace is found and if the new height is different than the old height * @return Returns true if the whitespace is found and if the new height is different than the old height
*/ */
public changeWhitespace(id:number, newHeightInPx:number): boolean { public changeWhitespaceHeight(id:number, newHeightInPx:number): boolean {
var sid = id.toString(); var sid = id.toString();
if (this.whitespaceId2Index.hasOwnProperty(sid)) { if (this.whitespaceId2Index.hasOwnProperty(sid)) {
var index = this.whitespaceId2Index[sid]; var index = this.whitespaceId2Index[sid];
...@@ -160,7 +167,7 @@ export class WhitespaceComputer { ...@@ -160,7 +167,7 @@ export class WhitespaceComputer {
* @param newAfterLineNumber The new line number the whitespace will follow * @param newAfterLineNumber The new line number the whitespace will follow
* @return Returns true if the whitespace is found and if the new line number is different than the old line number * @return Returns true if the whitespace is found and if the new line number is different than the old line number
*/ */
public changeAfterLineNumberForWhitespace(id:number, newAfterLineNumber:number): boolean { public changeWhitespaceAfterLineNumber(id:number, newAfterLineNumber:number): boolean {
var sid = id.toString(); var sid = id.toString();
if (this.whitespaceId2Index.hasOwnProperty(sid)) { if (this.whitespaceId2Index.hasOwnProperty(sid)) {
var index = this.whitespaceId2Index[sid]; var index = this.whitespaceId2Index[sid];
......
...@@ -362,7 +362,7 @@ export class SplitLinesCollection implements ILinesCollection { ...@@ -362,7 +362,7 @@ export class SplitLinesCollection implements ILinesCollection {
return result; return result;
} }
public setHiddenAreas(_ranges:editorCommon.IRange[], emit:(evenType:string, payload:any)=>void): void { public setHiddenAreas(_ranges:editorCommon.IRange[], emit:(evenType:string, payload:any)=>void): boolean {
let newRanges = this._reduceRanges(_ranges); let newRanges = this._reduceRanges(_ranges);
...@@ -378,7 +378,7 @@ export class SplitLinesCollection implements ILinesCollection { ...@@ -378,7 +378,7 @@ export class SplitLinesCollection implements ILinesCollection {
} }
} }
if (!hasDifference) { if (!hasDifference) {
return; return false;
} }
} }
// END TODO@Martin: Please stop calling this method on each model change! // END TODO@Martin: Please stop calling this method on each model change!
...@@ -430,6 +430,15 @@ export class SplitLinesCollection implements ILinesCollection { ...@@ -430,6 +430,15 @@ export class SplitLinesCollection implements ILinesCollection {
} }
emit(editorCommon.ViewEventNames.ModelFlushedEvent, null); emit(editorCommon.ViewEventNames.ModelFlushedEvent, null);
return true;
}
public inputPositionIsVisible(inputLineNumber:number, inputColumn:number): boolean {
if (inputLineNumber < 1 || inputLineNumber > this.lines.length) {
// invalid arguments
return false;
}
return this.lines[inputLineNumber - 1].isVisible();
} }
public setTabSize(newTabSize:number, emit:(evenType:string, payload:any)=>void): boolean { public setTabSize(newTabSize:number, emit:(evenType:string, payload:any)=>void): boolean {
......
...@@ -31,6 +31,7 @@ export interface ILinesCollection { ...@@ -31,6 +31,7 @@ export interface ILinesCollection {
convertOutputPositionToInputPosition(viewLineNumber:number, viewColumn:number): editorCommon.IEditorPosition; convertOutputPositionToInputPosition(viewLineNumber:number, viewColumn:number): editorCommon.IEditorPosition;
convertInputPositionToOutputPosition(inputLineNumber:number, inputColumn:number): editorCommon.IEditorPosition; convertInputPositionToOutputPosition(inputLineNumber:number, inputColumn:number): editorCommon.IEditorPosition;
setHiddenAreas(ranges:editorCommon.IRange[], emit:(evenType:string, payload:any)=>void): void; setHiddenAreas(ranges:editorCommon.IRange[], emit:(evenType:string, payload:any)=>void): void;
inputPositionIsVisible(inputLineNumber:number, inputColumn:number): boolean;
dispose(): void; dispose(): void;
} }
...@@ -82,12 +83,20 @@ export class ViewModel extends EventEmitter implements editorCommon.IViewModel { ...@@ -82,12 +83,20 @@ export class ViewModel extends EventEmitter implements editorCommon.IViewModel {
public setHiddenAreas(ranges:editorCommon.IRange[]): void { public setHiddenAreas(ranges:editorCommon.IRange[]): void {
this.deferredEmit(() => { this.deferredEmit(() => {
this.lines.setHiddenAreas(ranges, (eventType:string, payload:any) => this.emit(eventType, payload)); let lineMappingChanged = this.lines.setHiddenAreas(ranges, (eventType:string, payload:any) => this.emit(eventType, payload));
this.decorations.onLineMappingChanged((eventType:string, payload:any) => this.emit(eventType, payload)); if (lineMappingChanged) {
this.cursors.onLineMappingChanged((eventType:string, payload:any) => this.emit(eventType, payload)); this.emit(editorCommon.ViewEventNames.LineMappingChangedEvent);
this.decorations.onLineMappingChanged((eventType:string, payload:any) => this.emit(eventType, payload));
this.cursors.onLineMappingChanged((eventType:string, payload:any) => this.emit(eventType, payload));
this._updateShouldForceTokenization();
}
}); });
} }
public modelPositionIsVisible(position:editorCommon.IPosition): boolean {
return this.lines.inputPositionIsVisible(position.lineNumber, position.column);
}
public dispose(): void { public dispose(): void {
this.listenersToRemove.forEach((element) => { this.listenersToRemove.forEach((element) => {
element(); element();
......
...@@ -145,7 +145,7 @@ suite('Editor ViewLayout - VerticalObjects', () => { ...@@ -145,7 +145,7 @@ suite('Editor ViewLayout - VerticalObjects', () => {
// Change whitespace height // Change whitespace height
// 10 lines // 10 lines
// whitespace: - a(2,10) // whitespace: - a(2,10)
verticalObjects.changeWhitespace(a, 10); verticalObjects.changeWhitespace(a, 2, 10);
assert.equal(verticalObjects.getTotalHeight(1), 20); assert.equal(verticalObjects.getTotalHeight(1), 20);
assert.equal(verticalObjects.getVerticalOffsetForLineNumber( 1, 1), 0); assert.equal(verticalObjects.getVerticalOffsetForLineNumber( 1, 1), 0);
assert.equal(verticalObjects.getVerticalOffsetForLineNumber( 2, 1), 1); assert.equal(verticalObjects.getVerticalOffsetForLineNumber( 2, 1), 1);
...@@ -161,7 +161,7 @@ suite('Editor ViewLayout - VerticalObjects', () => { ...@@ -161,7 +161,7 @@ suite('Editor ViewLayout - VerticalObjects', () => {
// Change whitespace position // Change whitespace position
// 10 lines // 10 lines
// whitespace: - a(5,10) // whitespace: - a(5,10)
verticalObjects.changeAfterLineNumberForWhitespace(a, 5); verticalObjects.changeWhitespace(a, 5, 10);
assert.equal(verticalObjects.getTotalHeight(1), 20); assert.equal(verticalObjects.getTotalHeight(1), 20);
assert.equal(verticalObjects.getVerticalOffsetForLineNumber( 1, 1), 0); assert.equal(verticalObjects.getVerticalOffsetForLineNumber( 1, 1), 0);
assert.equal(verticalObjects.getVerticalOffsetForLineNumber( 2, 1), 1); assert.equal(verticalObjects.getVerticalOffsetForLineNumber( 2, 1), 1);
......
...@@ -43,7 +43,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => { ...@@ -43,7 +43,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => {
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(4), 30); assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(4), 30);
// Change last inserted whitespace height to 30 // Change last inserted whitespace height to 30
whitespaceComputer.changeWhitespace(b, 30); whitespaceComputer.changeWhitespaceHeight(b, 30);
// whitespaces: a(2, 10), b(2, 30) // whitespaces: a(2, 10), b(2, 30)
assert.equal(whitespaceComputer.getCount(), 2); assert.equal(whitespaceComputer.getCount(), 2);
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 2); assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 2);
...@@ -131,7 +131,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => { ...@@ -131,7 +131,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => {
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(5), 110); assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(5), 110);
// Change whitespace after line 2 to height of 100 // Change whitespace after line 2 to height of 100
whitespaceComputer.changeWhitespace(a, 100); whitespaceComputer.changeWhitespaceHeight(a, 100);
// whitespaces: b(0, 50), a(2, 100), d(3, 30), c(4, 20) // whitespaces: b(0, 50), a(2, 100), d(3, 30), c(4, 20)
assert.equal(whitespaceComputer.getCount(), 4); assert.equal(whitespaceComputer.getCount(), 4);
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 0); assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 0);
...@@ -376,7 +376,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => { ...@@ -376,7 +376,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => {
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 16, ordinals, 0), 8); assert.equal(WhitespaceComputer.findInsertionIndex(arr, 16, ordinals, 0), 8);
}); });
test('WhitespaceComputer changeAfterLineNumberForWhitespace & getFirstWhitespaceIndexAfterLineNumber', () => { test('WhitespaceComputer changeWhitespaceAfterLineNumber & getFirstWhitespaceIndexAfterLineNumber', () => {
var whitespaceComputer = new WhitespaceComputer(); var whitespaceComputer = new WhitespaceComputer();
var a = whitespaceComputer.insertWhitespace(0, 0, 1); var a = whitespaceComputer.insertWhitespace(0, 0, 1);
...@@ -400,7 +400,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => { ...@@ -400,7 +400,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => {
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(8), -1); // -- assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(8), -1); // --
// Do not really move a // Do not really move a
whitespaceComputer.changeAfterLineNumberForWhitespace(a, 1); whitespaceComputer.changeWhitespaceAfterLineNumber(a, 1);
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(0), a); // 1 assert.equal(whitespaceComputer.getIdForWhitespaceIndex(0), a); // 1
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 1); assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 1);
...@@ -420,7 +420,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => { ...@@ -420,7 +420,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => {
// Do not really move a // Do not really move a
whitespaceComputer.changeAfterLineNumberForWhitespace(a, 2); whitespaceComputer.changeWhitespaceAfterLineNumber(a, 2);
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(0), a); // 2 assert.equal(whitespaceComputer.getIdForWhitespaceIndex(0), a); // 2
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 2); assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 2);
...@@ -440,7 +440,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => { ...@@ -440,7 +440,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => {
// Change a to conflict with c => a gets placed after c // Change a to conflict with c => a gets placed after c
whitespaceComputer.changeAfterLineNumberForWhitespace(a, 3); whitespaceComputer.changeWhitespaceAfterLineNumber(a, 3);
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(0), c); // 3 assert.equal(whitespaceComputer.getIdForWhitespaceIndex(0), c); // 3
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 3); assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 3);
...@@ -460,7 +460,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => { ...@@ -460,7 +460,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => {
// Make a no-op // Make a no-op
whitespaceComputer.changeAfterLineNumberForWhitespace(c, 3); whitespaceComputer.changeWhitespaceAfterLineNumber(c, 3);
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(0), c); // 3 assert.equal(whitespaceComputer.getIdForWhitespaceIndex(0), c); // 3
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 3); assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 3);
...@@ -481,7 +481,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => { ...@@ -481,7 +481,7 @@ suite('Editor ViewLayout - WhitespaceComputer', () => {
// Conflict c with b => c gets placed after b // Conflict c with b => c gets placed after b
whitespaceComputer.changeAfterLineNumberForWhitespace(c, 7); whitespaceComputer.changeWhitespaceAfterLineNumber(c, 7);
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(0), a); // 3 assert.equal(whitespaceComputer.getIdForWhitespaceIndex(0), a); // 3
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 3); assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 3);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册