提交 482b6972 编写于 作者: A Alex Dima

TokensInflatorMap holds on to top level mode id

上级 7cbc3587
......@@ -186,9 +186,9 @@ export class ModelLine {
// --- BEGIN TOKENS
public setTokens(map: TokensInflatorMap, tokens: Token[], topLevelModeId:string, modeTransitions:ModeTransition[]): void {
public setTokens(map: TokensInflatorMap, tokens: Token[], modeTransitions:ModeTransition[]): void {
this._lineTokens = toLineTokensFromInflated(map, tokens, this._text.length);
this._modeTransitions = toModeTransitions(topLevelModeId, modeTransitions);
this._modeTransitions = toModeTransitions(map.topLevelModeId, modeTransitions);
}
private _setLineTokensFromDeflated(tokens:number[]): void {
......
......@@ -155,7 +155,7 @@ export class TextModelWithTokens extends TextModel implements editorCommon.IToke
}
this._lastState = null;
this._tokensInflatorMap = new TokensInflatorMap();
this._tokensInflatorMap = new TokensInflatorMap(this.getModeId());
this._invalidLineStartIndex = 0;
this._beginBackgroundTokenization();
}
......@@ -405,7 +405,7 @@ export class TextModelWithTokens extends TextModel implements editorCommon.IToke
// Make sure there is at least the transition to the top-most mode
r.modeTransitions.push(new ModeTransition(0, this.getModeId()));
}
this._lines[lineIndex].setTokens(this._tokensInflatorMap, r.tokens, this.getModeId(), r.modeTransitions);
this._lines[lineIndex].setTokens(this._tokensInflatorMap, r.tokens, r.modeTransitions);
this._lines[lineIndex].isInvalid = false;
if (endStateIndex < linesLength) {
......
......@@ -23,14 +23,17 @@ const INFLATED_TOKENS_NON_EMPTY_TEXT:ViewLineToken[] = [DEFAULT_VIEW_TOKEN];
const DEFLATED_TOKENS_NON_EMPTY_TEXT:number[] = [0];
export class TokensInflatorMap {
_tokensInflatorMapBrand: void;
public topLevelModeId: string;
public _inflate:string[];
public _deflate: {
[token:string]:number;
};
constructor() {
constructor(topLevelModeId: string) {
this.topLevelModeId = topLevelModeId;
this._inflate = [ '' ];
this._deflate = { '': 0 };
}
......
......@@ -264,8 +264,8 @@ suite('Editor Model - modelLine.append text', () => {
suite('Editor Model - modelLine.applyEdits text & tokens', () => {
function testLineEditTokens(initialText:string, initialTokens: Token[], edits:ILineEdit[], expectedText:string, expectedTokens: Token[]): void {
let line = new ModelLine(1, initialText, NO_TAB_SIZE);
let map = new TokensInflatorMap();
line.setTokens(map, initialTokens, null, []);
let map = new TokensInflatorMap(null);
line.setTokens(map, initialTokens, []);
line.applyEdits({}, edits, NO_TAB_SIZE);
......@@ -275,11 +275,11 @@ suite('Editor Model - modelLine.applyEdits text & tokens', () => {
test('insertion on empty line', () => {
let line = new ModelLine(1, 'some text', NO_TAB_SIZE);
let map = new TokensInflatorMap();
line.setTokens(map, [new Token(0, 'bar')], null, []);
let map = new TokensInflatorMap(null);
line.setTokens(map, [new Token(0, 'bar')], []);
line.applyEdits({}, [{startColumn:1, endColumn:10, text:'', forceMoveMarkers: false}], NO_TAB_SIZE);
line.setTokens(map, [], null, []);
line.setTokens(map, [], []);
line.applyEdits({}, [{startColumn:1, endColumn:1, text:'a', forceMoveMarkers: false}], NO_TAB_SIZE);
assertLineTokens(line.getTokens(map), [new Token(0, '')]);
......@@ -836,8 +836,8 @@ suite('Editor Model - modelLine.applyEdits text & tokens', () => {
suite('Editor Model - modelLine.split text & tokens', () => {
function testLineSplitTokens(initialText:string, initialTokens: Token[], splitColumn:number, expectedText1:string, expectedText2:string, expectedTokens: Token[]): void {
let line = new ModelLine(1, initialText, NO_TAB_SIZE);
let map = new TokensInflatorMap();
line.setTokens(map, initialTokens, null, []);
let map = new TokensInflatorMap(null);
line.setTokens(map, initialTokens, []);
let other = line.split({}, splitColumn, false, NO_TAB_SIZE);
......@@ -918,13 +918,13 @@ suite('Editor Model - modelLine.split text & tokens', () => {
suite('Editor Model - modelLine.append text & tokens', () => {
function testLineAppendTokens(aText:string, aTokens: Token[], bText:string, bTokens:Token[], expectedText:string, expectedTokens:Token[]): void {
let inflator = new TokensInflatorMap();
let inflator = new TokensInflatorMap(null);
let a = new ModelLine(1, aText, NO_TAB_SIZE);
a.setTokens(inflator, aTokens, null, []);
a.setTokens(inflator, aTokens, []);
let b = new ModelLine(2, bText, NO_TAB_SIZE);
b.setTokens(inflator, bTokens, null, []);
b.setTokens(inflator, bTokens, []);
a.append({}, b, NO_TAB_SIZE);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册