本文整理汇总了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;未经允许,请勿转载。 |
请发表评论