@theia/callhierarchy 1.19.0 → 1.21.0-next.13

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,SAGa,CAAC;CAClC;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"}
@@ -32,6 +32,7 @@ const browser_2 = require("@theia/editor/lib/browser");
32
32
  const callhierarchy_1 = require("./callhierarchy");
33
33
  const callhierarchy_service_1 = require("./callhierarchy-service");
34
34
  const uri_1 = require("@theia/core/lib/common/uri");
35
+ const context_key_service_1 = require("@theia/core/lib/browser/context-key-service");
35
36
  exports.CALL_HIERARCHY_TOGGLE_COMMAND_ID = 'callhierarchy:toggle';
36
37
  exports.CALL_HIERARCHY_LABEL = 'Call Hierarchy';
37
38
  var CallHierarchyCommands;
@@ -53,6 +54,11 @@ let CallHierarchyContribution = class CallHierarchyContribution extends browser_
53
54
  toggleKeybinding: 'ctrlcmd+shift+f1'
54
55
  });
55
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
+ }
56
62
  isCallHierarchyAvailable() {
57
63
  const { selection, languageId } = this.editorAccess;
58
64
  return !!selection && !!languageId && !!this.callHierarchyServiceProvider.get(languageId, new uri_1.default(selection.uri));
@@ -93,10 +99,24 @@ __decorate([
93
99
  inversify_1.inject(browser_2.CurrentEditorAccess),
94
100
  __metadata("design:type", browser_2.CurrentEditorAccess)
95
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);
96
106
  __decorate([
97
107
  inversify_1.inject(callhierarchy_service_1.CallHierarchyServiceProvider),
98
108
  __metadata("design:type", callhierarchy_service_1.CallHierarchyServiceProvider)
99
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);
100
120
  CallHierarchyContribution = __decorate([
101
121
  inversify_1.injectable(),
102
122
  __metadata("design:paramtypes", [])
@@ -1 +1 @@
1
- {"version":3,"file":"callhierarchy-contribution.js","sourceRoot":"","sources":["../../src/browser/callhierarchy-contribution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"callhierarchy-contribution.js","sourceRoot":"","sources":["../../src/browser/callhierarchy-contribution.ts"],"names":[],"mappings":"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"}
@@ -14,11 +14,11 @@
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, Disposable } from '@theia/core/lib/common';
19
21
  import { LanguageSelector } from '../common/language-selector';
20
- import URI from '@theia/core/lib/common/uri';
21
- import { CancellationToken } from '@theia/core';
22
22
  export declare const CallHierarchyService: unique symbol;
23
23
  export interface CallHierarchyService {
24
24
  readonly selector: LanguageSelector;
@@ -28,9 +28,12 @@ export interface CallHierarchyService {
28
28
  }
29
29
  export declare class CallHierarchyServiceProvider {
30
30
  protected readonly contributions: ContributionProvider<CallHierarchyService>;
31
+ protected readonly onDidChangeEmitter: Emitter<void>;
32
+ get onDidChange(): Event<void>;
31
33
  private services;
32
34
  init(): void;
33
35
  get(languageId: string, uri: URI): CallHierarchyService | undefined;
36
+ protected score(service: CallHierarchyService, languageId: string, uri: URI): number;
34
37
  add(service: CallHierarchyService): Disposable;
35
38
  private remove;
36
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,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAS,MAAM,6BAA6B,CAAC;AACtE,OAAO,GAAG,MAAM,4BAA4B,CAAC;AAC7C,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,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,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,mDAA0E;AAC1E,mEAAsE;AAIzD,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"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@theia/callhierarchy",
3
- "version": "1.19.0",
3
+ "version": "1.21.0-next.13+afcf799cca0",
4
4
  "description": "Theia - Call Hierarchy Extension",
5
5
  "dependencies": {
6
- "@theia/core": "1.19.0",
7
- "@theia/editor": "1.19.0",
8
- "@theia/monaco": "1.19.0",
6
+ "@theia/core": "1.21.0-next.13+afcf799cca0",
7
+ "@theia/editor": "1.21.0-next.13+afcf799cca0",
8
+ "@theia/monaco": "1.21.0-next.13+afcf799cca0",
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.19.0"
44
+ "@theia/ext-scripts": "1.20.0"
45
45
  },
46
46
  "nyc": {
47
47
  "extends": "../../configs/nyc.json"
48
48
  },
49
- "gitHead": "cebb5417bb40e320178e3a4e66070af514f0525f"
49
+ "gitHead": "afcf799cca07f3cabb4c8da984b774ab361f494c"
50
50
  }
@@ -14,14 +14,15 @@
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';
@@ -37,7 +38,12 @@ export namespace CallHierarchyCommands {
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,11 +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, Disposable } 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 { CancellationToken } from '@theia/core';
24
24
 
25
25
  export const CallHierarchyService = Symbol('CallHierarchyService');
26
26
 
@@ -39,6 +39,11 @@ export class CallHierarchyServiceProvider {
39
39
  @inject(ContributionProvider) @named(CallHierarchyService)
40
40
  protected readonly contributions: ContributionProvider<CallHierarchyService>;
41
41
 
42
+ protected readonly onDidChangeEmitter = new Emitter<void>();
43
+ get onDidChange(): Event<void> {
44
+ return this.onDidChangeEmitter.event;
45
+ }
46
+
42
47
  private services: CallHierarchyService[] = [];
43
48
 
44
49
  @postConstruct()
@@ -47,15 +52,19 @@ export class CallHierarchyServiceProvider {
47
52
  }
48
53
 
49
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
+ }
50
59
 
51
- return this.services.sort(
52
- (left, right) =>
53
- 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);
54
62
  }
55
63
 
56
64
  add(service: CallHierarchyService): Disposable {
57
65
  this.services.push(service);
58
66
  const that = this;
67
+ this.onDidChangeEmitter.fire();
59
68
  return {
60
69
  dispose: () => {
61
70
  that.remove(service);
@@ -66,6 +75,10 @@ export class CallHierarchyServiceProvider {
66
75
  private remove(service: CallHierarchyService): boolean {
67
76
  const length = this.services.length;
68
77
  this.services = this.services.filter(value => value !== service);
69
- return length !== this.services.length;
78
+ const serviceWasRemoved = length !== this.services.length;
79
+ if (serviceWasRemoved) {
80
+ this.onDidChangeEmitter.fire();
81
+ }
82
+ return serviceWasRemoved;
70
83
  }
71
84
  }