extHost.protocol.ts 38.3 KB
Newer Older
1 2 3 4 5 6
/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/
'use strict';

7
import { createMainContextProxyIdentifier as createMainId, createExtHostContextProxyIdentifier as createExtId, ProxyIdentifier, IRPCProtocol } from 'vs/workbench/services/extensions/node/proxyIdentifier';
8

9 10
import * as vscode from 'vscode';

11
import URI, { UriComponents } from 'vs/base/common/uri';
12
import Severity from 'vs/base/common/severity';
13
import { TPromise } from 'vs/base/common/winjs.base';
14

15 16
import { IMarkerData } from 'vs/platform/markers/common/markers';
import { Position as EditorPosition } from 'vs/platform/editor/common/editor';
17
import { IExtensionDescription } from 'vs/workbench/services/extensions/common/extensions';
18 19
import { StatusbarAlignment as MainThreadStatusBarAlignment } from 'vs/platform/statusbar/common/statusbar';
import { ITelemetryInfo } from 'vs/platform/telemetry/common/telemetry';
20
import { ICommandHandlerDescription } from 'vs/platform/commands/common/commands';
J
Johannes Rieken 已提交
21
import { IProgressOptions, IProgressStep } from 'vs/platform/progress/common/progress';
22 23 24 25

import * as editorCommon from 'vs/editor/common/editorCommon';
import * as modes from 'vs/editor/common/modes';

S
Sandeep Somavarapu 已提交
26
import { IConfigurationData, ConfigurationTarget, IConfigurationModel } from 'vs/platform/configuration/common/configuration';
27
import { IConfig, IAdapterExecutable, ITerminalSettings } from 'vs/workbench/parts/debug/common/debug';
28

J
Johannes Rieken 已提交
29
import { IPickOpenEntry, IPickOptions } from 'vs/platform/quickOpen/common/quickOpen';
30
import { SaveReason } from 'vs/workbench/services/textfile/common/textfiles';
31
import { TextEditorCursorStyle } from 'vs/editor/common/config/editorOptions';
32
import { EndOfLine, TextEditorLineNumbersStyle } from 'vs/workbench/api/node/extHostTypes';
33

34

35
import { TaskSet } from 'vs/workbench/parts/tasks/common/tasks';
36
import { IModelChangedEvent } from 'vs/editor/common/model/mirrorTextModel';
37 38
import { IPosition } from 'vs/editor/common/core/position';
import { IRange } from 'vs/editor/common/core/range';
39
import { ISelection, Selection } from 'vs/editor/common/core/selection';
40

41
import { ITreeItem } from 'vs/workbench/common/views';
B
Benjamin Pasero 已提交
42
import { ThemeColor } from 'vs/platform/theme/common/themeService';
B
Benjamin Pasero 已提交
43 44
import { IDisposable } from 'vs/base/common/lifecycle';
import { SerializedError } from 'vs/base/common/errors';
45
import { IStat, FileChangeType, FileOpenFlags, IWatchOptions, FileSystemProviderCapabilities } from 'vs/platform/files/common/files';
S
Sandeep Somavarapu 已提交
46
import { ConfigurationScope } from 'vs/platform/configuration/common/configurationRegistry';
47
import { CommentRule, CharacterPair, EnterAction } from 'vs/editor/common/modes/languageConfiguration';
J
Johannes Rieken 已提交
48
import { ISingleEditOperation } from 'vs/editor/common/model';
49
import { ILineMatch, IPatternInfo } from 'vs/platform/search/common/search';
S
Sandeep Somavarapu 已提交
50
import { LogLevel } from 'vs/platform/log/common/log';
51
import { TaskExecutionDTO, TaskDTO, TaskHandleDTO } from 'vs/workbench/api/shared/tasks';
S
Sandeep Somavarapu 已提交
52

53
export interface IEnvironment {
54
	isExtensionDevelopmentDebug: boolean;
J
Johannes Rieken 已提交
55
	appRoot: string;
56 57 58 59 60 61
	appSettingsHome: string;
	disableExtensions: boolean;
	extensionDevelopmentPath: string;
	extensionTestsPath: string;
}

62 63
export interface IWorkspaceData {
	id: string;
64
	name: string;
65
	folders: { uri: UriComponents, name: string, index: number }[];
J
Johannes Rieken 已提交
66
	configuration?: UriComponents;
67 68
}

69 70 71
export interface IInitData {
	parentPid: number;
	environment: IEnvironment;
72
	workspace: IWorkspaceData;
73
	extensions: IExtensionDescription[];
S
Sandeep Somavarapu 已提交
74
	configuration: IConfigurationInitData;
75
	telemetryInfo: ITelemetryInfo;
76
	windowId: number;
S
Sandeep Somavarapu 已提交
77
	logLevel: LogLevel;
A
Alex Dima 已提交
78
	logsPath: string;
79 80
}

S
Sandeep Somavarapu 已提交
81
export interface IConfigurationInitData extends IConfigurationData {
S
Sandeep Somavarapu 已提交
82
	configurationScopes: { [key: string]: ConfigurationScope };
S
Sandeep Somavarapu 已提交
83 84
}

85
export interface IWorkspaceConfigurationChangeEventData {
S
Sandeep Somavarapu 已提交
86 87
	changedConfiguration: IConfigurationModel;
	changedConfigurationByResource: { [folder: string]: IConfigurationModel };
88 89
}

A
Alex Dima 已提交
90
export interface IExtHostContext extends IRPCProtocol {
91 92
}

A
Alex Dima 已提交
93
export interface IMainContext extends IRPCProtocol {
94 95
}

96 97
// --- main thread

98
export interface MainThreadCommandsShape extends IDisposable {
99 100
	$registerCommand(id: string): void;
	$unregisterCommand(id: string): void;
101 102
	$executeCommand<T>(id: string, args: any[]): Thenable<T>;
	$getCommands(): Thenable<string[]>;
103 104
}

105
export interface MainThreadConfigurationShape extends IDisposable {
106 107
	$updateConfigurationOption(target: ConfigurationTarget, key: string, value: any, resource: UriComponents): TPromise<void>;
	$removeConfigurationOption(target: ConfigurationTarget, key: string, resource: UriComponents): TPromise<void>;
108 109
}

110
export interface MainThreadDiagnosticsShape extends IDisposable {
111 112
	$changeMany(owner: string, entries: [UriComponents, IMarkerData[]][]): void;
	$clear(owner: string): void;
113 114
}

