extHost.protocol.ts 39.5 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, IWatchOptions, FileSystemProviderCapabilities, FileOptions } 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, TaskFilterDTO } 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;
322 323 324 325

	$sendProcessTitle(terminalId: number, title: string): void;
	$sendProcessData(terminalId: number, data: string): void;
	$sendProcessPid(terminalId: number, pid: number): void;
D
Daniel Imms 已提交
326
	$sendProcessExit(terminalId: number, exitCode: number): void;
D
Daniel Imms 已提交
327 328
}

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

339
export interface MainThreadStatusBarShape extends IDisposable {
340
	$setEntry(id: number, extensionId: string, text: string, tooltip: string, command: string, color: string | ThemeColor, alignment: MainThreadStatusBarAlignment, priority: number): void;
341
	$dispose(id: number): void;
342 343
}

344
export interface MainThreadStorageShape extends IDisposable {
345
	$getValue<T>(shared: boolean, key: string): TPromise<T>;
346
	$setValue(shared: boolean, key: string, value: any): TPromise<void>;
347 348
}

349
export interface MainThreadTelemetryShape extends IDisposable {
350
	$publicLog(eventName: string, data?: any): void;
351 352
}

353
export type WebviewPanelHandle = string;
M
Matt Bierner 已提交
354 355

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

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

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

J
Joao Moreno 已提交
375
export interface MainThreadUrlsShape extends IDisposable {
J
Joao Moreno 已提交
376 377
	$registerExternalUriHandler(handle: number, extensionId: string): TPromise<void>;
	$unregisterExternalUriHandler(handle: number): TPromise<void>;
J
Joao Moreno 已提交
378 379 380
}

export interface ExtHostUrlsShape {
J
Joao Moreno 已提交
381
	$handleExternalUri(handle: number, uri: UriComponents): TPromise<void>;
J
Joao Moreno 已提交
382 383
}

384
export interface MainThreadWorkspaceShape extends IDisposable {
J
Johannes Rieken 已提交
385
	$startSearch(includePattern: string, includeFolder: string, excludePatternOrDisregardExcludes: string | false, maxResults: number, requestId: number): Thenable<UriComponents[]>;
386 387
	$cancelSearch(requestId: number): Thenable<boolean>;
	$saveAll(includeUntitled?: boolean): Thenable<boolean>;
388
	$updateWorkspaceFolders(extensionName: string, index: number, deleteCount: number, workspaceFoldersToAdd: { uri: UriComponents, name?: string }[]): Thenable<void>;
389
}
390

J
Johannes Rieken 已提交
391 392 393 394 395
export interface IFileChangeDto {
	resource: UriComponents;
	type: FileChangeType;
}

396
export interface MainThreadFileSystemShape extends IDisposable {
397
	$registerFileSystemProvider(handle: number, scheme: string, capabilities: FileSystemProviderCapabilities): void;
398
	$unregisterProvider(handle: number): void;
J
Johannes Rieken 已提交
399
	$onFileSystemChange(handle: number, resource: IFileChangeDto[]): void;
400
}
J
Johannes Rieken 已提交
401

402 403 404
export interface MainThreadSearchShape extends IDisposable {
	$registerSearchProvider(handle: number, scheme: string): void;
	$unregisterProvider(handle: number): void;
405
	$handleFindMatch(handle: number, session, data: UriComponents | [UriComponents, ILineMatch]): void;
406 407
}

408
export interface MainThreadTaskShape extends IDisposable {
409
	$registerTaskProvider(handle: number): TPromise<void>;
410
	$fetchTasks(filter?: TaskFilterDTO): TPromise<TaskDTO[]>;
411
	$executeTask(task: TaskHandleDTO | TaskDTO): TPromise<TaskExecutionDTO>;
D
Dirk Baeumer 已提交
412
	$terminateTask(id: string): TPromise<void>;
413
	$unregisterTaskProvider(handle: number): TPromise<void>;
414 415
}

416
export interface MainThreadExtensionServiceShape extends IDisposable {
417
	$localShowMessage(severity: Severity, msg: string): void;
A
Alex Dima 已提交
418
	$onExtensionActivated(extensionId: string, startup: boolean, codeLoadingTime: number, activateCallTime: number, activateResolvedTime: number, activationEvent: string): void;
419
	$onExtensionActivationFailed(extensionId: string): void;
420
	$onExtensionRuntimeError(extensionId: string, error: SerializedError): void;
A
Alex Dima 已提交
421
	$addMessage(extensionId: string, severity: Severity, message: string): void;
422 423
}

