extHost.protocol.ts 42.7 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

C
Christof Marti 已提交
29
import { IQuickPickItem, IPickOptions, IQuickInputButton } 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
}

C
Christof Marti 已提交
339 340 341 342 343
export interface TransferQuickPickItems extends IQuickPickItem {
	handle: number;
}

export interface TransferQuickInputButton extends IQuickInputButton {
344 345
	handle: number;
}
346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369

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;

C
Christof Marti 已提交
370
	buttons?: TransferQuickInputButton[];
371

C
Christof Marti 已提交
372
	items?: TransferQuickPickItems[];
373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392

	canSelectMany?: boolean;

	ignoreFocusOut?: boolean;

	matchOnDescription?: boolean;

	matchOnDetail?: boolean;
}

export interface TransferInputBox extends BaseTransferQuickInput {

	type?: 'inputBox';

	value?: string;

	placeholder?: string;

	password?: boolean;

C
Christof Marti 已提交
393
	buttons?: TransferQuickInputButton[];
394 395 396 397 398 399

	prompt?: string;

	validationMessage?: string;
}

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

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

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

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

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

export interface MainThreadWebviewsShape extends IDisposable {
426
	$createWebviewPanel(handle: WebviewPanelHandle, viewType: string, title: string, viewOptions: { viewColumn: EditorViewColumn, preserveFocus: boolean }, options: vscode.WebviewPanelOptions & vscode.WebviewOptions, extensionLocation: UriComponents): void;
427
	$disposeWebview(handle: WebviewPanelHandle): void;
428
	$reveal(handle: WebviewPanelHandle, viewColumn: EditorViewColumn | null, preserveFocus: boolean): void;
429 430
	$setTitle(handle: WebviewPanelHandle, value: string): void;
	$setHtml(handle: WebviewPanelHandle, value: string): void;
431
	$setOptions(handle: WebviewPanelHandle, options: vscode.WebviewOptions): 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;
C
Christof Marti 已提交
822
	$onDidTriggerButton(sessionId: number, handle: number): void;
823 824
}

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

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

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

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

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

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

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

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

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

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

917

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

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

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

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

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

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

M
Matt Bierner 已提交
943
export interface ExtHostCommentsShape {
944
	$provideDocumentComments(handle: number, document: UriComponents): TPromise<modes.CommentInfo>;
945 946
	$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>;
947
	$provideWorkspaceComments(handle: number): TPromise<modes.CommentThread[]>;
M
Matt Bierner 已提交
948 949
}

950 951 952
// --- proxy identifiers

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

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