115
export interface MainThreadDialogOpenOptions {
116
	defaultUri?: UriComponents;
117
	openLabel?: string;
118 119 120
	canSelectFiles?: boolean;
	canSelectFolders?: boolean;
	canSelectMany?: boolean;
J
Johannes Rieken 已提交
121
	filters?: { [name: string]: string[] };
122 123
}

124
export interface MainThreadDialogSaveOptions {
125
	defaultUri?: UriComponents;
126
	saveLabel?: string;
J
Johannes Rieken 已提交
127
	filters?: { [name: string]: string[] };
128 129
}

130
export interface MainThreadDiaglogsShape extends IDisposable {
131 132
	$showOpenDialog(options: MainThreadDialogOpenOptions): Thenable<string[]>;
	$showSaveDialog(options: MainThreadDialogSaveOptions): Thenable<string>;
133 134
}

135 136 137
export interface MainThreadDecorationsShape extends IDisposable {
	$registerDecorationProvider(handle: number, label: string): void;
	$unregisterDecorationProvider(handle: number): void;
138
	$onDidChange(handle: number, resources: UriComponents[]): void;
139 140
}

141
export interface MainThreadDocumentContentProvidersShape extends IDisposable {
142 143
	$registerTextContentProvider(handle: number, scheme: string): void;
	$unregisterTextContentProvider(handle: number): void;
144
	$onVirtualDocumentChange(uri: UriComponents, value: string): void;
145 146
}

147
export interface MainThreadDocumentsShape extends IDisposable {
J
Johannes Rieken 已提交
148
	$tryCreateDocument(options?: { language?: string; content?: string; }): TPromise<UriComponents>;
149
	$tryOpenDocument(uri: UriComponents): TPromise<void>;
150
	$trySaveDocument(uri: UriComponents): TPromise<boolean>;
151 152
}

153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
export interface ITextEditorConfigurationUpdate {
	tabSize?: number | 'auto';
	insertSpaces?: boolean | 'auto';
	cursorStyle?: TextEditorCursorStyle;
	lineNumbers?: TextEditorLineNumbersStyle;
}

export interface IResolvedTextEditorConfiguration {
	tabSize: number;
	insertSpaces: boolean;
	cursorStyle: TextEditorCursorStyle;
	lineNumbers: TextEditorLineNumbersStyle;
}

export enum TextEditorRevealType {
	Default = 0,
	InCenter = 1,
	InCenterIfOutsideViewport = 2,
	AtTop = 3
}

export interface IUndoStopOptions {
	undoStopBefore: boolean;
	undoStopAfter: boolean;
}

export interface IApplyEditsOptions extends IUndoStopOptions {
	setEndOfLine: EndOfLine;
}

183 184 185 186
export interface ITextDocumentShowOptions {
	position?: EditorPosition;
	preserveFocus?: boolean;
	pinned?: boolean;
187
	selection?: IRange;
188 189
}

190
export interface MainThreadTextEditorsShape extends IDisposable {
191
	$tryShowTextDocument(resource: UriComponents, options: ITextDocumentShowOptions): TPromise<string>;
192 193 194 195
	$registerTextEditorDecorationType(key: string, options: editorCommon.IDecorationRenderOptions): void;
	$removeTextEditorDecorationType(key: string): void;
	$tryShowEditor(id: string, position: EditorPosition): TPromise<void>;
	$tryHideEditor(id: string): TPromise<void>;
196 197 198 199 200
	$trySetOptions(id: string, options: ITextEditorConfigurationUpdate): TPromise<void>;
	$trySetDecorations(id: string, key: string, ranges: editorCommon.IDecorationOptions[]): TPromise<void>;
	$trySetDecorationsFast(id: string, key: string, ranges: number[]): TPromise<void>;
	$tryRevealRange(id: string, range: IRange, revealType: TextEditorRevealType): TPromise<void>;
	$trySetSelections(id: string, selections: ISelection[]): TPromise<void>;
201
	$tryApplyEdits(id: string, modelVersionId: number, edits: ISingleEditOperation[], opts: IApplyEditsOptions): TPromise<boolean>;
202
	$tryApplyWorkspaceEdit(workspaceEditDto: WorkspaceEditDto): TPromise<boolean>;
203
	$tryInsertSnippet(id: string, template: string, selections: IRange[], opts: IUndoStopOptions): TPromise<boolean>;
204
	$getDiffInformation(id: string): TPromise<editorCommon.ILineChange[]>;
205 206
}

207
export interface MainThreadTreeViewsShape extends IDisposable {
S
Sandeep Somavarapu 已提交
208
	$registerTreeViewDataProvider(treeViewId: string): void;
S
Sandeep Somavarapu 已提交
209
	$refresh(treeViewId: string, itemsToRefresh?: { [treeItemHandle: string]: ITreeItem }): void;
S
Sandeep Somavarapu 已提交
210
	$reveal(treeViewId: string, treeItem: ITreeItem, parentChain: ITreeItem[], options?: { select?: boolean }): TPromise<void>;
211 212
}

213
export interface MainThreadErrorsShape extends IDisposable {
214
	$onUnexpectedError(err: any | SerializedError): void;
215 216
}

217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
export interface ISerializedRegExp {
	pattern: string;
	flags?: string;
}
export interface ISerializedIndentationRule {
	decreaseIndentPattern: ISerializedRegExp;
	increaseIndentPattern: ISerializedRegExp;
	indentNextLinePattern?: ISerializedRegExp;
	unIndentedLinePattern?: ISerializedRegExp;
}
export interface ISerializedOnEnterRule {
	beforeText: ISerializedRegExp;
	afterText?: ISerializedRegExp;
	action: EnterAction;
}
export interface ISerializedLanguageConfiguration {
	comments?: CommentRule;
	brackets?: CharacterPair[];
	wordPattern?: ISerializedRegExp;
	indentationRules?: ISerializedIndentationRule;
	onEnterRules?: ISerializedOnEnterRule[];
	__electricCharacterSupport?: {
		brackets?: any;
		docComment?: {
			scope: string;
			open: string;
			lineStart: string;
			close?: string;
		};
	};
	__characterPairSupport?: {
		autoClosingPairs: {
			open: string;
			close: string;
			notIn?: string[];
		}[];
	};
}