J
Joao Moreno 已提交
424
export interface SCMProviderFeatures {
J
Joao Moreno 已提交
425 426
	hasQuickDiffProvider?: boolean;
	count?: number;
427 428 429
	commitTemplate?: string;
	acceptInputCommand?: modes.Command;
	statusBarCommands?: modes.Command[];
J
Joao Moreno 已提交
430 431 432 433
}

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

J
Joao Moreno 已提交
436
export type SCMRawResource = [
437
	number /*handle*/,
438
	UriComponents /*resourceUri*/,
J
Joao Moreno 已提交
439
	string[] /*icons: light, dark*/,
440
	string /*tooltip*/,
441
	boolean /*strike through*/,
442 443
	boolean /*faded*/,

J
Joao Moreno 已提交
444 445 446
	string | undefined /*source*/,
	string | undefined /*letter*/,
	ThemeColor | null /*color*/
J
Joao Moreno 已提交
447
];
448

449 450 451
export type SCMRawResourceSplice = [
	number /* start */,
	number /* delete count */,
J
Joao 已提交
452 453 454
	SCMRawResource[]
];

455 456 457 458 459
export type SCMRawResourceSplices = [
	number, /*handle*/
	SCMRawResourceSplice[]
];

460
export interface MainThreadSCMShape extends IDisposable {
461
	$registerSourceControl(handle: number, id: string, label: string, rootUri: UriComponents | undefined): void;
462 463
	$updateSourceControl(handle: number, features: SCMProviderFeatures): void;
	$unregisterSourceControl(handle: number): void;
J
Joao Moreno 已提交
464

465 466 467 468
	$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 已提交
469

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

J
Joao Moreno 已提交
472
	$setInputBoxValue(sourceControlHandle: number, value: string): void;
473
	$setInputBoxPlaceholder(sourceControlHandle: number, placeholder: string): void;
474
	$setValidationProviderIsEnabled(sourceControlHandle: number, enabled: boolean): void;
J
Joao Moreno 已提交
475 476
}

477 478
export type DebugSessionUUID = string;

479
export interface MainThreadDebugServiceShape extends IDisposable {
A
Andre Weinand 已提交
480
	$registerDebugTypes(debugTypes: string[]);
481 482 483
	$acceptDAMessage(handle: number, message: DebugProtocol.ProtocolMessage);
	$acceptDAError(handle: number, name: string, message: string, stack: string);
	$acceptDAExit(handle: number, code: number, signal: string);
484
	$registerDebugConfigurationProvider(type: string, hasProvideMethod: boolean, hasResolveMethod: boolean, hasDebugAdapterExecutable: boolean, handle: number): TPromise<any>;
485
	$unregisterDebugConfigurationProvider(handle: number): TPromise<any>;
486
	$startDebugging(folder: UriComponents | undefined, nameOrConfig: string | vscode.DebugConfiguration): TPromise<boolean>;
487
	$customDebugAdapterRequest(id: DebugSessionUUID, command: string, args: any): TPromise<any>;
488
	$appendDebugConsole(value: string): TPromise<any>;
489
	$startBreakpointEvents(): TPromise<any>;
490
	$registerBreakpoints(breakpoints: (ISourceMultiBreakpointDto | IFunctionBreakpointDto)[]): TPromise<void>;
491
	$unregisterBreakpoints(breakpointIds: string[], functionBreakpointIds: string[]): TPromise<void>;
492 493
}

494 495
export interface MainThreadWindowShape extends IDisposable {
	$getWindowVisibility(): TPromise<boolean>;
496 497
}

498 499
// -- extension host

500
export interface ExtHostCommandsShape {
J
Johannes Rieken 已提交
501
	$executeContributedCommand<T>(id: string, ...args: any[]): Thenable<T>;
502
	$getContributedCommandHandlerDescriptions(): Thenable<{ [id: string]: string | ICommandHandlerDescription }>;
503 504
}

505
export interface ExtHostConfigurationShape {
506
	$acceptConfigurationChanged(data: IConfigurationData, eventData: IWorkspaceConfigurationChangeEventData): void;
507 508
}

509
export interface ExtHostDiagnosticsShape {
510 511 512

}

