提交 7cbc3587 编写于 作者: A Alex Dima

Minor renames

上级 0892555f
......@@ -1452,10 +1452,25 @@ export interface ICursorStateComputer {
* @internal
*/
export interface ILineTokens {
/**
* Get the number of tokens on this line.
*/
getTokenCount(): number;
getTokenStartIndex(tokenIndex:number): number;
/**
* Get the start offset of the token at `tokenIndex`.
*/
getTokenStartOffset(tokenIndex:number): number;
/**
* Get the type of the token at `tokenIndex`.
*/
getTokenType(tokenIndex:number): string;
getTokenEndIndex(tokenIndex:number, textLength:number): number;
/**
* Get the end offset of the token at `tokenIndex`.
*/
getTokenEndOffset(tokenIndex:number, textLength:number): number;
/**
* Check if tokens have changed. This is called by the view to validate rendered lines
......
......@@ -746,7 +746,7 @@ export class LineTokens implements ILineTokens {
return this._tokens.length;
}
public getTokenStartIndex(tokenIndex:number): number {
public getTokenStartOffset(tokenIndex:number): number {
return TokensBinaryEncoding.getStartIndex(this._tokens[tokenIndex]);
}
......@@ -754,7 +754,7 @@ export class LineTokens implements ILineTokens {
return TokensBinaryEncoding.getType(this.map, this._tokens[tokenIndex]);
}
public getTokenEndIndex(tokenIndex:number, textLength:number): number {
public getTokenEndOffset(tokenIndex:number, textLength:number): number {
if (tokenIndex + 1 < this._tokens.length) {
return TokensBinaryEncoding.getStartIndex(this._tokens[tokenIndex + 1]);
}
......@@ -803,7 +803,7 @@ class EmptyLineTokens implements ILineTokens {
return 0;
}
public getTokenStartIndex(tokenIndex:number): number {
public getTokenStartOffset(tokenIndex:number): number {
return 0;
}
......@@ -811,7 +811,7 @@ class EmptyLineTokens implements ILineTokens {
return strings.empty;
}
public getTokenEndIndex(tokenIndex:number, textLength:number): number {
public getTokenEndOffset(tokenIndex:number, textLength:number): number {
return 0;
}
......@@ -840,7 +840,7 @@ export class DefaultLineTokens implements ILineTokens {
return 1;
}
public getTokenStartIndex(tokenIndex:number): number {
public getTokenStartOffset(tokenIndex:number): number {
return 0;
}
......@@ -848,7 +848,7 @@ export class DefaultLineTokens implements ILineTokens {
return strings.empty;
}
public getTokenEndIndex(tokenIndex:number, textLength:number): number {
public getTokenEndOffset(tokenIndex:number, textLength:number): number {
return textLength;
}
......
......@@ -58,8 +58,8 @@ class LineContext implements ILineContext {
return this._lineTokens.getTokenCount();
}
public getTokenStartIndex(tokenIndex:number): number {
return this._lineTokens.getTokenStartIndex(tokenIndex);
public getTokenStartOffset(tokenIndex:number): number {
return this._lineTokens.getTokenStartOffset(tokenIndex);
}
public getTokenType(tokenIndex:number): string {
......@@ -528,7 +528,7 @@ export class TextModelWithTokens extends TextModel implements editorCommon.IToke
let lineTokens = this._lines[lineNumber - 1].getTokens(this._tokensInflatorMap);
let currentTokenIndex = lineTokens.findIndexOfOffset(position.column - 1);
let currentTokenStart = lineTokens.getTokenStartIndex(currentTokenIndex);
let currentTokenStartOffset = lineTokens.getTokenStartOffset(currentTokenIndex);
let modeTransitions = this._lines[lineNumber - 1].getModeTransitions(this.getModeId());
let currentModeIndex = ModeTransition.findIndexInSegmentsArray(modeTransitions, position.column - 1);
......@@ -536,13 +536,13 @@ export class TextModelWithTokens extends TextModel implements editorCommon.IToke
let currentModeBrackets = LanguageConfigurationRegistry.getBracketsSupport(currentMode.modeId);
// If position is in between two tokens, try first looking in the previous token
if (currentTokenIndex > 0 && currentTokenStart === position.column - 1) {
if (currentTokenIndex > 0 && currentTokenStartOffset === position.column - 1) {
let prevTokenIndex = currentTokenIndex - 1;
let prevTokenType = lineTokens.getTokenType(prevTokenIndex);
// check that previous token is not to be ignored
if (!ignoreBracketsInToken(prevTokenType)) {
let prevTokenStart = lineTokens.getTokenStartIndex(prevTokenIndex);
let prevTokenStartOffset = lineTokens.getTokenStartOffset(prevTokenIndex);
let prevMode = currentMode;
let prevModeBrackets = currentModeBrackets;
......@@ -554,9 +554,9 @@ export class TextModelWithTokens extends TextModel implements editorCommon.IToke
if (prevModeBrackets) {
// limit search in case previous token is very large, there's no need to go beyond `maxBracketLength`
prevTokenStart = Math.max(prevTokenStart, position.column - 1 - prevModeBrackets.maxBracketLength);
prevTokenStartOffset = Math.max(prevTokenStartOffset, position.column - 1 - prevModeBrackets.maxBracketLength);
let foundBracket = BracketsUtils.findPrevBracketInToken(prevModeBrackets.reversedRegex, lineNumber, lineText, prevTokenStart, currentTokenStart);
let foundBracket = BracketsUtils.findPrevBracketInToken(prevModeBrackets.reversedRegex, lineNumber, lineText, prevTokenStartOffset, currentTokenStartOffset);
// check that we didn't hit a bracket too far away from position
if (foundBracket && foundBracket.startColumn <= position.column && position.column <= foundBracket.endColumn) {
......@@ -579,15 +579,15 @@ export class TextModelWithTokens extends TextModel implements editorCommon.IToke
if (currentModeBrackets) {
// limit search to not go before `maxBracketLength`
currentTokenStart = Math.max(currentTokenStart, position.column - 1 - currentModeBrackets.maxBracketLength);
currentTokenStartOffset = Math.max(currentTokenStartOffset, position.column - 1 - currentModeBrackets.maxBracketLength);
// limit search to not go after `maxBracketLength`
let currentTokenEnd = lineTokens.getTokenEndIndex(currentTokenIndex, lineText.length);
currentTokenEnd = Math.min(currentTokenEnd, position.column - 1 + currentModeBrackets.maxBracketLength);
let currentTokenEndOffset = lineTokens.getTokenEndOffset(currentTokenIndex, lineText.length);
currentTokenEndOffset = Math.min(currentTokenEndOffset, position.column - 1 + currentModeBrackets.maxBracketLength);
// it might still be the case that [currentTokenStart -> currentTokenEnd] contains multiple brackets
while(true) {
let foundBracket = BracketsUtils.findNextBracketInText(currentModeBrackets.forwardRegex, lineNumber, lineText.substring(currentTokenStart, currentTokenEnd), currentTokenStart);
let foundBracket = BracketsUtils.findNextBracketInText(currentModeBrackets.forwardRegex, lineNumber, lineText.substring(currentTokenStartOffset, currentTokenEndOffset), currentTokenStartOffset);
if (!foundBracket) {
// there are no brackets in this text
break;
......@@ -606,7 +606,7 @@ export class TextModelWithTokens extends TextModel implements editorCommon.IToke
}
}
currentTokenStart = foundBracket.endColumn - 1;
currentTokenStartOffset = foundBracket.endColumn - 1;
}
}
}
......@@ -646,10 +646,10 @@ export class TextModelWithTokens extends TextModel implements editorCommon.IToke
let currentModeId = modeTransitions[currentModeIndex].modeId;
let tokensLength = lineTokens.getTokenCount() - 1;
let currentTokenEnd = lineText.length;
let currentTokenEndOffset = lineText.length;
if (lineNumber === position.lineNumber) {
tokensLength = lineTokens.findIndexOfOffset(position.column - 1);
currentTokenEnd = position.column - 1;
currentTokenEndOffset = position.column - 1;
currentModeIndex = ModeTransition.findIndexInSegmentsArray(modeTransitions, position.column - 1);
currentModeStart = modeTransitions[currentModeIndex].startIndex;
......@@ -658,9 +658,9 @@ export class TextModelWithTokens extends TextModel implements editorCommon.IToke
for (let tokenIndex = tokensLength; tokenIndex >= 0; tokenIndex--) {
let currentTokenType = lineTokens.getTokenType(tokenIndex);
let currentTokenStart = lineTokens.getTokenStartIndex(tokenIndex);
let currentTokenStartOffset = lineTokens.getTokenStartOffset(tokenIndex);
if (currentTokenStart < currentModeStart) {
if (currentTokenStartOffset < currentModeStart) {
currentModeIndex--;
currentModeStart = modeTransitions[currentModeIndex].startIndex;
currentModeId = modeTransitions[currentModeIndex].modeId;
......@@ -669,7 +669,7 @@ export class TextModelWithTokens extends TextModel implements editorCommon.IToke
if (currentModeId === modeId && !ignoreBracketsInToken(currentTokenType)) {
while (true) {
let r = BracketsUtils.findPrevBracketInToken(reversedBracketRegex, lineNumber, lineText, currentTokenStart, currentTokenEnd);
let r = BracketsUtils.findPrevBracketInToken(reversedBracketRegex, lineNumber, lineText, currentTokenStartOffset, currentTokenEndOffset);
if (!r) {
break;
}
......@@ -687,11 +687,11 @@ export class TextModelWithTokens extends TextModel implements editorCommon.IToke
return r;
}
currentTokenEnd = r.startColumn - 1;
currentTokenEndOffset = r.startColumn - 1;
}
}
currentTokenEnd = currentTokenStart;
currentTokenEndOffset = currentTokenStartOffset;
}
}
......@@ -714,10 +714,10 @@ export class TextModelWithTokens extends TextModel implements editorCommon.IToke
let currentModeId = modeTransitions[currentModeIndex].modeId;
let startTokenIndex = 0;
let currentTokenStart = lineTokens.getTokenStartIndex(startTokenIndex);
let currentTokenStartOffset = lineTokens.getTokenStartOffset(startTokenIndex);
if (lineNumber === position.lineNumber) {
startTokenIndex = lineTokens.findIndexOfOffset(position.column - 1);
currentTokenStart = Math.max(currentTokenStart, position.column - 1);
currentTokenStartOffset = Math.max(currentTokenStartOffset, position.column - 1);
currentModeIndex = ModeTransition.findIndexInSegmentsArray(modeTransitions, position.column - 1);
nextModeStart = (currentModeIndex + 1 < modeTransitions.length ? modeTransitions[currentModeIndex + 1].startIndex : lineText.length + 1);
......@@ -726,9 +726,9 @@ export class TextModelWithTokens extends TextModel implements editorCommon.IToke
for (let tokenIndex = startTokenIndex, tokensLength = lineTokens.getTokenCount(); tokenIndex < tokensLength; tokenIndex++) {
let currentTokenType = lineTokens.getTokenType(tokenIndex);
let currentTokenEnd = lineTokens.getTokenEndIndex(tokenIndex, lineText.length);
let currentTokenEndOffset = lineTokens.getTokenEndOffset(tokenIndex, lineText.length);
if (currentTokenStart >= nextModeStart) {
if (currentTokenStartOffset >= nextModeStart) {
currentModeIndex++;
nextModeStart = (currentModeIndex + 1 < modeTransitions.length ? modeTransitions[currentModeIndex + 1].startIndex : lineText.length + 1);
currentModeId = modeTransitions[currentModeIndex].modeId;
......@@ -736,7 +736,7 @@ export class TextModelWithTokens extends TextModel implements editorCommon.IToke
if (currentModeId === modeId && !ignoreBracketsInToken(currentTokenType)) {
while (true) {
let r = BracketsUtils.findNextBracketInToken(bracketRegex, lineNumber, lineText, currentTokenStart, currentTokenEnd);
let r = BracketsUtils.findNextBracketInToken(bracketRegex, lineNumber, lineText, currentTokenStartOffset, currentTokenEndOffset);
if (!r) {
break;
}
......@@ -754,11 +754,11 @@ export class TextModelWithTokens extends TextModel implements editorCommon.IToke
return r;
}
currentTokenStart = r.endColumn - 1;
currentTokenStartOffset = r.endColumn - 1;
}
}
currentTokenStart = currentTokenEnd;
currentTokenStartOffset = currentTokenEndOffset;
}
}
......@@ -775,24 +775,24 @@ export class TextModelWithTokens extends TextModel implements editorCommon.IToke
let lineText = this._lines[lineNumber - 1].text;
let tokensLength = lineTokens.getTokenCount() - 1;
let currentTokenEnd = lineText.length;
let currentTokenEndOffset = lineText.length;
if (lineNumber === position.lineNumber) {
tokensLength = lineTokens.findIndexOfOffset(position.column - 1);
currentTokenEnd = position.column - 1;
currentTokenEndOffset = position.column - 1;
}
for (let tokenIndex = tokensLength; tokenIndex >= 0; tokenIndex--) {
let currentTokenType = lineTokens.getTokenType(tokenIndex);
let currentTokenStart = lineTokens.getTokenStartIndex(tokenIndex);
let currentTokenStartOffset = lineTokens.getTokenStartOffset(tokenIndex);
if (!ignoreBracketsInToken(currentTokenType)) {
let r = BracketsUtils.findPrevBracketInToken(reversedBracketRegex, lineNumber, lineText, currentTokenStart, currentTokenEnd);
let r = BracketsUtils.findPrevBracketInToken(reversedBracketRegex, lineNumber, lineText, currentTokenStartOffset, currentTokenEndOffset);
if (r) {
return this._toFoundBracket(r);
}
}
currentTokenEnd = currentTokenStart;
currentTokenEndOffset = currentTokenStartOffset;
}
}
......@@ -809,24 +809,24 @@ export class TextModelWithTokens extends TextModel implements editorCommon.IToke
let lineText = this._lines[lineNumber - 1].text;
let startTokenIndex = 0;
let currentTokenStart = lineTokens.getTokenStartIndex(startTokenIndex);
let currentTokenStartOffset = lineTokens.getTokenStartOffset(startTokenIndex);
if (lineNumber === position.lineNumber) {
startTokenIndex = lineTokens.findIndexOfOffset(position.column - 1);
currentTokenStart = Math.max(currentTokenStart, position.column - 1);
currentTokenStartOffset = Math.max(currentTokenStartOffset, position.column - 1);
}
for (let tokenIndex = startTokenIndex, tokensLength = lineTokens.getTokenCount(); tokenIndex < tokensLength; tokenIndex++) {
let currentTokenType = lineTokens.getTokenType(tokenIndex);
let currentTokenEnd = lineTokens.getTokenEndIndex(tokenIndex, lineText.length);
let currentTokenEndOffset = lineTokens.getTokenEndOffset(tokenIndex, lineText.length);
if (!ignoreBracketsInToken(currentTokenType)) {
let r = BracketsUtils.findNextBracketInToken(bracketRegex, lineNumber, lineText, currentTokenStart, currentTokenEnd);
let r = BracketsUtils.findNextBracketInToken(bracketRegex, lineNumber, lineText, currentTokenStartOffset, currentTokenEndOffset);
if (r) {
return this._toFoundBracket(r);
}
}
currentTokenStart = currentTokenEnd;
currentTokenStartOffset = currentTokenEndOffset;
}
}
......
......@@ -28,7 +28,7 @@ export class TokenIterator implements editorCommon.ITokenIterator {
var columnIndex = position.column - 1, tokenEndIndex = Number.MAX_VALUE;
for (var i = this._currentLineTokens.getTokenCount() - 1; i >= 0; i--) {
let tokenStartIndex = this._currentLineTokens.getTokenStartIndex(i);
let tokenStartIndex = this._currentLineTokens.getTokenStartOffset(i);
if (tokenStartIndex <= columnIndex && columnIndex <= tokenEndIndex) {
......@@ -97,9 +97,9 @@ export class TokenIterator implements editorCommon.ITokenIterator {
}
private _current(): editorCommon.ITokenInfo {
let startIndex = this._currentLineTokens.getTokenStartIndex(this._currentTokenIndex);
let startIndex = this._currentLineTokens.getTokenStartOffset(this._currentTokenIndex);
let type = this._currentLineTokens.getTokenType(this._currentTokenIndex);
let endIndex = this._currentLineTokens.getTokenEndIndex(this._currentTokenIndex, this._model.getLineContent(this._currentLineNumber).length);
let endIndex = this._currentLineTokens.getTokenEndOffset(this._currentTokenIndex, this._model.getLineContent(this._currentLineNumber).length);
return {
token: new Token(startIndex, type),
......
......@@ -170,13 +170,40 @@ export interface IModeDescriptor {
* @internal
*/
export interface ILineContext {
/**
* Get the content of the line.
*/
getLineContent(): string;
/**
* The mode transitions on this line.
*/
modeTransitions: ModeTransition[];
/**
* Get the number of tokens on this line.
*/
getTokenCount(): number;
getTokenStartIndex(tokenIndex:number): number;
/**
* Get the start offset of the token at `tokenIndex`.
*/
getTokenStartOffset(tokenIndex:number): number;
/**
* Get the type of the token at `tokenIndex`.
*/
getTokenType(tokenIndex:number): string;
/**
* Find the token containing offset `offset`.
* For example, with the following tokens [0, 5), [5, 9), [9, infinity)
* Searching for 0, 1, 2, 3 or 4 will return 0.
* Searching for 5, 6, 7 or 8 will return 1.
* Searching for 9, 10, 11, ... will return 2.
* @param offset The search offset
* @return The index of the token containing the offset.
*/
findIndexOfOffset(offset:number): number;
}
......
......@@ -42,13 +42,13 @@ export function handleEvent<T>(context:modes.ILineContext, offset:number, runner
let nextTokenAfterMode = -1;
if (modeIndex + 1 < modeTransitions.length) {
nextTokenAfterMode = context.findIndexOfOffset(modeTransitions[modeIndex + 1].startIndex);
nextCharacterAfterModeIndex = context.getTokenStartIndex(nextTokenAfterMode);
nextCharacterAfterModeIndex = context.getTokenStartOffset(nextTokenAfterMode);
} else {
nextTokenAfterMode = context.getTokenCount();
nextCharacterAfterModeIndex = context.getLineContent().length;
}
let firstTokenCharacterOffset = context.getTokenStartIndex(firstTokenInModeIndex);
let firstTokenCharacterOffset = context.getTokenStartOffset(firstTokenInModeIndex);
let newCtx = new FilteredLineContext(context, nestedModeId, firstTokenInModeIndex, nextTokenAfterMode, firstTokenCharacterOffset, nextCharacterAfterModeIndex);
return runner(nestedModeId, newCtx, offset - firstTokenCharacterOffset);
}
......@@ -88,8 +88,8 @@ export class FilteredLineContext implements modes.ILineContext {
return this._actual.findIndexOfOffset(offset + this._firstTokenCharacterOffset) - this._firstTokenInModeIndex;
}
public getTokenStartIndex(tokenIndex:number): number {
return this._actual.getTokenStartIndex(tokenIndex + this._firstTokenInModeIndex) - this._firstTokenCharacterOffset;
public getTokenStartOffset(tokenIndex:number): number {
return this._actual.getTokenStartOffset(tokenIndex + this._firstTokenInModeIndex) - this._firstTokenCharacterOffset;
}
public getTokenType(tokenIndex:number): string {
......
......@@ -131,7 +131,7 @@ export class Brackets {
let lineText = context.getLineContent();
let tokenIndex = context.findIndexOfOffset(offset);
let tokenStart = context.getTokenStartIndex(tokenIndex);
let tokenStart = context.getTokenStartOffset(tokenIndex);
let tokenEnd = offset + 1;
var firstNonWhitespaceIndex = strings.firstNonWhitespaceIndex(context.getLineContent());
......@@ -181,7 +181,7 @@ export class Brackets {
// check if the full open bracket matches
let lastTokenIndex = context.findIndexOfOffset(offset);
if (line.substring(context.getTokenStartIndex(lastTokenIndex), offset+1/* include electric char*/) !== pair.open) {
if (line.substring(context.getTokenStartOffset(lastTokenIndex), offset+1/* include electric char*/) !== pair.open) {
continue;
}
......
......@@ -169,7 +169,7 @@ class TokenScanner {
}
let tokenType = this._currentLineTokens.getTokenType(this._currentTokenIndex);
let tokenEndIndex = this._currentLineTokens.getTokenEndIndex(this._currentTokenIndex, this._currentLineText.length);
let tokenEndIndex = this._currentLineTokens.getTokenEndOffset(this._currentTokenIndex, this._currentLineText.length);
let tmpTokenEndIndex = tokenEndIndex;
let nextBracket: Range = null;
......@@ -211,7 +211,7 @@ class TokenScanner {
this._currentTokenStart = tmpTokenEndIndex;
} else {
this._currentTokenIndex += 1;
this._currentTokenStart = (this._currentTokenIndex < this._currentLineTokens.getTokenCount() ? this._currentLineTokens.getTokenStartIndex(this._currentTokenIndex) : 0);
this._currentTokenStart = (this._currentTokenIndex < this._currentLineTokens.getTokenCount() ? this._currentLineTokens.getTokenStartOffset(this._currentTokenIndex) : 0);
}
return token;
}
......@@ -234,7 +234,7 @@ class TokenScanner {
this._currentTokenStart = nextBracket.endColumn - 1;
} else {
this._currentTokenIndex += 1;
this._currentTokenStart = (this._currentTokenIndex < this._currentLineTokens.getTokenCount() ? this._currentLineTokens.getTokenStartIndex(this._currentTokenIndex) : 0);
this._currentTokenStart = (this._currentTokenIndex < this._currentLineTokens.getTokenCount() ? this._currentLineTokens.getTokenStartOffset(this._currentTokenIndex) : 0);
}
return token;
}
......
......@@ -301,11 +301,11 @@ suite('Editor Modes - Tokenization', () => {
handleEvent(createMockLineContext('abc (def', lineTokens), 0, (modeId:string, context:modes.ILineContext, offset:number) => {
assert.deepEqual(modeId, 'A');
assert.equal(context.getTokenCount(), 3);
assert.equal(context.getTokenStartIndex(0), 0);
assert.equal(context.getTokenStartOffset(0), 0);
assert.equal(context.getTokenType(0), 'A.abc');
assert.equal(context.getTokenStartIndex(1), 3);
assert.equal(context.getTokenStartOffset(1), 3);
assert.equal(context.getTokenType(1), '');
assert.equal(context.getTokenStartIndex(2), 4);
assert.equal(context.getTokenStartOffset(2), 4);
assert.equal(context.getTokenType(2), 'A.(');
assert.deepEqual(offset, 0);
assert.equal(context.getLineContent(), 'abc (');
......@@ -314,7 +314,7 @@ suite('Editor Modes - Tokenization', () => {
handleEvent(createMockLineContext('abc (def', lineTokens), 6, (modeId:string, context:modes.ILineContext, offset:number) => {
assert.deepEqual(modeId, 'B');
assert.equal(context.getTokenCount(), 1);
assert.equal(context.getTokenStartIndex(0), 0);
assert.equal(context.getTokenStartOffset(0), 0);
assert.equal(context.getTokenType(0), 'B.def');
assert.deepEqual(offset, 1);
assert.equal(context.getLineContent(), 'def');
......
......@@ -52,7 +52,7 @@ class TestLineContext implements modes.ILineContext {
return this._tokens.length;
}
public getTokenStartIndex(tokenIndex:number): number {
public getTokenStartOffset(tokenIndex:number): number {
return this._tokens[tokenIndex].startIndex;
}
......
......@@ -54,16 +54,16 @@ export function getScanner(model: EditorCommon.ITokenizedModel, position:EditorC
var tokensOnLine = tokens.getTokenCount();
var tokenType = tokens.getTokenType(tokenIndex);
var tokenStart = tokens.getTokenStartIndex(tokenIndex);
var tokenEnd = tokens.getTokenEndIndex(tokenIndex, lineContent.length);
var tokenStart = tokens.getTokenStartOffset(tokenIndex);
var tokenEnd = tokens.getTokenEndOffset(tokenIndex, lineContent.length);
if ((tokenType === '' || isDelimiter(tokenType)) && tokenStart === lineOffset) {
tokenIndex--;
if (tokenIndex >= 0) {
// we are at the end of a different token
tokenType = tokens.getTokenType(tokenIndex);
tokenStart = tokens.getTokenStartIndex(tokenIndex);
tokenEnd = tokens.getTokenEndIndex(tokenIndex, lineContent.length);
tokenStart = tokens.getTokenStartOffset(tokenIndex);
tokenEnd = tokens.getTokenEndOffset(tokenIndex, lineContent.length);
} else {
tokenType = '';
tokenStart = tokenEnd = 0;
......@@ -88,8 +88,8 @@ export function getScanner(model: EditorCommon.ITokenizedModel, position:EditorC
do {
while (tokenIndex >= 0) {
tokenType = tokens.getTokenType(tokenIndex);
tokenStart = tokens.getTokenStartIndex(tokenIndex);
tokenEnd = tokens.getTokenEndIndex(tokenIndex, lineContent.length);
tokenStart = tokens.getTokenStartOffset(tokenIndex);
tokenEnd = tokens.getTokenEndOffset(tokenIndex, lineContent.length);
if (isInterestingToken(tokenType)) {
return true;
......@@ -118,8 +118,8 @@ export function getScanner(model: EditorCommon.ITokenizedModel, position:EditorC
do {
while (tokenIndex < tokensOnLine) {
tokenType = tokens.getTokenType(tokenIndex);
tokenStart = tokens.getTokenStartIndex(tokenIndex);
tokenEnd = tokens.getTokenEndIndex(tokenIndex, lineContent.length);
tokenStart = tokens.getTokenStartOffset(tokenIndex);
tokenEnd = tokens.getTokenEndOffset(tokenIndex, lineContent.length);
if (isInterestingToken(tokenType)) {
return true;
......
......@@ -561,8 +561,8 @@ export class HTMLWorker {
break;
case ATTRIB_NAME:
nextTokenEndIndex = tokens.getTokenEndIndex(i, lineContentLength);
tokenContent = lineContent.substring(tokens.getTokenStartIndex(i), nextTokenEndIndex).toLowerCase();
nextTokenEndIndex = tokens.getTokenEndOffset(i, lineContentLength);
tokenContent = lineContent.substring(tokens.getTokenStartOffset(i), nextTokenEndIndex).toLowerCase();
if (tokenContent === 'src' || tokenContent === 'href') {
state = LinkDetectionState.AFTER_HREF_OR_SRC;
......@@ -573,10 +573,10 @@ export class HTMLWorker {
case ATTRIB_VALUE:
if (state === LinkDetectionState.AFTER_HREF_OR_SRC) {
nextTokenEndIndex = tokens.getTokenEndIndex(i, lineContentLength);
tokenContent = lineContent.substring(tokens.getTokenStartIndex(i), nextTokenEndIndex);
nextTokenEndIndex = tokens.getTokenEndOffset(i, lineContentLength);
tokenContent = lineContent.substring(tokens.getTokenStartOffset(i), nextTokenEndIndex);
link = this.createLink(modelAbsoluteUrl, rootAbsoluteUrl, tokenContent, lineNumber, tokens.getTokenStartIndex(i) + 2, nextTokenEndIndex);
link = this.createLink(modelAbsoluteUrl, rootAbsoluteUrl, tokenContent, lineNumber, tokens.getTokenStartOffset(i) + 2, nextTokenEndIndex);
if (link) {
newLinks.push(link);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册