A
Alex Dima 已提交
256 257 258 259 260 261 262
export interface ISerializedDocumentFilter {
	$serialized: true;
	language?: string;
	scheme?: string;
	pattern?: vscode.GlobPattern;
}

263
export interface MainThreadLanguageFeaturesShape extends IDisposable {
264
	$unregister(handle: number): void;
A
Alex Dima 已提交
265 266
	$registerOutlineSupport(handle: number, selector: ISerializedDocumentFilter[]): void;
	$registerCodeLensSupport(handle: number, selector: ISerializedDocumentFilter[], eventHandle: number): void;
267
	$emitCodeLensEvent(eventHandle: number, event?: any): void;
A
Alex Dima 已提交
268 269 270 271 272 273
	$registerDeclaractionSupport(handle: number, selector: ISerializedDocumentFilter[]): void;
	$registerImplementationSupport(handle: number, selector: ISerializedDocumentFilter[]): void;
	$registerTypeDefinitionSupport(handle: number, selector: ISerializedDocumentFilter[]): void;
	$registerHoverProvider(handle: number, selector: ISerializedDocumentFilter[]): void;
	$registerDocumentHighlightProvider(handle: number, selector: ISerializedDocumentFilter[]): void;
	$registerReferenceSupport(handle: number, selector: ISerializedDocumentFilter[]): void;
274
	$registerQuickFixSupport(handle: number, selector: ISerializedDocumentFilter[], supportedKinds?: string[]): void;
A
Alex Dima 已提交
275 276 277
	$registerDocumentFormattingSupport(handle: number, selector: ISerializedDocumentFilter[]): void;
	$registerRangeFormattingSupport(handle: number, selector: ISerializedDocumentFilter[]): void;
	$registerOnTypeFormattingSupport(handle: number, selector: ISerializedDocumentFilter[], autoFormatTriggerCharacters: string[]): void;
278
	$registerNavigateTypeSupport(handle: number): void;
A
Alex Dima 已提交
279 280 281 282 283
	$registerRenameSupport(handle: number, selector: ISerializedDocumentFilter[], supportsResolveInitialValues: boolean): void;
	$registerSuggestSupport(handle: number, selector: ISerializedDocumentFilter[], triggerCharacters: string[], supportsResolveDetails: boolean): void;
	$registerSignatureHelpProvider(handle: number, selector: ISerializedDocumentFilter[], triggerCharacter: string[]): void;
	$registerDocumentLinkProvider(handle: number, selector: ISerializedDocumentFilter[]): void;
	$registerDocumentColorProvider(handle: number, selector: ISerializedDocumentFilter[]): void;
284
	$registerFoldingRangeProvider(handle: number, selector: ISerializedDocumentFilter[]): void;
285
	$setLanguageConfiguration(handle: number, languageId: string, configuration: ISerializedLanguageConfiguration): void;
286 287
}

288
export interface MainThreadLanguagesShape extends IDisposable {
289
	$getLanguages(): TPromise<string[]>;
290 291
}

292
export interface MainThreadMessageOptions {
293
	extension?: IExtensionDescription;
294
	modal?: boolean;
295 296
}

297
export interface MainThreadMessageServiceShape extends IDisposable {
298
	$showMessage(severity: Severity, message: string, options: MainThreadMessageOptions, commands: { title: string; isCloseAffordance: boolean; handle: number; }[]): Thenable<number>;
299 300
}

301
export interface MainThreadOutputServiceShape extends IDisposable {
302 303 304 305 306
	$append(channelId: string, label: string, value: string): TPromise<void>;
	$clear(channelId: string, label: string): TPromise<void>;
	$dispose(channelId: string, label: string): TPromise<void>;
	$reveal(channelId: string, label: string, preserveFocus: boolean): TPromise<void>;
	$close(channelId: string): TPromise<void>;
307 308
}

309
export interface MainThreadProgressShape extends IDisposable {
310

311 312 313
	$startProgress(handle: number, options: IProgressOptions): void;
	$progressReport(handle: number, message: IProgressStep): void;
	$progressEnd(handle: number): void;
314 315
}

316
export interface MainThreadTerminalServiceShape extends IDisposable {
317
	$createTerminal(name?: string, shellPath?: string, shellArgs?: string[], cwd?: string, env?: { [key: string]: string }, waitOnExit?: boolean): TPromise<number>;
318 319 320 321
	$dispose(terminalId: number): void;
	$hide(terminalId: number): void;
	$sendText(terminalId: number, text: string, addNewLine: boolean): void;
	$show(terminalId: number, preserveFocus: boolean): void;
D
Daniel Imms 已提交
322 323
}

324 325 326
export interface MyQuickPickItems extends IPickOpenEntry {
	handle: number;
}
327
export interface MainThreadQuickOpenShape extends IDisposable {
C
Christof Marti 已提交
328
	$show(options: IPickOptions): TPromise<number | number[]>;
329 330 331
	$setItems(items: MyQuickPickItems[]): TPromise<any>;
	$setError(error: Error): TPromise<any>;
	$input(options: vscode.InputBoxOptions, validateInput: boolean): TPromise<string>;
332 333
}

334
export interface MainThreadStatusBarShape extends IDisposable {
335
	$setEntry(id: number, extensionId: string, text: string, tooltip: string, command: string, color: string | ThemeColor, alignment: MainThreadStatusBarAlignment, priority: number): void;
336
	$dispose(id: number): void;
337 338
}

339
export interface MainThreadStorageShape extends IDisposable {
340
	$getValue<T>(shared: boolean, key: string): TPromise<T>;
341
	$setValue(shared: boolean, key: string, value: any): TPromise<void>;
342 343
}

344
export interface MainThreadTelemetryShape extends IDisposable {
345
	$publicLog(eventName: string, data?: any): void;
346 347
}

348
export type WebviewPanelHandle = string;
M
Matt Bierner 已提交
349 350

export interface MainThreadWebviewsShape extends IDisposable {
351 352 353 354 355
	$createWebviewPanel(handle: WebviewPanelHandle, viewType: string, title: string, column: EditorPosition, options: vscode.WebviewPanelOptions & vscode.WebviewOptions, extensionFolderPath: string): void;
	$disposeWebview(handle: WebviewPanelHandle): void;
	$reveal(handle: WebviewPanelHandle, column: EditorPosition): void;
	$setTitle(handle: WebviewPanelHandle, value: string): void;
	$setHtml(handle: WebviewPanelHandle, value: string): void;
M
Matt Bierner 已提交
356
	$postMessage(handle: WebviewPanelHandle, value: any): Thenable<boolean>;
357 358 359

