@theia/callhierarchy 1.18.0 → 1.21.0-next.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -15,9 +15,10 @@
15
15
  ********************************************************************************/
16
16
  import { MenuModelRegistry, Command, CommandRegistry } from '@theia/core/lib/common';
17
17
  import { AbstractViewContribution, OpenViewArguments, KeybindingRegistry } from '@theia/core/lib/browser';
18
- import { CurrentEditorAccess } from '@theia/editor/lib/browser';
18
+ import { CurrentEditorAccess, EditorManager } from '@theia/editor/lib/browser';
19
19
  import { CallHierarchyTreeWidget } from './callhierarchy-tree/callhierarchy-tree-widget';
20
20
  import { CallHierarchyServiceProvider } from './callhierarchy-service';
21
+ import { ContextKey, ContextKeyService } from '@theia/core/lib/browser/context-key-service';
21
22
  export declare const CALL_HIERARCHY_TOGGLE_COMMAND_ID = "callhierarchy:toggle";
22
23
  export declare const CALL_HIERARCHY_LABEL = "Call Hierarchy";
23
24
  export declare namespace CallHierarchyCommands {
@@ -25,8 +26,12 @@ export declare namespace CallHierarchyCommands {
25
26
  }
26
27
  export declare class CallHierarchyContribution extends AbstractViewContribution<CallHierarchyTreeWidget> {
27
28
  protected readonly editorAccess: CurrentEditorAccess;
29
+ protected readonly editorManager: EditorManager;
28
30
  protected readonly callHierarchyServiceProvider: CallHierarchyServiceProvider;
31
+ protected readonly contextKeyService: ContextKeyService;
32
+ protected editorHasCallHierarchyProvider: ContextKey<boolean>;
29
33
  constructor();
34
+ protected init(): void;
30
35
  protected isCallHierarchyAvailable(): boolean;
31
36
  openView(args?: Partial<OpenViewArguments>): Promise<CallHierarchyTreeWidget>;
32
37
  registerCommands(commands: CommandRegistry): void;
@@ -1 +1 @@
1
- {"version":3,"file":"callhierarchy-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/callhierarchy-contribution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAGlF,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC1G,OAAO,EAAuB,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,gDAAgD,CAAC;AAEzF,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AAGvE,eAAO,MAAM,gCAAgC,yBAAyB,CAAC;AACvE,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AAErD,yBAAiB,qBAAqB,CAAC;IAC5B,MAAM,IAAI,EAAE,OAGlB,CAAC;CACL;AAED,qBACa,yBAA0B,SAAQ,wBAAwB,CAAC,uBAAuB,CAAC;IAE/D,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC;IAC5C,SAAS,CAAC,QAAQ,CAAC,4BAA4B,EAAE,4BAA4B,CAAC;;IAapH,SAAS,CAAC,wBAAwB,IAAI,OAAO;IAKvC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAOnF,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAWjD,aAAa,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAS7C,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,GAAG,IAAI;CAO7D"}
1
+ {"version":3,"file":"callhierarchy-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/callhierarchy-contribution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAGlF,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC1G,OAAO,EAAuB,mBAAmB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,uBAAuB,EAAE,MAAM,gDAAgD,CAAC;AAEzF,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AAEvE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAE5F,eAAO,MAAM,gCAAgC,yBAAyB,CAAC;AACvE,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AAErD,yBAAiB,qBAAqB,CAAC;IAC5B,MAAM,IAAI,SAGa,CAAC;CAClC;AAED,qBACa,yBAA0B,SAAQ,wBAAwB,CAAC,uBAAuB,CAAC;IAE/D,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC;IAC3D,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACjC,SAAS,CAAC,QAAQ,CAAC,4BAA4B,EAAE,4BAA4B,CAAC;IACzF,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAEnF,SAAS,CAAC,8BAA8B,EAAG,UAAU,CAAC,OAAO,CAAC,CAAC;;IAe/D,SAAS,CAAC,IAAI,IAAI,IAAI;IAMtB,SAAS,CAAC,wBAAwB,IAAI,OAAO;IAKvC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAOnF,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAWjD,aAAa,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAS7C,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,GAAG,IAAI;CAO7D"}
@@ -26,19 +26,21 @@ var __metadata = (this && this.__metadata) || function (k, v) {
26
26
  Object.defineProperty(exports, "__esModule", { value: true });
27
27
  exports.CallHierarchyContribution = exports.CallHierarchyCommands = exports.CALL_HIERARCHY_LABEL = exports.CALL_HIERARCHY_TOGGLE_COMMAND_ID = void 0;
28
28
  const inversify_1 = require("@theia/core/shared/inversify");
29
+ const common_1 = require("@theia/core/lib/common");
29
30
  const browser_1 = require("@theia/core/lib/browser");
30
31
  const browser_2 = require("@theia/editor/lib/browser");
31
32
  const callhierarchy_1 = require("./callhierarchy");
32
33
  const callhierarchy_service_1 = require("./callhierarchy-service");
33
34
  const uri_1 = require("@theia/core/lib/common/uri");
35
+ const context_key_service_1 = require("@theia/core/lib/browser/context-key-service");
34
36
  exports.CALL_HIERARCHY_TOGGLE_COMMAND_ID = 'callhierarchy:toggle';
35
37
  exports.CALL_HIERARCHY_LABEL = 'Call Hierarchy';
36
38
  var CallHierarchyCommands;
37
39
  (function (CallHierarchyCommands) {
38
- CallHierarchyCommands.OPEN = {
40
+ CallHierarchyCommands.OPEN = common_1.Command.toLocalizedCommand({
39
41
  id: 'callhierarchy:open',
40
42
  label: 'Open Call Hierarchy'
41
- };
43
+ }, 'theia/callhierarchy/open');
42
44
  })(CallHierarchyCommands = exports.CallHierarchyCommands || (exports.CallHierarchyCommands = {}));
43
45
  let CallHierarchyContribution = class CallHierarchyContribution extends browser_1.AbstractViewContribution {
44
46
  constructor() {
@@ -52,6 +54,11 @@ let CallHierarchyContribution = class CallHierarchyContribution extends browser_
52
54
  toggleKeybinding: 'ctrlcmd+shift+f1'
53
55
  });
54
56
  }
57
+ init() {
58
+ this.editorHasCallHierarchyProvider = this.contextKeyService.createKey('editorHasCallHierarchyProvider', false);
59
+ this.editorManager.onCurrentEditorChanged(() => this.editorHasCallHierarchyProvider.set(this.isCallHierarchyAvailable()));
60
+ this.callHierarchyServiceProvider.onDidChange(() => this.editorHasCallHierarchyProvider.set(this.isCallHierarchyAvailable()));
61
+ }
55
62
  isCallHierarchyAvailable() {
56
63
  const { selection, languageId } = this.editorAccess;
57
64
  return !!selection && !!languageId && !!this.callHierarchyServiceProvider.get(languageId, new uri_1.default(selection.uri));
@@ -92,10 +99,24 @@ __decorate([
92
99
  inversify_1.inject(browser_2.CurrentEditorAccess),
93
100
  __metadata("design:type", browser_2.CurrentEditorAccess)
94
101
  ], CallHierarchyContribution.prototype, "editorAccess", void 0);
102
+ __decorate([
103
+ inversify_1.inject(browser_2.EditorManager),
104
+ __metadata("design:type", browser_2.EditorManager)
105
+ ], CallHierarchyContribution.prototype, "editorManager", void 0);
95
106
  __decorate([
96
107
  inversify_1.inject(callhierarchy_service_1.CallHierarchyServiceProvider),
97
108
  __metadata("design:type", callhierarchy_service_1.CallHierarchyServiceProvider)
98
109
  ], CallHierarchyContribution.prototype, "callHierarchyServiceProvider", void 0);
110
+ __decorate([
111
+ inversify_1.inject(context_key_service_1.ContextKeyService),
112
+ __metadata("design:type", context_key_service_1.ContextKeyService)
113
+ ], CallHierarchyContribution.prototype, "contextKeyService", void 0);
114
+ __decorate([
115
+ inversify_1.postConstruct(),
116
+ __metadata("design:type", Function),
117
+ __metadata("design:paramtypes", []),
118
+ __metadata("design:returntype", void 0)
119
+ ], CallHierarchyContribution.prototype, "init", null);
99
120
  CallHierarchyContribution = __decorate([
100
121
  inversify_1.injectable(),
101
122
  __metadata("design:paramtypes", [])
@@ -1 +1 @@
1
- {"version":3,"file":"callhierarchy-contribution.js","sourceRoot":"","sources":["../../src/browser/callhierarchy-contribution.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;;;;;;;;;;AAElF,4DAAkE;AAElE,qDAA0G;AAC1G,uDAAqF;AAErF,mDAAmD;AACnD,mEAAuE;AACvE,oDAA6C;AAEhC,QAAA,gCAAgC,GAAG,sBAAsB,CAAC;AAC1D,QAAA,oBAAoB,GAAG,gBAAgB,CAAC;AAErD,IAAiB,qBAAqB,CAKrC;AALD,WAAiB,qBAAqB;IACrB,0BAAI,GAAY;QACzB,EAAE,EAAE,oBAAoB;QACxB,KAAK,EAAE,qBAAqB;KAC/B,CAAC;AACN,CAAC,EALgB,qBAAqB,GAArB,6BAAqB,KAArB,6BAAqB,QAKrC;AAGD,IAAa,yBAAyB,GAAtC,MAAa,yBAA0B,SAAQ,kCAAiD;IAI5F;QACI,KAAK,CAAC;YACF,QAAQ,EAAE,gCAAgB;YAC1B,UAAU,EAAE,4BAAoB;YAChC,oBAAoB,EAAE;gBAClB,IAAI,EAAE,QAAQ;aACjB;YACD,eAAe,EAAE,wCAAgC;YACjD,gBAAgB,EAAE,kBAAkB;SACvC,CAAC,CAAC;IACP,CAAC;IAES,wBAAwB;QAC9B,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;QACpD,OAAO,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,aAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACtH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAiC;QAC5C,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;QACpD,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAC9C,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,gBAAgB,CAAC,QAAyB;QACtC,QAAQ,CAAC,eAAe,CAAC,qBAAqB,CAAC,IAAI,EAAE;YACjD,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACzB,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,IAAI;aACjB,CAAC;YACF,SAAS,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;SACtD,CAAC,CAAC;QACH,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED,aAAa,CAAC,KAAwB;QAClC,MAAM,QAAQ,GAAG,CAAC,GAAG,6BAAmB,EAAE,YAAY,CAAC,CAAC;QACxD,KAAK,CAAC,kBAAkB,CAAC,QAAQ,EAAE;YAC/B,SAAS,EAAE,qBAAqB,CAAC,IAAI,CAAC,EAAE;YACxC,KAAK,EAAE,4BAAoB;SAC9B,CAAC,CAAC;QACH,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,mBAAmB,CAAC,WAA+B;QAC/C,KAAK,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACvC,WAAW,CAAC,kBAAkB,CAAC;YAC3B,OAAO,EAAE,qBAAqB,CAAC,IAAI,CAAC,EAAE;YACtC,UAAU,EAAE,YAAY;SAC3B,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;AArDgC;IAA5B,kBAAM,CAAC,6BAAmB,CAAC;8BAAkC,6BAAmB;+DAAC;AAC5C;IAArC,kBAAM,CAAC,oDAA4B,CAAC;8BAAkD,oDAA4B;+EAAC;AAH3G,yBAAyB;IADrC,sBAAU,EAAE;;GACA,yBAAyB,CAuDrC;AAvDY,8DAAyB"}
1
+ {"version":3,"file":"callhierarchy-contribution.js","sourceRoot":"","sources":["../../src/browser/callhierarchy-contribution.ts"],"names":[],"mappings":"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"}
@@ -14,24 +14,26 @@
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
16
  import { Position, DocumentUri } from '@theia/core/shared/vscode-languageserver-types';
17
+ import { CancellationToken } from '@theia/core';
18
+ import URI from '@theia/core/lib/common/uri';
19
+ import { ContributionProvider, Disposable, Emitter, Event } from '@theia/core/lib/common';
17
20
  import { Definition, Caller, Callee } from './callhierarchy';
18
- import { ContributionProvider } from '@theia/core/lib/common';
19
21
  import { LanguageSelector } from '../common/language-selector';
20
- import URI from '@theia/core/lib/common/uri';
21
- import { Disposable } from '@theia/core/lib/common';
22
- import { CancellationToken } from '@theia/core';
23
22
  export declare const CallHierarchyService: unique symbol;
24
23
  export interface CallHierarchyService {
25
24
  readonly selector: LanguageSelector;
26
- getRootDefinition(uri: DocumentUri, position: Position, cancellationToken: CancellationToken): Promise<Definition | undefined>;
25
+ getRootDefinition(uri: DocumentUri, position: Position, cancellationToken: CancellationToken): Promise<Definition | Definition[] | undefined>;
27
26
  getCallers(definition: Definition, cancellationToken: CancellationToken): Promise<Caller[] | undefined>;
28
27
  getCallees?(definition: Definition, cancellationToken: CancellationToken): Promise<Callee[] | undefined>;
29
28
  }
30
29
  export declare class CallHierarchyServiceProvider {
31
30
  protected readonly contributions: ContributionProvider<CallHierarchyService>;
31
+ protected readonly onDidChangeEmitter: Emitter<void>;
32
+ get onDidChange(): Event<void>;
32
33
  private services;
33
34
  init(): void;
34
35
  get(languageId: string, uri: URI): CallHierarchyService | undefined;
36
+ protected score(service: CallHierarchyService, languageId: string, uri: URI): number;
35
37
  add(service: CallHierarchyService): Disposable;
36
38
  private remove;
37
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"callhierarchy-service.d.ts","sourceRoot":"","sources":["../../src/browser/callhierarchy-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAGlF,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,gDAAgD,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAS,MAAM,6BAA6B,CAAC;AACtE,OAAO,GAAG,MAAM,4BAA4B,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,eAAO,MAAM,oBAAoB,eAAiC,CAAC;AAEnE,MAAM,WAAW,oBAAoB;IAEjC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IAEpC,iBAAiB,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAA;IAC9H,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAA;IACvG,UAAU,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAA;CAC3G;AAED,qBACa,4BAA4B;IAGrC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;IAE7E,OAAO,CAAC,QAAQ,CAA8B;IAG9C,IAAI,IAAI,IAAI;IAIZ,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,oBAAoB,GAAG,SAAS;IAOnE,GAAG,CAAC,OAAO,EAAE,oBAAoB,GAAG,UAAU;IAU9C,OAAO,CAAC,MAAM;CAKjB"}
1
+ {"version":3,"file":"callhierarchy-service.d.ts","sourceRoot":"","sources":["../../src/browser/callhierarchy-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAGlF,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,gDAAgD,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,GAAG,MAAM,4BAA4B,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAS,MAAM,6BAA6B,CAAC;AAEtE,eAAO,MAAM,oBAAoB,eAAiC,CAAC;AAEnE,MAAM,WAAW,oBAAoB;IAEjC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IAEpC,iBAAiB,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,GAAG,UAAU,EAAE,GAAG,SAAS,CAAC,CAAA;IAC7I,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAA;IACvG,UAAU,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAA;CAC3G;AAED,qBACa,4BAA4B;IAGrC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;IAE7E,SAAS,CAAC,QAAQ,CAAC,kBAAkB,gBAAuB;IAC5D,IAAI,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,CAE7B;IAED,OAAO,CAAC,QAAQ,CAA8B;IAG9C,IAAI,IAAI,IAAI;IAIZ,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,oBAAoB,GAAG,SAAS;IAMnE,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,MAAM;IAIpF,GAAG,CAAC,OAAO,EAAE,oBAAoB,GAAG,UAAU;IAW9C,OAAO,CAAC,MAAM;CASjB"}
@@ -31,17 +31,27 @@ const language_selector_1 = require("../common/language-selector");
31
31
  exports.CallHierarchyService = Symbol('CallHierarchyService');
32
32
  let CallHierarchyServiceProvider = class CallHierarchyServiceProvider {
33
33
  constructor() {
34
+ this.onDidChangeEmitter = new common_1.Emitter();
34
35
  this.services = [];
35
36
  }
37
+ get onDidChange() {
38
+ return this.onDidChangeEmitter.event;
39
+ }
36
40
  init() {
37
41
  this.services = this.services.concat(this.contributions.getContributions());
38
42
  }
39
43
  get(languageId, uri) {
40
- return this.services.sort((left, right) => language_selector_1.score(right.selector, uri.scheme, uri.path.toString(), languageId, true) - language_selector_1.score(left.selector, uri.scheme, uri.path.toString(), languageId, true))[0];
44
+ return this.services
45
+ .filter(service => this.score(service, languageId, uri) > 0)
46
+ .sort((left, right) => this.score(right, languageId, uri) - this.score(left, languageId, uri))[0];
47
+ }
48
+ score(service, languageId, uri) {
49
+ return language_selector_1.score(service.selector, uri.scheme, uri.path.toString(), languageId, true);
41
50
  }
42
51
  add(service) {
43
52
  this.services.push(service);
44
53
  const that = this;
54
+ this.onDidChangeEmitter.fire();
45
55
  return {
46
56
  dispose: () => {
47
57
  that.remove(service);
@@ -51,7 +61,11 @@ let CallHierarchyServiceProvider = class CallHierarchyServiceProvider {
51
61
  remove(service) {
52
62
  const length = this.services.length;
53
63
  this.services = this.services.filter(value => value !== service);
54
- return length !== this.services.length;
64
+ const serviceWasRemoved = length !== this.services.length;
65
+ if (serviceWasRemoved) {
66
+ this.onDidChangeEmitter.fire();
67
+ }
68
+ return serviceWasRemoved;
55
69
  }
56
70
  };
57
71
  __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"callhierarchy-service.js","sourceRoot":"","sources":["../../src/browser/callhierarchy-service.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;;;;;;;;;;AAElF,4DAAwF;AAGxF,mDAA8D;AAC9D,mEAAsE;AAKzD,QAAA,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAYnE,IAAa,4BAA4B,GAAzC,MAAa,4BAA4B;IAAzC;QAKY,aAAQ,GAA2B,EAAE,CAAC;IA6BlD,CAAC;IA1BG,IAAI;QACA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,GAAG,CAAC,UAAkB,EAAE,GAAQ;QAE5B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACrB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACZ,yBAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,yBAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnK,CAAC;IAED,GAAG,CAAC,OAA6B;QAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO;YACH,OAAO,EAAE,GAAG,EAAE;gBACV,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;SACJ,CAAC;IACN,CAAC;IAEO,MAAM,CAAC,OAA6B;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;QACjE,OAAO,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC3C,CAAC;CACJ,CAAA;AA/BG;IADC,kBAAM,CAAC,6BAAoB,CAAC;IAAE,iBAAK,CAAC,4BAAoB,CAAC;;mEACmB;AAK7E;IADC,yBAAa,EAAE;;;;wDAGf;AAVQ,4BAA4B;IADxC,sBAAU,EAAE;GACA,4BAA4B,CAkCxC;AAlCY,oEAA4B"}
1
+ {"version":3,"file":"callhierarchy-service.js","sourceRoot":"","sources":["../../src/browser/callhierarchy-service.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;;;;;;;;;;AAElF,4DAAwF;AAIxF,mDAA0F;AAE1F,mEAAsE;AAEzD,QAAA,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAYnE,IAAa,4BAA4B,GAAzC,MAAa,4BAA4B;IAAzC;QAKuB,uBAAkB,GAAG,IAAI,gBAAO,EAAQ,CAAC;QAKpD,aAAQ,GAA2B,EAAE,CAAC;IAqClD,CAAC;IAzCG,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;IACzC,CAAC;IAKD,IAAI;QACA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,GAAG,CAAC,UAAkB,EAAE,GAAQ;QAC5B,OAAO,IAAI,CAAC,QAAQ;aACf,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;aAC3D,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1G,CAAC;IAES,KAAK,CAAC,OAA6B,EAAE,UAAkB,EAAE,GAAQ;QACvE,OAAO,yBAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IACtF,CAAC;IAED,GAAG,CAAC,OAA6B;QAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;QAC/B,OAAO;YACH,OAAO,EAAE,GAAG,EAAE;gBACV,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;SACJ,CAAC;IACN,CAAC;IAEO,MAAM,CAAC,OAA6B;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;QACjE,MAAM,iBAAiB,GAAG,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC1D,IAAI,iBAAiB,EAAE;YACnB,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;SAClC;QACD,OAAO,iBAAiB,CAAC;IAC7B,CAAC;CACJ,CAAA;AA5CG;IADC,kBAAM,CAAC,6BAAoB,CAAC;IAAE,iBAAK,CAAC,4BAAoB,CAAC;;mEACmB;AAU7E;IADC,yBAAa,EAAE;;;;wDAGf;AAfQ,4BAA4B;IADxC,sBAAU,EAAE;GACA,4BAA4B,CA+CxC;AA/CY,oEAA4B"}
@@ -1 +1 @@
1
- {"version":3,"file":"callhierarchy-tree-model.d.ts","sourceRoot":"","sources":["../../../src/browser/callhierarchy-tree/callhierarchy-tree-model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAGlF,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAkB,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,gDAAgD,CAAC;AAI1E,qBACa,sBAAuB,SAAQ,aAAa;IAErD,OAAO,CAAC,WAAW,CAAqB;IAEb,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAChC,SAAS,CAAC,QAAQ,CAAC,4BAA4B,EAAE,4BAA4B,CAAC;IAEpH,OAAO,IAAI,iBAAiB;IAI5B,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CAEnC;IAEK,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBrI,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;CAG7C"}
1
+ {"version":3,"file":"callhierarchy-tree-model.d.ts","sourceRoot":"","sources":["../../../src/browser/callhierarchy-tree/callhierarchy-tree-model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAGlF,OAAO,EAAqB,aAAa,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAkB,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,gDAAgD,CAAC;AAI1E,qBACa,sBAAuB,SAAQ,aAAa;IAErD,OAAO,CAAC,WAAW,CAAqB;IAEb,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAChC,SAAS,CAAC,QAAQ,CAAC,4BAA4B,EAAE,4BAA4B,CAAC;IAEpH,OAAO,IAAI,iBAAiB;IAI5B,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CAEnC;IAEK,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBrI,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;CAG7C"}
@@ -48,9 +48,16 @@ let CallHierarchyTreeModel = class CallHierarchyTreeModel extends browser_1.Tree
48
48
  this.tree.callHierarchyService = callHierarchyService;
49
49
  const cancellationSource = new cancellation_1.CancellationTokenSource();
50
50
  const rootDefinition = await callHierarchyService.getRootDefinition(uri, position, cancellationSource.token);
51
- if (rootDefinition) {
52
- const rootNode = callhierarchy_tree_1.DefinitionNode.create(rootDefinition, undefined);
53
- this.tree.root = rootNode;
51
+ const definitions = rootDefinition && (Array.isArray(rootDefinition) ? rootDefinition : [rootDefinition]);
52
+ if (definitions) {
53
+ const root = {
54
+ id: 'call-hierarchy-tree-root',
55
+ parent: undefined,
56
+ children: [],
57
+ visible: false,
58
+ };
59
+ definitions.forEach(definition => browser_1.CompositeTreeNode.addChild(root, callhierarchy_tree_1.DefinitionNode.create(definition, root)));
60
+ this.tree.root = root;
54
61
  }
55
62
  }
56
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"callhierarchy-tree-model.js","sourceRoot":"","sources":["../../../src/browser/callhierarchy-tree/callhierarchy-tree-model.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;;;;;;;;;;AAElF,4DAAkE;AAClE,qDAAkE;AAClE,6DAAyE;AACzE,oEAAwE;AAExE,oDAA6C;AAC7C,sEAA8E;AAG9E,IAAa,sBAAsB,GAAnC,MAAa,sBAAuB,SAAQ,uBAAa;IAOrD,OAAO;QACH,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,UAA8B,EAAE,GAAuB,EAAE,QAA8B;QACjH,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC;QAC3C,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,UAAU,IAAI,GAAG,IAAI,QAAQ,EAAE;YAC/B,MAAM,oBAAoB,GAAG,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,aAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7F,IAAI,oBAAoB,EAAE;gBACtB,IAAI,CAAC,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;gBACtD,MAAM,kBAAkB,GAAG,IAAI,sCAAuB,EAAE,CAAC;gBACzD,MAAM,cAAc,GAAG,MAAM,oBAAoB,CAAC,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC7G,IAAI,cAAc,EAAE;oBAChB,MAAM,QAAQ,GAAG,mCAAc,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;oBAClE,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;iBAC7B;aACJ;SACJ;IACL,CAAC;IAES,UAAU,CAAC,IAAc;QAC/B,oDAAoD;IACxD,CAAC;CACJ,CAAA;AAhC8B;IAA1B,kBAAM,CAAC,sCAAiB,CAAC;8BAA0B,sCAAiB;oDAAC;AAChC;IAArC,kBAAM,CAAC,oDAA4B,CAAC;8BAAkD,oDAA4B;4EAAC;AAL3G,sBAAsB;IADlC,sBAAU,EAAE;GACA,sBAAsB,CAoClC;AApCY,wDAAsB"}
1
+ {"version":3,"file":"callhierarchy-tree-model.js","sourceRoot":"","sources":["../../../src/browser/callhierarchy-tree/callhierarchy-tree-model.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;;;;;;;;;;AAElF,4DAAkE;AAClE,qDAAqF;AACrF,6DAAyE;AACzE,oEAAwE;AAExE,oDAA6C;AAC7C,sEAA8E;AAG9E,IAAa,sBAAsB,GAAnC,MAAa,sBAAuB,SAAQ,uBAAa;IAOrD,OAAO;QACH,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,UAA8B,EAAE,GAAuB,EAAE,QAA8B;QACjH,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC;QAC3C,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,UAAU,IAAI,GAAG,IAAI,QAAQ,EAAE;YAC/B,MAAM,oBAAoB,GAAG,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,aAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7F,IAAI,oBAAoB,EAAE;gBACtB,IAAI,CAAC,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;gBACtD,MAAM,kBAAkB,GAAG,IAAI,sCAAuB,EAAE,CAAC;gBACzD,MAAM,cAAc,GAAG,MAAM,oBAAoB,CAAC,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC7G,MAAM,WAAW,GAAG,cAAc,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC1G,IAAI,WAAW,EAAE;oBACb,MAAM,IAAI,GAAsB;wBAC5B,EAAE,EAAE,0BAA0B;wBAC9B,MAAM,EAAE,SAAS;wBACjB,QAAQ,EAAE,EAAE;wBACZ,OAAO,EAAE,KAAK;qBACjB,CAAC;oBACF,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,2BAAiB,CAAC,QAAQ,CAAC,IAAI,EAAE,mCAAc,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC7G,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;iBACzB;aACJ;SACJ;IACL,CAAC;IAES,UAAU,CAAC,IAAc;QAC/B,oDAAoD;IACxD,CAAC;CACJ,CAAA;AAvC8B;IAA1B,kBAAM,CAAC,sCAAiB,CAAC;8BAA0B,sCAAiB;oDAAC;AAChC;IAArC,kBAAM,CAAC,oDAA4B,CAAC;8BAAkD,oDAA4B;4EAAC;AAL3G,sBAAsB;IADlC,sBAAU,EAAE;GACA,sBAAsB,CA2ClC;AA3CY,wDAAsB"}
@@ -22,6 +22,7 @@ export interface Definition {
22
22
  symbolKind: SymbolKind;
23
23
  containerName: string | undefined;
24
24
  tags?: readonly SymbolTag[];
25
+ data?: unknown;
25
26
  }
26
27
  export interface Caller {
27
28
  callerDefinition: Definition;
@@ -1 +1 @@
1
- {"version":3,"file":"callhierarchy.d.ts","sourceRoot":"","sources":["../../src/browser/callhierarchy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,gDAAgD,CAAC;AAExG,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAEhD,MAAM,WAAW,UAAU;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,KAAK,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,IAAI,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,MAAM;IACnB,gBAAgB,EAAE,UAAU,CAAC;IAC7B,UAAU,EAAE,KAAK,EAAE,CAAA;CACtB;AAED,MAAM,WAAW,MAAM;IACnB,gBAAgB,EAAE,UAAU,CAAC;IAC7B,UAAU,EAAE,KAAK,EAAE,CAAA;CACtB"}
1
+ {"version":3,"file":"callhierarchy.d.ts","sourceRoot":"","sources":["../../src/browser/callhierarchy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,gDAAgD,CAAC;AAExG,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAEhD,MAAM,WAAW,UAAU;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,KAAK,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,IAAI,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,MAAM;IACnB,gBAAgB,EAAE,UAAU,CAAC;IAC7B,UAAU,EAAE,KAAK,EAAE,CAAA;CACtB;AAED,MAAM,WAAW,MAAM;IACnB,gBAAgB,EAAE,UAAU,CAAC;IAC7B,UAAU,EAAE,KAAK,EAAE,CAAA;CACtB"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@theia/callhierarchy",
3
- "version": "1.18.0",
3
+ "version": "1.21.0-next.12+c8248f736ed",
4
4
  "description": "Theia - Call Hierarchy Extension",
5
5
  "dependencies": {
6
- "@theia/core": "1.18.0",
7
- "@theia/editor": "1.18.0",
8
- "@theia/monaco": "1.18.0",
6
+ "@theia/core": "1.21.0-next.12+c8248f736ed",
7
+ "@theia/editor": "1.21.0-next.12+c8248f736ed",
8
+ "@theia/monaco": "1.21.0-next.12+c8248f736ed",
9
9
  "ts-md5": "^1.2.2"
10
10
  },
11
11
  "publishConfig": {
@@ -41,10 +41,10 @@
41
41
  "watch": "theiaext watch"
42
42
  },
43
43
  "devDependencies": {
44
- "@theia/ext-scripts": "1.18.0"
44
+ "@theia/ext-scripts": "1.20.0"
45
45
  },
46
46
  "nyc": {
47
47
  "extends": "../../configs/nyc.json"
48
48
  },
49
- "gitHead": "76318d01b7b3364cdf35ee456797699363f2634d"
49
+ "gitHead": "c8248f736edb4939155711987333ed39d9394b11"
50
50
  }
@@ -14,30 +14,36 @@
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
16
 
17
- import { injectable, inject } from '@theia/core/shared/inversify';
17
+ import { injectable, inject, postConstruct } from '@theia/core/shared/inversify';
18
18
  import { MenuModelRegistry, Command, CommandRegistry } from '@theia/core/lib/common';
19
19
  import { AbstractViewContribution, OpenViewArguments, KeybindingRegistry } from '@theia/core/lib/browser';
20
- import { EDITOR_CONTEXT_MENU, CurrentEditorAccess } from '@theia/editor/lib/browser';
20
+ import { EDITOR_CONTEXT_MENU, CurrentEditorAccess, EditorManager } from '@theia/editor/lib/browser';
21
21
  import { CallHierarchyTreeWidget } from './callhierarchy-tree/callhierarchy-tree-widget';
22
22
  import { CALLHIERARCHY_ID } from './callhierarchy';
23
23
  import { CallHierarchyServiceProvider } from './callhierarchy-service';
24
24
  import URI from '@theia/core/lib/common/uri';
25
+ import { ContextKey, ContextKeyService } from '@theia/core/lib/browser/context-key-service';
25
26
 
26
27
  export const CALL_HIERARCHY_TOGGLE_COMMAND_ID = 'callhierarchy:toggle';
27
28
  export const CALL_HIERARCHY_LABEL = 'Call Hierarchy';
28
29
 
29
30
  export namespace CallHierarchyCommands {
30
- export const OPEN: Command = {
31
+ export const OPEN = Command.toLocalizedCommand({
31
32
  id: 'callhierarchy:open',
32
33
  label: 'Open Call Hierarchy'
33
- };
34
+ }, 'theia/callhierarchy/open');
34
35
  }
35
36
 
36
37
  @injectable()
37
38
  export class CallHierarchyContribution extends AbstractViewContribution<CallHierarchyTreeWidget> {
38
39
 
39
40
  @inject(CurrentEditorAccess) protected readonly editorAccess: CurrentEditorAccess;
41
+ @inject(EditorManager) protected readonly editorManager: EditorManager;
40
42
  @inject(CallHierarchyServiceProvider) protected readonly callHierarchyServiceProvider: CallHierarchyServiceProvider;
43
+ @inject(ContextKeyService) protected readonly contextKeyService: ContextKeyService;
44
+
45
+ protected editorHasCallHierarchyProvider!: ContextKey<boolean>;
46
+
41
47
  constructor() {
42
48
  super({
43
49
  widgetId: CALLHIERARCHY_ID,
@@ -50,6 +56,13 @@ export class CallHierarchyContribution extends AbstractViewContribution<CallHier
50
56
  });
51
57
  }
52
58
 
59
+ @postConstruct()
60
+ protected init(): void {
61
+ this.editorHasCallHierarchyProvider = this.contextKeyService.createKey('editorHasCallHierarchyProvider', false);
62
+ this.editorManager.onCurrentEditorChanged(() => this.editorHasCallHierarchyProvider.set(this.isCallHierarchyAvailable()));
63
+ this.callHierarchyServiceProvider.onDidChange(() => this.editorHasCallHierarchyProvider.set(this.isCallHierarchyAvailable()));
64
+ }
65
+
53
66
  protected isCallHierarchyAvailable(): boolean {
54
67
  const { selection, languageId } = this.editorAccess;
55
68
  return !!selection && !!languageId && !!this.callHierarchyServiceProvider.get(languageId, new URI(selection.uri));
@@ -16,12 +16,11 @@
16
16
 
17
17
  import { injectable, inject, named, postConstruct } from '@theia/core/shared/inversify';
18
18
  import { Position, DocumentUri } from '@theia/core/shared/vscode-languageserver-types';
19
+ import { CancellationToken } from '@theia/core';
20
+ import URI from '@theia/core/lib/common/uri';
21
+ import { ContributionProvider, Disposable, Emitter, Event } from '@theia/core/lib/common';
19
22
  import { Definition, Caller, Callee } from './callhierarchy';
20
- import { ContributionProvider } from '@theia/core/lib/common';
21
23
  import { LanguageSelector, score } from '../common/language-selector';
22
- import URI from '@theia/core/lib/common/uri';
23
- import { Disposable } from '@theia/core/lib/common';
24
- import { CancellationToken } from '@theia/core';
25
24
 
26
25
  export const CallHierarchyService = Symbol('CallHierarchyService');
27
26
 
@@ -29,7 +28,7 @@ export interface CallHierarchyService {
29
28
 
30
29
  readonly selector: LanguageSelector;
31
30
 
32
- getRootDefinition(uri: DocumentUri, position: Position, cancellationToken: CancellationToken): Promise<Definition | undefined>
31
+ getRootDefinition(uri: DocumentUri, position: Position, cancellationToken: CancellationToken): Promise<Definition | Definition[] | undefined>
33
32
  getCallers(definition: Definition, cancellationToken: CancellationToken): Promise<Caller[] | undefined>
34
33
  getCallees?(definition: Definition, cancellationToken: CancellationToken): Promise<Callee[] | undefined>
35
34
  }
@@ -40,6 +39,11 @@ export class CallHierarchyServiceProvider {
40
39
  @inject(ContributionProvider) @named(CallHierarchyService)
41
40
  protected readonly contributions: ContributionProvider<CallHierarchyService>;
42
41
 
42
+ protected readonly onDidChangeEmitter = new Emitter<void>();
43
+ get onDidChange(): Event<void> {
44
+ return this.onDidChangeEmitter.event;
45
+ }
46
+
43
47
  private services: CallHierarchyService[] = [];
44
48
 
45
49
  @postConstruct()
@@ -48,15 +52,19 @@ export class CallHierarchyServiceProvider {
48
52
  }
49
53
 
50
54
  get(languageId: string, uri: URI): CallHierarchyService | undefined {
55
+ return this.services
56
+ .filter(service => this.score(service, languageId, uri) > 0)
57
+ .sort((left, right) => this.score(right, languageId, uri) - this.score(left, languageId, uri))[0];
58
+ }
51
59
 
52
- return this.services.sort(
53
- (left, right) =>
54
- score(right.selector, uri.scheme, uri.path.toString(), languageId, true) - score(left.selector, uri.scheme, uri.path.toString(), languageId, true))[0];
60
+ protected score(service: CallHierarchyService, languageId: string, uri: URI): number {
61
+ return score(service.selector, uri.scheme, uri.path.toString(), languageId, true);
55
62
  }
56
63
 
57
64
  add(service: CallHierarchyService): Disposable {
58
65
  this.services.push(service);
59
66
  const that = this;
67
+ this.onDidChangeEmitter.fire();
60
68
  return {
61
69
  dispose: () => {
62
70
  that.remove(service);
@@ -67,6 +75,10 @@ export class CallHierarchyServiceProvider {
67
75
  private remove(service: CallHierarchyService): boolean {
68
76
  const length = this.services.length;
69
77
  this.services = this.services.filter(value => value !== service);
70
- return length !== this.services.length;
78
+ const serviceWasRemoved = length !== this.services.length;
79
+ if (serviceWasRemoved) {
80
+ this.onDidChangeEmitter.fire();
81
+ }
82
+ return serviceWasRemoved;
71
83
  }
72
84
  }
@@ -15,7 +15,7 @@
15
15
  ********************************************************************************/
16
16
 
17
17
  import { injectable, inject } from '@theia/core/shared/inversify';
18
- import { TreeModelImpl, TreeNode } from '@theia/core/lib/browser';
18
+ import { CompositeTreeNode, TreeModelImpl, TreeNode } from '@theia/core/lib/browser';
19
19
  import { CallHierarchyTree, DefinitionNode } from './callhierarchy-tree';
20
20
  import { CallHierarchyServiceProvider } from '../callhierarchy-service';
21
21
  import { Position } from '@theia/core/shared/vscode-languageserver-types';
@@ -48,9 +48,16 @@ export class CallHierarchyTreeModel extends TreeModelImpl {
48
48
  this.tree.callHierarchyService = callHierarchyService;
49
49
  const cancellationSource = new CancellationTokenSource();
50
50
  const rootDefinition = await callHierarchyService.getRootDefinition(uri, position, cancellationSource.token);
51
- if (rootDefinition) {
52
- const rootNode = DefinitionNode.create(rootDefinition, undefined);
53
- this.tree.root = rootNode;
51
+ const definitions = rootDefinition && (Array.isArray(rootDefinition) ? rootDefinition : [rootDefinition]);
52
+ if (definitions) {
53
+ const root: CompositeTreeNode = {
54
+ id: 'call-hierarchy-tree-root',
55
+ parent: undefined,
56
+ children: [],
57
+ visible: false,
58
+ };
59
+ definitions.forEach(definition => CompositeTreeNode.addChild(root, DefinitionNode.create(definition, root)));
60
+ this.tree.root = root;
54
61
  }
55
62
  }
56
63
  }
@@ -25,6 +25,7 @@ export interface Definition {
25
25
  symbolKind: SymbolKind,
26
26
  containerName: string | undefined,
27
27
  tags?: readonly SymbolTag[];
28
+ data?: unknown,
28
29
  }
29
30
 
30
31
  export interface Caller {
@@ -45,6 +45,7 @@
45
45
 
46
46
  .theia-CallHierarchyTree .definitionNode .referenceCount {
47
47
  color: var(--theia-badge-background);
48
+ padding-right: 4px;
48
49
  }
49
50
 
50
51
  .theia-CallHierarchyTree .definitionNode .container {