513
export interface ExtHostDocumentContentProvidersShape {
J
Johannes Rieken 已提交
514
	$provideTextDocumentContent(handle: number, uri: UriComponents): TPromise<string>;
515 516
}

517
export interface IModelAddedData {
518
	uri: UriComponents;
519
	versionId: number;
520 521
	lines: string[];
	EOL: string;
522 523 524
	modeId: string;
	isDirty: boolean;
}
525
export interface ExtHostDocumentsShape {
526 527 528 529
	$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;
530 531
}

532
export interface ExtHostDocumentSaveParticipantShape {
J
Johannes Rieken 已提交
533
	$participateInSave(resource: UriComponents, reason: SaveReason): Thenable<boolean[]>;
534 535
}

536 537
export interface ITextEditorAddData {
	id: string;
538
	documentUri: UriComponents;
539
	options: IResolvedTextEditorConfiguration;
A
Alex Dima 已提交
540
	selections: ISelection[];
541
	visibleRanges: IRange[];
542 543 544 545 546
	editorPosition: EditorPosition;
}
export interface ITextEditorPositionData {
	[id: string]: EditorPosition;
}
547 548 549
export interface IEditorPropertiesChangeData {
	options: IResolvedTextEditorConfiguration | null;
	selections: ISelectionChangeEvent | null;
550
	visibleRanges: IRange[] | null;
551 552 553 554 555 556
}
export interface ISelectionChangeEvent {
	selections: Selection[];
	source?: string;
}

557
export interface ExtHostEditorsShape {
558
	$acceptEditorPropertiesChanged(id: string, props: IEditorPropertiesChangeData): void;
559
	$acceptEditorPositionData(data: ITextEditorPositionData): void;
560 561
}

J
Johannes Rieken 已提交
562
export interface IDocumentsAndEditorsDelta {
563
	removedDocuments?: UriComponents[];
J
Johannes Rieken 已提交
564 565 566 567 568 569
	addedDocuments?: IModelAddedData[];
	removedEditors?: string[];
	addedEditors?: ITextEditorAddData[];
	newActiveEditor?: string;
}

570 571
export interface ExtHostDocumentsAndEditorsShape {
	$acceptDocumentsAndEditorsDelta(delta: IDocumentsAndEditorsDelta): void;
J
Johannes Rieken 已提交
572 573
}

574
export interface ExtHostTreeViewsShape {
575
	$getChildren(treeViewId: string, treeItemHandle?: string): TPromise<ITreeItem[]>;
S
Sandeep Somavarapu 已提交
576 577
}

578 579
export interface ExtHostWorkspaceShape {
	$acceptWorkspaceData(workspace: IWorkspaceData): void;
580
}
581

582
export interface ExtHostFileSystemShape {
J
Johannes Rieken 已提交
583
	$stat(handle: number, resource: UriComponents): TPromise<IStat>;
584 585 586 587
	$readFile(handle: number, resource: UriComponents, opts: FileOptions): TPromise<string>;
	$writeFile(handle: number, resource: UriComponents, base64Encoded: string, opts: FileOptions): TPromise<void>;
	$rename(handle: number, resource: UriComponents, target: UriComponents, opts: FileOptions): TPromise<IStat>;
	$copy(handle: number, resource: UriComponents, target: UriComponents, opts: FileOptions): TPromise<IStat>;
J
Johannes Rieken 已提交
588
	$mkdir(handle: number, resource: UriComponents): TPromise<IStat>;
589
	$readdir(handle: number, resource: UriComponents): TPromise<[string, IStat][]>;
590
	$delete(handle: number, resource: UriComponents): TPromise<void>;
591 592
	$watch(handle: number, session: number, resource: UriComponents, opts: IWatchOptions): void;
	$unwatch(handle: number, session: number): void;
593
}
594

595
export interface ExtHostSearchShape {
596
	$provideFileSearchResults(handle: number, session: number, query: string): TPromise<void>;
597
	$provideTextSearchResults(handle: number, session: number, pattern: IPatternInfo, options: { includes: string[], excludes: string[] }): TPromise<void>;
598 599
}

600 601
export interface ExtHostExtensionServiceShape {
	$activateByEvent(activationEvent: string): TPromise<void>;
602 603 604
}

export interface FileSystemEvents {
J
Johannes Rieken 已提交
605 606 607
	created: UriComponents[];
	changed: UriComponents[];
	deleted: UriComponents[];
608
}
609
export interface ExtHostFileSystemEventServiceShape {
610
	$onFileEvent(events: FileSystemEvents): void;
611 612
}