	$registerSerializer(viewType: string): void;
	$unregisterSerializer(viewType: string): void;
M
Matt Bierner 已提交
360
}
361

M
Matt Bierner 已提交
362
export interface ExtHostWebviewsShape {
363 364
	$onMessage(handle: WebviewPanelHandle, message: any): void;
	$onDidChangeWebviewPanelViewState(handle: WebviewPanelHandle, active: boolean, position: EditorPosition): void;
365
	$onDidDisposeWebviewPanel(handle: WebviewPanelHandle): Thenable<void>;
366 367
	$deserializeWebviewPanel(newWebviewHandle: WebviewPanelHandle, viewType: string, title: string, state: any, position: EditorPosition, options: vscode.WebviewOptions): Thenable<void>;
	$serializeWebviewPanel(webviewHandle: WebviewPanelHandle): Thenable<any>;
M
Matt Bierner 已提交
368 369
}

370
export interface MainThreadWorkspaceShape extends IDisposable {
J
Johannes Rieken 已提交
371
	$startSearch(includePattern: string, includeFolder: string, excludePatternOrDisregardExcludes: string | false, maxResults: number, requestId: number): Thenable<UriComponents[]>;
372 373
	$cancelSearch(requestId: number): Thenable<boolean>;
	$saveAll(includeUntitled?: boolean): Thenable<boolean>;
374
	$updateWorkspaceFolders(extensionName: string, index: number, deleteCount: number, workspaceFoldersToAdd: { uri: UriComponents, name?: string }[]): Thenable<void>;
375
}
376

J
Johannes Rieken 已提交
377 378 379 380 381
export interface IFileChangeDto {
	resource: UriComponents;
	type: FileChangeType;
}

382
export interface MainThreadFileSystemShape extends IDisposable {
383
	$registerFileSystemProvider(handle: number, scheme: string, capabilities: FileSystemProviderCapabilities): void;
384
	$unregisterProvider(handle: number): void;
J
Johannes Rieken 已提交
385
	$onFileSystemChange(handle: number, resource: IFileChangeDto[]): void;
386
}
J
Johannes Rieken 已提交
387

388 389 390
export interface MainThreadSearchShape extends IDisposable {
	$registerSearchProvider(handle: number, scheme: string): void;
	$unregisterProvider(handle: number): void;
391
	$handleFindMatch(handle: number, session, data: UriComponents | [UriComponents, ILineMatch]): void;
392 393
}

394
export interface MainThreadTaskShape extends IDisposable {
395
	$registerTaskProvider(handle: number): TPromise<void>;
396 397
	$executeTaskProvider(): TPromise<TaskDTO[]>;
	$executeTask(task: TaskHandleDTO | TaskDTO): TPromise<TaskExecutionDTO>;
D
Dirk Baeumer 已提交
398
	$terminateTask(id: string): TPromise<void>;
399
	$unregisterTaskProvider(handle: number): TPromise<void>;
400 401
}

402
export interface MainThreadExtensionServiceShape extends IDisposable {
403
	$localShowMessage(severity: Severity, msg: string): void;
A
Alex Dima 已提交
404
	$onExtensionActivated(extensionId: string, startup: boolean, codeLoadingTime: number, activateCallTime: number, activateResolvedTime: number, activationEvent: string): void;
405
	$onExtensionActivationFailed(extensionId: string): void;
406
	$onExtensionRuntimeError(extensionId: string, error: SerializedError): void;
A
Alex Dima 已提交
407
	$addMessage(extensionId: string, severity: Severity, message: string): void;
408 409
}

J
Joao Moreno 已提交
410
export interface SCMProviderFeatures {
J
Joao Moreno 已提交
411 412
	hasQuickDiffProvider?: boolean;
	count?: number;
413 414 415
	commitTemplate?: string;
	acceptInputCommand?: modes.Command;
	statusBarCommands?: modes.Command[];
J
Joao Moreno 已提交
416 417 418 419
}

export interface SCMGroupFeatures {
	hideWhenEmpty?: boolean;
J
Joao Moreno 已提交
420 421
}

J
Joao Moreno 已提交
422
export type SCMRawResource = [
423
	number /*handle*/,
424
	UriComponents /*resourceUri*/,
J
Joao Moreno 已提交
425
	string[] /*icons: light, dark*/,
426
	string /*tooltip*/,
427
	boolean /*strike through*/,
428 429
	boolean /*faded*/,

J
Joao Moreno 已提交
430 431 432
	string | undefined /*source*/,
	string | undefined /*letter*/,
	ThemeColor | null /*color*/
J
Joao Moreno 已提交
433
];
434

435 436 437
export type SCMRawResourceSplice = [
	number /* start */,
	number /* delete count */,
J
Joao 已提交
438 439 440
	SCMRawResource[]
];

441 442 443 444 445
export type SCMRawResourceSplices = [
	number, /*handle*/
	SCMRawResourceSplice[]
];

446
export interface MainThreadSCMShape extends IDisposable {
447
	$registerSourceControl(handle: number, id: string, label: string, rootUri: UriComponents | undefined): void;
448 449
	$updateSourceControl(handle: number, features: SCMProviderFeatures): void;
	$unregisterSourceControl(handle: number): void;
J
Joao Moreno 已提交
450

451 452 453 454
	$registerGroup(sourceControlHandle: number, handle: number, id: string, label: string): void;
	$updateGroup(sourceControlHandle: number, handle: number, features: SCMGroupFeatures): void;
	$updateGroupLabel(sourceControlHandle: number, handle: number, label: string): void;
	$unregisterGroup(sourceControlHandle: number, handle: number): void;
J
Joao Moreno 已提交
455

456
	$spliceResourceStates(sourceControlHandle: number, splices: SCMRawResourceSplices[]): void;
J
Joao 已提交
457

J
Joao Moreno 已提交
458
	$setInputBoxValue(sourceControlHandle: number, value: string): void;
459
	$setInputBoxPlaceholder(sourceControlHandle: number, placeholder: string): void;
460
	$setValidationProviderIsEnabled(sourceControlHandle: number, enabled: boolean): void;
J
Joao Moreno 已提交
461 462
}

463 464
export type DebugSessionUUID = string;

