extHost.protocol.ts 40.4 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 { EditorPosition } 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';
J
Johannes Rieken 已提交
21
import { IProgressOptions, IProgressStep } from 'vs/platform/progress/common/progress';
22 23 24 25

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

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

C
Christof Marti 已提交
29
import { IPickOpenEntry, 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 } from 'vs/workbench/api/shared/tasks';
S
Sandeep Somavarapu 已提交
52

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

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

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

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

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

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

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

96 97
// --- main thread

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

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

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

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

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

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

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

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

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

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

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

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

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

export interface IApplyEditsOptions extends IUndoStopOptions {
	setEndOfLine: EndOfLine;
}

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

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

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

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

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

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

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

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

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

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

302
export interface MainThreadOutputServiceShape extends IDisposable {
303 304 305 306 307
	$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>;
308 309
}

310
export interface MainThreadProgressShape extends IDisposable {
311

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

317
export interface MainThreadTerminalServiceShape extends IDisposable {
318
	$createTerminal(name?: string, shellPath?: string, shellArgs?: string[], cwd?: string, env?: { [key: string]: string }, waitOnExit?: boolean): TPromise<number>;
319 320 321 322
	$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 已提交
323
	$registerOnDataListener(terminalId: number): void;
324 325 326 327

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

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

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

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

352
export interface MainThreadTelemetryShape extends IDisposable {
353
	$publicLog(eventName: string, data?: any): void;
354 355
}

356
export type WebviewPanelHandle = string;
M
Matt Bierner 已提交
357 358

export interface MainThreadWebviewsShape extends IDisposable {
359
	$createWebviewPanel(handle: WebviewPanelHandle, viewType: string, title: string, viewOptions: { viewColumn: EditorPosition, preserveFocus: boolean }, options: vscode.WebviewPanelOptions & vscode.WebviewOptions, extensionLocation: UriComponents): void;
360
	$disposeWebview(handle: WebviewPanelHandle): void;
361
	$reveal(handle: WebviewPanelHandle, viewColumn: EditorPosition | null, preserveFocus: boolean): void;
362 363
	$setTitle(handle: WebviewPanelHandle, value: string): void;
	$setHtml(handle: WebviewPanelHandle, value: string): void;
M
Matt Bierner 已提交
364
	$postMessage(handle: WebviewPanelHandle, value: any): Thenable<boolean>;
365 366 367

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

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

J
Joao Moreno 已提交
377
export interface MainThreadUrlsShape extends IDisposable {
J
Joao Moreno 已提交
378 379
	$registerProtocolHandler(handle: number, extensionId: string): TPromise<void>;
	$unregisterProtocolHandler(handle: number): TPromise<void>;
J
Joao Moreno 已提交
380 381 382
}

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

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

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

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

404 405 406
export interface MainThreadSearchShape extends IDisposable {
	$registerSearchProvider(handle: number, scheme: string): void;
	$unregisterProvider(handle: number): void;
407
	$handleFindMatch(handle: number, session: number, data: UriComponents | IRawFileMatch2[]): void;
408
	$handleTelemetry(eventName: string, data: any): void;
409 410
}

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

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

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

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

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

J
Joao Moreno 已提交
447 448 449
	string | undefined /*source*/,
	string | undefined /*letter*/,
	ThemeColor | null /*color*/
J
Joao Moreno 已提交
450
];
451

452 453 454
export type SCMRawResourceSplice = [
	number /* start */,
	number /* delete count */,
J
Joao 已提交
455 456 457
	SCMRawResource[]
];

458 459 460 461 462
export type SCMRawResourceSplices = [
	number, /*handle*/
	SCMRawResourceSplice[]
];

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

468 469 470 471
	$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 已提交
472

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

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

480 481
export type DebugSessionUUID = string;

482
export interface MainThreadDebugServiceShape extends IDisposable {
A
Alex Dima 已提交
483 484 485 486
	$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;
487
	$registerDebugConfigurationProvider(type: string, hasProvideMethod: boolean, hasResolveMethod: boolean, hasDebugAdapterExecutable: boolean, handle: number): TPromise<any>;
488
	$unregisterDebugConfigurationProvider(handle: number): TPromise<any>;
489
	$startDebugging(folder: UriComponents | undefined, nameOrConfig: string | vscode.DebugConfiguration): TPromise<boolean>;
490
	$customDebugAdapterRequest(id: DebugSessionUUID, command: string, args: any): TPromise<any>;
491
	$appendDebugConsole(value: string): TPromise<any>;
492
	$startBreakpointEvents(): TPromise<any>;
493
	$registerBreakpoints(breakpoints: (ISourceMultiBreakpointDto | IFunctionBreakpointDto)[]): TPromise<void>;
494
	$unregisterBreakpoints(breakpointIds: string[], functionBreakpointIds: string[]): TPromise<void>;
495 496
}

497 498
export interface MainThreadWindowShape extends IDisposable {
	$getWindowVisibility(): TPromise<boolean>;
499 500
}

501 502
// -- extension host

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

508
export interface ExtHostConfigurationShape {
509
	$acceptConfigurationChanged(data: IConfigurationData, eventData: IWorkspaceConfigurationChangeEventData): void;
510 511
}

512
export interface ExtHostDiagnosticsShape {
513 514 515

}

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

520
export interface IModelAddedData {
521
	uri: UriComponents;
522
	versionId: number;
523 524
	lines: string[];
	EOL: string;
525 526 527
	modeId: string;
	isDirty: boolean;
}
528
export interface ExtHostDocumentsShape {
529 530 531 532
	$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;
533
	$onDidRename(oldURL: UriComponents, newURL: UriComponents): void;
534 535
}

536
export interface ExtHostDocumentSaveParticipantShape {
J
Johannes Rieken 已提交
537
	$participateInSave(resource: UriComponents, reason: SaveReason): Thenable<boolean[]>;
538 539
}

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

561
export interface ExtHostEditorsShape {
562
	$acceptEditorPropertiesChanged(id: string, props: IEditorPropertiesChangeData): void;
563
	$acceptEditorPositionData(data: ITextEditorPositionData): void;
564 565
}

J
Johannes Rieken 已提交
566
export interface IDocumentsAndEditorsDelta {
567
	removedDocuments?: UriComponents[];
J
Johannes Rieken 已提交
568 569 570 571 572 573
	addedDocuments?: IModelAddedData[];
	removedEditors?: string[];
	addedEditors?: ITextEditorAddData[];
	newActiveEditor?: string;
}

574 575
export interface ExtHostDocumentsAndEditorsShape {
	$acceptDocumentsAndEditorsDelta(delta: IDocumentsAndEditorsDelta): void;
J
Johannes Rieken 已提交
576 577
}

578
export interface ExtHostTreeViewsShape {
579
	$getChildren(treeViewId: string, treeItemHandle?: string): TPromise<ITreeItem[]>;
580
	$setExpanded(treeViewId: string, treeItemHandle: string, expanded: boolean): void;
581
	$setSelection(treeViewId: string, treeItemHandles: string[]): void;
S
Sandeep Somavarapu 已提交
582 583
}

584 585
export interface ExtHostWorkspaceShape {
	$acceptWorkspaceData(workspace: IWorkspaceData): void;
586
}
587

588
export interface ExtHostFileSystemShape {
J
Johannes Rieken 已提交
589
	$stat(handle: number, resource: UriComponents): TPromise<IStat>;
590
	$readdir(handle: number, resource: UriComponents): TPromise<[string, FileType][]>;
591 592
	$readFile(handle: number, resource: UriComponents): TPromise<string>;
	$writeFile(handle: number, resource: UriComponents, base64Encoded: string, opts: FileWriteOptions): TPromise<void>;
593 594 595
	$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>;
596
	$delete(handle: number, resource: UriComponents): TPromise<void>;
597 598
	$watch(handle: number, session: number, resource: UriComponents, opts: IWatchOptions): void;
	$unwatch(handle: number, session: number): void;
599
}
600

601
export interface ExtHostSearchShape {
602 603
	$provideFileSearchResults(handle: number, session: number, query: IRawSearchQuery): TPromise<ISearchCompleteStats>;
	$provideTextSearchResults(handle: number, session: number, pattern: IPatternInfo, query: IRawSearchQuery): TPromise<ISearchCompleteStats>;
604 605
}

606 607
export interface ExtHostExtensionServiceShape {
	$activateByEvent(activationEvent: string): TPromise<void>;
608 609 610
}

export interface FileSystemEvents {
J
Johannes Rieken 已提交
611 612 613
	created: UriComponents[];
	changed: UriComponents[];
	deleted: UriComponents[];
614
}
615
export interface ExtHostFileSystemEventServiceShape {
616
	$onFileEvent(events: FileSystemEvents): void;
617 618
}

J
Johannes Rieken 已提交
619 620 621 622 623
export interface ObjectIdentifier {
	$ident: number;
}

export namespace ObjectIdentifier {
624
	export const name = '$ident';
J
Johannes Rieken 已提交
625
	export function mixin<T>(obj: T, id: number): T & ObjectIdentifier {
626
		Object.defineProperty(obj, name, { value: id, enumerable: true });
J
Johannes Rieken 已提交
627 628
		return <T & ObjectIdentifier>obj;
	}
629 630
	export function of(obj: any): number {
		return obj[name];
J
Johannes Rieken 已提交
631 632 633
	}
}

634 635
export interface ExtHostHeapServiceShape {
	$onGarbageCollection(ids: number[]): void;
636
}
637
export interface IRawColorInfo {
J
Joao Moreno 已提交
638
	color: [number, number, number, number];
639 640 641
	range: IRange;
}

642 643 644 645 646 647 648 649 650 651
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 {
652 653 654 655
	_id: number;
	_parentId: number;
}

656 657
export interface SuggestResultDto extends IdObject {
	suggestions: SuggestionDto[];
658 659 660
	incomplete?: boolean;
}

661 662 663
export interface LocationDto {
	uri: UriComponents;
	range: IRange;
664 665
}

666 667 668 669 670
export interface SymbolInformationDto extends IdObject {
	name: string;
	containerName?: string;
	kind: modes.SymbolKind;
	location: LocationDto;
J
Johannes Rieken 已提交
671 672
	definingRange: IRange;
	children?: SymbolInformationDto[];
673 674 675 676 677 678
}

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

679 680 681 682 683 684
export interface ResourceFileEditDto {
	oldUri: UriComponents;
	newUri: UriComponents;
}

export interface ResourceTextEditDto {
685
	resource: UriComponents;
686 687
	modelVersionId?: number;
	edits: modes.TextEdit[];
688 689
}

690
export interface WorkspaceEditDto {
691 692 693
	edits: (ResourceFileEditDto | ResourceTextEditDto)[];

