• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

TypeScript modeService.IModeService类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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



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

示例1: colorize

	public static colorize(modeService: IModeService, text: string, mimeType: string, options: IColorizerOptions): TPromise<string> {
		if (strings.startsWithUTF8BOM(text)) {
			text = text.substr(1);
		}
		let lines = text.split(/\r\n|\r|\n/);
		let language = modeService.getModeId(mimeType);

		options = options || {};
		if (typeof options.tabSize === 'undefined') {
			options.tabSize = 4;
		}

		// Send out the event to create the mode
		modeService.getOrCreateMode(language);

		let tokenizationSupport = TokenizationRegistry.get(language);
		if (tokenizationSupport) {
			return TPromise.as(_colorize(lines, options.tabSize, tokenizationSupport));
		}

		// wait 500ms for mode to load, then give up
		return TPromise.any([this._tokenizationSupportChangedPromise(language), timeout(500)]).then(_ => {
			let tokenizationSupport = TokenizationRegistry.get(language);
			if (tokenizationSupport) {
				return _colorize(lines, options.tabSize, tokenizationSupport);
			}
			return _fakeColorize(lines, options.tabSize);
		});
	}
开发者ID:developers23,项目名称:vscode,代码行数:29,代码来源:colorizer.ts


示例2: colorize

	public static colorize(modeService: IModeService, text: string, mimeType: string, options: IColorizerOptions | null | undefined): Promise<string> {
		let tabSize = 4;
		if (options && typeof options.tabSize === 'number') {
			tabSize = options.tabSize;
		}

		if (strings.startsWithUTF8BOM(text)) {
			text = text.substr(1);
		}
		let lines = text.split(/\r\n|\r|\n/);
		let language = modeService.getModeId(mimeType);
		if (!language) {
			return Promise.resolve(_fakeColorize(lines, tabSize));
		}

		// Send out the event to create the mode
		modeService.triggerMode(language);

		let tokenizationSupport = TokenizationRegistry.get(language);
		if (tokenizationSupport) {
			return Promise.resolve(_colorize(lines, tabSize, tokenizationSupport));
		}

		return new Promise<string>((resolve, reject) => {
			let listener: IDisposable | null = null;
			let timeout: TimeoutTimer | null = null;

			const execute = () => {
				if (listener) {
					listener.dispose();
					listener = null;
				}
				if (timeout) {
					timeout.dispose();
					timeout = null;
				}
				const tokenizationSupport = TokenizationRegistry.get(language!);
				if (tokenizationSupport) {
					return resolve(_colorize(lines, tabSize, tokenizationSupport));
				}
				return resolve(_fakeColorize(lines, tabSize));
			};

			// wait 500ms for mode to load, then give up
			timeout = new TimeoutTimer();
			timeout.cancelAndSet(execute, 500);
			listener = TokenizationRegistry.onDidChange((e) => {
				if (e.changedLanguages.indexOf(language!) >= 0) {
					execute();
				}
			});
		});
	}
开发者ID:KTXSoftware,项目名称:KodeStudio,代码行数:53,代码来源:colorizer.ts


示例3: getConfiguredLangId

export function getConfiguredLangId(modelService: IModelService, modeService: IModeService, resource: uri): string | null {
	let configuredLangId: string | null = null;
	if (resource) {
		let modeId: string | null = null;

		// Data URI: check for encoded metadata
		if (resource.scheme === Schemas.data) {
			const metadata = DataUri.parseMetaData(resource);
			const mime = metadata.get(DataUri.META_DATA_MIME);

			if (mime) {
				modeId = modeService.getModeId(mime);
			}
		}

		// Any other URI: check for model if existing
		else {
			const model = modelService.getModel(resource);
			if (model) {
				modeId = model.getLanguageIdentifier().language;
			}
		}

		if (modeId && modeId !== PLAINTEXT_MODE_ID) {
			configuredLangId = modeId; // only take if the mode is specific (aka no just plain text)
		}
	}

	return configuredLangId;
}
开发者ID:eamodio,项目名称:vscode,代码行数:30,代码来源:getIconClasses.ts


示例4: colorize

	public static colorize(modeService:IModeService, text:string, mimeType:string, options:IColorizerOptions): TPromise<string> {
		options = options || {};
		if (typeof options.tabSize === 'undefined') {
			options.tabSize = 4;
		}

		let lines = text.split('\n');
		let c: (v:string)=>void;
		let e: (err:any)=>void;
		let p: (v:string)=>void;
		let isCanceled = false;
		let mode: IMode;

		let result = new TPromise<string>((_c, _e, _p) => {
			c = _c;
			e = _e;
			p = _p;
		}, () => {
			isCanceled = true;
		});

		let colorize = new RunOnceScheduler(() => {
			if (isCanceled) {
				return;
			}
			let r = actualColorize(lines, mode, options.tabSize);
			if (r.retokenize.length > 0) {
				// There are retokenization requests
				r.retokenize.forEach((p) => p.then(scheduleColorize));
				p(r.result);
			} else {
				// There are no (more) retokenization requests
				c(r.result);
			}
		}, 0);
		let scheduleColorize = () => colorize.schedule();

		modeService.getOrCreateMode(mimeType).then((_mode) => {
			if (!_mode) {
				e('Mode not found: "' + mimeType + '".');
				return;
			}
			if (!_mode.tokenizationSupport) {
				// wait 500ms for mode to load, then give up
				TPromise.any([this._tokenizationSupportChangedPromise(_mode), TPromise.timeout(500)]).then(_ => {
					if (!_mode.tokenizationSupport) {
						e('Mode found ("' + _mode.getId() + '"), but does not support tokenization.');
						return;
					}
					mode = _mode;
					scheduleColorize();
				});
				return;
			}
			mode = _mode;
			scheduleColorize();
		});

		return result;
	}