J
Johannes Rieken 已提交
613 614 615 616 617
export interface ObjectIdentifier {
	$ident: number;
}

export namespace ObjectIdentifier {
618
	export const name = '$ident';
J
Johannes Rieken 已提交
619
	export function mixin<T>(obj: T, id: number): T & ObjectIdentifier {
620
		Object.defineProperty(obj, name, { value: id, enumerable: true });
J
Johannes Rieken 已提交
621 622
		return <T & ObjectIdentifier>obj;
	}
623 624
	export function of(obj: any): number {
		return obj[name];
J
Johannes Rieken 已提交
625 626 627
	}
}

628 629
export interface ExtHostHeapServiceShape {
	$onGarbageCollection(ids: number[]): void;
630
}
631
export interface IRawColorInfo {
J
Joao Moreno 已提交
632
	color: [number, number, number, number];
633 634 635
	range: IRange;
}

636 637 638 639 640 641 642 643 644 645
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 {
646 647 648 649
	_id: number;
	_parentId: number;
}

650 651
export interface SuggestResultDto extends IdObject {
	suggestions: SuggestionDto[];
652 653 654
	incomplete?: boolean;
}

655 656 657
export interface LocationDto {
	uri: UriComponents;
	range: IRange;
658 659
}

660 661 662 663 664 665 666 667 668 669 670
export interface SymbolInformationDto extends IdObject {
	name: string;
	containerName?: string;
	kind: modes.SymbolKind;
	location: LocationDto;
}

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

671 672 673 674 675 676
export interface ResourceFileEditDto {
	oldUri: UriComponents;
	newUri: UriComponents;
}

export interface ResourceTextEditDto {
677
	resource: UriComponents;
678 679
	modelVersionId?: number;
	edits: modes.TextEdit[];
680 681
}

682
export interface WorkspaceEditDto {
683 684 685
	edits: (ResourceFileEditDto | ResourceTextEditDto)[];

	// todo@joh reject should go into rename
686 687 688
	rejectReason?: string;
}

689 690 691 692 693 694 695 696 697 698 699 700 701 702
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;
}

703 704
export interface CodeActionDto {
	title: string;
705
	edit?: WorkspaceEditDto;
706 707
	diagnostics?: IMarkerData[];
	command?: modes.Command;
J
Johannes Rieken 已提交
708
	kind?: string;
709
}
710

711
export interface ExtHostLanguageFeaturesShape {
712
	$provideDocumentSymbols(handle: number, resource: UriComponents): TPromise<SymbolInformationDto[]>;
713 714
	$provideCodeLenses(handle: number, resource: UriComponents): TPromise<modes.ICodeLensSymbol[]>;
	$resolveCodeLens(handle: number, resource: UriComponents, symbol: modes.ICodeLensSymbol): TPromise<modes.ICodeLensSymbol>;
715 716 717
	$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[]>;
718 719
	$provideHover(handle: number, resource: UriComponents, position: IPosition): TPromise<modes.Hover>;
	$provideDocumentHighlights(handle: number, resource: UriComponents, position: IPosition): TPromise<modes.DocumentHighlight[]>;
720
	$provideReferences(handle: number, resource: UriComponents, position: IPosition, context: modes.ReferenceContext): TPromise<LocationDto[]>;
M
Matt Bierner 已提交
721
	$provideCodeActions(handle: number, resource: UriComponents, range: IRange, context: modes.CodeActionContext): TPromise<CodeActionDto[]>;
722 723 724
	$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[]>;
725 726
	$provideWorkspaceSymbols(handle: number, search: string): TPromise<WorkspaceSymbolsDto>;
	$resolveWorkspaceSymbol(handle: number, symbol: SymbolInformationDto): TPromise<SymbolInformationDto>;
727
	$releaseWorkspaceSymbols(handle: number, id: number): void;
728
	$provideRenameEdits(handle: number, resource: UriComponents, position: IPosition, newName: string): TPromise<WorkspaceEditDto>;
729
	$resolveRenameLocation(handle: number, resource: UriComponents, position: IPosition): TPromise<modes.RenameLocation>;
730
	$provideCompletionItems(handle: number, resource: UriComponents, position: IPosition, context: modes.SuggestContext): TPromise<SuggestResultDto>;
731
	$resolveCompletionItem(handle: number, resource: UriComponents, position: IPosition, suggestion: modes.ISuggestion): TPromise<modes.ISuggestion>;
732
	$releaseCompletionItems(handle: number, id: number): void;
733 734
	$provideSignatureHelp(handle: number, resource: UriComponents, position: IPosition): TPromise<modes.SignatureHelp>;
	$provideDocumentLinks(handle: number, resource: UriComponents): TPromise<modes.ILink[]>;
735
	$resolveDocumentLink(handle: number, link: modes.ILink): TPromise<modes.ILink>;
736 737
	$provideDocumentColors(handle: number, resource: UriComponents): TPromise<IRawColorInfo[]>;
	$provideColorPresentations(handle: number, resource: UriComponents, colorInfo: IRawColorInfo): TPromise<modes.IColorPresentation[]>;
738
	$provideFoldingRanges(handle: number, resource: UriComponents, context: modes.FoldingContext): TPromise<modes.FoldingRange[]>;
739 740
}

