Skip to content

Commit

Permalink
calculate active line number correctly when word wrap enabled
Browse files Browse the repository at this point in the history
  • Loading branch information
hickford committed Jun 16, 2024
1 parent 0417a90 commit b9b38b0
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions src/vs/editor/browser/viewParts/lineNumbers/lineNumbers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ export class LineNumbersOverlay extends DynamicViewOverlay {
private _lastCursorModelPosition: Position;
private _renderResult: string[] | null;
private _activeLineNumber: number;
protected _wordWrap!: boolean;

constructor(context: ViewContext) {
super();
Expand All @@ -56,6 +57,7 @@ export class LineNumbersOverlay extends DynamicViewOverlay {
const layoutInfo = options.get(EditorOption.layoutInfo);
this._lineNumbersLeft = layoutInfo.lineNumbersLeft;
this._lineNumbersWidth = layoutInfo.lineNumbersWidth;
this._wordWrap = layoutInfo.isViewportWrapping;
}

public override dispose(): void {
Expand Down Expand Up @@ -160,6 +162,9 @@ export class LineNumbersOverlay extends DynamicViewOverlay {

const lineCount = this._context.viewModel.getLineCount();
const output: string[] = [];
const coordinatesConverter = this._context.viewModel.coordinatesConverter;
const activeModelLineNumber = coordinatesConverter.convertViewPositionToModelPosition(new Position(this._activeLineNumber, 1)).lineNumber;

for (let lineNumber = visibleStartLineNumber; lineNumber <= visibleEndLineNumber; lineNumber++) {
const lineIndex = lineNumber - visibleStartLineNumber;

Expand Down Expand Up @@ -191,11 +196,10 @@ export class LineNumbersOverlay extends DynamicViewOverlay {
extraClassNames += ' dimmed-line-number';
}
}
if (lineNumber === this._activeLineNumber) {
if (lineNumber === this._activeLineNumber || (this._wordWrap && coordinatesConverter.convertViewPositionToModelPosition(new Position(lineNumber, 1)).lineNumber === activeModelLineNumber)) {
extraClassNames += ' active-line-number';
}


output[lineIndex] = (
`<div class="${LineNumbersOverlay.CLASS_NAME}${lineHeightClassName}${extraClassNames}" style="left:${this._lineNumbersLeft}px;width:${this._lineNumbersWidth}px;">${renderLineNumber}</div>`
);
Expand Down

0 comments on commit b9b38b0

Please sign in to comment.