@theia/plugin-ext 1.18.0-next.de7b81be → 1.20.0
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/LICENSE +642 -0
- package/README.md +5 -0
- package/lib/common/connection.d.ts +1 -2
- package/lib/common/connection.d.ts.map +1 -1
- package/lib/common/connection.js.map +1 -1
- package/lib/common/plugin-api-rpc-model.d.ts +4 -0
- package/lib/common/plugin-api-rpc-model.d.ts.map +1 -1
- package/lib/common/plugin-api-rpc-model.js.map +1 -1
- package/lib/common/plugin-api-rpc.d.ts +30 -10
- package/lib/common/plugin-api-rpc.d.ts.map +1 -1
- package/lib/common/plugin-api-rpc.js +21 -1
- package/lib/common/plugin-api-rpc.js.map +1 -1
- package/lib/common/plugin-protocol.d.ts +2 -1
- package/lib/common/plugin-protocol.d.ts.map +1 -1
- package/lib/common/plugin-protocol.js.map +1 -1
- package/lib/hosted/browser/hosted-plugin.d.ts +5 -6
- package/lib/hosted/browser/hosted-plugin.d.ts.map +1 -1
- package/lib/hosted/browser/hosted-plugin.js +19 -13
- package/lib/hosted/browser/hosted-plugin.js.map +1 -1
- package/lib/hosted/browser/worker/debug-stub.d.ts.map +1 -1
- package/lib/hosted/browser/worker/debug-stub.js +1 -0
- package/lib/hosted/browser/worker/debug-stub.js.map +1 -1
- package/lib/hosted/node/hosted-plugin-deployer-handler.d.ts +1 -1
- package/lib/hosted/node/hosted-plugin-deployer-handler.d.ts.map +1 -1
- package/lib/hosted/node/hosted-plugin-deployer-handler.js +14 -38
- package/lib/hosted/node/hosted-plugin-deployer-handler.js.map +1 -1
- package/lib/hosted/node/hosted-plugin-localization-service.d.ts +37 -0
- package/lib/hosted/node/hosted-plugin-localization-service.d.ts.map +1 -0
- package/lib/hosted/node/hosted-plugin-localization-service.js +197 -0
- package/lib/hosted/node/hosted-plugin-localization-service.js.map +1 -0
- package/lib/hosted/node/hosted-plugin-process.d.ts +2 -2
- package/lib/hosted/node/hosted-plugin-process.d.ts.map +1 -1
- package/lib/hosted/node/hosted-plugin-process.js +5 -7
- package/lib/hosted/node/hosted-plugin-process.js.map +1 -1
- package/lib/hosted/node/plugin-ext-hosted-backend-module.d.ts.map +1 -1
- package/lib/hosted/node/plugin-ext-hosted-backend-module.js +2 -0
- package/lib/hosted/node/plugin-ext-hosted-backend-module.js.map +1 -1
- package/lib/hosted/node/plugin-manifest-loader.d.ts +1 -1
- package/lib/hosted/node/plugin-manifest-loader.d.ts.map +1 -1
- package/lib/hosted/node/plugin-manifest-loader.js +4 -52
- package/lib/hosted/node/plugin-manifest-loader.js.map +1 -1
- package/lib/hosted/node/plugin-service.d.ts +3 -6
- package/lib/hosted/node/plugin-service.d.ts.map +1 -1
- package/lib/hosted/node/plugin-service.js +7 -40
- package/lib/hosted/node/plugin-service.js.map +1 -1
- package/lib/hosted/node/scanners/scanner-theia.d.ts +1 -1
- package/lib/hosted/node/scanners/scanner-theia.d.ts.map +1 -1
- package/lib/hosted/node/scanners/scanner-theia.js +2 -1
- package/lib/hosted/node/scanners/scanner-theia.js.map +1 -1
- package/lib/main/browser/callhierarchy/callhierarchy-type-converters.d.ts.map +1 -1
- package/lib/main/browser/callhierarchy/callhierarchy-type-converters.js +6 -2
- package/lib/main/browser/callhierarchy/callhierarchy-type-converters.js.map +1 -1
- package/lib/main/browser/custom-editors/custom-editor-opener.d.ts +1 -2
- package/lib/main/browser/custom-editors/custom-editor-opener.d.ts.map +1 -1
- package/lib/main/browser/custom-editors/custom-editor-opener.js +2 -1
- package/lib/main/browser/custom-editors/custom-editor-opener.js.map +1 -1
- package/lib/main/browser/custom-editors/custom-editors-main.d.ts.map +1 -1
- package/lib/main/browser/custom-editors/custom-editors-main.js +1 -2
- package/lib/main/browser/custom-editors/custom-editors-main.js.map +1 -1
- package/lib/main/browser/debug/debug-main.js +1 -1
- package/lib/main/browser/debug/debug-main.js.map +1 -1
- package/lib/main/browser/debug/plugin-debug-adapter-contribution.d.ts +1 -1
- package/lib/main/browser/debug/plugin-debug-adapter-contribution.d.ts.map +1 -1
- package/lib/main/browser/debug/plugin-debug-adapter-contribution.js +2 -2
- package/lib/main/browser/debug/plugin-debug-adapter-contribution.js.map +1 -1
- package/lib/main/browser/debug/plugin-debug-service.d.ts +8 -0
- package/lib/main/browser/debug/plugin-debug-service.d.ts.map +1 -1
- package/lib/main/browser/debug/plugin-debug-service.js +15 -0
- package/lib/main/browser/debug/plugin-debug-service.js.map +1 -1
- package/lib/main/browser/debug/plugin-debug-session-factory.d.ts +2 -2
- package/lib/main/browser/debug/plugin-debug-session-factory.d.ts.map +1 -1
- package/lib/main/browser/debug/plugin-debug-session-factory.js.map +1 -1
- package/lib/main/browser/dialogs/modal-notification.d.ts +3 -3
- package/lib/main/browser/dialogs/modal-notification.d.ts.map +1 -1
- package/lib/main/browser/dialogs/modal-notification.js +17 -6
- package/lib/main/browser/dialogs/modal-notification.js.map +1 -1
- package/lib/main/browser/editors-and-documents-main.d.ts.map +1 -1
- package/lib/main/browser/editors-and-documents-main.js +3 -4
- package/lib/main/browser/editors-and-documents-main.js.map +1 -1
- package/lib/main/browser/languages-main.js +1 -1
- package/lib/main/browser/languages-main.js.map +1 -1
- package/lib/main/browser/message-registry-main.js +1 -1
- package/lib/main/browser/message-registry-main.js.map +1 -1
- package/lib/main/browser/quick-open-main.d.ts +1 -1
- package/lib/main/browser/quick-open-main.d.ts.map +1 -1
- package/lib/main/browser/quick-open-main.js.map +1 -1
- package/lib/main/browser/tasks-main.d.ts.map +1 -1
- package/lib/main/browser/tasks-main.js +6 -0
- package/lib/main/browser/tasks-main.js.map +1 -1
- package/lib/main/browser/timeline-main.d.ts.map +1 -1
- package/lib/main/browser/timeline-main.js +1 -1
- package/lib/main/browser/timeline-main.js.map +1 -1
- package/lib/main/browser/view/plugin-view-registry.d.ts +3 -2
- package/lib/main/browser/view/plugin-view-registry.d.ts.map +1 -1
- package/lib/main/browser/view/plugin-view-registry.js +63 -23
- package/lib/main/browser/view/plugin-view-registry.js.map +1 -1
- package/lib/main/browser/view/plugin-view-widget.d.ts +2 -0
- package/lib/main/browser/view/plugin-view-widget.d.ts.map +1 -1
- package/lib/main/browser/view/plugin-view-widget.js +3 -1
- package/lib/main/browser/view/plugin-view-widget.js.map +1 -1
- package/lib/main/browser/view/tree-view-widget.d.ts +3 -7
- package/lib/main/browser/view/tree-view-widget.d.ts.map +1 -1
- package/lib/main/browser/view/tree-view-widget.js +26 -39
- package/lib/main/browser/view/tree-view-widget.js.map +1 -1
- package/lib/main/browser/webview/webview-frontend-security-warnings.d.ts.map +1 -1
- package/lib/main/browser/webview/webview-frontend-security-warnings.js +8 -5
- package/lib/main/browser/webview/webview-frontend-security-warnings.js.map +1 -1
- package/lib/main/browser/webview/webview-preferences.d.ts.map +1 -1
- package/lib/main/browser/webview/webview-preferences.js +3 -2
- package/lib/main/browser/webview/webview-preferences.js.map +1 -1
- package/lib/main/browser/webview/webview.d.ts +1 -1
- package/lib/main/browser/webview/webview.d.ts.map +1 -1
- package/lib/main/browser/webview/webview.js +1 -1
- package/lib/main/browser/webview/webview.js.map +1 -1
- package/lib/plugin/comments.d.ts.map +1 -1
- package/lib/plugin/comments.js +2 -3
- package/lib/plugin/comments.js.map +1 -1
- package/lib/plugin/custom-editors.d.ts +1 -2
- package/lib/plugin/custom-editors.d.ts.map +1 -1
- package/lib/plugin/custom-editors.js +2 -3
- package/lib/plugin/custom-editors.js.map +1 -1
- package/lib/plugin/decorations.d.ts.map +1 -1
- package/lib/plugin/decorations.js +2 -3
- package/lib/plugin/decorations.js.map +1 -1
- package/lib/plugin/document-data.d.ts.map +1 -1
- package/lib/plugin/document-data.js +1 -1
- package/lib/plugin/document-data.js.map +1 -1
- package/lib/plugin/documents.d.ts.map +1 -1
- package/lib/plugin/documents.js +1 -2
- package/lib/plugin/documents.js.map +1 -1
- package/lib/plugin/file-system-event-service-ext-impl.d.ts.map +1 -1
- package/lib/plugin/file-system-event-service-ext-impl.js +2 -3
- package/lib/plugin/file-system-event-service-ext-impl.js.map +1 -1
- package/lib/plugin/file-system-ext-impl.d.ts.map +1 -1
- package/lib/plugin/file-system-ext-impl.js +12 -13
- package/lib/plugin/file-system-ext-impl.js.map +1 -1
- package/lib/plugin/known-commands.spec.js +1 -2
- package/lib/plugin/known-commands.spec.js.map +1 -1
- package/lib/plugin/languages/call-hierarchy.d.ts +1 -1
- package/lib/plugin/languages/call-hierarchy.d.ts.map +1 -1
- package/lib/plugin/languages/call-hierarchy.js +8 -3
- package/lib/plugin/languages/call-hierarchy.js.map +1 -1
- package/lib/plugin/languages/rename.d.ts +1 -2
- package/lib/plugin/languages/rename.d.ts.map +1 -1
- package/lib/plugin/languages/rename.js.map +1 -1
- package/lib/plugin/languages.d.ts +1 -1
- package/lib/plugin/languages.d.ts.map +1 -1
- package/lib/plugin/languages.js.map +1 -1
- package/lib/plugin/message-registry.d.ts.map +1 -1
- package/lib/plugin/message-registry.js +3 -0
- package/lib/plugin/message-registry.js.map +1 -1
- package/lib/plugin/node/debug/debug.d.ts +4 -3
- package/lib/plugin/node/debug/debug.d.ts.map +1 -1
- package/lib/plugin/node/debug/debug.js +34 -15
- package/lib/plugin/node/debug/debug.js.map +1 -1
- package/lib/plugin/node/debug/plugin-debug-adapter-session.d.ts +3 -3
- package/lib/plugin/node/debug/plugin-debug-adapter-session.d.ts.map +1 -1
- package/lib/plugin/node/debug/plugin-debug-adapter-session.js.map +1 -1
- package/lib/plugin/node/debug/plugin-debug-adapter-starter.d.ts +6 -4
- package/lib/plugin/node/debug/plugin-debug-adapter-starter.d.ts.map +1 -1
- package/lib/plugin/node/debug/plugin-debug-adapter-starter.js +23 -13
- package/lib/plugin/node/debug/plugin-debug-adapter-starter.js.map +1 -1
- package/lib/plugin/plugin-context.d.ts.map +1 -1
- package/lib/plugin/plugin-context.js +8 -3
- package/lib/plugin/plugin-context.js.map +1 -1
- package/lib/plugin/plugin-manager.d.ts +2 -0
- package/lib/plugin/plugin-manager.d.ts.map +1 -1
- package/lib/plugin/plugin-manager.js +24 -3
- package/lib/plugin/plugin-manager.js.map +1 -1
- package/lib/plugin/plugin-storage.d.ts +4 -0
- package/lib/plugin/plugin-storage.d.ts.map +1 -1
- package/lib/plugin/plugin-storage.js +6 -1
- package/lib/plugin/plugin-storage.js.map +1 -1
- package/lib/plugin/preference-registry.spec.js.map +1 -1
- package/lib/plugin/quick-open.d.ts +1 -1
- package/lib/plugin/quick-open.d.ts.map +1 -1
- package/lib/plugin/quick-open.js +11 -6
- package/lib/plugin/quick-open.js.map +1 -1
- package/lib/plugin/tasks/tasks.d.ts +1 -3
- package/lib/plugin/tasks/tasks.d.ts.map +1 -1
- package/lib/plugin/tasks/tasks.js +3 -17
- package/lib/plugin/tasks/tasks.js.map +1 -1
- package/lib/plugin/timeline.d.ts.map +1 -1
- package/lib/plugin/timeline.js +1 -2
- package/lib/plugin/timeline.js.map +1 -1
- package/lib/plugin/type-converters.d.ts.map +1 -1
- package/lib/plugin/type-converters.js +12 -10
- package/lib/plugin/type-converters.js.map +1 -1
- package/lib/plugin/types-impl.d.ts +52 -0
- package/lib/plugin/types-impl.d.ts.map +1 -1
- package/lib/plugin/types-impl.js +79 -1
- package/lib/plugin/types-impl.js.map +1 -1
- package/lib/plugin/webviews.d.ts +1 -2
- package/lib/plugin/webviews.d.ts.map +1 -1
- package/lib/plugin/webviews.js.map +1 -1
- package/package.json +31 -27
- package/src/common/connection.ts +1 -2
- package/src/common/plugin-api-rpc-model.ts +4 -0
- package/src/common/plugin-api-rpc.ts +31 -9
- package/src/common/plugin-protocol.ts +2 -1
- package/src/hosted/browser/hosted-plugin.ts +19 -12
- package/src/hosted/browser/worker/debug-stub.ts +1 -0
- package/src/hosted/node/hosted-plugin-deployer-handler.ts +13 -40
- package/src/hosted/node/hosted-plugin-localization-service.ts +201 -0
- package/src/hosted/node/hosted-plugin-process.ts +4 -6
- package/src/hosted/node/plugin-ext-hosted-backend-module.ts +2 -0
- package/src/hosted/node/plugin-manifest-loader.ts +4 -56
- package/src/hosted/node/plugin-service.ts +7 -40
- package/src/hosted/node/scanners/scanner-theia.ts +3 -2
- package/src/main/browser/callhierarchy/callhierarchy-type-converters.ts +6 -2
- package/src/main/browser/custom-editors/custom-editor-opener.tsx +3 -3
- package/src/main/browser/custom-editors/custom-editors-main.ts +1 -2
- package/src/main/browser/debug/debug-main.ts +1 -1
- package/src/main/browser/debug/plugin-debug-adapter-contribution.ts +3 -3
- package/src/main/browser/debug/plugin-debug-service.ts +23 -0
- package/src/main/browser/debug/plugin-debug-session-factory.ts +3 -3
- package/src/main/browser/dialogs/modal-notification.ts +18 -7
- package/src/main/browser/dialogs/style/modal-notification.css +17 -2
- package/src/main/browser/editors-and-documents-main.ts +1 -2
- package/src/main/browser/languages-main.ts +1 -1
- package/src/main/browser/message-registry-main.ts +1 -1
- package/src/main/browser/quick-open-main.ts +1 -1
- package/src/main/browser/style/tree.css +4 -0
- package/src/main/browser/tasks-main.ts +7 -0
- package/src/main/browser/timeline-main.ts +1 -2
- package/src/main/browser/view/plugin-view-registry.ts +67 -25
- package/src/main/browser/view/plugin-view-widget.ts +7 -2
- package/src/main/browser/view/tree-view-widget.tsx +43 -65
- package/src/main/browser/webview/pre/host.js +20 -12
- package/src/main/browser/webview/pre/main.js +0 -1
- package/src/main/browser/webview/webview-frontend-security-warnings.ts +8 -7
- package/src/main/browser/webview/webview-preferences.ts +3 -2
- package/src/main/browser/webview/webview.ts +1 -1
- package/src/plugin/comments.ts +1 -2
- package/src/plugin/custom-editors.ts +2 -4
- package/src/plugin/decorations.ts +1 -2
- package/src/plugin/document-data.ts +1 -2
- package/src/plugin/documents.ts +1 -2
- package/src/plugin/file-system-event-service-ext-impl.ts +1 -2
- package/src/plugin/file-system-ext-impl.ts +1 -2
- package/src/plugin/known-commands.spec.ts +1 -2
- package/src/plugin/languages/call-hierarchy.ts +14 -5
- package/src/plugin/languages/rename.ts +1 -2
- package/src/plugin/languages.ts +3 -1
- package/src/plugin/message-registry.ts +3 -1
- package/src/plugin/node/debug/debug.ts +40 -19
- package/src/plugin/node/debug/plugin-debug-adapter-session.ts +3 -3
- package/src/plugin/node/debug/plugin-debug-adapter-starter.ts +24 -14
- package/src/plugin/plugin-context.ts +21 -10
- package/src/plugin/plugin-manager.ts +26 -4
- package/src/plugin/plugin-storage.ts +7 -2
- package/src/plugin/preference-registry.spec.ts +1 -2
- package/src/plugin/quick-open.ts +14 -10
- package/src/plugin/tasks/tasks.ts +4 -18
- package/src/plugin/timeline.ts +1 -2
- package/src/plugin/type-converters.ts +14 -12
- package/src/plugin/types-impl.ts +74 -0
- package/src/plugin/webviews.ts +1 -2
|
@@ -29,7 +29,9 @@ export class CallHierarchyAdapter {
|
|
|
29
29
|
private readonly documents: DocumentsExtImpl
|
|
30
30
|
) { }
|
|
31
31
|
|
|
32
|
-
async provideRootDefinition(
|
|
32
|
+
async provideRootDefinition(
|
|
33
|
+
resource: URI, position: rpc.Position, token: theia.CancellationToken
|
|
34
|
+
): Promise<model.CallHierarchyDefinition | model.CallHierarchyDefinition[] | undefined> {
|
|
33
35
|
const documentData = this.documents.getDocumentData(resource);
|
|
34
36
|
if (!documentData) {
|
|
35
37
|
return Promise.reject(new Error(`There is no document for ${resource}`));
|
|
@@ -40,12 +42,14 @@ export class CallHierarchyAdapter {
|
|
|
40
42
|
position.lineNumber,
|
|
41
43
|
position.column
|
|
42
44
|
),
|
|
43
|
-
token
|
|
45
|
+
token
|
|
46
|
+
);
|
|
47
|
+
|
|
44
48
|
if (!definition) {
|
|
45
49
|
return undefined;
|
|
46
50
|
}
|
|
47
51
|
|
|
48
|
-
return this.fromCallHierarchyItem(definition);
|
|
52
|
+
return Array.isArray(definition) ? definition.map(item => this.fromCallHierarchyItem(item)) : this.fromCallHierarchyItem(definition);
|
|
49
53
|
}
|
|
50
54
|
|
|
51
55
|
async provideCallers(definition: model.CallHierarchyDefinition, token: theia.CancellationToken): Promise<model.CallHierarchyReference[] | undefined> {
|
|
@@ -72,7 +76,9 @@ export class CallHierarchyAdapter {
|
|
|
72
76
|
range: this.fromRange(item.range),
|
|
73
77
|
selectionRange: this.fromRange(item.selectionRange),
|
|
74
78
|
name: item.name,
|
|
75
|
-
kind: item.kind
|
|
79
|
+
kind: item.kind,
|
|
80
|
+
tags: item.tags,
|
|
81
|
+
data: item.data,
|
|
76
82
|
};
|
|
77
83
|
}
|
|
78
84
|
|
|
@@ -95,7 +101,7 @@ export class CallHierarchyAdapter {
|
|
|
95
101
|
}
|
|
96
102
|
|
|
97
103
|
private toCallHierarchyItem(definition: model.CallHierarchyDefinition): theia.CallHierarchyItem {
|
|
98
|
-
|
|
104
|
+
const item = new types.CallHierarchyItem(
|
|
99
105
|
Converter.SymbolKind.toSymbolKind(definition.kind),
|
|
100
106
|
definition.name,
|
|
101
107
|
definition.detail ? definition.detail : '',
|
|
@@ -103,6 +109,9 @@ export class CallHierarchyAdapter {
|
|
|
103
109
|
this.toRange(definition.range),
|
|
104
110
|
this.toRange(definition.selectionRange),
|
|
105
111
|
);
|
|
112
|
+
item.tags = definition.tags;
|
|
113
|
+
item.data = definition.data;
|
|
114
|
+
return item;
|
|
106
115
|
}
|
|
107
116
|
|
|
108
117
|
private fromCallHierarchyIncomingCall(caller: theia.CallHierarchyIncomingCall): model.CallHierarchyReference {
|
|
@@ -19,8 +19,7 @@ import * as theia from '@theia/plugin';
|
|
|
19
19
|
import * as Converter from '../type-converters';
|
|
20
20
|
import * as model from '../../common/plugin-api-rpc-model';
|
|
21
21
|
import { DocumentsExtImpl } from '../documents';
|
|
22
|
-
import { WorkspaceEditDto } from '../../common/plugin-api-rpc';
|
|
23
|
-
import { Position } from '../../common/plugin-api-rpc';
|
|
22
|
+
import { Position, WorkspaceEditDto } from '../../common/plugin-api-rpc';
|
|
24
23
|
import { Range } from '../types-impl';
|
|
25
24
|
import { isObject } from '../../common/types';
|
|
26
25
|
|
package/src/plugin/languages.ts
CHANGED
|
@@ -583,7 +583,9 @@ export class LanguagesExtImpl implements LanguagesExt {
|
|
|
583
583
|
return this.createDisposable(callId);
|
|
584
584
|
}
|
|
585
585
|
|
|
586
|
-
$provideRootDefinition(
|
|
586
|
+
$provideRootDefinition(
|
|
587
|
+
handle: number, resource: UriComponents, location: Position, token: theia.CancellationToken
|
|
588
|
+
): Promise<CallHierarchyDefinition | CallHierarchyDefinition[] | undefined> {
|
|
587
589
|
return this.withAdapter(handle, CallHierarchyAdapter, adapter => adapter.provideRootDefinition(URI.revive(resource), location, token), undefined);
|
|
588
590
|
}
|
|
589
591
|
|
|
@@ -50,6 +50,9 @@ export class MessageRegistryExt {
|
|
|
50
50
|
} else {
|
|
51
51
|
if ('modal' in optionsOrFirstItem) {
|
|
52
52
|
options.modal = optionsOrFirstItem.modal;
|
|
53
|
+
if ('detail' in optionsOrFirstItem) {
|
|
54
|
+
options.detail = optionsOrFirstItem.detail;
|
|
55
|
+
}
|
|
53
56
|
}
|
|
54
57
|
}
|
|
55
58
|
}
|
|
@@ -59,5 +62,4 @@ export class MessageRegistryExt {
|
|
|
59
62
|
const actionHandle = await this.proxy.$showMessage(type, message, options, actions);
|
|
60
63
|
return actionHandle !== undefined ? items[actionHandle] : undefined;
|
|
61
64
|
}
|
|
62
|
-
|
|
63
65
|
}
|
|
@@ -15,22 +15,25 @@
|
|
|
15
15
|
********************************************************************************/
|
|
16
16
|
import { Emitter } from '@theia/core/lib/common/event';
|
|
17
17
|
import { Path } from '@theia/core/lib/common/path';
|
|
18
|
-
import { CommunicationProvider } from '@theia/debug/lib/common/debug-model';
|
|
19
18
|
import * as theia from '@theia/plugin';
|
|
20
19
|
import { URI } from '@theia/core/shared/vscode-uri';
|
|
21
20
|
import { Breakpoint } from '../../../common/plugin-api-rpc-model';
|
|
22
|
-
import { DebugExt, DebugMain, PLUGIN_RPC_CONTEXT as Ext, TerminalOptionsExt } from '../../../common/plugin-api-rpc';
|
|
21
|
+
import { DebugConfigurationProviderTriggerKind, DebugExt, DebugMain, PLUGIN_RPC_CONTEXT as Ext, TerminalOptionsExt } from '../../../common/plugin-api-rpc';
|
|
23
22
|
import { PluginPackageDebuggersContribution } from '../../../common/plugin-protocol';
|
|
24
23
|
import { RPCProtocol } from '../../../common/rpc-protocol';
|
|
25
24
|
import { PluginWebSocketChannel } from '../../../common/connection';
|
|
26
25
|
import { CommandRegistryImpl } from '../../command-registry';
|
|
27
26
|
import { ConnectionExtImpl } from '../../connection-ext';
|
|
28
|
-
import {
|
|
27
|
+
import {
|
|
28
|
+
Disposable, Breakpoint as BreakpointExt, SourceBreakpoint, FunctionBreakpoint, Location, Range,
|
|
29
|
+
DebugAdapterServer, DebugAdapterExecutable, DebugAdapterNamedPipeServer, DebugAdapterInlineImplementation
|
|
30
|
+
} from '../../types-impl';
|
|
29
31
|
import { resolveDebugAdapterExecutable } from './plugin-debug-adapter-executable-resolver';
|
|
30
32
|
import { PluginDebugAdapterSession } from './plugin-debug-adapter-session';
|
|
31
|
-
import {
|
|
33
|
+
import { connectInlineDebugAdapter, connectPipeDebugAdapter, connectSocketDebugAdapter, startDebugAdapter } from './plugin-debug-adapter-starter';
|
|
32
34
|
import { PluginDebugAdapterTracker } from './plugin-debug-adapter-tracker';
|
|
33
35
|
import uuid = require('uuid');
|
|
36
|
+
import { CommunicationProvider } from '@theia/debug/lib/node/debug-model';
|
|
34
37
|
|
|
35
38
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
36
39
|
|
|
@@ -43,8 +46,11 @@ export class DebugExtImpl implements DebugExt {
|
|
|
43
46
|
// debug sessions by sessionId
|
|
44
47
|
private sessions = new Map<string, PluginDebugAdapterSession>();
|
|
45
48
|
|
|
46
|
-
// providers by type
|
|
49
|
+
// providers by type (initial)
|
|
47
50
|
private configurationProviders = new Map<string, Set<theia.DebugConfigurationProvider>>();
|
|
51
|
+
// providers by type (dynamic)
|
|
52
|
+
private dynamicConfigurationProviders = new Map<string, Set<theia.DebugConfigurationProvider>>();
|
|
53
|
+
|
|
48
54
|
/**
|
|
49
55
|
* Only use internally, don't send it to the frontend. It's expensive!
|
|
50
56
|
* It's already there as a part of the plugin metadata.
|
|
@@ -182,19 +188,22 @@ export class DebugExtImpl implements DebugExt {
|
|
|
182
188
|
});
|
|
183
189
|
}
|
|
184
190
|
|
|
185
|
-
registerDebugConfigurationProvider(debugType: string, provider: theia.DebugConfigurationProvider): Disposable {
|
|
186
|
-
console.log(`Debug configuration provider has been registered: ${debugType}`);
|
|
187
|
-
const
|
|
188
|
-
|
|
191
|
+
registerDebugConfigurationProvider(debugType: string, provider: theia.DebugConfigurationProvider, trigger: theia.DebugConfigurationProviderTriggerKind): Disposable {
|
|
192
|
+
console.log(`Debug configuration provider has been registered: ${debugType}, trigger: ${trigger}`);
|
|
193
|
+
const providersByTriggerKind = trigger === DebugConfigurationProviderTriggerKind.Initial ? this.configurationProviders : this.dynamicConfigurationProviders;
|
|
194
|
+
let providers = providersByTriggerKind.get(debugType);
|
|
195
|
+
if (!providers) {
|
|
196
|
+
providersByTriggerKind.set(debugType, providers = new Set());
|
|
197
|
+
}
|
|
189
198
|
providers.add(provider);
|
|
190
199
|
|
|
191
200
|
return Disposable.create(() => {
|
|
192
201
|
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
193
|
-
const providers =
|
|
202
|
+
const providers = providersByTriggerKind.get(debugType);
|
|
194
203
|
if (providers) {
|
|
195
204
|
providers.delete(provider);
|
|
196
205
|
if (providers.size === 0) {
|
|
197
|
-
|
|
206
|
+
providersByTriggerKind.delete(debugType);
|
|
198
207
|
}
|
|
199
208
|
}
|
|
200
209
|
});
|
|
@@ -319,10 +328,10 @@ export class DebugExtImpl implements DebugExt {
|
|
|
319
328
|
return undefined;
|
|
320
329
|
}
|
|
321
330
|
|
|
322
|
-
async $provideDebugConfigurations(debugType: string, workspaceFolderUri: string | undefined): Promise<theia.DebugConfiguration[]> {
|
|
331
|
+
async $provideDebugConfigurations(debugType: string, workspaceFolderUri: string | undefined, dynamic: boolean = false): Promise<theia.DebugConfiguration[]> {
|
|
323
332
|
let result: theia.DebugConfiguration[] = [];
|
|
324
333
|
|
|
325
|
-
const providers = this.configurationProviders.get(debugType);
|
|
334
|
+
const providers = dynamic ? this.dynamicConfigurationProviders.get(debugType) : this.configurationProviders.get(debugType);
|
|
326
335
|
if (providers) {
|
|
327
336
|
for (const provider of providers) {
|
|
328
337
|
if (provider.provideDebugConfigurations) {
|
|
@@ -337,7 +346,11 @@ export class DebugExtImpl implements DebugExt {
|
|
|
337
346
|
async $resolveDebugConfigurations(debugConfiguration: theia.DebugConfiguration, workspaceFolderUri: string | undefined): Promise<theia.DebugConfiguration | undefined> {
|
|
338
347
|
let current = debugConfiguration;
|
|
339
348
|
|
|
340
|
-
for (const providers of [
|
|
349
|
+
for (const providers of [
|
|
350
|
+
this.configurationProviders.get(debugConfiguration.type),
|
|
351
|
+
this.dynamicConfigurationProviders.get(debugConfiguration.type),
|
|
352
|
+
this.configurationProviders.get('*')
|
|
353
|
+
]) {
|
|
341
354
|
if (providers) {
|
|
342
355
|
for (const provider of providers) {
|
|
343
356
|
if (provider.resolveDebugConfiguration) {
|
|
@@ -363,7 +376,11 @@ export class DebugExtImpl implements DebugExt {
|
|
|
363
376
|
Promise<theia.DebugConfiguration | undefined> {
|
|
364
377
|
let current = debugConfiguration;
|
|
365
378
|
|
|
366
|
-
for (const providers of [
|
|
379
|
+
for (const providers of [
|
|
380
|
+
this.configurationProviders.get(debugConfiguration.type),
|
|
381
|
+
this.dynamicConfigurationProviders.get(debugConfiguration.type),
|
|
382
|
+
this.configurationProviders.get('*')
|
|
383
|
+
]) {
|
|
367
384
|
if (providers) {
|
|
368
385
|
for (const provider of providers) {
|
|
369
386
|
if (provider.resolveDebugConfigurationWithSubstitutedVariables) {
|
|
@@ -409,16 +426,20 @@ export class DebugExtImpl implements DebugExt {
|
|
|
409
426
|
// @param executable The debug adapter's executable information as specified in the package.json (or undefined if no such information exists).
|
|
410
427
|
const descriptor = await descriptorFactory.createDebugAdapterDescriptor(session, executable);
|
|
411
428
|
if (descriptor) {
|
|
412
|
-
if (
|
|
413
|
-
return
|
|
414
|
-
} else {
|
|
429
|
+
if (DebugAdapterServer.is(descriptor)) {
|
|
430
|
+
return connectSocketDebugAdapter(descriptor);
|
|
431
|
+
} else if (DebugAdapterExecutable.is(descriptor)) {
|
|
415
432
|
return startDebugAdapter(descriptor);
|
|
433
|
+
} else if (DebugAdapterNamedPipeServer.is(descriptor)) {
|
|
434
|
+
return connectPipeDebugAdapter(descriptor);
|
|
435
|
+
} else if (DebugAdapterInlineImplementation.is(descriptor)) {
|
|
436
|
+
return connectInlineDebugAdapter(descriptor);
|
|
416
437
|
}
|
|
417
438
|
}
|
|
418
439
|
}
|
|
419
440
|
|
|
420
441
|
if ('debugServer' in debugConfiguration) {
|
|
421
|
-
return
|
|
442
|
+
return connectSocketDebugAdapter({ port: debugConfiguration.debugServer });
|
|
422
443
|
} else {
|
|
423
444
|
if (!executable) {
|
|
424
445
|
throw new Error('It is not possible to provide debug adapter executable.');
|
|
@@ -14,23 +14,23 @@
|
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
16
|
|
|
17
|
-
import { CommunicationProvider } from '@theia/debug/lib/common/debug-model';
|
|
18
17
|
import { DebugAdapterSessionImpl } from '@theia/debug/lib/node/debug-adapter-session';
|
|
19
18
|
import * as theia from '@theia/plugin';
|
|
20
19
|
import { IWebSocket } from '@theia/core/shared/vscode-ws-jsonrpc';
|
|
20
|
+
import { CommunicationProvider, DebugAdapterSession } from '@theia/debug/lib/node/debug-model';
|
|
21
21
|
|
|
22
22
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
25
|
* Server debug adapter session.
|
|
26
26
|
*/
|
|
27
|
-
export class PluginDebugAdapterSession extends DebugAdapterSessionImpl implements theia.DebugSession {
|
|
27
|
+
export class PluginDebugAdapterSession extends DebugAdapterSessionImpl implements theia.DebugSession, DebugAdapterSession {
|
|
28
28
|
readonly type: string;
|
|
29
29
|
readonly name: string;
|
|
30
30
|
readonly configuration: theia.DebugConfiguration;
|
|
31
31
|
|
|
32
32
|
constructor(
|
|
33
|
-
|
|
33
|
+
readonly communicationProvider: CommunicationProvider,
|
|
34
34
|
protected readonly tracker: theia.DebugAdapterTracker,
|
|
35
35
|
protected readonly theiaSession: theia.DebugSession) {
|
|
36
36
|
|
|
@@ -15,15 +15,18 @@
|
|
|
15
15
|
********************************************************************************/
|
|
16
16
|
|
|
17
17
|
import * as net from 'net';
|
|
18
|
-
import * as theia from '@theia/plugin';
|
|
19
|
-
import { CommunicationProvider } from '@theia/debug/lib/common/debug-model';
|
|
20
18
|
import { ChildProcess, spawn, fork, ForkOptions } from 'child_process';
|
|
19
|
+
import { CommunicationProvider } from '@theia/debug/lib/node/debug-model';
|
|
20
|
+
import { StreamCommunicationProvider } from '@theia/debug/lib/node/stream-communication-provider';
|
|
21
|
+
import { Disposable } from '@theia/core/lib/common/disposable';
|
|
22
|
+
import { DebugAdapterExecutable, DebugAdapterInlineImplementation, DebugAdapterNamedPipeServer, DebugAdapterServer } from '../../types-impl';
|
|
23
|
+
import { InlineCommunicationProvider } from '@theia/debug/lib/node/inline-communication-provider';
|
|
21
24
|
const isElectron = require('is-electron');
|
|
22
25
|
|
|
23
26
|
/**
|
|
24
27
|
* Starts debug adapter process.
|
|
25
28
|
*/
|
|
26
|
-
export function startDebugAdapter(executable:
|
|
29
|
+
export function startDebugAdapter(executable: DebugAdapterExecutable): CommunicationProvider {
|
|
27
30
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
28
31
|
const options: any = { stdio: ['pipe', 'pipe', 2] };
|
|
29
32
|
|
|
@@ -63,21 +66,28 @@ export function startDebugAdapter(executable: theia.DebugAdapterExecutable): Com
|
|
|
63
66
|
childProcess = spawn(command, args, options);
|
|
64
67
|
}
|
|
65
68
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
dispose: () => childProcess.kill()
|
|
70
|
-
};
|
|
69
|
+
const provider = new StreamCommunicationProvider(childProcess.stdout!, childProcess.stdin!);
|
|
70
|
+
provider.push(Disposable.create(() => childProcess.kill()));
|
|
71
|
+
return provider;
|
|
71
72
|
}
|
|
72
73
|
|
|
73
74
|
/**
|
|
74
75
|
* Connects to a remote debug server.
|
|
75
76
|
*/
|
|
76
|
-
export function
|
|
77
|
+
export function connectSocketDebugAdapter(server: DebugAdapterServer): CommunicationProvider {
|
|
77
78
|
const socket = net.createConnection(server.port, server.host);
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
79
|
+
const provider = new StreamCommunicationProvider(socket, socket);
|
|
80
|
+
provider.push(Disposable.create(() => socket.end()));
|
|
81
|
+
return provider;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export function connectPipeDebugAdapter(adapter: DebugAdapterNamedPipeServer): CommunicationProvider {
|
|
85
|
+
const socket = net.createConnection(adapter.path);
|
|
86
|
+
const provider = new StreamCommunicationProvider(socket, socket);
|
|
87
|
+
provider.push(Disposable.create(() => socket.end()));
|
|
88
|
+
return provider;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export function connectInlineDebugAdapter(adapter: DebugAdapterInlineImplementation): CommunicationProvider {
|
|
92
|
+
return new InlineCommunicationProvider(adapter.implementation);
|
|
83
93
|
}
|
|
@@ -17,17 +17,18 @@
|
|
|
17
17
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
18
18
|
/* tslint:disable:typedef */
|
|
19
19
|
|
|
20
|
-
import * as theia from '@theia/plugin';
|
|
20
|
+
import type * as theia from '@theia/plugin';
|
|
21
21
|
import { CommandRegistryImpl } from './command-registry';
|
|
22
22
|
import { Emitter } from '@theia/core/lib/common/event';
|
|
23
|
-
import { CancellationTokenSource } from '@theia/core/lib/common/cancellation';
|
|
23
|
+
import { CancellationError, CancellationToken, CancellationTokenSource } from '@theia/core/lib/common/cancellation';
|
|
24
24
|
import { QuickOpenExtImpl } from './quick-open';
|
|
25
25
|
import {
|
|
26
26
|
MAIN_RPC_CONTEXT,
|
|
27
27
|
Plugin as InternalPlugin,
|
|
28
28
|
PluginManager,
|
|
29
29
|
PluginAPIFactory,
|
|
30
|
-
MainMessageType
|
|
30
|
+
MainMessageType,
|
|
31
|
+
DebugConfigurationProviderTriggerKind
|
|
31
32
|
} from '../common/plugin-api-rpc';
|
|
32
33
|
import { RPCProtocol } from '../common/rpc-protocol';
|
|
33
34
|
import { MessageRegistryExt } from './message-registry';
|
|
@@ -105,6 +106,8 @@ import {
|
|
|
105
106
|
Task2,
|
|
106
107
|
DebugAdapterExecutable,
|
|
107
108
|
DebugAdapterServer,
|
|
109
|
+
DebugAdapterNamedPipeServer,
|
|
110
|
+
DebugAdapterInlineImplementation,
|
|
108
111
|
Breakpoint,
|
|
109
112
|
SourceBreakpoint,
|
|
110
113
|
FunctionBreakpoint,
|
|
@@ -134,7 +137,8 @@ import {
|
|
|
134
137
|
ColorThemeKind,
|
|
135
138
|
SourceControlInputBoxValidationType,
|
|
136
139
|
URI,
|
|
137
|
-
FileDecoration
|
|
140
|
+
FileDecoration,
|
|
141
|
+
ExtensionMode
|
|
138
142
|
} from './types-impl';
|
|
139
143
|
import { AuthenticationExtImpl } from './authentication-ext';
|
|
140
144
|
import { SymbolKind } from '../common/plugin-api-rpc-model';
|
|
@@ -149,7 +153,6 @@ import { LanguagesExtImpl } from './languages';
|
|
|
149
153
|
import { fromDocumentSelector, pluginToPluginInfo, fromGlobPattern } from './type-converters';
|
|
150
154
|
import { DialogsExtImpl } from './dialogs';
|
|
151
155
|
import { NotificationExtImpl } from './notification';
|
|
152
|
-
import { CancellationToken } from '@theia/core/lib/common/cancellation';
|
|
153
156
|
import { score } from '@theia/callhierarchy/lib/common/language-selector';
|
|
154
157
|
import { MarkdownString } from './markdown-string';
|
|
155
158
|
import { TreeViewsExtImpl } from './tree/tree-views';
|
|
@@ -157,9 +160,8 @@ import { ConnectionExtImpl } from './connection-ext';
|
|
|
157
160
|
import { TasksExtImpl } from './tasks/tasks';
|
|
158
161
|
import { DebugExtImpl } from './node/debug/debug';
|
|
159
162
|
import { FileSystemExtImpl } from './file-system-ext-impl';
|
|
160
|
-
import { QuickPick, QuickPickItem, ResourceLabelFormatter } from '@theia/plugin';
|
|
163
|
+
import { QuickPick, QuickPickItem, ResourceLabelFormatter, LineChange } from '@theia/plugin';
|
|
161
164
|
import { ScmExtImpl } from './scm';
|
|
162
|
-
import { LineChange } from '@theia/plugin';
|
|
163
165
|
import { DecorationsExtImpl } from './decorations';
|
|
164
166
|
import { TextEditorExt } from './text-editor';
|
|
165
167
|
import { ClipboardExt } from './clipboard-ext';
|
|
@@ -767,8 +769,12 @@ export function createAPIFactory(
|
|
|
767
769
|
registerDebugAdapterDescriptorFactory(debugType: string, factory: theia.DebugAdapterDescriptorFactory): Disposable {
|
|
768
770
|
return debugExt.registerDebugAdapterDescriptorFactory(debugType, factory);
|
|
769
771
|
},
|
|
770
|
-
registerDebugConfigurationProvider(
|
|
771
|
-
|
|
772
|
+
registerDebugConfigurationProvider(
|
|
773
|
+
debugType: string,
|
|
774
|
+
provider: theia.DebugConfigurationProvider,
|
|
775
|
+
triggerKind?: theia.DebugConfigurationProviderTriggerKind
|
|
776
|
+
): Disposable {
|
|
777
|
+
return debugExt.registerDebugConfigurationProvider(debugType, provider, triggerKind || DebugConfigurationProviderTriggerKind.Initial);
|
|
772
778
|
},
|
|
773
779
|
registerDebugAdapterTrackerFactory(debugType: string, factory: theia.DebugAdapterTrackerFactory): Disposable {
|
|
774
780
|
return debugExt.registerDebugAdapterTrackerFactory(debugType, factory);
|
|
@@ -924,6 +930,9 @@ export function createAPIFactory(
|
|
|
924
930
|
Task2,
|
|
925
931
|
DebugAdapterExecutable,
|
|
926
932
|
DebugAdapterServer,
|
|
933
|
+
DebugAdapterNamedPipeServer,
|
|
934
|
+
DebugAdapterInlineImplementation,
|
|
935
|
+
DebugConfigurationProviderTriggerKind,
|
|
927
936
|
Breakpoint,
|
|
928
937
|
SourceBreakpoint,
|
|
929
938
|
FunctionBreakpoint,
|
|
@@ -952,7 +961,9 @@ export function createAPIFactory(
|
|
|
952
961
|
SemanticTokensEdit,
|
|
953
962
|
ColorThemeKind,
|
|
954
963
|
SourceControlInputBoxValidationType,
|
|
955
|
-
FileDecoration
|
|
964
|
+
FileDecoration,
|
|
965
|
+
CancellationError,
|
|
966
|
+
ExtensionMode
|
|
956
967
|
};
|
|
957
968
|
};
|
|
958
969
|
}
|
|
@@ -33,7 +33,7 @@ import * as theia from '@theia/plugin';
|
|
|
33
33
|
import { join } from './path';
|
|
34
34
|
import { EnvExtImpl } from './env';
|
|
35
35
|
import { PreferenceRegistryExtImpl } from './preference-registry';
|
|
36
|
-
import { Memento, KeyValueStorageProxy } from './plugin-storage';
|
|
36
|
+
import { Memento, KeyValueStorageProxy, GlobalState } from './plugin-storage';
|
|
37
37
|
import { ExtPluginApi } from '../common/plugin-ext-api-contribution';
|
|
38
38
|
import { RPCProtocol } from '../common/rpc-protocol';
|
|
39
39
|
import { Emitter } from '@theia/core/lib/common/event';
|
|
@@ -79,7 +79,11 @@ export class PluginManagerExtImpl implements PluginManagerExt, PluginManager {
|
|
|
79
79
|
'*',
|
|
80
80
|
'onLanguage',
|
|
81
81
|
'onCommand',
|
|
82
|
-
'onDebug',
|
|
82
|
+
'onDebug',
|
|
83
|
+
'onDebugInitialConfigurations',
|
|
84
|
+
'onDebugResolve',
|
|
85
|
+
'onDebugAdapterProtocolTracker',
|
|
86
|
+
'onDebugDynamicConfigurations',
|
|
83
87
|
'workspaceContains',
|
|
84
88
|
'onView',
|
|
85
89
|
'onUri',
|
|
@@ -321,6 +325,23 @@ export class PluginManagerExtImpl implements PluginManagerExt, PluginManager {
|
|
|
321
325
|
}
|
|
322
326
|
|
|
323
327
|
async $activateByEvent(activationEvent: string): Promise<void> {
|
|
328
|
+
if (activationEvent.endsWith(':*')) {
|
|
329
|
+
const baseEvent = activationEvent.substring(0, activationEvent.length - 2);
|
|
330
|
+
await this.activateByBaseEvent(baseEvent);
|
|
331
|
+
} else {
|
|
332
|
+
await this.activateBySingleEvent(activationEvent);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
protected async activateByBaseEvent(baseEvent: string): Promise<void> {
|
|
337
|
+
await Promise.all(Array.from(this.activations.keys(), activation => {
|
|
338
|
+
if (activation.startsWith(baseEvent)) {
|
|
339
|
+
return this.activateBySingleEvent(activation);
|
|
340
|
+
}
|
|
341
|
+
}));
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
protected async activateBySingleEvent(activationEvent: string): Promise<void> {
|
|
324
345
|
const activations = this.activations.get(activationEvent);
|
|
325
346
|
if (!activations) {
|
|
326
347
|
return;
|
|
@@ -351,7 +372,7 @@ export class PluginManagerExtImpl implements PluginManagerExt, PluginManager {
|
|
|
351
372
|
const pluginContext: theia.PluginContext = {
|
|
352
373
|
extensionPath: plugin.pluginFolder,
|
|
353
374
|
extensionUri: Uri.file(plugin.pluginFolder),
|
|
354
|
-
globalState: new
|
|
375
|
+
globalState: new GlobalState(plugin.model.id, true, this.storageProxy),
|
|
355
376
|
workspaceState: new Memento(plugin.model.id, false, this.storageProxy),
|
|
356
377
|
subscriptions: subscriptions,
|
|
357
378
|
asAbsolutePath: asAbsolutePath,
|
|
@@ -361,7 +382,8 @@ export class PluginManagerExtImpl implements PluginManagerExt, PluginManager {
|
|
|
361
382
|
secrets,
|
|
362
383
|
globalStoragePath: globalStoragePath,
|
|
363
384
|
globalStorageUri: Uri.file(globalStoragePath),
|
|
364
|
-
environmentVariableCollection: this.terminalService.getEnvironmentVariableCollection(plugin.model.id)
|
|
385
|
+
environmentVariableCollection: this.terminalService.getEnvironmentVariableCollection(plugin.model.id),
|
|
386
|
+
extensionMode: 1 // @todo: implement proper `extensionMode`.
|
|
365
387
|
};
|
|
366
388
|
this.pluginContextsMap.set(plugin.model.id, pluginContext);
|
|
367
389
|
|
|
@@ -16,10 +16,9 @@
|
|
|
16
16
|
|
|
17
17
|
import * as theia from '@theia/plugin';
|
|
18
18
|
import { Event, Emitter } from '@theia/core/lib/common/event';
|
|
19
|
-
import { StorageMain, StorageExt } from '../common/plugin-api-rpc';
|
|
19
|
+
import { PLUGIN_RPC_CONTEXT, StorageMain, StorageExt } from '../common/plugin-api-rpc';
|
|
20
20
|
import { KeysToAnyValues, KeysToKeysToAnyValue } from '../common/types';
|
|
21
21
|
import { RPCProtocol } from '../common/rpc-protocol';
|
|
22
|
-
import { PLUGIN_RPC_CONTEXT } from '../common/plugin-api-rpc';
|
|
23
22
|
|
|
24
23
|
export class Memento implements theia.Memento {
|
|
25
24
|
|
|
@@ -60,6 +59,12 @@ export class Memento implements theia.Memento {
|
|
|
60
59
|
}
|
|
61
60
|
}
|
|
62
61
|
|
|
62
|
+
export class GlobalState extends Memento {
|
|
63
|
+
|
|
64
|
+
/** @todo: API is not yet implemented. */
|
|
65
|
+
setKeysForSync(keys: readonly string[]): void { }
|
|
66
|
+
}
|
|
67
|
+
|
|
63
68
|
/**
|
|
64
69
|
* Singleton.
|
|
65
70
|
* Is used to proxy storage requests to main side.
|
|
@@ -17,8 +17,7 @@
|
|
|
17
17
|
import { PreferenceRegistryExtImpl } from './preference-registry';
|
|
18
18
|
import * as chai from 'chai';
|
|
19
19
|
import { WorkspaceExtImpl } from '../plugin/workspace';
|
|
20
|
-
import { RPCProtocol } from '../common/rpc-protocol';
|
|
21
|
-
import { ProxyIdentifier } from '../common/rpc-protocol';
|
|
20
|
+
import { ProxyIdentifier, RPCProtocol } from '../common/rpc-protocol';
|
|
22
21
|
|
|
23
22
|
const expect = chai.expect;
|
|
24
23
|
|
package/src/plugin/quick-open.ts
CHANGED
|
@@ -30,6 +30,7 @@ import * as path from 'path';
|
|
|
30
30
|
import { convertToTransferQuickPickItems } from './type-converters';
|
|
31
31
|
import { PluginPackage } from '../common/plugin-protocol';
|
|
32
32
|
import { QuickInputButtonHandle } from '@theia/core/lib/browser';
|
|
33
|
+
import { MaybePromise } from '@theia/core/lib/common/types';
|
|
33
34
|
|
|
34
35
|
const canceledName = 'Canceled';
|
|
35
36
|
/**
|
|
@@ -64,7 +65,7 @@ export function getDarkIconUri(iconPath: URI | { light: URI; dark: URI; }): URI
|
|
|
64
65
|
export class QuickOpenExtImpl implements QuickOpenExt {
|
|
65
66
|
private proxy: QuickOpenMain;
|
|
66
67
|
private onDidSelectItem: undefined | ((handle: number) => void);
|
|
67
|
-
private validateInputHandler
|
|
68
|
+
private validateInputHandler?: (input: string) => MaybePromise<string | null | undefined>;
|
|
68
69
|
private _sessions = new Map<number, QuickInputExt>(); // Each quickinput will have a number so that we know where to fire events
|
|
69
70
|
private _instances = 0;
|
|
70
71
|
|
|
@@ -143,17 +144,13 @@ export class QuickOpenExtImpl implements QuickOpenExt {
|
|
|
143
144
|
// ---- input
|
|
144
145
|
|
|
145
146
|
showInput(options?: InputBoxOptions, token: theia.CancellationToken = CancellationToken.None): PromiseLike<string | undefined> {
|
|
146
|
-
|
|
147
|
-
this.validateInputHandler = options.validateInput;
|
|
148
|
-
}
|
|
149
|
-
|
|
147
|
+
this.validateInputHandler = options?.validateInput;
|
|
150
148
|
if (!options) { options = { placeHolder: '' }; }
|
|
151
149
|
return this.proxy.$input(options, typeof this.validateInputHandler === 'function', token);
|
|
152
150
|
}
|
|
153
151
|
|
|
154
152
|
async showInputBox(options: TransferInputBox): Promise<string | undefined> {
|
|
155
|
-
this.validateInputHandler = options
|
|
156
|
-
|
|
153
|
+
this.validateInputHandler = typeof options.validateInput === 'function' ? options.validateInput : undefined;
|
|
157
154
|
return this.proxy.$showInputBox(options, typeof this.validateInputHandler === 'function');
|
|
158
155
|
}
|
|
159
156
|
|
|
@@ -259,7 +256,7 @@ export class QuickInputExt implements QuickInput {
|
|
|
259
256
|
private onDidHideEmitter: Emitter<void>;
|
|
260
257
|
private onDidTriggerButtonEmitter: Emitter<theia.QuickInputButton>;
|
|
261
258
|
private _updateTimeout: any;
|
|
262
|
-
private _pendingUpdate: TransferQuickInput
|
|
259
|
+
private _pendingUpdate: TransferQuickInput = { id: this._id };
|
|
263
260
|
|
|
264
261
|
constructor(readonly quickOpen: QuickOpenExtImpl, readonly quickOpenMain: QuickOpenMain, readonly plugin: Plugin, private _onDidDispose: () => void) {
|
|
265
262
|
this.title = undefined;
|
|
@@ -613,9 +610,16 @@ export class QuickPickExt<T extends theia.QuickPickItem> extends QuickInputExt i
|
|
|
613
610
|
this._handlesToItems.set(i, item);
|
|
614
611
|
this._itemsToHandles.set(item, i);
|
|
615
612
|
});
|
|
616
|
-
items.forEach((item, i) => Object.assign(item, { handle: i }));
|
|
617
613
|
this.update({
|
|
618
|
-
items
|
|
614
|
+
items: items.map((item, i) => ({
|
|
615
|
+
type: item.type,
|
|
616
|
+
label: item.label,
|
|
617
|
+
description: item.description,
|
|
618
|
+
handle: i,
|
|
619
|
+
detail: item.detail,
|
|
620
|
+
picked: item.picked,
|
|
621
|
+
alwaysShow: item.alwaysShow
|
|
622
|
+
}))
|
|
619
623
|
});
|
|
620
624
|
}
|
|
621
625
|
|
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
import * as theia from '@theia/plugin';
|
|
25
25
|
import * as converter from '../type-converters';
|
|
26
26
|
import { CustomExecution, Disposable } from '../types-impl';
|
|
27
|
-
import { RPCProtocol
|
|
27
|
+
import { RPCProtocol } from '../../common/rpc-protocol';
|
|
28
28
|
import { TaskProviderAdapter } from './task-provider';
|
|
29
29
|
import { Emitter, Event } from '@theia/core/lib/common/event';
|
|
30
30
|
import { TerminalServiceExtImpl } from '../terminal-ext';
|
|
@@ -49,15 +49,8 @@ export class TasksExtImpl implements TasksExt {
|
|
|
49
49
|
private readonly onDidExecuteTaskProcess: Emitter<theia.TaskProcessStartEvent> = new Emitter<theia.TaskProcessStartEvent>();
|
|
50
50
|
private readonly onDidTerminateTaskProcess: Emitter<theia.TaskProcessEndEvent> = new Emitter<theia.TaskProcessEndEvent>();
|
|
51
51
|
|
|
52
|
-
private disposed = false;
|
|
53
|
-
|
|
54
52
|
constructor(rpc: RPCProtocol, readonly terminalExt: TerminalServiceExtImpl) {
|
|
55
53
|
this.proxy = rpc.getProxy(PLUGIN_RPC_CONTEXT.TASKS_MAIN);
|
|
56
|
-
this.fetchTaskExecutions();
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
dispose(): void {
|
|
60
|
-
this.disposed = true;
|
|
61
54
|
}
|
|
62
55
|
|
|
63
56
|
get taskExecutions(): ReadonlyArray<theia.TaskExecution> {
|
|
@@ -216,16 +209,9 @@ export class TasksExtImpl implements TasksExt {
|
|
|
216
209
|
});
|
|
217
210
|
}
|
|
218
211
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
taskExecutions.forEach(execution => this.getTaskExecution(execution));
|
|
223
|
-
} catch (error) {
|
|
224
|
-
if (this.disposed && ConnectionClosedError.is(error)) {
|
|
225
|
-
return;
|
|
226
|
-
}
|
|
227
|
-
console.error(`Can not fetch running tasks: ${error}`);
|
|
228
|
-
}
|
|
212
|
+
// Initial `this.executions` map with the running tasks from the previous session
|
|
213
|
+
async $initLoadedTasks(taskExecutions: TaskExecutionDto[]): Promise<void> {
|
|
214
|
+
taskExecutions.forEach(execution => this.getTaskExecution(execution));
|
|
229
215
|
}
|
|
230
216
|
|
|
231
217
|
private getTaskExecution(execution: TaskExecutionDto): theia.TaskExecution {
|
package/src/plugin/timeline.ts
CHANGED
|
@@ -13,10 +13,9 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
-
import { Plugin, TimelineCommandArg, TimelineExt, TimelineMain } from '../common';
|
|
16
|
+
import { Plugin, PLUGIN_RPC_CONTEXT, TimelineCommandArg, TimelineExt, TimelineMain } from '../common';
|
|
17
17
|
import { RPCProtocol } from '../common/rpc-protocol';
|
|
18
18
|
import { Disposable, URI } from './types-impl';
|
|
19
|
-
import { PLUGIN_RPC_CONTEXT } from '../common';
|
|
20
19
|
import { DisposableCollection } from '@theia/core/lib/common/disposable';
|
|
21
20
|
import { CommandRegistryImpl } from './command-registry';
|
|
22
21
|
import type {
|