741 742 743
export interface ExtHostQuickOpenShape {
	$onItemSelected(handle: number): void;
	$validateInput(input: string): TPromise<string>;
744 745
}

746 747 748 749 750 751 752 753
export interface ShellLaunchConfigDto {
	name?: string;
	executable?: string;
	args?: string[] | string;
	cwd?: string;
	env?: { [key: string]: string };
}

754 755
export interface ExtHostTerminalServiceShape {
	$acceptTerminalClosed(id: number): void;
756
	$acceptTerminalOpened(id: number, name: string): void;
757
	$acceptTerminalProcessId(id: number, processId: number): void;
758
	$createProcess(id: number, shellLaunchConfig: ShellLaunchConfigDto, cols: number, rows: number): void;
D
Daniel Imms 已提交
759 760 761
	$acceptProcessInput(id: number, data: string): void;
	$acceptProcessResize(id: number, cols: number, rows: number): void;
	$acceptProcessShutdown(id: number): void;
762 763
}

764
export interface ExtHostSCMShape {
765
	$provideOriginalResource(sourceControlHandle: number, uri: UriComponents): TPromise<UriComponents>;
J
Joao Moreno 已提交
766
	$onInputBoxValueChange(sourceControlHandle: number, value: string): TPromise<void>;
767
	$executeResourceCommand(sourceControlHandle: number, groupHandle: number, handle: number): TPromise<void>;
768
	$validateInput(sourceControlHandle: number, value: string, cursorPosition: number): TPromise<[string, number] | undefined>;
J
Joao Moreno 已提交
769 770
}

771 772
export interface ExtHostTaskShape {
	$provideTasks(handle: number): TPromise<TaskSet>;
773 774
	$taskStarted(execution: TaskExecutionDTO): void;
	$taskEnded(execution: TaskExecutionDTO): void;
775 776
}

777 778
export interface IBreakpointDto {
	type: string;
779
	id?: string;
780 781 782
	enabled: boolean;
	condition?: string;
	hitCondition?: string;
783 784 785 786 787
	logMessage?: string;
}

export interface IFunctionBreakpointDto extends IBreakpointDto {
	type: 'function';
788
	functionName: string;
789 790
}

791
export interface ISourceBreakpointDto extends IBreakpointDto {
792
	type: 'source';
793
	uri: UriComponents;
794 795
	line: number;
	character: number;
796 797
}

798 799 800 801
export interface IBreakpointsDeltaDto {
	added?: (ISourceBreakpointDto | IFunctionBreakpointDto)[];
	removed?: string[];
	changed?: (ISourceBreakpointDto | IFunctionBreakpointDto)[];
802 803
}

804 805 806 807
export interface ISourceMultiBreakpointDto {
	type: 'sourceMulti';
	uri: UriComponents;
	lines: {
808
		id: string;
809 810 811
		enabled: boolean;
		condition?: string;
		hitCondition?: string;
812
		logMessage?: string;
813 814 815
		line: number;
		character: number;
	}[];
816 817
}