465
export interface MainThreadDebugServiceShape extends IDisposable {
A
Andre Weinand 已提交
466
	$registerDebugTypes(debugTypes: string[]);
467 468 469
	$acceptDAMessage(handle: number, message: DebugProtocol.ProtocolMessage);
	$acceptDAError(handle: number, name: string, message: string, stack: string);
	$acceptDAExit(handle: number, code: number, signal: string);
470
	$registerDebugConfigurationProvider(type: string, hasProvideMethod: boolean, hasResolveMethod: boolean, hasDebugAdapterExecutable: boolean, handle: number): TPromise<any>;
471
	$unregisterDebugConfigurationProvider(handle: number): TPromise<any>;
472
	$startDebugging(folder: UriComponents | undefined, nameOrConfig: string | vscode.DebugConfiguration): TPromise<boolean>;
473
	$customDebugAdapterRequest(id: DebugSessionUUID, command: string, args: any): TPromise<any>;
474
	$appendDebugConsole(value: string): TPromise<any>;
475
	$startBreakpointEvents(): TPromise<any>;
476
	$registerBreakpoints(breakpoints: (ISourceMultiBreakpointDto | IFunctionBreakpointDto)[]): TPromise<void>;
477
	$unregisterBreakpoints(breakpointIds: string[], functionBreakpointIds: string[]): TPromise<void>;
478 479
}

480 481
export interface MainThreadWindowShape extends IDisposable {
	$getWindowVisibility(): TPromise<boolean>;
482 483
}

484 485
// -- extension host

486
export interface ExtHostCommandsShape {
J
Johannes Rieken 已提交
487
	$executeContributedCommand<T>(id: string, ...args: any[]): Thenable<T>;
488
	$getContributedCommandHandlerDescriptions(): Thenable<{ [id: string]: string | ICommandHandlerDescription }>;
489 490
}

491
export interface ExtHostConfigurationShape {
492
	$acceptConfigurationChanged(data: IConfigurationData, eventData: IWorkspaceConfigurationChangeEventData): void;
493 494
}

495
export interface ExtHostDiagnosticsShape {
496 497 498

}

499
export interface ExtHostDocumentContentProvidersShape {
J
Johannes Rieken 已提交
500
	$provideTextDocumentContent(handle: number, uri: UriComponents): TPromise<string>;
501 502
}

503
export interface IModelAddedData {
504
	uri: UriComponents;
505
	versionId: number;
506 507
	lines: string[];
	EOL: string;
508 509 510
	modeId: string;
	isDirty: boolean;
}
511
export interface ExtHostDocumentsShape {
512 513 514 515
	$acceptModelModeChanged(strURL: UriComponents, oldModeId: string, newModeId: string): void;
	$acceptModelSaved(strURL: UriComponents): void;
	$acceptDirtyStateChanged(strURL: UriComponents, isDirty: boolean): void;
	$acceptModelChanged(strURL: UriComponents, e: IModelChangedEvent, isDirty: boolean): void;
516 517
}

518
export interface ExtHostDocumentSaveParticipantShape {
J
Johannes Rieken 已提交
519
	$participateInSave(resource: UriComponents, reason: SaveReason): Thenable<boolean[]>;
520 521
}

522 523
export interface ITextEditorAddData {
	id: string;
524
	documentUri: UriComponents;
525
	options: IResolvedTextEditorConfiguration;
A
Alex Dima 已提交
526
	selections: ISelection[];
527
	visibleRanges: IRange[];
528 529 530 531 532
	editorPosition: EditorPosition;
}
export interface ITextEditorPositionData {
	[id: string]: EditorPosition;
}
533 534 535
export interface IEditorPropertiesChangeData {
	options: IResolvedTextEditorConfiguration | null;
	selections: ISelectionChangeEvent | null;
536
	visibleRanges: IRange[] | null;
537 538 539 540 541 542
}
export interface ISelectionChangeEvent {
	selections: Selection[];
	source?: string;
}

543
export interface ExtHostEditorsShape {
544
	$acceptEditorPropertiesChanged(id: string, props: IEditorPropertiesChangeData): void;
545
	$acceptEditorPositionData(data: ITextEditorPositionData): void;
546 547
}

J
Johannes Rieken 已提交
548
export interface IDocumentsAndEditorsDelta {
549
	removedDocuments?: UriComponents[];
J
Johannes Rieken 已提交
550 551 552 553 554 555
	addedDocuments?: IModelAddedData[];
	removedEditors?: string[];
	addedEditors?: ITextEditorAddData[];
	newActiveEditor?: string;
}

556 557
export interface ExtHostDocumentsAndEditorsShape {
	$acceptDocumentsAndEditorsDelta(delta: IDocumentsAndEditorsDelta): void;
J
Johannes Rieken 已提交
558 559
}

560
export interface ExtHostTreeViewsShape {
561
	$getChildren(treeViewId: string, treeItemHandle?: string): TPromise<ITreeItem[]>;
S
Sandeep Somavarapu 已提交
562 563
}

564 565
export interface ExtHostWorkspaceShape {
	$acceptWorkspaceData(workspace: IWorkspaceData): void;
566
}
567

568
export interface ExtHostFileSystemShape {
J
Johannes Rieken 已提交
569
	$stat(handle: number, resource: UriComponents): TPromise<IStat>;
570 571
	$readFile(handle: number, resource: UriComponents, flags: FileOpenFlags): TPromise<string>;
	$writeFile(handle: number, resource: UriComponents, base64Encoded: string, flags: FileOpenFlags): TPromise<void>;
572
	$rename(handle: number, resource: UriComponents, target: UriComponents, flags: FileOpenFlags): TPromise<IStat>;
573
	$copy(handle: number, resource: UriComponents, target: UriComponents, flags: FileOpenFlags): TPromise<IStat>;
J
Johannes Rieken 已提交
574
	$mkdir(handle: number, resource: UriComponents): TPromise<IStat>;
575
	$readdir(handle: number, resource: UriComponents): TPromise<[string, IStat][]>;
576
	$delete(handle: number, resource: UriComponents): TPromise<void>;
577 578
	$watch(handle: number, session: number, resource: UriComponents, opts: IWatchOptions): void;
	$unwatch(handle: number, session: number): void;
579
}
580

581
export interface ExtHostSearchShape {
582
	$provideFileSearchResults(handle: number, session: number, query: string): TPromise<void>;
583
	$provideTextSearchResults(handle: number, session: number, pattern: IPatternInfo, options: { includes: string[], excludes: string[] }): TPromise<void>;
584 585
}

