Skip to content

Commit

Permalink
1. fix scrolling when line wrapping is on
Browse files Browse the repository at this point in the history
2. disable virtual space on wrapped lines except for the last view line
3. fix order of conditions in moveLeft operation
  • Loading branch information
x17jiri committed Nov 28, 2024
1 parent 3b92312 commit 1289324
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 6 deletions.
3 changes: 2 additions & 1 deletion src/vs/editor/browser/viewParts/viewLines/viewLines.ts
Original file line number Diff line number Diff line change
Expand Up @@ -634,7 +634,8 @@ export class ViewLines extends ViewPart implements IViewLines {
const newScrollLeft = this._computeScrollLeftToReveal(horizontalRevealRequest);

if (newScrollLeft) {
if (!this._isViewportWrapping) {
const virtualSpace = this._context.viewModel.model.getOptions().virtualSpace;
if (!this._isViewportWrapping || virtualSpace) {
// ensure `scrollWidth` is large enough
this._ensureMaxLineWidth(newScrollLeft.maxHorizontalOffset);
}
Expand Down
8 changes: 4 additions & 4 deletions src/vs/editor/common/cursor/cursorMoveOperations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -102,12 +102,12 @@ export class MoveOperations {
// for possibly negative columns.
const clippedPos = MoveOperations.clipPositionColumn(pos, minColumn, maxColumn);
const normalizedPos = model.normalizePosition(clippedPos, PositionAffinity.Left);
if (virtualSpace && normalizedPos.column <= minColumn) {
lineNumber = pos.lineNumber;
column = minColumn;
} else if (virtualSpace && pos.column > maxColumn) {
if (virtualSpace && pos.column > maxColumn) {
lineNumber = pos.lineNumber;
column = pos.column - 1;
} else if (virtualSpace && normalizedPos.column <= minColumn) {
lineNumber = pos.lineNumber;
column = minColumn;
} else {
const p = MoveOperations.left(config, model, normalizedPos);
lineNumber = p.lineNumber;
Expand Down
6 changes: 5 additions & 1 deletion src/vs/editor/common/viewModel/viewModelLines.ts
Original file line number Diff line number Diff line change
Expand Up @@ -789,14 +789,18 @@ export class ViewModelLinesFromProjectedModel implements IViewModelLines {
const lineIndex = r.index;
const remainder = r.remainder;

// On wrapped lines, disable virtual space on all but the last view line
const virtualSpace =
this.model.getOptions().virtualSpace
&& viewLineNumber === this.projectedModelLineLineCounts.getPrefixSum(lineIndex + 1);

const line = this.modelLineProjections[lineIndex];

const minColumn = line.getViewLineMinColumn(this.model, lineIndex + 1, remainder);
const maxColumn = line.getViewLineMaxColumn(this.model, lineIndex + 1, remainder);
if (viewColumn < minColumn) {
viewColumn = minColumn;
}
const virtualSpace = this.model.getOptions().virtualSpace;
let viewLeftoverVisibleColumns = 0;
if (viewColumn > maxColumn) {
viewLeftoverVisibleColumns = virtualSpace ? viewColumn - maxColumn : 0;
Expand Down

0 comments on commit 1289324

Please sign in to comment.