1
>
/*---------------------------------------------------------------------------------------------
textModelTokens.ts
2
>
* Copyright (c) Microsoft Corporation. All rights reserved.
3
>
* Licensed under the MIT License. See License.txt in the project root for license information.
4
>
*--------------------------------------------------------------------------------------------*/
5
>
6
>
import { IdleDeadline, runWhenGlobalIdle } from '../../../base/common/async.js';
7
>
import { BugIndicatingError, onUnexpectedError } from '../../../base/common/errors.js';
8
>
import { setTimeout0 } from '../../../base/common/platform.js';
9
>
import { StopWatch } from '../../../base/common/stopwatch.js';
10
>
import { countEOL } from '../core/misc/eolCounter.js';
11
>
import { LineRange } from '../core/ranges/lineRange.js';
12
>
import { OffsetRange } from '../core/ranges/offsetRange.js';
13
>
import { Position } from '../core/position.js';
14
>
import { StandardTokenType } from '../encodedTokenAttributes.js';
15
>
import { EncodedTokenizationResult, IBackgroundTokenizationStore, IBackgroundTokenizer, ILanguageIdCodec, IState, ITokenizationSupport } from '../languages.js';
16
>
import { nullTokenizeEncoded } from '../languages/nullTokenize.js';
17
>
import { ITextModel } from '../model.js';
18
>
import { FixedArray } from './fixedArray.js';
19
>
import { IModelContentChange } from './mirrorTextModel.js';
20
>
import { ContiguousMultilineTokensBuilder } from '../tokens/contiguousMultilineTokensBuilder.js';
21
>
import { LineTokens } from '../tokens/lineTokens.js';
22
>
23
>
const enum Constants {
24
>
CHEAP_TOKENIZATION_LENGTH_LIMIT = 2048
25
>
}
26
>
27
>
export class TokenizerWithStateStore<TState extends IState = IState> {
28
>
private readonly initialState;
29
>
30
>
public readonly store: TrackingTokenizationStateStore<TState>;
31
>
32
>
constructor(
33
lineCount: number,
34
public readonly tokenizationSupport: ITokenizationSupport