67b68b51d0c7bff1dd55b29cbe6e37fa27ca9b29117152aea16972eac6d00a68216043a10764887741df93218ca03b8e2260e48f86de67edf9d330e1ef86e1 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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 '../../../../base/browser/ui/codicons/codiconStyles.js'; // The codicon symbol styles are defined here and must be loaded
  15. import '../../../contrib/symbolIcons/browser/symbolIcons.js'; // The codicon symbol colors are defined here and must be loaded to get colors
  16. import { AbstractGotoSymbolQuickAccessProvider } from '../../../contrib/quickAccess/browser/gotoSymbolQuickAccess.js';
  17. import { Registry } from '../../../../platform/registry/common/platform.js';
  18. import { Extensions } from '../../../../platform/quickinput/common/quickAccess.js';
  19. import { ICodeEditorService } from '../../../browser/services/codeEditorService.js';
  20. import { withNullAsUndefined } from '../../../../base/common/types.js';
  21. import { QuickOutlineNLS } from '../../../common/standaloneStrings.js';
  22. import { Event } from '../../../../base/common/event.js';
  23. import { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';
  24. import { EditorContextKeys } from '../../../common/editorContextKeys.js';
  25. import { IQuickInputService } from '../../../../platform/quickinput/common/quickInput.js';
  26. import { IOutlineModelService } from '../../../contrib/documentSymbols/browser/outlineModel.js';
  27. import { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';
  28. let StandaloneGotoSymbolQuickAccessProvider = class StandaloneGotoSymbolQuickAccessProvider extends AbstractGotoSymbolQuickAccessProvider {
  29. constructor(editorService, languageFeaturesService, outlineModelService) {
  30. super(languageFeaturesService, outlineModelService);
  31. this.editorService = editorService;
  32. this.onDidActiveTextEditorControlChange = Event.None;
  33. }
  34. get activeTextEditorControl() {
  35. return withNullAsUndefined(this.editorService.getFocusedCodeEditor());
  36. }
  37. };
  38. StandaloneGotoSymbolQuickAccessProvider = __decorate([
  39. __param(0, ICodeEditorService),
  40. __param(1, ILanguageFeaturesService),
  41. __param(2, IOutlineModelService)
  42. ], StandaloneGotoSymbolQuickAccessProvider);
  43. export { StandaloneGotoSymbolQuickAccessProvider };
  44. export class GotoSymbolAction extends EditorAction {
  45. constructor() {
  46. super({
  47. id: GotoSymbolAction.ID,
  48. label: QuickOutlineNLS.quickOutlineActionLabel,
  49. alias: 'Go to Symbol...',
  50. precondition: EditorContextKeys.hasDocumentSymbolProvider,
  51. kbOpts: {
  52. kbExpr: EditorContextKeys.focus,
  53. primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 45 /* KeyCode.KeyO */,
  54. weight: 100 /* KeybindingWeight.EditorContrib */
  55. },
  56. contextMenuOpts: {
  57. group: 'navigation',
  58. order: 3
  59. }
  60. });
  61. }
  62. run(accessor) {
  63. accessor.get(IQuickInputService).quickAccess.show(AbstractGotoSymbolQuickAccessProvider.PREFIX);
  64. }
  65. }
  66. GotoSymbolAction.ID = 'editor.action.quickOutline';
  67. registerEditorAction(GotoSymbolAction);
  68. Registry.as(Extensions.Quickaccess).registerQuickAccessProvider({
  69. ctor: StandaloneGotoSymbolQuickAccessProvider,
  70. prefix: AbstractGotoSymbolQuickAccessProvider.PREFIX,
  71. helpEntries: [
  72. { description: QuickOutlineNLS.quickOutlineActionLabel, prefix: AbstractGotoSymbolQuickAccessProvider.PREFIX, commandId: GotoSymbolAction.ID },
  73. { description: QuickOutlineNLS.quickOutlineByCategoryActionLabel, prefix: AbstractGotoSymbolQuickAccessProvider.PREFIX_BY_CATEGORY }
  74. ]
  75. });