本文整理汇总了TypeScript中vs/editor/common/core/modeTransition.ModeTransition.findIndexInSegmentsArray方法的典型用法代码示例。如果您正苦于以下问题:TypeScript ModeTransition.findIndexInSegmentsArray方法的具体用法?TypeScript ModeTransition.findIndexInSegmentsArray怎么用?TypeScript ModeTransition.findIndexInSegmentsArray使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类vs/editor/common/core/modeTransition.ModeTransition
的用法示例。
在下文中一共展示了ModeTransition.findIndexInSegmentsArray方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: runner
export function handleEvent<T>(context:modes.ILineContext, offset:number, runner:(modeId:string, newContext:modes.ILineContext, offset:number)=>T):T {
let modeTransitions = context.modeTransitions;
if (modeTransitions.length === 1) {
return runner(modeTransitions[0].modeId, context, offset);
}
let modeIndex = ModeTransition.findIndexInSegmentsArray(modeTransitions, offset);
let nestedModeId = modeTransitions[modeIndex].modeId;
let modeStartIndex = modeTransitions[modeIndex].startIndex;
let firstTokenInModeIndex = context.findIndexOfOffset(modeStartIndex);
let nextCharacterAfterModeIndex = -1;
let nextTokenAfterMode = -1;
if (modeIndex + 1 < modeTransitions.length) {
nextTokenAfterMode = context.findIndexOfOffset(modeTransitions[modeIndex + 1].startIndex);
nextCharacterAfterModeIndex = context.getTokenStartOffset(nextTokenAfterMode);
} else {
nextTokenAfterMode = context.getTokenCount();
nextCharacterAfterModeIndex = context.getLineContent().length;
}
let firstTokenCharacterOffset = context.getTokenStartOffset(firstTokenInModeIndex);
let newCtx = new FilteredLineContext(context, nestedModeId, firstTokenInModeIndex, nextTokenAfterMode, firstTokenCharacterOffset, nextCharacterAfterModeIndex);
return runner(nestedModeId, newCtx, offset - firstTokenCharacterOffset);
}
示例2: findTokenAtOffset
public findTokenAtOffset(offset: number): LineToken {
if (this._textLength === 0) {
return null;
}
let tokenIndex = this.findTokenIndexAtOffset(offset);
let modeIndex = ModeTransition.findIndexInSegmentsArray(this.modeTransitions, offset);
return new LineToken(this, tokenIndex, modeIndex);
}
示例3: getWordAtPosition
public static getWordAtPosition(lineContent: string, column: number, topModeId: string, modeTransitions: ModeTransition[]): IWordAtPosition {
if (!modeTransitions || modeTransitions.length === 0) {
return getWordAtText(column, WordHelper.massageWordDefinitionOf(topModeId), lineContent, 0);
}
let result: IWordAtPosition = null;
let columnIndex = column - 1;
let modeIndex = ModeTransition.findIndexInSegmentsArray(modeTransitions, columnIndex);
result = WordHelper._getWordAtColumn(lineContent, column, modeIndex, modeTransitions);
if (!result && modeIndex > 0 && modeTransitions[modeIndex].startIndex === columnIndex) {
// The position is right at the beginning of `modeIndex`, so try looking at `modeIndex` - 1 too
result = WordHelper._getWordAtColumn(lineContent, column, modeIndex - 1, modeTransitions);
}
return result;
}
示例4: getWordAtPosition
public static getWordAtPosition(textSource:ITextSource, position:IPosition): IWordAtPosition {
if (!textSource._lineIsTokenized(position.lineNumber)) {
return WordHelper._getWordAtText(position.column, WordHelper.massageWordDefinitionOf(textSource.getMode()), textSource.getLineContent(position.lineNumber), 0);
}
var result: IWordAtPosition = null;
var txt = textSource.getLineContent(position.lineNumber),
modeTransitions = textSource._getLineModeTransitions(position.lineNumber),
columnIndex = position.column - 1,
modeIndex = ModeTransition.findIndexInSegmentsArray(modeTransitions, columnIndex);
result = WordHelper._getWordAtColumn(txt, position.column, modeIndex, modeTransitions);
if (!result && modeIndex > 0 && modeTransitions[modeIndex].startIndex === columnIndex) {
// The position is right at the beginning of `modeIndex`, so try looking at `modeIndex` - 1 too
result = WordHelper._getWordAtColumn(txt, position.column, modeIndex - 1, modeTransitions);
}
return result;
}
示例5: createScopedLineTokens
export function createScopedLineTokens(context: LineTokens, offset: number): ScopedLineTokens {
let modeTransitions = context.modeTransitions;
if (modeTransitions.length === 1) {
return new ScopedLineTokens(context, modeTransitions[0].modeId, 0, context.getTokenCount(), 0, context.getLineContent().length);
}
let modeIndex = ModeTransition.findIndexInSegmentsArray(modeTransitions, offset);
let nestedModeId = modeTransitions[modeIndex].modeId;
let modeStartIndex = modeTransitions[modeIndex].startIndex;
let firstTokenIndex = context.findTokenIndexAtOffset(modeStartIndex);
let lastCharOffset = -1;
let lastTokenIndex = -1;
if (modeIndex + 1 < modeTransitions.length) {
lastTokenIndex = context.findTokenIndexAtOffset(modeTransitions[modeIndex + 1].startIndex);
lastCharOffset = context.getTokenStartOffset(lastTokenIndex);
} else {
lastTokenIndex = context.getTokenCount();
lastCharOffset = context.getLineContent().length;
}
let firstCharOffset = context.getTokenStartOffset(firstTokenIndex);
return new ScopedLineTokens(context, nestedModeId, firstTokenIndex, lastTokenIndex, firstCharOffset, lastCharOffset);
}