开发者ID:GYGit,项目名称:vscode,代码行数:60,代码来源:colorizer.ts


示例5: detectModeId

export function detectModeId(modelService: IModelService, modeService: IModeService, resource: uri): string | null {
	if (!resource) {
		return null; // we need a resource at least
	}

	let modeId: string | null = null;

	// Data URI: check for encoded metadata
	if (resource.scheme === Schemas.data) {
		const metadata = DataUri.parseMetaData(resource);
		const mime = metadata.get(DataUri.META_DATA_MIME);

		if (mime) {
			modeId = modeService.getModeId(mime);
		}
	}

	// Any other URI: check for model if existing
	else {
		const model = modelService.getModel(resource);
		if (model) {
			modeId = model.getModeId();
		}
	}

	// only take if the mode is specific (aka no just plain text)
	if (modeId && modeId !== PLAINTEXT_MODE_ID) {
		return modeId;
	}

	// otherwise fallback to path based detection
	let path: string | undefined;
	if (resource.scheme === Schemas.data) {
		const metadata = DataUri.parseMetaData(resource);
		path = metadata.get(DataUri.META_DATA_LABEL);
	} else {
		path = resource.path.toLowerCase();
	}

	if (path) {
		return modeService.getModeIdByFilepathOrFirstLine(path);
	}

	return null; // finally - we do not know the mode id
}
开发者ID:PKRoma,项目名称:vscode,代码行数:45,代码来源:getIconClasses.ts


示例6: colorize

export function colorize(modeService:IModeService, text:string, mimeType:string, options:IColorizerOptions): TPromise<string> {
	options = options || {};
	if (typeof options.tabSize === 'undefined') {
		options.tabSize = 4;
	}

	var lines = text.split('\n'),
		c: (v:string)=>void,
		e: (err:any)=>void,
		p: (v:string)=>void,
		isCancelled = false,
		mode: Modes.IMode;

	var result = new TPromise<string>((_c, _e, _p) => {
		c = _c;
		e = _e;
		p = _p;
	}, () => {
		isCancelled = true;
	});

	var colorize = new Schedulers.RunOnceScheduler(() => {
		if (isCancelled) {
			return;
		}
		var r = actualColorize(lines, mode, options.tabSize);
		if (r.retokenize.length > 0) {
			// There are retokenization requests
			r.retokenize.forEach((p) => p.then(scheduleColorize));
			p(r.result);
		} else {
			// There are no (more) retokenization requests
			c(r.result);
		}
	}, 0);
	var scheduleColorize = () => colorize.schedule();

	modeService.getOrCreateMode(mimeType).then((_mode) => {
		if (!_mode) {
			e('Mode not found: "' + mimeType + '".');
			return;
		}
		if (!_mode.tokenizationSupport) {
			e('Mode found ("' + _mode.getId() + '"), but does not support tokenization.');
			return;
		}
		mode = _mode;
		scheduleColorize();
	});

	return result;
}
开发者ID:ErickWendel,项目名称:vscode,代码行数:52,代码来源:colorizer.ts


示例7: getIconClasses

export function getIconClasses(modelService: IModelService, modeService: IModeService, resource: uri | undefined, fileKind?: FileKind): string[] {

	// we always set these base classes even if we do not have a path
	const classes = fileKind === FileKind.ROOT_FOLDER ? ['rootfolder-icon'] : fileKind === FileKind.FOLDER ? ['folder-icon'] : ['file-icon'];
	if (resource) {

		// Get the path and name of the resource. For data-URIs, we need to parse specially
		let name: string | undefined;
		let path: string | undefined;
		if (resource.scheme === Schemas.data) {
			const metadata = DataUri.parseMetaData(resource);
			name = metadata.get(DataUri.META_DATA_LABEL);
			path = name;
		} else {
			name = cssEscape(basenameOrAuthority(resource).toLowerCase());
			path = resource.path.toLowerCase();
		}

		// Folders
		if (fileKind === FileKind.FOLDER) {
			classes.push(`${name}-name-folder-icon`);
		}

		// Files
		else {

			// Name & Extension(s)
			if (name) {
				classes.push(`${name}-name-file-icon`);
				const dotSegments = name.split('.');
				for (let i = 1; i < dotSegments.length; i++) {
					classes.push(`${dotSegments.slice(i).join('.')}-ext-file-icon`); // add each combination of all found extensions if more than one
				}
				classes.push(`ext-file-icon`); // extra segment to increase file-ext score
			}

			// Configured Language
			let configuredLangId: string | null = getConfiguredLangId(modelService, modeService, resource);
			configuredLangId = configuredLangId || (path ? modeService.getModeIdByFilepathOrFirstLine(path) : null);
			if (configuredLangId) {
				classes.push(`${cssEscape(configuredLangId)}-lang-file-icon`);
			}
		}
	}
	return classes;
}
开发者ID:eamodio,项目名称:vscode,代码行数:46,代码来源:getIconClasses.ts



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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
TypeScript modeServiceImpl.ModeServiceImpl类代码示例发布时间:2022-05-25
下一篇:
TypeScript modelServiceImpl.ModelServiceImpl类代码示例发布时间:2022-05-25
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap