extHost.protocol.ts 42.6 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
import { IMarkerData } from 'vs/platform/markers/common/markers';
16
import { EditorViewColumn } from 'vs/workbench/api/shared/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';
21
import { IProgressOptions, IProgressStep } from 'vs/workbench/services/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

29
import { IQuickPickItem, IPickOptions } from 'vs/platform/quickinput/common/quickInput';
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, FileWriteOptions, FileType, FileOverwriteOptions } 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 { IPatternInfo, IRawSearchQuery, IRawFileMatch2, ISearchCompleteStats } from 'vs/platform/search/common/search';
S
Sandeep Somavarapu 已提交
50
import { LogLevel } from 'vs/platform/log/common/log';
51
import { TaskExecutionDTO, TaskDTO, TaskHandleDTO, TaskFilterDTO, TaskProcessStartedDTO, TaskProcessEndedDTO, TaskSystemInfoDTO } 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
}

M
Matt Bierner 已提交
105
export interface MainThreadCommentsShape extends IDisposable {
106 107 108 109
	$registerDocumentCommentProvider(handle: number): void;
	$unregisterDocumentCommentProvider(handle: number): void;
	$registerWorkspaceCommentProvider(handle: number): void;
	$unregisterWorkspaceCommentProvider(handle: number): void;
110
	$onDidCommentThreadsChange(handle: number, event: modes.CommentThreadChangedEvent): void;
M
Matt Bierner 已提交
111 112
}

113
export interface MainThreadConfigurationShape extends IDisposable {
114 115
	$updateConfigurationOption(target: ConfigurationTarget, key: string, value: any, resource: UriComponents): TPromise<void>;
	$removeConfigurationOption(target: ConfigurationTarget, key: string, resource: UriComponents): TPromise<void>;
116 117
}

118
export interface MainThreadDiagnosticsShape extends IDisposable {
119 120
	$changeMany(owner: string, entries: [UriComponents, IMarkerData[]][]): void;
	$clear(owner: string): void;
121 122
}

123
export interface MainThreadDialogOpenOptions {
124
	defaultUri?: UriComponents;
125
	openLabel?: string;
126 127 128
	canSelectFiles?: boolean;
	canSelectFolders?: boolean;
	canSelectMany?: boolean;
J
Johannes Rieken 已提交
129
	filters?: { [name: string]: string[] };
130 131
}

132
export interface MainThreadDialogSaveOptions {
133
	defaultUri?: UriComponents;
134
	saveLabel?: string;
J
Johannes Rieken 已提交
135
	filters?: { [name: string]: string[] };
136 137
}

138
export interface MainThreadDiaglogsShape extends IDisposable {
139 140
	$showOpenDialog(options: MainThreadDialogOpenOptions): Thenable<string[]>;
	$showSaveDialog(options: MainThreadDialogSaveOptions): Thenable<string>;
141 142
}

143 144 145
export interface MainThreadDecorationsShape extends IDisposable {
	$registerDecorationProvider(handle: number, label: string): void;
	$unregisterDecorationProvider(handle: number): void;
146
	$onDidChange(handle: number, resources: UriComponents[]): void;
147 148
}

149
export interface MainThreadDocumentContentProvidersShape extends IDisposable {
150 151
	$registerTextContentProvider(handle: number, scheme: string): void;
	$unregisterTextContentProvider(handle: number): void;
152
	$onVirtualDocumentChange(uri: UriComponents, value: string): void;
153 154
}

155
export interface MainThreadDocumentsShape extends IDisposable {
J
Johannes Rieken 已提交
156
	$tryCreateDocument(options?: { language?: string; content?: string; }): TPromise<UriComponents>;
157
	$tryOpenDocument(uri: UriComponents): TPromise<void>;
158
	$trySaveDocument(uri: UriComponents): TPromise<boolean>;
159 160
}

161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190
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;
}

191
export interface ITextDocumentShowOptions {
192
	position?: EditorViewColumn;
193 194
	preserveFocus?: boolean;
	pinned?: boolean;
195
	selection?: IRange;
196 197
}

198
export interface MainThreadTextEditorsShape extends IDisposable {
199
	$tryShowTextDocument(resource: UriComponents, options: ITextDocumentShowOptions): TPromise<string>;
200 201
	$registerTextEditorDecorationType(key: string, options: editorCommon.IDecorationRenderOptions): void;
	$removeTextEditorDecorationType(key: string): void;
202
	$tryShowEditor(id: string, position: EditorViewColumn): TPromise<void>;
203
	$tryHideEditor(id: string): TPromise<void>;
204 205 206 207 208
	$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>;
209
	$tryApplyEdits(id: string, modelVersionId: number, edits: ISingleEditOperation[], opts: IApplyEditsOptions): TPromise<boolean>;
210
	$tryApplyWorkspaceEdit(workspaceEditDto: WorkspaceEditDto): TPromise<boolean>;
211
	$tryInsertSnippet(id: string, template: string, selections: IRange[], opts: IUndoStopOptions): TPromise<boolean>;
212
	$getDiffInformation(id: string): TPromise<editorCommon.ILineChange[]>;
213 214
}

215
export interface MainThreadTreeViewsShape extends IDisposable {
S
Sandeep Somavarapu 已提交
216
	$registerTreeViewDataProvider(treeViewId: string): void;
S
Sandeep Somavarapu 已提交
217
	$refresh(treeViewId: string, itemsToRefresh?: { [treeItemHandle: string]: ITreeItem }): TPromise<void>;
S
Sandeep Somavarapu 已提交
218
	$reveal(treeViewId: string, treeItem: ITreeItem, parentChain: ITreeItem[], options?: { select?: boolean }): TPromise<void>;
219 220
}

221
export interface MainThreadErrorsShape extends IDisposable {
222
	$onUnexpectedError(err: any | SerializedError): void;
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 256 257 258 259 260 261 262 263
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 已提交
264 265 266 267 268
export interface ISerializedDocumentFilter {
	$serialized: true;
	language?: string;
	scheme?: string;
	pattern?: vscode.GlobPattern;
269
	exclusive?: boolean;
A
Alex Dima 已提交
270 271
}

272
export interface MainThreadLanguageFeaturesShape extends IDisposable {
273
	$unregister(handle: number): void;
274
	$registerOutlineSupport(handle: number, selector: ISerializedDocumentFilter[], extensionId: string): void;
A
Alex Dima 已提交
275
	$registerCodeLensSupport(handle: number, selector: ISerializedDocumentFilter[], eventHandle: number): void;
276
	$emitCodeLensEvent(eventHandle: number, event?: any): void;
A
Alex Dima 已提交
277 278 279 280 281 282
	$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;
283
	$registerQuickFixSupport(handle: number, selector: ISerializedDocumentFilter[], supportedKinds?: string[]): void;
A
Alex Dima 已提交
284 285 286
	$registerDocumentFormattingSupport(handle: number, selector: ISerializedDocumentFilter[]): void;
	$registerRangeFormattingSupport(handle: number, selector: ISerializedDocumentFilter[]): void;
	$registerOnTypeFormattingSupport(handle: number, selector: ISerializedDocumentFilter[], autoFormatTriggerCharacters: string[]): void;
287
	$registerNavigateTypeSupport(handle: number): void;
A
Alex Dima 已提交
288 289 290 291 292
	$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;
293
	$registerFoldingRangeProvider(handle: number, selector: ISerializedDocumentFilter[]): void;
294
	$setLanguageConfiguration(handle: number, languageId: string, configuration: ISerializedLanguageConfiguration): void;
295 296
}

297
export interface MainThreadLanguagesShape extends IDisposable {
298
	$getLanguages(): TPromise<string[]>;
299 300
}

301
export interface MainThreadMessageOptions {
302
	extension?: IExtensionDescription;
303
	modal?: boolean;
304 305
}

306
export interface MainThreadMessageServiceShape extends IDisposable {
307
	$showMessage(severity: Severity, message: string, options: MainThreadMessageOptions, commands: { title: string; isCloseAffordance: boolean; handle: number; }[]): Thenable<number>;
308 309
}

310
export interface MainThreadOutputServiceShape extends IDisposable {
311 312 313 314 315
	$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>;
316 317
}

318
export interface MainThreadProgressShape extends IDisposable {
319

320 321 322
	$startProgress(handle: number, options: IProgressOptions): void;
	$progressReport(handle: number, message: IProgressStep): void;
	$progressEnd(handle: number): void;
323 324
}

325
export interface MainThreadTerminalServiceShape extends IDisposable {
326
	$createTerminal(name?: string, shellPath?: string, shellArgs?: string[], cwd?: string, env?: { [key: string]: string }, waitOnExit?: boolean): TPromise<number>;
327 328 329 330
	$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 已提交
331
	$registerOnDataListener(terminalId: number): void;
332 333 334 335

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

339
export interface MyQuickPickItems extends IQuickPickItem {
340 341
	handle: number;
}
342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400

export type TransferQuickInput = TransferQuickPick | TransferInputBox;

export interface BaseTransferQuickInput {

	id: number;

	type?: 'quickPick' | 'inputBox';

	enabled?: boolean;

	busy?: boolean;

	visible?: boolean;
}

export interface TransferQuickPick extends BaseTransferQuickInput {

	type?: 'quickPick';

	value?: string;

	placeholder?: string;

	commands?: TransferQuickInputCommand[];

	items?: MyQuickPickItems[];

	canSelectMany?: boolean;

	ignoreFocusOut?: boolean;

	matchOnDescription?: boolean;

	matchOnDetail?: boolean;
}

export interface TransferInputBox extends BaseTransferQuickInput {

	type?: 'inputBox';

	value?: string;

	placeholder?: string;

	password?: boolean;

	commands?: TransferQuickInputCommand[];

	prompt?: string;

