Skip to content

Commit

Permalink
Fixes #121160: Tokenize only visible model lines
Browse files Browse the repository at this point in the history
  • Loading branch information
alexdima committed Oct 19, 2021
1 parent 242a6c3 commit 550ae45
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 4 deletions.
2 changes: 1 addition & 1 deletion src/vs/editor/common/model/textModelTokens.ts
Original file line number Diff line number Diff line change
Expand Up @@ -386,7 +386,7 @@ export class TextModelTokenization extends Disposable {
let nonWhitespaceColumn = this._textModel.getLineFirstNonWhitespaceColumn(startLineNumber);
const fakeLines: string[] = [];
let initialState: IState | null = null;
for (let i = startLineNumber - 1; nonWhitespaceColumn > 0 && i >= 1; i--) {
for (let i = startLineNumber - 1; nonWhitespaceColumn > 1 && i >= 1; i--) {
const newNonWhitespaceIndex = this._textModel.getLineFirstNonWhitespaceColumn(i);

if (newNonWhitespaceIndex === 0) {
Expand Down
14 changes: 11 additions & 3 deletions src/vs/editor/common/viewModel/viewModelImpl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -173,9 +173,17 @@ export class ViewModel extends Disposable implements IViewModel {

public tokenizeViewport(): void {
const linesViewportData = this.viewLayout.getLinesViewportData();
const startPosition = this.coordinatesConverter.convertViewPositionToModelPosition(new Position(linesViewportData.startLineNumber, 1));
const endPosition = this.coordinatesConverter.convertViewPositionToModelPosition(new Position(linesViewportData.endLineNumber, 1));
this.model.tokenizeViewport(startPosition.lineNumber, endPosition.lineNumber);
const viewVisibleRange = new Range(
linesViewportData.startLineNumber,
this.getLineMinColumn(linesViewportData.startLineNumber),
linesViewportData.endLineNumber,
this.getLineMaxColumn(linesViewportData.endLineNumber)
);
const modelVisibleRanges = this._toModelVisibleRanges(viewVisibleRange);

for (const modelVisibleRange of modelVisibleRanges) {
this.model.tokenizeViewport(modelVisibleRange.startLineNumber, modelVisibleRange.endLineNumber);
}
}

public setHasFocus(hasFocus: boolean): void {
Expand Down

0 comments on commit 550ae45

Please sign in to comment.