提交 6c381a0e 编写于 作者: M Martin Aeschlimann

Load fast-plist async. For #40147

上级 70a27a33
......@@ -14,7 +14,6 @@ import nls = require('vs/nls');
import * as types from 'vs/base/common/types';
import * as objects from 'vs/base/common/objects';
import * as plist from 'fast-plist';
import pfs = require('vs/base/node/pfs');
import { Extensions, IColorRegistry, ColorIdentifier, editorBackground, editorForeground } from 'vs/platform/theme/common/colorRegistry';
......@@ -289,25 +288,31 @@ function _loadColorThemeFromFile(themePath: string, resultRules: ITokenColorizat
}
}
let pListParser: Thenable<{ parse(content: string) }>;
function getPListParser() {
return pListParser || import('fast-plist');
}
function _loadSyntaxTokensFromFile(themePath: string, resultRules: ITokenColorizationRule[], resultColors: IColorMap): TPromise<any> {
return pfs.readFile(themePath).then(content => {
try {
let contentValue = plist.parse(content.toString());
let settings: ITokenColorizationRule[] = contentValue.settings;
if (!Array.isArray(settings)) {
return TPromise.wrapError(new Error(nls.localize('error.plist.invalidformat', "Problem parsing tmTheme file: {0}. 'settings' is not array.")));
return getPListParser().then(parser => {
try {
let contentValue = parser.parse(content.toString());
let settings: ITokenColorizationRule[] = contentValue.settings;
if (!Array.isArray(settings)) {
return TPromise.wrapError(new Error(nls.localize('error.plist.invalidformat', "Problem parsing tmTheme file: {0}. 'settings' is not array.")));
}
convertSettings(settings, resultRules, resultColors);
return TPromise.as(null);
} catch (e) {
return TPromise.wrapError(new Error(nls.localize('error.cannotparse', "Problems parsing tmTheme file: {0}", e.message)));
}
convertSettings(settings, resultRules, resultColors);
return TPromise.as(null);
} catch (e) {
return TPromise.wrapError(new Error(nls.localize('error.cannotparse', "Problems parsing tmTheme file: {0}", e.message)));
}
});
}, error => {
return TPromise.wrapError(new Error(nls.localize('error.cannotload', "Problems loading tmTheme file {0}: {1}", themePath, error.message)));
});
}
function updateDefaultRuleSettings(defaultRule: ITokenColorizationRule, theme: ColorThemeData): ITokenColorizationRule {
let foreground = theme.getColor(editorForeground) || theme.getDefault(editorForeground);
let background = theme.getColor(editorBackground) || theme.getDefault(editorBackground);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册