提交 b48230db 编写于 作者: K kieferrm

handle allOf at toplevel, fixes #7833

上级 ea101fea
...@@ -117,16 +117,17 @@ export function consolidate(configMap: { [key: string]: IConfigFile; }): { conte ...@@ -117,16 +117,17 @@ export function consolidate(configMap: { [key: string]: IConfigFile; }): { conte
// defaults... // defaults...
function processDefaultValues(withConfig: (config: configurationRegistry.IConfigurationNode, isTop?: boolean) => void): void { function processDefaultValues(withConfig: (config: configurationRegistry.IConfigurationNode, isTop?: boolean) => boolean): void {
let configurations = (<configurationRegistry.IConfigurationRegistry>platform.Registry.as(configurationRegistry.Extensions.Configuration)).getConfigurations(); let configurations = (<configurationRegistry.IConfigurationRegistry>platform.Registry.as(configurationRegistry.Extensions.Configuration)).getConfigurations();
let visit = (config: configurationRegistry.IConfigurationNode, isFirst: boolean) => { let visit = (config: configurationRegistry.IConfigurationNode, level: number) => {
withConfig(config, isFirst); let handled = withConfig(config, level === 0);
if (Array.isArray(config.allOf)) { if (Array.isArray(config.allOf)) {
config.allOf.forEach((c) => { config.allOf.forEach((c) => {
visit(c, false); // if the config node only contains an `allOf` we treat the `allOf` children as if they were at the top level
visit(c, (!handled && level === 0) ? level : level + 1);
}); });
} }
}; };
...@@ -142,7 +143,7 @@ function processDefaultValues(withConfig: (config: configurationRegistry.IConfig ...@@ -142,7 +143,7 @@ function processDefaultValues(withConfig: (config: configurationRegistry.IConfig
return c1.order - c2.order; return c1.order - c2.order;
}).forEach((config) => { }).forEach((config) => {
visit(config, true); visit(config, 0);
}); });
} }
...@@ -150,7 +151,7 @@ function processDefaultValues(withConfig: (config: configurationRegistry.IConfig ...@@ -150,7 +151,7 @@ function processDefaultValues(withConfig: (config: configurationRegistry.IConfig
export function getDefaultValues(): any { export function getDefaultValues(): any {
let ret: any = Object.create(null); let ret: any = Object.create(null);
let handleConfig = (config: configurationRegistry.IConfigurationNode, isTop: boolean) => { let handleConfig = (config: configurationRegistry.IConfigurationNode, isTop: boolean) : boolean => {
if (config.properties) { if (config.properties) {
Object.keys(config.properties).forEach((key) => { Object.keys(config.properties).forEach((key) => {
let prop = config.properties[key]; let prop = config.properties[key];
...@@ -160,7 +161,9 @@ export function getDefaultValues(): any { ...@@ -160,7 +161,9 @@ export function getDefaultValues(): any {
} }
setNode(ret, key, value); setNode(ret, key, value);
}); });
return true;
} }
return false;
}; };
processDefaultValues(handleConfig); processDefaultValues(handleConfig);
return ret; return ret;
...@@ -172,9 +175,11 @@ export function getDefaultValuesContent(indent: string): string { ...@@ -172,9 +175,11 @@ export function getDefaultValuesContent(indent: string): string {
let result: string[] = []; let result: string[] = [];
result.push('{'); result.push('{');
let handleConfig = (config: configurationRegistry.IConfigurationNode, isTop: boolean) => { let handleConfig = (config: configurationRegistry.IConfigurationNode, isTop: boolean) : boolean => {
let handled = false;
if (config.title) { if (config.title) {
handled = true;
if (isTop) { if (isTop) {
result.push(''); result.push('');
result.push('//-------- ' + config.title + ' --------'); result.push('//-------- ' + config.title + ' --------');
...@@ -184,6 +189,7 @@ export function getDefaultValuesContent(indent: string): string { ...@@ -184,6 +189,7 @@ export function getDefaultValuesContent(indent: string): string {
result.push(''); result.push('');
} }
if (config.properties) { if (config.properties) {
handled = true;
Object.keys(config.properties).forEach((key) => { Object.keys(config.properties).forEach((key) => {
let prop = config.properties[key]; let prop = config.properties[key];
...@@ -209,6 +215,7 @@ export function getDefaultValuesContent(indent: string): string { ...@@ -209,6 +215,7 @@ export function getDefaultValuesContent(indent: string): string {
result.push(''); result.push('');
}); });
} }
return handled;
}; };
processDefaultValues(handleConfig); processDefaultValues(handleConfig);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册