当前位置: 首页>>代码示例>>TypeScript>>正文


TypeScript modeTransition.ModeTransition类代码示例

本文整理汇总了TypeScript中vs/editor/common/core/modeTransition.ModeTransition的典型用法代码示例。如果您正苦于以下问题:TypeScript ModeTransition类的具体用法?TypeScript ModeTransition怎么用?TypeScript ModeTransition使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了ModeTransition类的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的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);
}
开发者ID:aminroosta,项目名称:vscode,代码行数:25,代码来源:supports.ts

示例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);
	}
开发者ID:rebornix,项目名称:vscode,代码行数:8,代码来源:lineTokens.ts

示例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;
	}
开发者ID:elemongw,项目名称:vscode,代码行数:19,代码来源:textModelWithTokensHelpers.ts

示例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;
	}
开发者ID:1833183060,项目名称:vscode,代码行数:21,代码来源:textModelWithTokensHelpers.ts

示例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);
}
开发者ID:StateFarmIns,项目名称:vscode,代码行数:24,代码来源:supports.ts

示例6: createMockLineContext

export function createMockLineContext(line:string, tokens:modes.ILineTokens): modes.ILineContext {
	return new TestLineContext(line, tokens.tokens, ModeTransition.create(tokens.modeTransitions));
}
开发者ID:1Hgm,项目名称:vscode,代码行数:3,代码来源:modesTestUtils.ts


注:本文中的vs/editor/common/core/modeTransition.ModeTransition类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。