586 587
export interface ExtHostExtensionServiceShape {
	$activateByEvent(activationEvent: string): TPromise<void>;
588 589 590
}

export interface FileSystemEvents {
J
Johannes Rieken 已提交
591 592 593
	created: UriComponents[];
	changed: UriComponents[];
	deleted: UriComponents[];
594
}
595
export interface ExtHostFileSystemEventServiceShape {
596
	$onFileEvent(events: FileSystemEvents): void;
597 598
}

J
Johannes Rieken 已提交
599 600 601 602 603
export interface ObjectIdentifier {
	$ident: number;
}

export namespace ObjectIdentifier {
604
	export const name = '$ident';
J
Johannes Rieken 已提交
605
	export function mixin<T>(obj: T, id: number): T & ObjectIdentifier {
606
		Object.defineProperty(obj, name, { value: id, enumerable: true });
J
Johannes Rieken 已提交
607 608
		return <T & ObjectIdentifier>obj;
	}
609 610
	export function of(obj: any): number {
		return obj[name];
J
Johannes Rieken 已提交
611 612 613
	}
}

614 615
export interface ExtHostHeapServiceShape {
	$onGarbageCollection(ids: number[]): void;
616
}
617
export interface IRawColorInfo {
J
Joao Moreno 已提交
618
	color: [number, number, number, number];
619 620 621
	range: IRange;
}

622 623 624 625 626 627 628 629 630 631
export class IdObject {
	_id?: number;
	private static _n = 0;
	static mixin<T extends object>(object: T): T & IdObject {
		(<any>object)._id = IdObject._n++;
		return <any>object;
	}
}

export interface SuggestionDto extends modes.ISuggestion {
632 633 634 635
	_id: number;
	_parentId: number;
}

636 637
export interface SuggestResultDto extends IdObject {
	suggestions: SuggestionDto[];
638 639 640
	incomplete?: boolean;
}

641 642 643
export interface LocationDto {
	uri: UriComponents;
	range: IRange;
644 645
}

646 647 648 649 650 651 652 653 654 655 656
export interface SymbolInformationDto extends IdObject {
	name: string;
	containerName?: string;
	kind: modes.SymbolKind;
	location: LocationDto;
}

export interface WorkspaceSymbolsDto extends IdObject {
	symbols: SymbolInformationDto[];
}

657 658 659 660 661 662
export interface ResourceFileEditDto {
	oldUri: UriComponents;
	newUri: UriComponents;
}

export interface ResourceTextEditDto {
663
	resource: UriComponents;
664 665
	modelVersionId?: number;
	edits: modes.TextEdit[];
666 667
}

668
export interface WorkspaceEditDto {
669 670 671
	edits: (ResourceFileEditDto | ResourceTextEditDto)[];

	// todo@joh reject should go into rename
672 673 674
	rejectReason?: string;
}

675 676 677 678 679 680 681 682 683 684 685 686 687 688
export function reviveWorkspaceEditDto(data: WorkspaceEditDto): modes.WorkspaceEdit {
	if (data && data.edits) {
		for (const edit of data.edits) {
			if (typeof (<ResourceTextEditDto>edit).resource === 'object') {
				(<ResourceTextEditDto>edit).resource = URI.revive((<ResourceTextEditDto>edit).resource);
			} else {
				(<ResourceFileEditDto>edit).newUri = URI.revive((<ResourceFileEditDto>edit).newUri);
				(<ResourceFileEditDto>edit).oldUri = URI.revive((<ResourceFileEditDto>edit).oldUri);
			}
		}
	}
	return <modes.WorkspaceEdit>data;
}

689 690
export interface CodeActionDto {
	title: string;
691
	edit?: WorkspaceEditDto;
692 693
	diagnostics?: IMarkerData[];
	command?: modes.Command;
J
Johannes Rieken 已提交
694
	kind?: string;
695
}
696

697
export interface ExtHostLanguageFeaturesShape {
698
	$provideDocumentSymbols(handle: number, resource: UriComponents): TPromise<SymbolInformationDto[]>;
699 700
	$provideCodeLenses(handle: number, resource: UriComponents): TPromise<modes.ICodeLensSymbol[]>;
	$resolveCodeLens(handle: number, resource: UriComponents, symbol: modes.ICodeLensSymbol): TPromise<modes.ICodeLensSymbol>;
701 702 703
	$provideDefinition(handle: number, resource: UriComponents, position: IPosition): TPromise<LocationDto | LocationDto[]>;
	$provideImplementation(handle: number, resource: UriComponents, position: IPosition): TPromise<LocationDto | LocationDto[]>;
	$provideTypeDefinition(handle: number, resource: UriComponents, position: IPosition): TPromise<LocationDto | LocationDto[]>;
704 705
	$provideHover(handle: number, resource: UriComponents, position: IPosition): TPromise<modes.Hover>;
	$provideDocumentHighlights(handle: number, resource: UriComponents, position: IPosition): TPromise<modes.DocumentHighlight[]>;
706
	$provideReferences(handle: number, resource: UriComponents, position: IPosition, context: modes.ReferenceContext): TPromise<LocationDto[]>;
M
Matt Bierner 已提交
707
	$provideCodeActions(handle: number, resource: UriComponents, range: IRange, context: modes.CodeActionContext): TPromise<CodeActionDto[]>;
708 709 710
	$provideDocumentFormattingEdits(handle: number, resource: UriComponents, options: modes.FormattingOptions): TPromise<ISingleEditOperation[]>;
	$provideDocumentRangeFormattingEdits(handle: number, resource: UriComponents, range: IRange, options: modes.FormattingOptions): TPromise<ISingleEditOperation[]>;
	$provideOnTypeFormattingEdits(handle: number, resource: UriComponents, position: IPosition, ch: string, options: modes.FormattingOptions): TPromise<ISingleEditOperation[]>;
711 712
	$provideWorkspaceSymbols(handle: number, search: string): TPromise<WorkspaceSymbolsDto>;
	$resolveWorkspaceSymbol(handle: number, symbol: SymbolInformationDto): TPromise<SymbolInformationDto>;
713
	$releaseWorkspaceSymbols(handle: number, id: number): void;
714
	$provideRenameEdits(handle: number, resource: UriComponents, position: IPosition, newName: string): TPromise<WorkspaceEditDto>;
715
	$resolveRenameLocation(handle: number, resource: UriComponents, position: IPosition): TPromise<modes.RenameLocation>;
716
	$provideCompletionItems(handle: number, resource: UriComponents, position: IPosition, context: modes.SuggestContext): TPromise<SuggestResultDto>;
717
	$resolveCompletionItem(handle: number, resource: UriComponents, position: IPosition, suggestion: modes.ISuggestion): TPromise<modes.ISuggestion>;
718
	$releaseCompletionItems(handle: number, id: number): void;
719 720
	$provideSignatureHelp(handle: number, resource: UriComponents, position: IPosition): TPromise<modes.SignatureHelp>;
	$provideDocumentLinks(handle: number, resource: UriComponents): TPromise<modes.ILink[]>;
721
	$resolveDocumentLink(handle: number, link: modes.ILink): TPromise<modes.ILink>;
722 723
	$provideDocumentColors(handle: number, resource: UriComponents): TPromise<IRawColorInfo[]>;
	$provideColorPresentations(handle: number, resource: UriComponents, colorInfo: IRawColorInfo): TPromise<modes.IColorPresentation[]>;
724
	$provideFoldingRanges(handle: number, resource: UriComponents, context: modes.FoldingContext): TPromise<modes.FoldingRange[]>;
725 726
}

