Skip to content

Commit

Permalink
Fixing #145072 by reporting tokenization as incomplete when tokenizat…
Browse files Browse the repository at this point in the history
…ion state store is not defined.
  • Loading branch information
hediet committed Mar 18, 2022
1 parent 44e8d34 commit db25f1e
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions src/vs/editor/common/model/textModelTokens.ts
Original file line number Diff line number Diff line change
Expand Up @@ -294,13 +294,13 @@ export class TextModelTokenization extends Disposable {
}
} while (this._hasLinesToTokenize());

this._textModel.setTokens(builder.finalize(), !this._hasLinesToTokenize());
this._textModel.setTokens(builder.finalize(), this._isTokenizationComplete());
}

public tokenizeViewport(startLineNumber: number, endLineNumber: number): void {
const builder = new ContiguousMultilineTokensBuilder();
this._tokenizeViewport(builder, startLineNumber, endLineNumber);
this._textModel.setTokens(builder.finalize(), !this._hasLinesToTokenize());
this._textModel.setTokens(builder.finalize(), this._isTokenizationComplete());
}

public reset(): void {
Expand All @@ -311,7 +311,7 @@ export class TextModelTokenization extends Disposable {
public forceTokenization(lineNumber: number): void {
const builder = new ContiguousMultilineTokensBuilder();
this._updateTokensUntilLine(builder, lineNumber);
this._textModel.setTokens(builder.finalize(), !this._hasLinesToTokenize());
this._textModel.setTokens(builder.finalize(), this._isTokenizationComplete());
}

public getTokenTypeIfInsertingCharacter(position: Position, character: string): StandardTokenType {
Expand Down Expand Up @@ -405,6 +405,13 @@ export class TextModelTokenization extends Disposable {
return (this._tokenizationStateStore.invalidLineStartIndex < this._textModel.getLineCount());
}

private _isTokenizationComplete(): boolean {
if (!this._tokenizationStateStore) {
return false;
}
return (this._tokenizationStateStore.invalidLineStartIndex >= this._textModel.getLineCount());
}

private _tokenizeOneInvalidLine(builder: ContiguousMultilineTokensBuilder): number {
if (!this._tokenizationStateStore || !this._hasLinesToTokenize()) {
return this._textModel.getLineCount() + 1;
Expand Down

0 comments on commit db25f1e

Please sign in to comment.