f10a22dd681529b611d016d10e6b04c98b81906be8cd33175157aa92762d6e2833a3d520d586bf6c0204189a918e74d9140fd09b0fedf6a7b20a94e1cae290 3.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /*---------------------------------------------------------------------------------------------
  2. * Copyright (c) Microsoft Corporation. All rights reserved.
  3. * Licensed under the MIT License. See License.txt in the project root for license information.
  4. *--------------------------------------------------------------------------------------------*/
  5. var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
  6. var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
  7. if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
  8. else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
  9. return c > 3 && r && Object.defineProperty(target, key, r), r;
  10. };
  11. var __param = (this && this.__param) || function (paramIndex, decorator) {
  12. return function (target, key) { decorator(target, key, paramIndex); }
  13. };
  14. import { localize } from '../../../nls.js';
  15. import { Registry } from '../../registry/common/platform.js';
  16. import { DisposableStore } from '../../../base/common/lifecycle.js';
  17. import { IKeybindingService } from '../../keybinding/common/keybinding.js';
  18. import { Extensions } from '../common/quickAccess.js';
  19. import { IQuickInputService } from '../common/quickInput.js';
  20. let HelpQuickAccessProvider = class HelpQuickAccessProvider {
  21. constructor(quickInputService, keybindingService) {
  22. this.quickInputService = quickInputService;
  23. this.keybindingService = keybindingService;
  24. this.registry = Registry.as(Extensions.Quickaccess);
  25. }
  26. provide(picker) {
  27. const disposables = new DisposableStore();
  28. // Open a picker with the selected value if picked
  29. disposables.add(picker.onDidAccept(() => {
  30. const [item] = picker.selectedItems;
  31. if (item) {
  32. this.quickInputService.quickAccess.show(item.prefix, { preserveValue: true });
  33. }
  34. }));
  35. // Also open a picker when we detect the user typed the exact
  36. // name of a provider (e.g. `?term` for terminals)
  37. disposables.add(picker.onDidChangeValue(value => {
  38. const providerDescriptor = this.registry.getQuickAccessProvider(value.substr(HelpQuickAccessProvider.PREFIX.length));
  39. if (providerDescriptor && providerDescriptor.prefix && providerDescriptor.prefix !== HelpQuickAccessProvider.PREFIX) {
  40. this.quickInputService.quickAccess.show(providerDescriptor.prefix, { preserveValue: true });
  41. }
  42. }));
  43. // Fill in all providers
  44. picker.items = this.getQuickAccessProviders();
  45. return disposables;
  46. }
  47. getQuickAccessProviders() {
  48. const providers = [];
  49. for (const provider of this.registry.getQuickAccessProviders().sort((providerA, providerB) => providerA.prefix.localeCompare(providerB.prefix))) {
  50. if (provider.prefix === HelpQuickAccessProvider.PREFIX) {
  51. continue; // exclude help which is already active
  52. }
  53. for (const helpEntry of provider.helpEntries) {
  54. const prefix = helpEntry.prefix || provider.prefix;
  55. const label = prefix || '\u2026' /* ... */;
  56. providers.push({
  57. prefix,
  58. label,
  59. keybinding: helpEntry.commandId ? this.keybindingService.lookupKeybinding(helpEntry.commandId) : undefined,
  60. ariaLabel: localize('helpPickAriaLabel', "{0}, {1}", label, helpEntry.description),
  61. description: helpEntry.description
  62. });
  63. }
  64. }
  65. return providers;
  66. }
  67. };
  68. HelpQuickAccessProvider.PREFIX = '?';
  69. HelpQuickAccessProvider = __decorate([
  70. __param(0, IQuickInputService),
  71. __param(1, IKeybindingService)
  72. ], HelpQuickAccessProvider);
  73. export { HelpQuickAccessProvider };