727 728 729
export interface ExtHostQuickOpenShape {
	$onItemSelected(handle: number): void;
	$validateInput(input: string): TPromise<string>;
730 731
}

732 733
export interface ExtHostTerminalServiceShape {
	$acceptTerminalClosed(id: number): void;
734
	$acceptTerminalOpened(id: number, name: string): void;
735
	$acceptTerminalProcessId(id: number, processId: number): void;
736 737
}

738
export interface ExtHostSCMShape {
739
	$provideOriginalResource(sourceControlHandle: number, uri: UriComponents): TPromise<UriComponents>;
J
Joao Moreno 已提交
740
	$onInputBoxValueChange(sourceControlHandle: number, value: string): TPromise<void>;
741
	$executeResourceCommand(sourceControlHandle: number, groupHandle: number, handle: number): TPromise<void>;
742
	$validateInput(sourceControlHandle: number, value: string, cursorPosition: number): TPromise<[string, number] | undefined>;
J
Joao Moreno 已提交
743 744
}

745 746
export interface ExtHostTaskShape {
	$provideTasks(handle: number): TPromise<TaskSet>;
747 748
	$taskStarted(execution: TaskExecutionDTO): void;
	$taskEnded(execution: TaskExecutionDTO): void;
749 750
}

751 752
export interface IBreakpointDto {
	type: string;
753
	id?: string;
754 755 756
	enabled: boolean;
	condition?: string;
	hitCondition?: string;
757 758 759 760 761
	logMessage?: string;
}

export interface IFunctionBreakpointDto extends IBreakpointDto {
	type: 'function';
762
	functionName: string;
763 764
}

765
export interface ISourceBreakpointDto extends IBreakpointDto {
766
	type: 'source';
767
	uri: UriComponents;
768 769
	line: number;
	character: number;
770 771
}

772 773 774 775
export interface IBreakpointsDeltaDto {
	added?: (ISourceBreakpointDto | IFunctionBreakpointDto)[];
	removed?: string[];
	changed?: (ISourceBreakpointDto | IFunctionBreakpointDto)[];
776 777
}

778 779 780 781
export interface ISourceMultiBreakpointDto {
	type: 'sourceMulti';
	uri: UriComponents;
	lines: {
782
		id: string;
783 784 785
		enabled: boolean;
		condition?: string;
		hitCondition?: string;
786
		logMessage?: string;
787 788 789
		line: number;
		character: number;
	}[];
790 791
}

792
export interface ExtHostDebugServiceShape {
793
	$runInTerminal(args: DebugProtocol.RunInTerminalRequestArguments, config: ITerminalSettings): TPromise<void>;
794 795 796
	$startDASession(handle: number, debugType: string, adapterExecutableInfo: IAdapterExecutable | null): TPromise<void>;
	$stopDASession(handle: number): TPromise<void>;
	$sendDAMessage(handle: number, message: DebugProtocol.ProtocolMessage): TPromise<void>;
797 798
	$resolveDebugConfiguration(handle: number, folder: UriComponents | undefined, debugConfiguration: IConfig): TPromise<IConfig>;
	$provideDebugConfigurations(handle: number, folder: UriComponents | undefined): TPromise<IConfig[]>;
799
	$debugAdapterExecutable(handle: number, folder: UriComponents | undefined): TPromise<IAdapterExecutable>;
800 801 802 803
	$acceptDebugSessionStarted(id: DebugSessionUUID, type: string, name: string): void;
	$acceptDebugSessionTerminated(id: DebugSessionUUID, type: string, name: string): void;
	$acceptDebugSessionActiveChanged(id: DebugSessionUUID | undefined, type?: string, name?: string): void;
	$acceptDebugSessionCustomEvent(id: DebugSessionUUID, type: string, name: string, event: any): void;
804
	$acceptBreakpointsDelta(delat: IBreakpointsDeltaDto): void;
805 806
}

807

808 809 810 811 812 813
export interface DecorationRequest {
	readonly id: number;
	readonly handle: number;
	readonly uri: UriComponents;
}

814
export type DecorationData = [number, boolean, string, string, ThemeColor, string];
815
export type DecorationReply = { [id: number]: DecorationData };
816 817

export interface ExtHostDecorationsShape {
818
	$provideDecorations(requests: DecorationRequest[]): TPromise<DecorationReply>;
819 820
}

821 822
export interface ExtHostWindowShape {
	$onDidChangeWindowFocus(value: boolean): void;
823 824
}

S
Sandeep Somavarapu 已提交
825
export interface ExtHostLogServiceShape {
826
	$setLevel(level: LogLevel);
S
Sandeep Somavarapu 已提交
827 828
}

829 830 831 832
export interface ExtHostProgressShape {
	$acceptProgressCanceled(handle: number): void;
}

833 834 835
// --- proxy identifiers