	// todo@joh reject should go into rename
694 695 696
	rejectReason?: string;
}

697 698 699 700 701 702 703 704 705 706 707 708 709 710
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;
}

711 712
export interface CodeActionDto {
	title: string;
713
	edit?: WorkspaceEditDto;
714 715
	diagnostics?: IMarkerData[];
	command?: modes.Command;
J
Johannes Rieken 已提交
716
	kind?: string;
717
}
718

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

749 750 751
export interface ExtHostQuickOpenShape {
	$onItemSelected(handle: number): void;
	$validateInput(input: string): TPromise<string>;
752 753
}

754 755 756 757 758 759 760 761
export interface ShellLaunchConfigDto {
	name?: string;
	executable?: string;
	args?: string[] | string;
	cwd?: string;
	env?: { [key: string]: string };
}

762 763
export interface ExtHostTerminalServiceShape {
	$acceptTerminalClosed(id: number): void;
764
	$acceptTerminalOpened(id: number, name: string): void;
765
	$acceptTerminalProcessId(id: number, processId: number): void;
A
Alex Dima 已提交
766
	$acceptTerminalProcessData(id: number, data: string): void;
767
	$createProcess(id: number, shellLaunchConfig: ShellLaunchConfigDto, cols: number, rows: number): void;
D
Daniel Imms 已提交
768 769 770
	$acceptProcessInput(id: number, data: string): void;
	$acceptProcessResize(id: number, cols: number, rows: number): void;
	$acceptProcessShutdown(id: number): void;
771 772
}

773
export interface ExtHostSCMShape {
774
	$provideOriginalResource(sourceControlHandle: number, uri: UriComponents): TPromise<UriComponents>;
J
Joao Moreno 已提交
775
	$onInputBoxValueChange(sourceControlHandle: number, value: string): TPromise<void>;
776
	$executeResourceCommand(sourceControlHandle: number, groupHandle: number, handle: number): TPromise<void>;
777
	$validateInput(sourceControlHandle: number, value: string, cursorPosition: number): TPromise<[string, number] | undefined>;
J
Joao Moreno 已提交
778 779
}

780 781
export interface ExtHostTaskShape {
	$provideTasks(handle: number): TPromise<TaskSet>;
782 783 784 785
	$onDidStartTask(execution: TaskExecutionDTO): void;
	$onDidStartTaskProcess(value: TaskProcessStartedDTO): void;
	$onDidEndTaskProcess(value: TaskProcessEndedDTO): void;
	$OnDidEndTask(execution: TaskExecutionDTO): void;
786 787
}

788 789
export interface IBreakpointDto {
	type: string;
790
	id?: string;
791 792 793
	enabled: boolean;
	condition?: string;
	hitCondition?: string;
794 795 796 797 798
	logMessage?: string;
}

export interface IFunctionBreakpointDto extends IBreakpointDto {
	type: 'function';
799
	functionName: string;
800 801
}

802
export interface ISourceBreakpointDto extends IBreakpointDto {
803
	type: 'source';
804
	uri: UriComponents;
805 806
	line: number;
	character: number;
807 808
}

809 810 811 812
export interface IBreakpointsDeltaDto {
	added?: (ISourceBreakpointDto | IFunctionBreakpointDto)[];
	removed?: string[];
	changed?: (ISourceBreakpointDto | IFunctionBreakpointDto)[];
813 814
}

815 816 817 818
export interface ISourceMultiBreakpointDto {
	type: 'sourceMulti';
	uri: UriComponents;
	lines: {
819
		id: string;
820 821 822
		enabled: boolean;
		condition?: string;
		hitCondition?: string;
823
		logMessage?: string;
824 825 826
		line: number;
		character: number;
	}[];
827 828
}

829
export interface ExtHostDebugServiceShape {
A
Andre Weinand 已提交
830
	$substituteVariables(folder: UriComponents | undefined, config: IConfig): TPromise<IConfig>;
831
	$runInTerminal(args: DebugProtocol.RunInTerminalRequestArguments, config: ITerminalSettings): TPromise<void>;
A
Andre Weinand 已提交
832
	$startDASession(handle: number, debugType: string, adapterExecutableInfo: IAdapterExecutable | null, debugPort: number): TPromise<void>;
833 834
	$stopDASession(handle: number): TPromise<void>;
	$sendDAMessage(handle: number, message: DebugProtocol.ProtocolMessage): TPromise<void>;
835 836
	$resolveDebugConfiguration(handle: number, folder: UriComponents | undefined, debugConfiguration: IConfig): TPromise<IConfig>;
	$provideDebugConfigurations(handle: number, folder: UriComponents | undefined): TPromise<IConfig[]>;
837
	$debugAdapterExecutable(handle: number, folder: UriComponents | undefined): TPromise<IAdapterExecutable>;
838 839 840 841
	$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;
842
	$acceptBreakpointsDelta(delat: IBreakpointsDeltaDto): void;
843 844
}

845

846 847 848 849 850 851
export interface DecorationRequest {
	readonly id: number;
	readonly handle: number;
	readonly uri: UriComponents;
}

852
export type DecorationData = [number, boolean, string, string, ThemeColor, string];
853
export type DecorationReply = { [id: number]: DecorationData };
854 855

export interface ExtHostDecorationsShape {
856
	$provideDecorations(requests: DecorationRequest[]): TPromise<DecorationReply>;
857 858
}

859 860
export interface ExtHostWindowShape {
	$onDidChangeWindowFocus(value: boolean): void;
861 862
}

S
Sandeep Somavarapu 已提交
863
export interface ExtHostLogServiceShape {
A
Alex Dima 已提交
864
	$setLevel(level: LogLevel): void;
S
Sandeep Somavarapu 已提交
865 866
}

867 868 869 870
export interface ExtHostProgressShape {
	$acceptProgressCanceled(handle: number): void;
}

871 872 873
// --- proxy identifiers

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

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