diff options
Diffstat (limited to 'src/vs/workbench/services/actions/common/menusExtensionPoint.ts')
-rw-r--r-- | src/vs/workbench/services/actions/common/menusExtensionPoint.ts | 64 |
1 files changed, 32 insertions, 32 deletions
diff --git a/src/vs/workbench/services/actions/common/menusExtensionPoint.ts b/src/vs/workbench/services/actions/common/menusExtensionPoint.ts index c78225da320..001cf0f3815 100644 --- a/src/vs/workbench/services/actions/common/menusExtensionPoint.ts +++ b/src/vs/workbench/services/actions/common/menusExtensionPoint.ts @@ -7,7 +7,6 @@ import { localize } from 'vs/nls'; import { isFalsyOrWhitespace } from 'vs/base/common/strings'; import * as resources from 'vs/base/common/resources'; import { IJSONSchema } from 'vs/base/common/jsonSchema'; -import { forEach } from 'vs/base/common/collections'; import { IExtensionPointUser, ExtensionMessageCollector, ExtensionsRegistry } from 'vs/workbench/services/extensions/common/extensionsRegistry'; import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; import { MenuId, MenuRegistry, IMenuItem, ISubmenuItem } from 'vs/platform/actions/common/actions'; @@ -686,50 +685,51 @@ submenusExtensionPoint.setHandler(extensions => { for (const extension of extensions) { const { value, collector } = extension; - forEach(value, entry => { - if (!schema.isValidSubmenu(entry.value, collector)) { + for (const [, submenuInfo] of Object.entries(value)) { + + if (!schema.isValidSubmenu(submenuInfo, collector)) { return; } - if (!entry.value.id) { - collector.warn(localize('submenuId.invalid.id', "`{0}` is not a valid submenu identifier", entry.value.id)); + if (!submenuInfo.id) { + collector.warn(localize('submenuId.invalid.id', "`{0}` is not a valid submenu identifier", submenuInfo.id)); return; } - if (_submenus.has(entry.value.id)) { - collector.info(localize('submenuId.duplicate.id', "The `{0}` submenu was already previously registered.", entry.value.id)); + if (_submenus.has(submenuInfo.id)) { + collector.info(localize('submenuId.duplicate.id', "The `{0}` submenu was already previously registered.", submenuInfo.id)); return; } - if (!entry.value.label) { - collector.warn(localize('submenuId.invalid.label', "`{0}` is not a valid submenu label", entry.value.label)); + if (!submenuInfo.label) { + collector.warn(localize('submenuId.invalid.label', "`{0}` is not a valid submenu label", submenuInfo.label)); return; } let absoluteIcon: { dark: URI; light?: URI } | ThemeIcon | undefined; - if (entry.value.icon) { - if (typeof entry.value.icon === 'string') { - absoluteIcon = ThemeIcon.fromString(entry.value.icon) || { dark: resources.joinPath(extension.description.extensionLocation, entry.value.icon) }; + if (submenuInfo.icon) { + if (typeof submenuInfo.icon === 'string') { + absoluteIcon = ThemeIcon.fromString(submenuInfo.icon) || { dark: resources.joinPath(extension.description.extensionLocation, submenuInfo.icon) }; } else { absoluteIcon = { - dark: resources.joinPath(extension.description.extensionLocation, entry.value.icon.dark), - light: resources.joinPath(extension.description.extensionLocation, entry.value.icon.light) + dark: resources.joinPath(extension.description.extensionLocation, submenuInfo.icon.dark), + light: resources.joinPath(extension.description.extensionLocation, submenuInfo.icon.light) }; } } const item: IRegisteredSubmenu = { - id: new MenuId(`api:${entry.value.id}`), - label: entry.value.label, + id: MenuId.for(`api:${submenuInfo.id}`), + label: submenuInfo.label, icon: absoluteIcon }; - _submenus.set(entry.value.id, item); - }); + _submenus.set(submenuInfo.id, item); + } } }); const _apiMenusByKey = new Map(Iterable.map(Iterable.from(apiMenus), menu => ([menu.key, menu]))); const _menuRegistrations = new DisposableStore(); -const _submenuMenuItems = new Map<number /* menu id */, Set<number /* submenu id */>>(); +const _submenuMenuItems = new Map<string /* menu id */, Set<string /* submenu id */>>(); const menusExtensionPoint = ExtensionsRegistry.registerExtensionPoint<{ [loc: string]: (schema.IUserFriendlyMenuItem | schema.IUserFriendlySubmenuItem)[] }>({ extensionPoint: 'menus', @@ -748,19 +748,19 @@ menusExtensionPoint.setHandler(extensions => { for (const extension of extensions) { const { value, collector } = extension; - forEach(value, entry => { - if (!schema.isValidItems(entry.value, collector)) { - return; + for (const entry of Object.entries(value)) { + if (!schema.isValidItems(entry[1], collector)) { + continue; } - let menu = _apiMenusByKey.get(entry.key); + let menu = _apiMenusByKey.get(entry[0]); if (!menu) { - const submenu = _submenus.get(entry.key); + const submenu = _submenus.get(entry[0]); if (submenu) { menu = { - key: entry.key, + key: entry[0], id: submenu.id, description: '' }; @@ -768,16 +768,16 @@ menusExtensionPoint.setHandler(extensions => { } if (!menu) { - collector.info(localize('menuId.invalid', "`{0}` is not a valid menu identifier", entry.key)); - return; + collector.info(localize('menuId.invalid', "`{0}` is not a valid menu identifier", entry[0])); + continue; } if (menu.proposed && !isProposedApiEnabled(extension.description, menu.proposed)) { - collector.error(localize('proposedAPI.invalid', "{0} is a proposed menu identifier. It requires 'package.json#enabledApiProposals: [\"{1}\"]' and is only available when running out of dev or with the following command line switch: --enable-proposed-api {2}", entry.key, menu.proposed, extension.description.identifier.value)); - return; + collector.error(localize('proposedAPI.invalid', "{0} is a proposed menu identifier. It requires 'package.json#enabledApiProposals: [\"{1}\"]' and is only available when running out of dev or with the following command line switch: --enable-proposed-api {2}", entry[0], menu.proposed, extension.description.identifier.value)); + continue; } - for (const menuItem of entry.value) { + for (const menuItem of entry[1]) { let item: IMenuItem | ISubmenuItem; if (schema.isMenuItem(menuItem)) { @@ -817,7 +817,7 @@ menusExtensionPoint.setHandler(extensions => { } if (submenuRegistrations.has(submenu.id.id)) { - collector.warn(localize('submenuItem.duplicate', "The `{0}` submenu was already contributed to the `{1}` menu.", menuItem.submenu, entry.key)); + collector.warn(localize('submenuItem.duplicate', "The `{0}` submenu was already contributed to the `{1}` menu.", menuItem.submenu, entry[0])); continue; } @@ -839,7 +839,7 @@ menusExtensionPoint.setHandler(extensions => { item.when = ContextKeyExpr.deserialize(menuItem.when); items.push({ id: menu.id, item }); } - }); + } } _menuRegistrations.add(MenuRegistry.appendMenuItems(items)); |