export const MainContext = {
836
	MainThreadCommands: <ProxyIdentifier<MainThreadCommandsShape>>createMainId<MainThreadCommandsShape>('MainThreadCommands'),
837
	MainThreadConfiguration: createMainId<MainThreadConfigurationShape>('MainThreadConfiguration'),
838
	MainThreadDebugService: createMainId<MainThreadDebugServiceShape>('MainThreadDebugService'),
839 840 841 842
	MainThreadDecorations: createMainId<MainThreadDecorationsShape>('MainThreadDecorations'),
	MainThreadDiagnostics: createMainId<MainThreadDiagnosticsShape>('MainThreadDiagnostics'),
	MainThreadDialogs: createMainId<MainThreadDiaglogsShape>('MainThreadDiaglogs'),
	MainThreadDocuments: createMainId<MainThreadDocumentsShape>('MainThreadDocuments'),
843
	MainThreadDocumentContentProviders: createMainId<MainThreadDocumentContentProvidersShape>('MainThreadDocumentContentProviders'),
844
	MainThreadTextEditors: createMainId<MainThreadTextEditorsShape>('MainThreadTextEditors'),
845 846
	MainThreadErrors: createMainId<MainThreadErrorsShape>('MainThreadErrors'),
	MainThreadTreeViews: createMainId<MainThreadTreeViewsShape>('MainThreadTreeViews'),
847
	MainThreadLanguageFeatures: createMainId<MainThreadLanguageFeaturesShape>('MainThreadLanguageFeatures'),
848
	MainThreadLanguages: createMainId<MainThreadLanguagesShape>('MainThreadLanguages'),
849
	MainThreadMessageService: createMainId<MainThreadMessageServiceShape>('MainThreadMessageService'),
850 851
	MainThreadOutputService: createMainId<MainThreadOutputServiceShape>('MainThreadOutputService'),
	MainThreadProgress: createMainId<MainThreadProgressShape>('MainThreadProgress'),
852
	MainThreadQuickOpen: createMainId<MainThreadQuickOpenShape>('MainThreadQuickOpen'),
853
	MainThreadStatusBar: createMainId<MainThreadStatusBarShape>('MainThreadStatusBar'),
854
	MainThreadStorage: createMainId<MainThreadStorageShape>('MainThreadStorage'),
855
	MainThreadTelemetry: createMainId<MainThreadTelemetryShape>('MainThreadTelemetry'),
856
	MainThreadTerminalService: createMainId<MainThreadTerminalServiceShape>('MainThreadTerminalService'),
M
Matt Bierner 已提交
857
	MainThreadWebviews: createMainId<MainThreadWebviewsShape>('MainThreadWebviews'),
858
	MainThreadWorkspace: createMainId<MainThreadWorkspaceShape>('MainThreadWorkspace'),
859
	MainThreadFileSystem: createMainId<MainThreadFileSystemShape>('MainThreadFileSystem'),
860
	MainThreadExtensionService: createMainId<MainThreadExtensionServiceShape>('MainThreadExtensionService'),
J
Joao Moreno 已提交
861
	MainThreadSCM: createMainId<MainThreadSCMShape>('MainThreadSCM'),
862
	MainThreadSearch: createMainId<MainThreadSearchShape>('MainThreadSearch'),
863
	MainThreadTask: createMainId<MainThreadTaskShape>('MainThreadTask'),
864
	MainThreadWindow: createMainId<MainThreadWindowShape>('MainThreadWindow'),
865 866 867
};

export const ExtHostContext = {
868
	ExtHostCommands: createExtId<ExtHostCommandsShape>('ExtHostCommands'),
869
	ExtHostConfiguration: createExtId<ExtHostConfigurationShape>('ExtHostConfiguration'),
870
	ExtHostDiagnostics: createExtId<ExtHostDiagnosticsShape>('ExtHostDiagnostics'),
871
	ExtHostDebugService: createExtId<ExtHostDebugServiceShape>('ExtHostDebugService'),
J
Johannes Rieken 已提交
872
	ExtHostDecorations: createExtId<ExtHostDecorationsShape>('ExtHostDecorations'),
873
	ExtHostDocumentsAndEditors: createExtId<ExtHostDocumentsAndEditorsShape>('ExtHostDocumentsAndEditors'),
874
	ExtHostDocuments: createExtId<ExtHostDocumentsShape>('ExtHostDocuments'),
J
Johannes Rieken 已提交
875
	ExtHostDocumentContentProviders: createExtId<ExtHostDocumentContentProvidersShape>('ExtHostDocumentContentProviders'),
J
Johannes Rieken 已提交
876
	ExtHostDocumentSaveParticipant: createExtId<ExtHostDocumentSaveParticipantShape>('ExtHostDocumentSaveParticipant'),
J
Johannes Rieken 已提交
877
	ExtHostEditors: createExtId<ExtHostEditorsShape>('ExtHostEditors'),
878
	ExtHostTreeViews: createExtId<ExtHostTreeViewsShape>('ExtHostTreeViews'),
J
Johannes Rieken 已提交
879
	ExtHostFileSystem: createExtId<ExtHostFileSystemShape>('ExtHostFileSystem'),
J
Johannes Rieken 已提交
880
	ExtHostFileSystemEventService: createExtId<ExtHostFileSystemEventServiceShape>('ExtHostFileSystemEventService'),
881
	ExtHostHeapService: createExtId<ExtHostHeapServiceShape>('ExtHostHeapMonitor'),
882
	ExtHostLanguageFeatures: createExtId<ExtHostLanguageFeaturesShape>('ExtHostLanguageFeatures'),
883 884
	ExtHostQuickOpen: createExtId<ExtHostQuickOpenShape>('ExtHostQuickOpen'),
	ExtHostExtensionService: createExtId<ExtHostExtensionServiceShape>('ExtHostExtensionService'),
885
	ExtHostLogService: createExtId<ExtHostLogServiceShape>('ExtHostLogService'),
886
	ExtHostTerminalService: createExtId<ExtHostTerminalServiceShape>('ExtHostTerminalService'),
J
Joao Moreno 已提交
887
	ExtHostSCM: createExtId<ExtHostSCMShape>('ExtHostSCM'),
888
	ExtHostSearch: createExtId<ExtHostSearchShape>('ExtHostSearch'),
889
	ExtHostTask: createExtId<ExtHostTaskShape>('ExtHostTask'),
890
	ExtHostWorkspace: createExtId<ExtHostWorkspaceShape>('ExtHostWorkspace'),
891
	ExtHostWindow: createExtId<ExtHostWindowShape>('ExtHostWindow'),
892 893
	ExtHostWebviews: createExtId<ExtHostWebviewsShape>('ExtHostWebviews'),
	ExtHostProgress: createMainId<ExtHostProgressShape>('ExtHostProgress')
894
};