Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/microsoft/vscode.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/vs/workbench/api/common/extHost.api.impl.ts')
-rw-r--r--src/vs/workbench/api/common/extHost.api.impl.ts89
1 files changed, 59 insertions, 30 deletions
diff --git a/src/vs/workbench/api/common/extHost.api.impl.ts b/src/vs/workbench/api/common/extHost.api.impl.ts
index e59da75b06d..864b227de8e 100644
--- a/src/vs/workbench/api/common/extHost.api.impl.ts
+++ b/src/vs/workbench/api/common/extHost.api.impl.ts
@@ -70,7 +70,6 @@ import { IExtHostTunnelService } from 'vs/workbench/api/common/extHostTunnelServ
import { IExtHostApiDeprecationService } from 'vs/workbench/api/common/extHostApiDeprecationService';
import { ExtHostAuthentication } from 'vs/workbench/api/common/extHostAuthentication';
import { ExtHostTimeline } from 'vs/workbench/api/common/extHostTimeline';
-import { ExtHostNotebookConcatDocument } from 'vs/workbench/api/common/extHostNotebookConcatDocument';
import { IExtensionStoragePaths } from 'vs/workbench/api/common/extHostStoragePaths';
import { IExtHostConsumerFileSystem } from 'vs/workbench/api/common/extHostFileSystemConsumer';
import { ExtHostWebviewViews } from 'vs/workbench/api/common/extHostWebviewView';
@@ -92,11 +91,17 @@ import { ExtHostNotebookEditors } from 'vs/workbench/api/common/extHostNotebookE
import { ExtHostNotebookDocuments } from 'vs/workbench/api/common/extHostNotebookDocuments';
import { ExtHostInteractive } from 'vs/workbench/api/common/extHostInteractive';
import { combinedDisposable } from 'vs/base/common/lifecycle';
-import { checkProposedApiEnabled, isProposedApiEnabled } from 'vs/workbench/services/extensions/common/extensions';
+import { checkProposedApiEnabled, ExtensionIdentifierSet, isProposedApiEnabled } from 'vs/workbench/services/extensions/common/extensions';
import { DebugConfigurationProviderTriggerKind } from 'vs/workbench/contrib/debug/common/debug';
+import { ExtHostNotebookProxyKernels } from 'vs/workbench/api/common/extHostNotebookProxyKernels';
+
+export interface IExtensionRegistries {
+ mine: ExtensionDescriptionRegistry;
+ all: ExtensionDescriptionRegistry;
+}
export interface IExtensionApiFactory {
- (extension: IExtensionDescription, registry: ExtensionDescriptionRegistry, configProvider: ExtHostConfigProvider): typeof vscode;
+ (extension: IExtensionDescription, extensionInfo: IExtensionRegistries, configProvider: ExtHostConfigProvider): typeof vscode;
}
/**
@@ -156,6 +161,7 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
const extHostNotebookDocuments = rpcProtocol.set(ExtHostContext.ExtHostNotebookDocuments, new ExtHostNotebookDocuments(extHostNotebook));
const extHostNotebookEditors = rpcProtocol.set(ExtHostContext.ExtHostNotebookEditors, new ExtHostNotebookEditors(extHostLogService, rpcProtocol, extHostNotebook));
const extHostNotebookKernels = rpcProtocol.set(ExtHostContext.ExtHostNotebookKernels, new ExtHostNotebookKernels(rpcProtocol, initData, extHostNotebook, extHostCommands, extHostLogService));
+ const extHostNotebookProxyKernels = rpcProtocol.set(ExtHostContext.ExtHostNotebookProxyKernels, new ExtHostNotebookProxyKernels(rpcProtocol, extHostNotebookKernels, extHostLogService));
const extHostNotebookRenderers = rpcProtocol.set(ExtHostContext.ExtHostNotebookRenderers, new ExtHostNotebookRenderers(rpcProtocol, extHostNotebook));
const extHostEditors = rpcProtocol.set(ExtHostContext.ExtHostEditors, new ExtHostEditors(rpcProtocol, extHostDocumentsAndEditors));
const extHostTreeViews = rpcProtocol.set(ExtHostContext.ExtHostTreeViews, new ExtHostTreeViews(rpcProtocol.getProxy(MainContext.MainThreadTreeViews), extHostCommands, extHostLogService));
@@ -195,7 +201,7 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
// Register API-ish commands
ExtHostApiCommands.register(extHostCommands);
- return function (extension: IExtensionDescription, extensionRegistry: ExtensionDescriptionRegistry, configProvider: ExtHostConfigProvider): typeof vscode {
+ return function (extension: IExtensionDescription, extensionInfo: IExtensionRegistries, configProvider: ExtHostConfigProvider): typeof vscode {
// Check document selectors for being overly generic. Technically this isn't a problem but
// in practice many extensions say they support `fooLang` but need fs-access to do so. Those
@@ -359,10 +365,7 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
Object.freeze(env);
}
- const extensionKind = initData.remote.isRemote
- ? extHostTypes.ExtensionKind.Workspace
- : extHostTypes.ExtensionKind.UI;
-
+ // namespace: tests
const tests: typeof vscode.tests = {
createTestController(provider, label, refreshHandler?: (token: vscode.CancellationToken) => Thenable<void> | void) {
return extHostTesting.createTestController(provider, label, refreshHandler);
@@ -386,19 +389,49 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
};
// namespace: extensions
+ const extensionKind = initData.remote.isRemote
+ ? extHostTypes.ExtensionKind.Workspace
+ : extHostTypes.ExtensionKind.UI;
+
const extensions: typeof vscode.extensions = {
- getExtension(extensionId: string): vscode.Extension<any> | undefined {
- const desc = extensionRegistry.getExtensionDescription(extensionId);
- if (desc) {
- return new Extension(extensionService, extension.identifier, desc, extensionKind);
+ getExtension(extensionId: string, includeFromDifferentExtensionHosts?: boolean): vscode.Extension<any> | undefined {
+ if (!isProposedApiEnabled(extension, 'extensionsAny')) {
+ includeFromDifferentExtensionHosts = false;
+ }
+ const mine = extensionInfo.mine.getExtensionDescription(extensionId);
+ if (mine) {
+ return new Extension(extensionService, extension.identifier, mine, extensionKind, false);
+ }
+ if (includeFromDifferentExtensionHosts) {
+ const foreign = extensionInfo.all.getExtensionDescription(extensionId);
+ if (foreign) {
+ return new Extension(extensionService, extension.identifier, foreign, extensionKind /* TODO@alexdima THIS IS WRONG */, true);
+ }
}
return undefined;
},
get all(): vscode.Extension<any>[] {
- return extensionRegistry.getAllExtensionDescriptions().map((desc) => new Extension(extensionService, extension.identifier, desc, extensionKind));
+ const result: vscode.Extension<any>[] = [];
+ for (const desc of extensionInfo.mine.getAllExtensionDescriptions()) {
+ result.push(new Extension(extensionService, extension.identifier, desc, extensionKind, false));
+ }
+ return result;
+ },
+ get allAcrossExtensionHosts(): vscode.Extension<any>[] {
+ checkProposedApiEnabled(extension, 'extensionsAny');
+ const local = new ExtensionIdentifierSet(extensionInfo.mine.getAllExtensionDescriptions().map(desc => desc.identifier));
+ const result: vscode.Extension<any>[] = [];
+ for (const desc of extensionInfo.all.getAllExtensionDescriptions()) {
+ const isFromDifferentExtensionHost = !local.has(desc.identifier);
+ result.push(new Extension(extensionService, extension.identifier, desc, extensionKind /* TODO@alexdima THIS IS WRONG */, isFromDifferentExtensionHost));
+ }
+ return result;
},
get onDidChange() {
- return extensionRegistry.onDidChange;
+ if (isProposedApiEnabled(extension, 'extensionsAny')) {
+ return Event.any(extensionInfo.mine.onDidChange, extensionInfo.all.onDidChange);
+ }
+ return extensionInfo.mine.onDidChange;
}
};
@@ -625,7 +658,6 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
showInputBox(options?: vscode.InputBoxOptions, token?: vscode.CancellationToken) {
if (options?.validateInput2) {
checkProposedApiEnabled(extension, 'inputBoxSeverity');
- options.validateInput = options.validateInput2 as any;
}
return extHostQuickOpen.showInput(options, token);
},
@@ -673,7 +705,7 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
checkProposedApiEnabled(extension, 'editorInsets');
return extHostEditorInsets.createWebviewEditorInset(editor, line, height, options, extension);
},
- createTerminal(nameOrOptions?: vscode.TerminalOptions | vscode.ExtensionTerminalOptions | string, shellPath?: string, shellArgs?: string[] | string): vscode.Terminal {
+ createTerminal(nameOrOptions?: vscode.TerminalOptions | vscode.ExtensionTerminalOptions | string, shellPath?: string, shellArgs?: readonly string[] | string): vscode.Terminal {
if (typeof nameOrOptions === 'object') {
if ('pty' in nameOrOptions) {
return extHostTerminalService.createExtensionTerminal(nameOrOptions);
@@ -758,7 +790,6 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
return extHostUriOpeners.registerExternalUriOpener(extension.identifier, id, opener, metadata);
},
get tabGroups(): vscode.TabGroups {
- checkProposedApiEnabled(extension, 'tabs');
return extHostEditorTabs.tabGroups;
},
getInlineCompletionItemController<T extends vscode.InlineCompletionItem>(provider: vscode.InlineCompletionItemProvider<T>): vscode.InlineCompletionController<T> {
@@ -892,11 +923,9 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
return extHostNotebook.getNotebookDocument(uri).apiNotebook;
},
onDidSaveNotebookDocument(listener, thisArg, disposables) {
- checkProposedApiEnabled(extension, 'notebookDocumentEvents');
return extHostNotebookDocuments.onDidSaveNotebookDocument(listener, thisArg, disposables);
},
onDidChangeNotebookDocument(listener, thisArg, disposables) {
- checkProposedApiEnabled(extension, 'notebookDocumentEvents');
return extHostNotebookDocuments.onDidChangeNotebookDocument(listener, thisArg, disposables);
},
get onDidOpenNotebookDocument(): Event<vscode.NotebookDocument> {
@@ -1129,10 +1158,10 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
checkProposedApiEnabled(extension, 'notebookCellExecutionState');
return extHostNotebookKernels.onDidChangeNotebookCellExecutionState(listener, thisArgs, disposables);
},
- createConcatTextDocument(notebook, selector) {
- checkProposedApiEnabled(extension, 'notebookConcatTextDocument');
- return new ExtHostNotebookConcatDocument(extHostNotebookDocuments, extHostDocuments, notebook, selector);
- },
+ createNotebookProxyController(id: string, notebookType: string, label: string, handler: () => vscode.NotebookController | string | Thenable<vscode.NotebookController | string>) {
+ checkProposedApiEnabled(extension, 'notebookProxyController');
+ return extHostNotebookProxyKernels.createNotebookProxyController(extension, id, notebookType, label, handler);
+ }
};
return <typeof vscode>{
@@ -1314,13 +1343,13 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
LanguageStatusSeverity: extHostTypes.LanguageStatusSeverity,
QuickPickItemKind: extHostTypes.QuickPickItemKind,
InputBoxValidationSeverity: extHostTypes.InputBoxValidationSeverity,
- TabKindText: extHostTypes.TextTabInput,
- TabKindTextDiff: extHostTypes.TextDiffTabInput,
- TabKindCustom: extHostTypes.CustomEditorTabInput,
- TabKindNotebook: extHostTypes.NotebookEditorTabInput,
- TabKindNotebookDiff: extHostTypes.NotebookDiffEditorTabInput,
- TabKindWebview: extHostTypes.WebviewEditorTabInput,
- TabKindTerminal: extHostTypes.TerminalEditorTabInput
+ TabInputText: extHostTypes.TextTabInput,
+ TabInputTextDiff: extHostTypes.TextDiffTabInput,
+ TabInputCustom: extHostTypes.CustomEditorTabInput,
+ TabInputNotebook: extHostTypes.NotebookEditorTabInput,
+ TabInputNotebookDiff: extHostTypes.NotebookDiffEditorTabInput,
+ TabInputWebview: extHostTypes.WebviewEditorTabInput,
+ TabInputTerminal: extHostTypes.TerminalEditorTabInput
};
};
}