	validationMessage?: string;
}

export interface TransferQuickInputCommand {
	iconPath: { light: string; dark: string; };
	tooltip?: string | undefined;
}

401
export interface MainThreadQuickOpenShape extends IDisposable {
402
	$show(options: IPickOptions): TPromise<number | number[]>;
403 404
	$setItems(items: MyQuickPickItems[]): TPromise<any>;
	$setError(error: Error): TPromise<any>;
405 406 407
	$input(options: vscode.InputBoxOptions, validateInput: boolean): TPromise<string>;
	$createOrUpdate(params: TransferQuickInput): TPromise<void>;
	$dispose(id: number): TPromise<void>;
408 409
}

410
export interface MainThreadStatusBarShape extends IDisposable {
411
	$setEntry(id: number, extensionId: string, text: string, tooltip: string, command: string, color: string | ThemeColor, alignment: MainThreadStatusBarAlignment, priority: number): void;
412
	$dispose(id: number): void;
413 414
}

415
export interface MainThreadStorageShape extends IDisposable {
416
	$getValue<T>(shared: boolean, key: string): TPromise<T>;
417
	$setValue(shared: boolean, key: string, value: any): TPromise<void>;
418 419
}

420
export interface MainThreadTelemetryShape extends IDisposable {
421
	$publicLog(eventName: string, data?: any): void;
422 423
}

424
export type WebviewPanelHandle = string;
M
Matt Bierner 已提交
425 426

export interface MainThreadWebviewsShape extends IDisposable {
427
	$createWebviewPanel(handle: WebviewPanelHandle, viewType: string, title: string, viewOptions: { viewColumn: EditorViewColumn, preserveFocus: boolean }, options: vscode.WebviewPanelOptions & vscode.WebviewOptions, extensionLocation: UriComponents): void;
428
	$disposeWebview(handle: WebviewPanelHandle): void;
429
	$reveal(handle: WebviewPanelHandle, viewColumn: EditorViewColumn | null, preserveFocus: boolean): void;
430 431
	$setTitle(handle: WebviewPanelHandle, value: string): void;
	$setHtml(handle: WebviewPanelHandle, value: string): void;
M
Matt Bierner 已提交
432
	$postMessage(handle: WebviewPanelHandle, value: any): Thenable<boolean>;
433 434 435

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

M
Matt Bierner 已提交
438
export interface ExtHostWebviewsShape {
439
	$onMessage(handle: WebviewPanelHandle, message: any): void;
440
	$onDidChangeWebviewPanelViewState(handle: WebviewPanelHandle, active: boolean, position: EditorViewColumn): void;
441
	$onDidDisposeWebviewPanel(handle: WebviewPanelHandle): Thenable<void>;
442
	$deserializeWebviewPanel(newWebviewHandle: WebviewPanelHandle, viewType: string, title: string, state: any, position: EditorViewColumn, options: vscode.WebviewOptions): Thenable<void>;
M
Matt Bierner 已提交
443 444
}

J
Joao Moreno 已提交
445
export interface MainThreadUrlsShape extends IDisposable {
J
Joao Moreno 已提交
446 447
	$registerProtocolHandler(handle: number, extensionId: string): TPromise<void>;
	$unregisterProtocolHandler(handle: number): TPromise<void>;
J
Joao Moreno 已提交
448 449 450
}

export interface ExtHostUrlsShape {
J
Joao Moreno 已提交
451
	$handleExternalUri(handle: number, uri: UriComponents): TPromise<void>;
M
Matt Bierner 已提交
452 453
}

454
export interface MainThreadWorkspaceShape extends IDisposable {
J
Johannes Rieken 已提交
455
	$startSearch(includePattern: string, includeFolder: string, excludePatternOrDisregardExcludes: string | false, maxResults: number, requestId: number): Thenable<UriComponents[]>;
456 457
	$cancelSearch(requestId: number): Thenable<boolean>;
	$saveAll(includeUntitled?: boolean): Thenable<boolean>;
458
	$updateWorkspaceFolders(extensionName: string, index: number, deleteCount: number, workspaceFoldersToAdd: { uri: UriComponents, name?: string }[]): Thenable<void>;
459
}
460

J
Johannes Rieken 已提交
461 462 463 464 465
export interface IFileChangeDto {
	resource: UriComponents;
	type: FileChangeType;
}

466
export interface MainThreadFileSystemShape extends IDisposable {
467
	$registerFileSystemProvider(handle: number, scheme: string, capabilities: FileSystemProviderCapabilities): void;
468
	$unregisterProvider(handle: number): void;
J
Johannes Rieken 已提交
469
	$onFileSystemChange(handle: number, resource: IFileChangeDto[]): void;
470
}
J
Johannes Rieken 已提交
471

472 473 474
export interface MainThreadSearchShape extends IDisposable {
	$registerSearchProvider(handle: number, scheme: string): void;
	$unregisterProvider(handle: number): void;
475
	$handleFindMatch(handle: number, session: number, data: UriComponents | IRawFileMatch2[]): void;
476
	$handleTelemetry(eventName: string, data: any): void;
477 478
}

479
export interface MainThreadTaskShape extends IDisposable {
480
	$registerTaskProvider(handle: number): TPromise<void>;
481
	$unregisterTaskProvider(handle: number): TPromise<void>;
482
	$fetchTasks(filter?: TaskFilterDTO): TPromise<TaskDTO[]>;
483
	$executeTask(task: TaskHandleDTO | TaskDTO): TPromise<TaskExecutionDTO>;
D
Dirk Baeumer 已提交
484
	$terminateTask(id: string): TPromise<void>;
485
	$registerTaskSystem(scheme: string, info: TaskSystemInfoDTO): void;
486 487
}

488
export interface MainThreadExtensionServiceShape extends IDisposable {
489
	$localShowMessage(severity: Severity, msg: string): void;
A
Alex Dima 已提交
490
	$onExtensionActivated(extensionId: string, startup: boolean, codeLoadingTime: number, activateCallTime: number, activateResolvedTime: number, activationEvent: string): void;
491
	$onExtensionActivationFailed(extensionId: string): void;
492
	$onExtensionRuntimeError(extensionId: string, error: SerializedError): void;
A
Alex Dima 已提交
493
	$addMessage(extensionId: string, severity: Severity, message: string): void;
494 495
}

J
Joao Moreno 已提交
496
export interface SCMProviderFeatures {
J
Joao Moreno 已提交
497 498
	hasQuickDiffProvider?: boolean;
	count?: number;
499 500 501
	commitTemplate?: string;
	acceptInputCommand?: modes.Command;
	statusBarCommands?: modes.Command[];
J
Joao Moreno 已提交
502 503 504 505
}

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

J
Joao Moreno 已提交
508
export type SCMRawResource = [
509
	number /*handle*/,
510
	UriComponents /*resourceUri*/,
J
Joao Moreno 已提交
511
	string[] /*icons: light, dark*/,
512
	string /*tooltip*/,
513
	boolean /*strike through*/,
514 515
	boolean /*faded*/,

J
Joao Moreno 已提交
516 517 518
	string | undefined /*source*/,
	string | undefined /*letter*/,
	ThemeColor | null /*color*/
J
Joao Moreno 已提交
519
];
520

521 522 523
export type SCMRawResourceSplice = [
	number /* start */,
	number /* delete count */,
J
Joao 已提交
524 525 526
	SCMRawResource[]
];

527 528 529 530 531
export type SCMRawResourceSplices = [
	number, /*handle*/
	SCMRawResourceSplice[]
];

532
export interface MainThreadSCMShape extends IDisposable {
533
	$registerSourceControl(handle: number, id: string, label: string, rootUri: UriComponents | undefined): void;
534 535
	$updateSourceControl(handle: number, features: SCMProviderFeatures): void;
	$unregisterSourceControl(handle: number): void;
J
Joao Moreno 已提交
536

537 538 539 540
	$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 已提交
541

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

J
Joao Moreno 已提交
544
	$setInputBoxValue(sourceControlHandle: number, value: string): void;
545
	$setInputBoxPlaceholder(sourceControlHandle: number, placeholder: string): void;
546
	$setValidationProviderIsEnabled(sourceControlHandle: number, enabled: boolean): void;
J
Joao Moreno 已提交
547 548
}

549 550
export type DebugSessionUUID = string;

551
export interface MainThreadDebugServiceShape extends IDisposable {
A
Alex Dima 已提交
552 553 554 555
	$registerDebugTypes(debugTypes: string[]): void;
	$acceptDAMessage(handle: number, message: DebugProtocol.ProtocolMessage): void;
	$acceptDAError(handle: number, name: string, message: string, stack: string): void;
	$acceptDAExit(handle: number, code: number, signal: string): void;
556
	$registerDebugConfigurationProvider(type: string, hasProvideMethod: boolean, hasResolveMethod: boolean, hasDebugAdapterExecutable: boolean, handle: number): TPromise<any>;
557
	$unregisterDebugConfigurationProvider(handle: number): TPromise<any>;
558
	$startDebugging(folder: UriComponents | undefined, nameOrConfig: string | vscode.DebugConfiguration): TPromise<boolean>;
559
	$customDebugAdapterRequest(id: DebugSessionUUID, command: string, args: any): TPromise<any>;
560
	$appendDebugConsole(value: string): TPromise<any>;
561
	$startBreakpointEvents(): TPromise<any>;
562
	$registerBreakpoints(breakpoints: (ISourceMultiBreakpointDto | IFunctionBreakpointDto)[]): TPromise<void>;
563
	$unregisterBreakpoints(breakpointIds: string[], functionBreakpointIds: string[]): TPromise<void>;
564 565
}

566 567
export interface MainThreadWindowShape extends IDisposable {
	$getWindowVisibility(): TPromise<boolean>;
568 569
}

570 571
// -- extension host

572
export interface ExtHostCommandsShape {
J
Johannes Rieken 已提交
573
	$executeContributedCommand<T>(id: string, ...args: any[]): Thenable<T>;
574
	$getContributedCommandHandlerDescriptions(): Thenable<{ [id: string]: string | ICommandHandlerDescription }>;
575 576
}

577
export interface ExtHostConfigurationShape {
578
	$acceptConfigurationChanged(data: IConfigurationData, eventData: IWorkspaceConfigurationChangeEventData): void;
579 580
}

581
export interface ExtHostDiagnosticsShape {
582 583 584

}

585
export interface ExtHostDocumentContentProvidersShape {
J
Johannes Rieken 已提交
586
	$provideTextDocumentContent(handle: number, uri: UriComponents): TPromise<string>;
587 588
}

589
export interface IModelAddedData {
590
	uri: UriComponents;
591
	versionId: number;
592 593
	lines: string[];
	EOL: string;
594 595 596
	modeId: string;
	isDirty: boolean;
}
597
export interface ExtHostDocumentsShape {
598 599 600 601
	$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;
602
	$onDidRename(oldURL: UriComponents, newURL: UriComponents): void;
603 604
}

605
export interface ExtHostDocumentSaveParticipantShape {
J
Johannes Rieken 已提交
606
	$participateInSave(resource: UriComponents, reason: SaveReason): Thenable<boolean[]>;
607 608
}

609 610
export interface ITextEditorAddData {
	id: string;
611
	documentUri: UriComponents;
612
	options: IResolvedTextEditorConfiguration;
A
Alex Dima 已提交
613
	selections: ISelection[];
614
	visibleRanges: IRange[];
615
	editorPosition: EditorViewColumn;
616 617
}
export interface ITextEditorPositionData {
618
	[id: string]: EditorViewColumn;
619
}
620 621 622
export interface IEditorPropertiesChangeData {
	options: IResolvedTextEditorConfiguration | null;
	selections: ISelectionChangeEvent | null;
623
	visibleRanges: IRange[] | null;
624 625 626 627 628 629
}
export interface ISelectionChangeEvent {
	selections: Selection[];
	source?: string;
}

630
export interface ExtHostEditorsShape {
631
	$acceptEditorPropertiesChanged(id: string, props: IEditorPropertiesChangeData): void;
632
	$acceptEditorPositionData(data: ITextEditorPositionData): void;
633 634
}

J
Johannes Rieken 已提交
635
export interface IDocumentsAndEditorsDelta {
636
	removedDocuments?: UriComponents[];
J
Johannes Rieken 已提交
637 638 639 640 641 642
	addedDocuments?: IModelAddedData[];
	removedEditors?: string[];
	addedEditors?: ITextEditorAddData[];
	newActiveEditor?: string;
}

643 644
export interface ExtHostDocumentsAndEditorsShape {
	$acceptDocumentsAndEditorsDelta(delta: IDocumentsAndEditorsDelta): void;
J
Johannes Rieken 已提交
645 646
}

647
export interface ExtHostTreeViewsShape {
648
	$getChildren(treeViewId: string, treeItemHandle?: string): TPromise<ITreeItem[]>;
649
	$setExpanded(treeViewId: string, treeItemHandle: string, expanded: boolean): void;
650
	$setSelection(treeViewId: string, treeItemHandles: string[]): void;
S
Sandeep Somavarapu 已提交
651 652
}

653 654
export interface ExtHostWorkspaceShape {
	$acceptWorkspaceData(workspace: IWorkspaceData): void;
655
}
656

657
export interface ExtHostFileSystemShape {
J
Johannes Rieken 已提交
658
	$stat(handle: number, resource: UriComponents): TPromise<IStat>;
659
	$readdir(handle: number, resource: UriComponents): TPromise<[string, FileType][]>;
660 661
	$readFile(handle: number, resource: UriComponents): TPromise<string>;
	$writeFile(handle: number, resource: UriComponents, base64Encoded: string, opts: FileWriteOptions): TPromise<void>;
662 663 664
	$rename(handle: number, resource: UriComponents, target: UriComponents, opts: FileOverwriteOptions): TPromise<void>;
	$copy(handle: number, resource: UriComponents, target: UriComponents, opts: FileOverwriteOptions): TPromise<void>;
	$mkdir(handle: number, resource: UriComponents): TPromise<void>;
665
	$delete(handle: number, resource: UriComponents): TPromise<void>;
666 667
	$watch(handle: number, session: number, resource: UriComponents, opts: IWatchOptions): void;
	$unwatch(handle: number, session: number): void;
668
}
669

670
export interface ExtHostSearchShape {
671 672
	$provideFileSearchResults(handle: number, session: number, query: IRawSearchQuery): TPromise<ISearchCompleteStats>;
	$provideTextSearchResults(handle: number, session: number, pattern: IPatternInfo, query: IRawSearchQuery): TPromise<ISearchCompleteStats>;
673 674
}

675 676
export interface ExtHostExtensionServiceShape {
	$activateByEvent(activationEvent: string): TPromise<void>;
677 678 679
}

export interface FileSystemEvents {
J
Johannes Rieken 已提交
680 681 682
	created: UriComponents[];
	changed: UriComponents[];
	deleted: UriComponents[];
683
}
684
export interface ExtHostFileSystemEventServiceShape {
685
	$onFileEvent(events: FileSystemEvents): void;
686 687
}

J
Johannes Rieken 已提交
688 689 690 691 692
export interface ObjectIdentifier {
	$ident: number;
}

export namespace ObjectIdentifier {
693
	export const name = '$ident';
J
Johannes Rieken 已提交
694
	export function mixin<T>(obj: T, id: number): T & ObjectIdentifier {
695
		Object.defineProperty(obj, name, { value: id, enumerable: true });
J
Johannes Rieken 已提交
696 697
		return <T & ObjectIdentifier>obj;
	}
698 699
	export function of(obj: any): number {
		return obj[name];
J
Johannes Rieken 已提交
700 701 702
	}
}

703 704
export interface ExtHostHeapServiceShape {
	$onGarbageCollection(ids: number[]): void;
705
}
706
export interface IRawColorInfo {
J
Joao Moreno 已提交
707
	color: [number, number, number, number];
708 709 710
	range: IRange;
}

711 712 713 714 715 716 717 718 719 720
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 {
721 722 723 724
	_id: number;
	_parentId: number;
}

725 726
export interface SuggestResultDto extends IdObject {
	suggestions: SuggestionDto[];
727 728 729
	incomplete?: boolean;
}

730 731 732
export interface LocationDto {
	uri: UriComponents;
	range: IRange;
733 734
}

735
export interface WorkspaceSymbolDto extends IdObject {
736 737 738 739 740 741 742
	name: string;
	containerName?: string;
	kind: modes.SymbolKind;
	location: LocationDto;
}

export interface WorkspaceSymbolsDto extends IdObject {
743
	symbols: WorkspaceSymbolDto[];
744 745
}

746 747 748 749 750 751
export interface ResourceFileEditDto {
	oldUri: UriComponents;
	newUri: UriComponents;
}

export interface ResourceTextEditDto {
752
	resource: UriComponents;
753 754
	modelVersionId?: number;
	edits: modes.TextEdit[];
755 756
}

757
export interface WorkspaceEditDto {
758 759 760
	edits: (ResourceFileEditDto | ResourceTextEditDto)[];

