Skip to content

Commit df3b99b

Browse files
committed
Just use leftoverVisibleColumns for having the cursor always go to the end of line
1 parent f86418a commit df3b99b

3 files changed

Lines changed: 10 additions & 22 deletions

File tree

src/vs/editor/common/controller/cursorCommon.ts

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -277,21 +277,18 @@ export class SingleCursorState {
277277
public readonly position: Position;
278278
public readonly leftoverVisibleColumns: number;
279279
public readonly selection: Selection;
280-
public readonly isEnd: boolean;
281280

282281
constructor(
283282
selectionStart: Range,
284283
selectionStartLeftoverVisibleColumns: number,
285284
position: Position,
286285
leftoverVisibleColumns: number,
287-
isEnd: boolean = false
288286
) {
289287
this.selectionStart = selectionStart;
290288
this.selectionStartLeftoverVisibleColumns = selectionStartLeftoverVisibleColumns;
291289
this.position = position;
292290
this.leftoverVisibleColumns = leftoverVisibleColumns;
293291
this.selection = SingleCursorState._computeSelection(this.selectionStart, this.position);
294-
this.isEnd = isEnd;
295292
}
296293

297294
public equals(other: SingleCursorState) {
@@ -307,24 +304,22 @@ export class SingleCursorState {
307304
return (!this.selection.isEmpty() || !this.selectionStart.isEmpty());
308305
}
309306

310-
public move(inSelectionMode: boolean, lineNumber: number, column: number, leftoverVisibleColumns: number, isEnd: boolean = false): SingleCursorState {
307+
public move(inSelectionMode: boolean, lineNumber: number, column: number, leftoverVisibleColumns: number): SingleCursorState {
311308
if (inSelectionMode) {
312309
// move just position
313310
return new SingleCursorState(
314311
this.selectionStart,
315312
this.selectionStartLeftoverVisibleColumns,
316313
new Position(lineNumber, column),
317-
leftoverVisibleColumns,
318-
isEnd
314+
leftoverVisibleColumns
319315
);
320316
} else {
321317
// move everything
322318
return new SingleCursorState(
323319
new Range(lineNumber, column, lineNumber, column),
324320
leftoverVisibleColumns,
325321
new Position(lineNumber, column),
326-
leftoverVisibleColumns,
327-
isEnd
322+
leftoverVisibleColumns
328323
);
329324
}
330325
}

src/vs/editor/common/controller/cursorMoveOperations.ts

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { CursorColumns, CursorConfiguration, ICursorSimpleModel, SingleCursorSta
77
import { Position } from 'vs/editor/common/core/position';
88
import { Range } from 'vs/editor/common/core/range';
99
import * as strings from 'vs/base/common/strings';
10+
import { Constants } from 'vs/base/common/uint';
1011

1112
export class CursorPosition {
1213
_cursorPositionBrand: void;
@@ -122,13 +123,9 @@ export class MoveOperations {
122123
column = cursor.position.column;
123124
}
124125

125-
if (cursor.isEnd) {
126-
column = model.getLineMaxColumn(lineNumber + 1);
127-
}
128-
129126
let r = MoveOperations.down(config, model, lineNumber, column, cursor.leftoverVisibleColumns, linesCount, true);
130127

131-
return cursor.move(inSelectionMode, r.lineNumber, cursor.isEnd ? column : r.column, r.leftoverVisibleColumns, cursor.isEnd);
128+
return cursor.move(inSelectionMode, r.lineNumber, r.column, r.leftoverVisibleColumns);
132129
}
133130

134131
public static translateDown(config: CursorConfiguration, model: ICursorSimpleModel, cursor: SingleCursorState): SingleCursorState {
@@ -178,13 +175,9 @@ export class MoveOperations {
178175
column = cursor.position.column;
179176
}
180177

181-
if (cursor.isEnd) {
182-
column = model.getLineMaxColumn(lineNumber - 1);
183-
}
184-
185178
let r = MoveOperations.up(config, model, lineNumber, column, cursor.leftoverVisibleColumns, linesCount, true);
186179

187-
return cursor.move(inSelectionMode, r.lineNumber, cursor.isEnd ? column : r.column, r.leftoverVisibleColumns, cursor.isEnd);
180+
return cursor.move(inSelectionMode, r.lineNumber, r.column, r.leftoverVisibleColumns);
188181
}
189182

190183
public static translateUp(config: CursorConfiguration, model: ICursorSimpleModel, cursor: SingleCursorState): SingleCursorState {
@@ -222,7 +215,7 @@ export class MoveOperations {
222215
public static moveToEndOfLine(config: CursorConfiguration, model: ICursorSimpleModel, cursor: SingleCursorState, inSelectionMode: boolean): SingleCursorState {
223216
let lineNumber = cursor.position.lineNumber;
224217
let maxColumn = model.getLineMaxColumn(lineNumber);
225-
return cursor.move(inSelectionMode, lineNumber, maxColumn, 0, true);
218+
return cursor.move(inSelectionMode, lineNumber, maxColumn, Constants.MAX_SAFE_SMALL_INTEGER - maxColumn);
226219
}
227220

228221
public static moveToBeginningOfBuffer(config: CursorConfiguration, model: ICursorSimpleModel, cursor: SingleCursorState, inSelectionMode: boolean): SingleCursorState {

src/vs/editor/common/controller/oneCursor.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ export class OneCursor {
9999
);
100100
const leftoverVisibleColumns = modelState.position.equals(position) ? modelState.leftoverVisibleColumns : 0;
101101

102-
modelState = new SingleCursorState(selectionStart, selectionStartLeftoverVisibleColumns, position, leftoverVisibleColumns, modelState.isEnd);
102+
modelState = new SingleCursorState(selectionStart, selectionStartLeftoverVisibleColumns, position, leftoverVisibleColumns);
103103
}
104104

105105
if (!viewState) {
@@ -108,12 +108,12 @@ export class OneCursor {
108108
const viewSelectionStart2 = context.convertModelPositionToViewPosition(new Position(modelState.selectionStart.endLineNumber, modelState.selectionStart.endColumn));
109109
const viewSelectionStart = new Range(viewSelectionStart1.lineNumber, viewSelectionStart1.column, viewSelectionStart2.lineNumber, viewSelectionStart2.column);
110110
const viewPosition = context.convertModelPositionToViewPosition(modelState.position);
111-
viewState = new SingleCursorState(viewSelectionStart, modelState.selectionStartLeftoverVisibleColumns, viewPosition, modelState.leftoverVisibleColumns, modelState.isEnd);
111+
viewState = new SingleCursorState(viewSelectionStart, modelState.selectionStartLeftoverVisibleColumns, viewPosition, modelState.leftoverVisibleColumns);
112112
} else {
113113
// Validate new view state
114114
const viewSelectionStart = context.validateViewRange(viewState.selectionStart, modelState.selectionStart);
115115
const viewPosition = context.validateViewPosition(viewState.position, modelState.position);
116-
viewState = new SingleCursorState(viewSelectionStart, modelState.selectionStartLeftoverVisibleColumns, viewPosition, modelState.leftoverVisibleColumns, viewState.isEnd);
116+
viewState = new SingleCursorState(viewSelectionStart, modelState.selectionStartLeftoverVisibleColumns, viewPosition, modelState.leftoverVisibleColumns);
117117
}
118118

119119
this.modelState = modelState;

0 commit comments

Comments
 (0)