@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.
- package/lib/browser/callhierarchy-contribution.d.ts +6 -1
- package/lib/browser/callhierarchy-contribution.d.ts.map +1 -1
- package/lib/browser/callhierarchy-contribution.js +20 -0
- package/lib/browser/callhierarchy-contribution.js.map +1 -1
- package/lib/browser/callhierarchy-service.d.ts +6 -3
- package/lib/browser/callhierarchy-service.d.ts.map +1 -1
- package/lib/browser/callhierarchy-service.js +16 -2
- package/lib/browser/callhierarchy-service.js.map +1 -1
- package/package.json +6 -6
- package/src/browser/callhierarchy-contribution.ts +15 -2
- package/src/browser/callhierarchy-service.ts +20 -7
|
@@ -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;
|
|
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":";AAAA;;;;;;;;;;;;;;kFAckF;;;;;;;;;;;;AAElF,
|
|
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,
|
|
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
|
|
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
|
-
|
|
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;
|
|
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.
|
|
3
|
+
"version": "1.21.0-next.13+afcf799cca0",
|
|
4
4
|
"description": "Theia - Call Hierarchy Extension",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/core": "1.
|
|
7
|
-
"@theia/editor": "1.
|
|
8
|
-
"@theia/monaco": "1.
|
|
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.
|
|
44
|
+
"@theia/ext-scripts": "1.20.0"
|
|
45
45
|
},
|
|
46
46
|
"nyc": {
|
|
47
47
|
"extends": "../../configs/nyc.json"
|
|
48
48
|
},
|
|
49
|
-
"gitHead": "
|
|
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
|
-
|
|
52
|
-
|
|
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
|
-
|
|
78
|
+
const serviceWasRemoved = length !== this.services.length;
|
|
79
|
+
if (serviceWasRemoved) {
|
|
80
|
+
this.onDidChangeEmitter.fire();
|
|
81
|
+
}
|
|
82
|
+
return serviceWasRemoved;
|
|
70
83
|
}
|
|
71
84
|
}
|