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


TypeScript ITextModel.getFormattingOptions方法代码示例

本文整理汇总了TypeScript中vs/editor/common/model.ITextModel.getFormattingOptions方法的典型用法代码示例。如果您正苦于以下问题:TypeScript ITextModel.getFormattingOptions方法的具体用法?TypeScript ITextModel.getFormattingOptions怎么用?TypeScript ITextModel.getFormattingOptions使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在vs/editor/common/model.ITextModel的用法示例。


在下文中一共展示了ITextModel.getFormattingOptions方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。

示例1: formatDocumentWithProvider

export async function formatDocumentWithProvider(
	accessor: ServicesAccessor,
	provider: DocumentFormattingEditProvider,
	editorOrModel: ITextModel | IActiveCodeEditor,
	token: CancellationToken
): Promise<boolean> {
	const workerService = accessor.get(IEditorWorkerService);

	let model: ITextModel;
	let validate: () => boolean;
	if (isCodeEditor(editorOrModel)) {
		model = editorOrModel.getModel();
		const state = new EditorState(editorOrModel, CodeEditorStateFlag.Value | CodeEditorStateFlag.Position);
		validate = () => state.validate(editorOrModel);
	} else {
		model = editorOrModel;
		const versionNow = editorOrModel.getVersionId();
		validate = () => versionNow === editorOrModel.getVersionId();
	}

	const rawEdits = await provider.provideDocumentFormattingEdits(
		model,
		model.getFormattingOptions(),
		token
	);

	const edits = await workerService.computeMoreMinimalEdits(model.uri, rawEdits);

	if (!validate()) {
		return true;
	}

	if (!edits || edits.length === 0) {
		return false;
	}

	if (isCodeEditor(editorOrModel)) {
		// use editor to apply edits
		FormattingEdit.execute(editorOrModel, edits);
		alertFormattingEdits(edits);
		editorOrModel.pushUndoStop();
		editorOrModel.focus();
		editorOrModel.revealPositionInCenterIfOutsideViewport(editorOrModel.getPosition(), editorCommon.ScrollType.Immediate);

	} else {
		// use model to apply edits
		const [{ range }] = edits;
		const initialSelection = new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn);
		model.pushEditOperations([initialSelection], edits.map(edit => {
			return {
				text: edit.text,
				range: Range.lift(edit.range),
				forceMoveMarkers: true
			};
		}), undoEdits => {
			for (const { range } of undoEdits) {
				if (Range.areIntersectingOrTouching(range, initialSelection)) {
					return [new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn)];
				}
			}
			return null;
		});
	}

	return true;
}
开发者ID:joelday,项目名称:vscode,代码行数:66,代码来源:format.ts


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