	// todo@joh reject should go into rename
761 762 763
	rejectReason?: string;
}

764 765 766 767 768 769 770 771 772 773 774 775 776 777
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;
}

778 779
export interface CodeActionDto {
	title: string;
780
	edit?: WorkspaceEditDto;
781 782
	diagnostics?: IMarkerData[];
	command?: modes.Command;
J
Johannes Rieken 已提交
783
	kind?: string;
784
}
785

786
export interface ExtHostLanguageFeaturesShape {
787
	$provideDocumentSymbols(handle: number, resource: UriComponents): TPromise<modes.DocumentSymbol[]>;
788 789
	$provideCodeLenses(handle: number, resource: UriComponents): TPromise<modes.ICodeLensSymbol[]>;
	$resolveCodeLens(handle: number, resource: UriComponents, symbol: modes.ICodeLensSymbol): TPromise<modes.ICodeLensSymbol>;
790 791 792
	$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[]>;
793 794
	$provideHover(handle: number, resource: UriComponents, position: IPosition): TPromise<modes.Hover>;
	$provideDocumentHighlights(handle: number, resource: UriComponents, position: IPosition): TPromise<modes.DocumentHighlight[]>;
795
	$provideReferences(handle: number, resource: UriComponents, position: IPosition, context: modes.ReferenceContext): TPromise<LocationDto[]>;
796
	$provideCodeActions(handle: number, resource: UriComponents, rangeOrSelection: IRange | ISelection, context: modes.CodeActionContext): TPromise<CodeActionDto[]>;
797 798 799
	$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[]>;
800
	$provideWorkspaceSymbols(handle: number, search: string): TPromise<WorkspaceSymbolsDto>;
801
	$resolveWorkspaceSymbol(handle: number, symbol: WorkspaceSymbolDto): TPromise<WorkspaceSymbolDto>;
802
	$releaseWorkspaceSymbols(handle: number, id: number): void;
803
	$provideRenameEdits(handle: number, resource: UriComponents, position: IPosition, newName: string): TPromise<WorkspaceEditDto>;
804
	$resolveRenameLocation(handle: number, resource: UriComponents, position: IPosition): TPromise<modes.RenameLocation>;
805
	$provideCompletionItems(handle: number, resource: UriComponents, position: IPosition, context: modes.SuggestContext): TPromise<SuggestResultDto>;
806
	$resolveCompletionItem(handle: number, resource: UriComponents, position: IPosition, suggestion: modes.ISuggestion): TPromise<modes.ISuggestion>;
807
	$releaseCompletionItems(handle: number, id: number): void;
808 809
	$provideSignatureHelp(handle: number, resource: UriComponents, position: IPosition): TPromise<modes.SignatureHelp>;
	$provideDocumentLinks(handle: number, resource: UriComponents): TPromise<modes.ILink[]>;
810
	$resolveDocumentLink(handle: number, link: modes.ILink): TPromise<modes.ILink>;
811 812
	$provideDocumentColors(handle: number, resource: UriComponents): TPromise<IRawColorInfo[]>;
	$provideColorPresentations(handle: number, resource: UriComponents, colorInfo: IRawColorInfo): TPromise<modes.IColorPresentation[]>;
813
	$provideFoldingRanges(handle: number, resource: UriComponents, context: modes.FoldingContext): TPromise<modes.FoldingRange[]>;
814 815
}

816 817 818
export interface ExtHostQuickOpenShape {
	$onItemSelected(handle: number): void;
	$validateInput(input: string): TPromise<string>;
819 820 821
	$onDidChangeActive(sessionId: number, handles: number[]): void;
	$onDidChangeSelection(sessionId: number, handles: number[]): void;
	$onDidAccept(sessionId: number): void;
822 823
}

824 825 826 827 828 829 830 831
export interface ShellLaunchConfigDto {
	name?: string;
	executable?: string;
	args?: string[] | string;
	cwd?: string;
	env?: { [key: string]: string };
}

832 833
export interface ExtHostTerminalServiceShape {
	$acceptTerminalClosed(id: number): void;
834
	$acceptTerminalOpened(id: number, name: string): void;
835
	$acceptTerminalProcessId(id: number, processId: number): void;
A
Alex Dima 已提交
836
	$acceptTerminalProcessData(id: number, data: string): void;
837
	$createProcess(id: number, shellLaunchConfig: ShellLaunchConfigDto, cols: number, rows: number): void;
D
Daniel Imms 已提交
838 839 840
	$acceptProcessInput(id: number, data: string): void;
	$acceptProcessResize(id: number, cols: number, rows: number): void;
	$acceptProcessShutdown(id: number): void;
841 842
}

843
export interface ExtHostSCMShape {
844
	$provideOriginalResource(sourceControlHandle: number, uri: UriComponents): TPromise<UriComponents>;
J
Joao Moreno 已提交
845
	$onInputBoxValueChange(sourceControlHandle: number, value: string): TPromise<void>;
846
	$executeResourceCommand(sourceControlHandle: number, groupHandle: number, handle: number): TPromise<void>;
847
	$validateInput(sourceControlHandle: number, value: string, cursorPosition: number): TPromise<[string, number] | undefined>;
J
Joao Moreno 已提交
848 849
}

850 851
export interface ExtHostTaskShape {
	$provideTasks(handle: number): TPromise<TaskSet>;
852 853 854 855
	$onDidStartTask(execution: TaskExecutionDTO): void;
	$onDidStartTaskProcess(value: TaskProcessStartedDTO): void;
	$onDidEndTaskProcess(value: TaskProcessEndedDTO): void;
	$OnDidEndTask(execution: TaskExecutionDTO): void;
856
	$resolveVariables(workspaceFolder: URI, variables: string[]): TPromise<any>;
857 858
}

859 860
export interface IBreakpointDto {
	type: string;
861
	id?: string;
862 863 864
	enabled: boolean;
	condition?: string;
	hitCondition?: string;
865 866 867 868 869
	logMessage?: string;
}

export interface IFunctionBreakpointDto extends IBreakpointDto {
	type: 'function';
870
	functionName: string;
871 872
}

873
export interface ISourceBreakpointDto extends IBreakpointDto {
874
	type: 'source';
875
	uri: UriComponents;
876 877
	line: number;
	character: number;
878 879
}

880 881 882 883
export interface IBreakpointsDeltaDto {
	added?: (ISourceBreakpointDto | IFunctionBreakpointDto)[];
	removed?: string[];
	changed?: (ISourceBreakpointDto | IFunctionBreakpointDto)[];
884 885
}

886 887 888 889
export interface ISourceMultiBreakpointDto {
	type: 'sourceMulti';
	uri: UriComponents;
	lines: {
890
		id: string;
891 892 893
		enabled: boolean;
		condition?: string;
		hitCondition?: string;
894
		logMessage?: string;
895 896 897
		line: number;
		character: number;
	}[];
898 899
}

900
export interface ExtHostDebugServiceShape {
A
Andre Weinand 已提交
901
	$substituteVariables(folder: UriComponents | undefined, config: IConfig): TPromise<IConfig>;
902
	$runInTerminal(args: DebugProtocol.RunInTerminalRequestArguments, config: ITerminalSettings): TPromise<void>;
A
Andre Weinand 已提交
903
	$startDASession(handle: number, debugType: string, adapterExecutableInfo: IAdapterExecutable | null, debugPort: number): TPromise<void>;
904 905
	$stopDASession(handle: number): TPromise<void>;
	$sendDAMessage(handle: number, message: DebugProtocol.ProtocolMessage): TPromise<void>;
906 907
	$resolveDebugConfiguration(handle: number, folder: UriComponents | undefined, debugConfiguration: IConfig): TPromise<IConfig>;
	$provideDebugConfigurations(handle: number, folder: UriComponents | undefined): TPromise<IConfig[]>;
908
	$debugAdapterExecutable(handle: number, folder: UriComponents | undefined): TPromise<IAdapterExecutable>;
909 910 911 912
	$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;
913
	$acceptBreakpointsDelta(delat: IBreakpointsDeltaDto): void;
914 915
}

916

917 918 919 920 921 922
export interface DecorationRequest {
	readonly id: number;
	readonly handle: number;
	readonly uri: UriComponents;
}

923
export type DecorationData = [number, boolean, string, string, ThemeColor, string];
924
export type DecorationReply = { [id: number]: DecorationData };
925 926

export interface ExtHostDecorationsShape {
927
	$provideDecorations(requests: DecorationRequest[]): TPromise<DecorationReply>;
928 929
}

930 931
export interface ExtHostWindowShape {
	$onDidChangeWindowFocus(value: boolean): void;
932 933
}

S
Sandeep Somavarapu 已提交
934
export interface ExtHostLogServiceShape {
A
Alex Dima 已提交
935
	$setLevel(level: LogLevel): void;
S
Sandeep Somavarapu 已提交
936 937
}

938 939 940 941
export interface ExtHostProgressShape {
	$acceptProgressCanceled(handle: number): void;
}

M
Matt Bierner 已提交
942
export interface ExtHostCommentsShape {
943
	$provideDocumentComments(handle: number, document: UriComponents): TPromise<modes.CommentInfo>;
944 945
	$createNewCommentThread?(handle: number, document: UriComponents, range: IRange, text: string): TPromise<modes.CommentThread>;
	$replyToCommentThread?(handle: number, document: UriComponents, range: IRange, commentThread: modes.CommentThread, text: string): TPromise<modes.CommentThread>;
946
	$provideWorkspaceComments(handle: number): TPromise<modes.CommentThread[]>;
M
Matt Bierner 已提交
947 948
}

949 950 951
// --- proxy identifiers

export const MainContext = {
952
	MainThreadCommands: <ProxyIdentifier<MainThreadCommandsShape>>createMainId<MainThreadCommandsShape>('MainThreadCommands'),
M
Matt Bierner 已提交
953
	MainThreadComments: createMainId<MainThreadCommentsShape>('MainThreadComments'),
954
	MainThreadConfiguration: createMainId<MainThreadConfigurationShape>('MainThreadConfiguration'),
955
	MainThreadDebugService: createMainId<MainThreadDebugServiceShape>('MainThreadDebugService'),
956 957 958 959
	MainThreadDecorations: createMainId<MainThreadDecorationsShape>('MainThreadDecorations'),
	MainThreadDiagnostics: createMainId<MainThreadDiagnosticsShape>('MainThreadDiagnostics'),
	MainThreadDialogs: createMainId<MainThreadDiaglogsShape>('MainThreadDiaglogs'),
	MainThreadDocuments: createMainId<MainThreadDocumentsShape>('MainThreadDocuments'),
960
	MainThreadDocumentContentProviders: createMainId<MainThreadDocumentContentProvidersShape>('MainThreadDocumentContentProviders'),
961
	MainThreadTextEditors: createMainId<MainThreadTextEditorsShape>('MainThreadTextEditors'),
962 963
	MainThreadErrors: createMainId<MainThreadErrorsShape>('MainThreadErrors'),
	MainThreadTreeViews: createMainId<MainThreadTreeViewsShape>('MainThreadTreeViews'),
964
	MainThreadLanguageFeatures: createMainId<MainThreadLanguageFeaturesShape>('MainThreadLanguageFeatures'),
965
	MainThreadLanguages: createMainId<MainThreadLanguagesShape>('MainThreadLanguages'),
966
	MainThreadMessageService: createMainId<MainThreadMessageServiceShape>('MainThreadMessageService'),
967 968
	MainThreadOutputService: createMainId<MainThreadOutputServiceShape>('MainThreadOutputService'),
	MainThreadProgress: createMainId<MainThreadProgressShape>('MainThreadProgress'),
969
	MainThreadQuickOpen: createMainId<MainThreadQuickOpenShape>('MainThreadQuickOpen'),
970
	MainThreadStatusBar: createMainId<MainThreadStatusBarShape>('MainThreadStatusBar'),
971
	MainThreadStorage: createMainId<MainThreadStorageShape>('MainThreadStorage'),
972
	MainThreadTelemetry: createMainId<MainThreadTelemetryShape>('MainThreadTelemetry'),
973
	MainThreadTerminalService: createMainId<MainThreadTerminalServiceShape>('MainThreadTerminalService'),
M
Matt Bierner 已提交
974
	MainThreadWebviews: createMainId<MainThreadWebviewsShape>('MainThreadWebviews'),
J
Joao Moreno 已提交
975
	MainThreadUrls: createMainId<MainThreadUrlsShape>('MainThreadUrls'),
976
	MainThreadWorkspace: createMainId<MainThreadWorkspaceShape>('MainThreadWorkspace'),
977
	MainThreadFileSystem: createMainId<MainThreadFileSystemShape>('MainThreadFileSystem'),
978
	MainThreadExtensionService: createMainId<MainThreadExtensionServiceShape>('MainThreadExtensionService'),
J
Joao Moreno 已提交
979
	MainThreadSCM: createMainId<MainThreadSCMShape>('MainThreadSCM'),
980
	MainThreadSearch: createMainId<MainThreadSearchShape>('MainThreadSearch'),
981
	MainThreadTask: createMainId<MainThreadTaskShape>('MainThreadTask'),
982
	MainThreadWindow: createMainId<MainThreadWindowShape>('MainThreadWindow'),
983 984 985
};

export const ExtHostContext = {
986
	ExtHostCommands: createExtId<ExtHostCommandsShape>('ExtHostCommands'),
987
	ExtHostConfiguration: createExtId<ExtHostConfigurationShape>('ExtHostConfiguration'),
988
	ExtHostDiagnostics: createExtId<ExtHostDiagnosticsShape>('ExtHostDiagnostics'),
989
	ExtHostDebugService: createExtId<ExtHostDebugServiceShape>('ExtHostDebugService'),
J
Johannes Rieken 已提交
990
	ExtHostDecorations: createExtId<ExtHostDecorationsShape>('ExtHostDecorations'),
991
	ExtHostDocumentsAndEditors: createExtId<ExtHostDocumentsAndEditorsShape>('ExtHostDocumentsAndEditors'),
992
	ExtHostDocuments: createExtId<ExtHostDocumentsShape>('ExtHostDocuments'),
J
Johannes Rieken 已提交
993
	ExtHostDocumentContentProviders: createExtId<ExtHostDocumentContentProvidersShape>('ExtHostDocumentContentProviders'),
J
Johannes Rieken 已提交
994
	ExtHostDocumentSaveParticipant: createExtId<ExtHostDocumentSaveParticipantShape>('ExtHostDocumentSaveParticipant'),
J
Johannes Rieken 已提交
995
	ExtHostEditors: createExtId<ExtHostEditorsShape>('ExtHostEditors'),
996
	ExtHostTreeViews: createExtId<ExtHostTreeViewsShape>('ExtHostTreeViews'),
J
Johannes Rieken 已提交
997
	ExtHostFileSystem: createExtId<ExtHostFileSystemShape>('ExtHostFileSystem'),
J
Johannes Rieken 已提交
998
	ExtHostFileSystemEventService: createExtId<ExtHostFileSystemEventServiceShape>('ExtHostFileSystemEventService'),
999
	ExtHostHeapService: createExtId<ExtHostHeapServiceShape>('ExtHostHeapMonitor'),
1000
	ExtHostLanguageFeatures: createExtId<ExtHostLanguageFeaturesShape>('ExtHostLanguageFeatures'),
1001 1002
	ExtHostQuickOpen: createExtId<ExtHostQuickOpenShape>('ExtHostQuickOpen'),
	ExtHostExtensionService: createExtId<ExtHostExtensionServiceShape>('ExtHostExtensionService'),
1003
	ExtHostLogService: createExtId<ExtHostLogServiceShape>('ExtHostLogService'),
1004
	ExtHostTerminalService: createExtId<ExtHostTerminalServiceShape>('ExtHostTerminalService'),
J
Joao Moreno 已提交
1005
	ExtHostSCM: createExtId<ExtHostSCMShape>('ExtHostSCM'),
1006
	ExtHostSearch: createExtId<ExtHostSearchShape>('ExtHostSearch'),
1007
	ExtHostTask: createExtId<ExtHostTaskShape>('ExtHostTask'),
1008
	ExtHostWorkspace: createExtId<ExtHostWorkspaceShape>('ExtHostWorkspace'),
1009
	ExtHostWindow: createExtId<ExtHostWindowShape>('ExtHostWindow'),
1010
	ExtHostWebviews: createExtId<ExtHostWebviewsShape>('ExtHostWebviews'),
M
Matt Bierner 已提交
1011
	ExtHostProgress: createMainId<ExtHostProgressShape>('ExtHostProgress'),
1012
	ExtHostComments: createMainId<ExtHostCommentsShape>('ExtHostComments'),
P
Peng Lyu 已提交
1013
	ExtHostUrls: createExtId<ExtHostUrlsShape>('ExtHostUrls')
1014
};