當前位置: 首頁>>代碼示例>>TypeScript>>正文


TypeScript ModeTransition.findIndexInSegmentsArray方法代碼示例

本文整理匯總了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);
}
開發者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


注:本文中的vs/editor/common/core/modeTransition.ModeTransition.findIndexInSegmentsArray方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。