818
export interface ExtHostDebugServiceShape {
A
Andre Weinand 已提交
819
	$substituteVariables(folder: UriComponents | undefined, config: IConfig): TPromise<IConfig>;
820
	$runInTerminal(args: DebugProtocol.RunInTerminalRequestArguments, config: ITerminalSettings): TPromise<void>;
821 822 823
	$startDASession(handle: number, debugType: string, adapterExecutableInfo: IAdapterExecutable | null): TPromise<void>;
	$stopDASession(handle: number): TPromise<void>;
	$sendDAMessage(handle: number, message: DebugProtocol.ProtocolMessage): TPromise<void>;
824 825
	$resolveDebugConfiguration(handle: number, folder: UriComponents | undefined, debugConfiguration: IConfig): TPromise<IConfig>;
	$provideDebugConfigurations(handle: number, folder: UriComponents | undefined): TPromise<IConfig[]>;
826
	$debugAdapterExecutable(handle: number, folder: UriComponents | undefined): TPromise<IAdapterExecutable>;
827 828 829 830
	$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;
831
	$acceptBreakpointsDelta(delat: IBreakpointsDeltaDto): void;
832 833
}

834

835 836 837 838 839 840
export interface DecorationRequest {
	readonly id: number;
	readonly handle: number;
	readonly uri: UriComponents;
}

841
export type DecorationData = [number, boolean, string, string, ThemeColor, string];
842
export type DecorationReply = { [id: number]: DecorationData };
843 844

export interface ExtHostDecorationsShape {
845
	$provideDecorations(requests: DecorationRequest[]): TPromise<DecorationReply>;
846 847
}

848 849
export interface ExtHostWindowShape {
	$onDidChangeWindowFocus(value: boolean): void;
850 851
}

S
Sandeep Somavarapu 已提交
852
export interface ExtHostLogServiceShape {
853
	$setLevel(level: LogLevel);
S
Sandeep Somavarapu 已提交
854 855
}

856 857 858 859
export interface ExtHostProgressShape {
	$acceptProgressCanceled(handle: number): void;
}

860 861 862
// --- proxy identifiers

export const MainContext = {
863
	MainThreadCommands: <ProxyIdentifier<MainThreadCommandsShape>>createMainId<MainThreadCommandsShape>('MainThreadCommands'),
864
	MainThreadConfiguration: createMainId<MainThreadConfigurationShape>('MainThreadConfiguration'),
865
	MainThreadDebugService: createMainId<MainThreadDebugServiceShape>('MainThreadDebugService'),
866 867 868 869
	MainThreadDecorations: createMainId<MainThreadDecorationsShape>('MainThreadDecorations'),
	MainThreadDiagnostics: createMainId<MainThreadDiagnosticsShape>('MainThreadDiagnostics'),
	MainThreadDialogs: createMainId<MainThreadDiaglogsShape>('MainThreadDiaglogs'),
	MainThreadDocuments: createMainId<MainThreadDocumentsShape>('MainThreadDocuments'),
870
	MainThreadDocumentContentProviders: createMainId<MainThreadDocumentContentProvidersShape>('MainThreadDocumentContentProviders'),
871
	MainThreadTextEditors: createMainId<MainThreadTextEditorsShape>('MainThreadTextEditors'),
872 873
	MainThreadErrors: createMainId<MainThreadErrorsShape>('MainThreadErrors'),
	MainThreadTreeViews: createMainId<MainThreadTreeViewsShape>('MainThreadTreeViews'),
874
	MainThreadLanguageFeatures: createMainId<MainThreadLanguageFeaturesShape>('MainThreadLanguageFeatures'),
875
	MainThreadLanguages: createMainId<MainThreadLanguagesShape>('MainThreadLanguages'),
876
	MainThreadMessageService: createMainId<MainThreadMessageServiceShape>('MainThreadMessageService'),
877 878
	MainThreadOutputService: createMainId<MainThreadOutputServiceShape>('MainThreadOutputService'),
	MainThreadProgress: createMainId<MainThreadProgressShape>('MainThreadProgress'),
879
	MainThreadQuickOpen: createMainId<MainThreadQuickOpenShape>('MainThreadQuickOpen'),
880
	MainThreadStatusBar: createMainId<MainThreadStatusBarShape>('MainThreadStatusBar'),
881
	MainThreadStorage: createMainId<MainThreadStorageShape>('MainThreadStorage'),
882
	MainThreadTelemetry: createMainId<MainThreadTelemetryShape>('MainThreadTelemetry'),
883
	MainThreadTerminalService: createMainId<MainThreadTerminalServiceShape>('MainThreadTerminalService'),
M
Matt Bierner 已提交
884
	MainThreadWebviews: createMainId<MainThreadWebviewsShape>('MainThreadWebviews'),
J
Joao Moreno 已提交
885
	MainThreadUrls: createMainId<MainThreadUrlsShape>('MainThreadUrls'),
886
	MainThreadWorkspace: createMainId<MainThreadWorkspaceShape>('MainThreadWorkspace'),
887
	MainThreadFileSystem: createMainId<MainThreadFileSystemShape>('MainThreadFileSystem'),
888
	MainThreadExtensionService: createMainId<MainThreadExtensionServiceShape>('MainThreadExtensionService'),
J
Joao Moreno 已提交
889
	MainThreadSCM: createMainId<MainThreadSCMShape>('MainThreadSCM'),
890
	MainThreadSearch: createMainId<MainThreadSearchShape>('MainThreadSearch'),
891
	MainThreadTask: createMainId<MainThreadTaskShape>('MainThreadTask'),
892
	MainThreadWindow: createMainId<MainThreadWindowShape>('MainThreadWindow'),
893 894 895
};

export const ExtHostContext = {
896
	ExtHostCommands: createExtId<ExtHostCommandsShape>('ExtHostCommands'),
897
	ExtHostConfiguration: createExtId<ExtHostConfigurationShape>('ExtHostConfiguration'),
898
	ExtHostDiagnostics: createExtId<ExtHostDiagnosticsShape>('ExtHostDiagnostics'),
899
	ExtHostDebugService: createExtId<ExtHostDebugServiceShape>('ExtHostDebugService'),
J
Johannes Rieken 已提交
900
	ExtHostDecorations: createExtId<ExtHostDecorationsShape>('ExtHostDecorations'),
901
	ExtHostDocumentsAndEditors: createExtId<ExtHostDocumentsAndEditorsShape>('ExtHostDocumentsAndEditors'),
902
	ExtHostDocuments: createExtId<ExtHostDocumentsShape>('ExtHostDocuments'),
J
Johannes Rieken 已提交
903
	ExtHostDocumentContentProviders: createExtId<ExtHostDocumentContentProvidersShape>('ExtHostDocumentContentProviders'),
J
Johannes Rieken 已提交
904
	ExtHostDocumentSaveParticipant: createExtId<ExtHostDocumentSaveParticipantShape>('ExtHostDocumentSaveParticipant'),
J
Johannes Rieken 已提交
905
	ExtHostEditors: createExtId<ExtHostEditorsShape>('ExtHostEditors'),
906
	ExtHostTreeViews: createExtId<ExtHostTreeViewsShape>('ExtHostTreeViews'),
J
Johannes Rieken 已提交
907
	ExtHostFileSystem: createExtId<ExtHostFileSystemShape>('ExtHostFileSystem'),
J
Johannes Rieken 已提交
908
	ExtHostFileSystemEventService: createExtId<ExtHostFileSystemEventServiceShape>('ExtHostFileSystemEventService'),
909
	ExtHostHeapService: createExtId<ExtHostHeapServiceShape>('ExtHostHeapMonitor'),
910
	ExtHostLanguageFeatures: createExtId<ExtHostLanguageFeaturesShape>('ExtHostLanguageFeatures'),
911 912
	ExtHostQuickOpen: createExtId<ExtHostQuickOpenShape>('ExtHostQuickOpen'),
	ExtHostExtensionService: createExtId<ExtHostExtensionServiceShape>('ExtHostExtensionService'),
913
	ExtHostLogService: createExtId<ExtHostLogServiceShape>('ExtHostLogService'),
914
	ExtHostTerminalService: createExtId<ExtHostTerminalServiceShape>('ExtHostTerminalService'),
J
Joao Moreno 已提交
915
	ExtHostSCM: createExtId<ExtHostSCMShape>('ExtHostSCM'),
916
	ExtHostSearch: createExtId<ExtHostSearchShape>('ExtHostSearch'),
917
	ExtHostTask: createExtId<ExtHostTaskShape>('ExtHostTask'),
918
	ExtHostWorkspace: createExtId<ExtHostWorkspaceShape>('ExtHostWorkspace'),
919
	ExtHostWindow: createExtId<ExtHostWindowShape>('ExtHostWindow'),
920
	ExtHostWebviews: createExtId<ExtHostWebviewsShape>('ExtHostWebviews'),
J
Joao Moreno 已提交
921
	ExtHostUrls: createExtId<ExtHostUrlsShape>('ExtHostUrls'),
922
	ExtHostProgress: createMainId<ExtHostProgressShape>('ExtHostProgress')
923
};