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

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

9 10
import * as vscode from 'vscode';

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

15
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';
D
Daniel Imms 已提交
52
import { ITerminalDimensions } from 'vs/workbench/parts/terminal/common/terminal';
S
Sandeep Somavarapu 已提交
53

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

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

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

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

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

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

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

97 98
// --- main thread

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

319
export interface MainThreadProgressShape extends IDisposable {
320

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

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

335
	// Process
336 337 338
	$sendProcessTitle(terminalId: number, title: string): void;
	$sendProcessData(terminalId: number, data: string): void;
	$sendProcessPid(terminalId: number, pid: number): void;
D
Daniel Imms 已提交
339
	$sendProcessExit(terminalId: number, exitCode: number): void;
340 341 342

	// Renderer
	$terminalRendererSetName(terminalId: number, name: string): void;
D
Daniel Imms 已提交
343
	$terminalRendererSetDimensions(terminalId: number, dimensions: ITerminalDimensions): void;
344
	$terminalRendererWrite(terminalId: number, text: string): void;
D
Daniel Imms 已提交
345
	$terminalRendererRegisterOnInputListener(terminalId: number): void;
D
Daniel Imms 已提交
346 347
}

C
Christof Marti 已提交
348 349 350 351 352
export interface TransferQuickPickItems extends IQuickPickItem {
	handle: number;
}

export interface TransferQuickInputButton extends IQuickInputButton {
353 354
	handle: number;
}
355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378

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 已提交
379
	buttons?: TransferQuickInputButton[];
380

C
Christof Marti 已提交
381
	items?: TransferQuickPickItems[];
382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401

	canSelectMany?: boolean;

	ignoreFocusOut?: boolean;

	matchOnDescription?: boolean;

	matchOnDetail?: boolean;
}

export interface TransferInputBox extends BaseTransferQuickInput {

	type?: 'inputBox';

	value?: string;

	placeholder?: string;

	password?: boolean;

C
Christof Marti 已提交
402
	buttons?: TransferQuickInputButton[];
403 404 405 406 407 408

	prompt?: string;

	validationMessage?: string;
}

409
export interface MainThreadQuickOpenShape extends IDisposable {
410
	$show(options: IPickOptions): TPromise<number | number[]>;
C
Christof Marti 已提交
411
	$setItems(items: TransferQuickPickItems[]): TPromise<any>;
412
	$setError(error: Error): TPromise<any>;
413 414 415
	$input(options: vscode.InputBoxOptions, validateInput: boolean): TPromise<string>;
	$createOrUpdate(params: TransferQuickInput): TPromise<void>;
	$dispose(id: number): TPromise<void>;
416 417
}

418
export interface MainThreadStatusBarShape extends IDisposable {
419
	$setEntry(id: number, extensionId: string, text: string, tooltip: string, command: string, color: string | ThemeColor, alignment: MainThreadStatusBarAlignment, priority: number): void;
420
	$dispose(id: number): void;
421 422
}

423
export interface MainThreadStorageShape extends IDisposable {
424
	$getValue<T>(shared: boolean, key: string): TPromise<T>;
425
	$setValue(shared: boolean, key: string, value: any): TPromise<void>;
426 427
}

428
export interface MainThreadTelemetryShape extends IDisposable {
429
	$publicLog(eventName: string, data?: any): void;
430 431
}

432
export type WebviewPanelHandle = string;
M
Matt Bierner 已提交
433 434

export interface MainThreadWebviewsShape extends IDisposable {
435
	$createWebviewPanel(handle: WebviewPanelHandle, viewType: string, title: string, viewOptions: { viewColumn: EditorViewColumn, preserveFocus: boolean }, options: vscode.WebviewPanelOptions & vscode.WebviewOptions, extensionLocation: UriComponents): void;
436
	$disposeWebview(handle: WebviewPanelHandle): void;
437
	$reveal(handle: WebviewPanelHandle, viewColumn: EditorViewColumn | null, preserveFocus: boolean): void;
438 439
	$setTitle(handle: WebviewPanelHandle, value: string): void;
	$setHtml(handle: WebviewPanelHandle, value: string): void;
440
	$setOptions(handle: WebviewPanelHandle, options: vscode.WebviewOptions): void;
M
Matt Bierner 已提交
441
	$postMessage(handle: WebviewPanelHandle, value: any): Thenable<boolean>;
442 443 444

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

M
Matt Bierner 已提交
447
export interface ExtHostWebviewsShape {
448
	$onMessage(handle: WebviewPanelHandle, message: any): void;
449
	$onDidChangeWebviewPanelViewState(handle: WebviewPanelHandle, active: boolean, position: EditorViewColumn): void;
450
	$onDidDisposeWebviewPanel(handle: WebviewPanelHandle): Thenable<void>;
451
	$deserializeWebviewPanel(newWebviewHandle: WebviewPanelHandle, viewType: string, title: string, state: any, position: EditorViewColumn, options: vscode.WebviewOptions): Thenable<void>;
M
Matt Bierner 已提交
452 453
}

J
Joao Moreno 已提交
454
export interface MainThreadUrlsShape extends IDisposable {
J
Joao Moreno 已提交
455 456
	$registerProtocolHandler(handle: number, extensionId: string): TPromise<void>;
	$unregisterProtocolHandler(handle: number): TPromise<void>;
J
Joao Moreno 已提交
457 458 459
}

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

463
export interface MainThreadWorkspaceShape extends IDisposable {
J
Johannes Rieken 已提交
464
	$startSearch(includePattern: string, includeFolder: string, excludePatternOrDisregardExcludes: string | false, maxResults: number, requestId: number): Thenable<UriComponents[]>;
465 466
	$cancelSearch(requestId: number): Thenable<boolean>;
	$saveAll(includeUntitled?: boolean): Thenable<boolean>;
467
	$updateWorkspaceFolders(extensionName: string, index: number, deleteCount: number, workspaceFoldersToAdd: { uri: UriComponents, name?: string }[]): Thenable<void>;
468
}
469

J
Johannes Rieken 已提交
470 471 472 473 474
export interface IFileChangeDto {
	resource: UriComponents;
	type: FileChangeType;
}

475
export interface MainThreadFileSystemShape extends IDisposable {
476
	$registerFileSystemProvider(handle: number, scheme: string, capabilities: FileSystemProviderCapabilities): void;
477
	$unregisterProvider(handle: number): void;
J
Johannes Rieken 已提交
478
	$onFileSystemChange(handle: number, resource: IFileChangeDto[]): void;
479
}
J
Johannes Rieken 已提交
480

481 482 483
export interface MainThreadSearchShape extends IDisposable {
	$registerSearchProvider(handle: number, scheme: string): void;
	$unregisterProvider(handle: number): void;
484
	$handleFindMatch(handle: number, session: number, data: UriComponents | IRawFileMatch2[]): void;
485
	$handleTelemetry(eventName: string, data: any): void;
486 487
}

488
export interface MainThreadTaskShape extends IDisposable {
489
	$registerTaskProvider(handle: number): TPromise<void>;
490
	$unregisterTaskProvider(handle: number): TPromise<void>;
491
	$fetchTasks(filter?: TaskFilterDTO): TPromise<TaskDTO[]>;
492
	$executeTask(task: TaskHandleDTO | TaskDTO): TPromise<TaskExecutionDTO>;
D
Dirk Baeumer 已提交
493
	$terminateTask(id: string): TPromise<void>;
494
	$registerTaskSystem(scheme: string, info: TaskSystemInfoDTO): void;
495 496
}

497
export interface MainThreadExtensionServiceShape extends IDisposable {
498
	$localShowMessage(severity: Severity, msg: string): void;
A
Alex Dima 已提交
499
	$onExtensionActivated(extensionId: string, startup: boolean, codeLoadingTime: number, activateCallTime: number, activateResolvedTime: number, activationEvent: string): void;
500
	$onExtensionActivationFailed(extensionId: string): void;
501
	$onExtensionRuntimeError(extensionId: string, error: SerializedError): void;
A
Alex Dima 已提交
502
	$addMessage(extensionId: string, severity: Severity, message: string): void;
503 504
}

J
Joao Moreno 已提交
505
export interface SCMProviderFeatures {
J
Joao Moreno 已提交
506 507
	hasQuickDiffProvider?: boolean;
	count?: number;
508 509 510
	commitTemplate?: string;
	acceptInputCommand?: modes.Command;
	statusBarCommands?: modes.Command[];
J
Joao Moreno 已提交
511 512 513 514
}

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

J
Joao Moreno 已提交
517
export type SCMRawResource = [
518
	number /*handle*/,
519
	UriComponents /*resourceUri*/,
J
Joao Moreno 已提交
520
	string[] /*icons: light, dark*/,
521
	string /*tooltip*/,
522
	boolean /*strike through*/,
523 524
	boolean /*faded*/,

J
Joao Moreno 已提交
525 526 527
	string | undefined /*source*/,
	string | undefined /*letter*/,
	ThemeColor | null /*color*/
J
Joao Moreno 已提交
528
];
529

530 531 532
export type SCMRawResourceSplice = [
	number /* start */,
	number /* delete count */,
J
Joao 已提交
533 534 535
	SCMRawResource[]
];

536 537 538 539 540
export type SCMRawResourceSplices = [
	number, /*handle*/
	SCMRawResourceSplice[]
];

541
export interface MainThreadSCMShape extends IDisposable {
542
	$registerSourceControl(handle: number, id: string, label: string, rootUri: UriComponents | undefined): void;
543 544
	$updateSourceControl(handle: number, features: SCMProviderFeatures): void;
	$unregisterSourceControl(handle: number): void;
J
Joao Moreno 已提交
545

546 547 548 549
	$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 已提交
550

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

J
Joao Moreno 已提交
553
	$setInputBoxValue(sourceControlHandle: number, value: string): void;
554
	$setInputBoxPlaceholder(sourceControlHandle: number, placeholder: string): void;
555
	$setValidationProviderIsEnabled(sourceControlHandle: number, enabled: boolean): void;
J
Joao Moreno 已提交
556 557
}

558 559
export type DebugSessionUUID = string;

560
export interface MainThreadDebugServiceShape extends IDisposable {
A
Alex Dima 已提交
561 562 563 564
	$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;
565
	$registerDebugConfigurationProvider(type: string, hasProvideMethod: boolean, hasResolveMethod: boolean, hasDebugAdapterExecutable: boolean, handle: number): TPromise<any>;
566
	$unregisterDebugConfigurationProvider(handle: number): TPromise<any>;
567
	$startDebugging(folder: UriComponents | undefined, nameOrConfig: string | vscode.DebugConfiguration): TPromise<boolean>;
568
	$customDebugAdapterRequest(id: DebugSessionUUID, command: string, args: any): TPromise<any>;
569
	$appendDebugConsole(value: string): TPromise<any>;
570
	$startBreakpointEvents(): TPromise<any>;
571
	$registerBreakpoints(breakpoints: (ISourceMultiBreakpointDto | IFunctionBreakpointDto)[]): TPromise<void>;
572
	$unregisterBreakpoints(breakpointIds: string[], functionBreakpointIds: string[]): TPromise<void>;
573 574
}

575 576
export interface MainThreadWindowShape extends IDisposable {
	$getWindowVisibility(): TPromise<boolean>;
577 578
}

579 580
// -- extension host

581
export interface ExtHostCommandsShape {
J
Johannes Rieken 已提交
582
	$executeContributedCommand<T>(id: string, ...args: any[]): Thenable<T>;
583
	$getContributedCommandHandlerDescriptions(): Thenable<{ [id: string]: string | ICommandHandlerDescription }>;
584 585
}

586
export interface ExtHostConfigurationShape {
587
	$acceptConfigurationChanged(data: IConfigurationData, eventData: IWorkspaceConfigurationChangeEventData): void;
588 589
}

590
export interface ExtHostDiagnosticsShape {
591 592 593

}

594
export interface ExtHostDocumentContentProvidersShape {
J
Johannes Rieken 已提交
595
	$provideTextDocumentContent(handle: number, uri: UriComponents): TPromise<string>;
596 597
}

598
export interface IModelAddedData {
599
	uri: UriComponents;
600
	versionId: number;
601 602
	lines: string[];
	EOL: string;
603 604 605
	modeId: string;
	isDirty: boolean;
}
606
export interface ExtHostDocumentsShape {
607 608 609 610
	$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;
611
	$onDidRename(oldURL: UriComponents, newURL: UriComponents): void;
612 613
}

614
export interface ExtHostDocumentSaveParticipantShape {
J
Johannes Rieken 已提交
615
	$participateInSave(resource: UriComponents, reason: SaveReason): Thenable<boolean[]>;
616 617
}

618 619
export interface ITextEditorAddData {
	id: string;
620
	documentUri: UriComponents;
621
	options: IResolvedTextEditorConfiguration;
A
Alex Dima 已提交
622
	selections: ISelection[];
623
	visibleRanges: IRange[];
624
	editorPosition: EditorViewColumn;
625 626
}
export interface ITextEditorPositionData {
627
	[id: string]: EditorViewColumn;
628
}
629 630 631
export interface IEditorPropertiesChangeData {
	options: IResolvedTextEditorConfiguration | null;
	selections: ISelectionChangeEvent | null;
632
	visibleRanges: IRange[] | null;
633 634 635 636 637 638
}
export interface ISelectionChangeEvent {
	selections: Selection[];
	source?: string;
}

639
export interface ExtHostEditorsShape {
640
	$acceptEditorPropertiesChanged(id: string, props: IEditorPropertiesChangeData): void;
641
	$acceptEditorPositionData(data: ITextEditorPositionData): void;
642 643
}

J
Johannes Rieken 已提交
644
export interface IDocumentsAndEditorsDelta {
645
	removedDocuments?: UriComponents[];
J
Johannes Rieken 已提交
646 647 648 649 650 651
	addedDocuments?: IModelAddedData[];
	removedEditors?: string[];
	addedEditors?: ITextEditorAddData[];
	newActiveEditor?: string;
}

652 653
export interface ExtHostDocumentsAndEditorsShape {
	$acceptDocumentsAndEditorsDelta(delta: IDocumentsAndEditorsDelta): void;
J
Johannes Rieken 已提交
654 655
}

656
export interface ExtHostTreeViewsShape {
657
	$getChildren(treeViewId: string, treeItemHandle?: string): TPromise<ITreeItem[]>;
658
	$setExpanded(treeViewId: string, treeItemHandle: string, expanded: boolean): void;
659
	$setSelection(treeViewId: string, treeItemHandles: string[]): void;
S
Sandeep Somavarapu 已提交
660 661
}

662 663
export interface ExtHostWorkspaceShape {
	$acceptWorkspaceData(workspace: IWorkspaceData): void;
664
}
665

666
export interface ExtHostFileSystemShape {
J
Johannes Rieken 已提交
667
	$stat(handle: number, resource: UriComponents): TPromise<IStat>;
668
	$readdir(handle: number, resource: UriComponents): TPromise<[string, FileType][]>;
669 670
	$readFile(handle: number, resource: UriComponents): TPromise<string>;
	$writeFile(handle: number, resource: UriComponents, base64Encoded: string, opts: FileWriteOptions): TPromise<void>;
671 672 673
	$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>;
674
	$delete(handle: number, resource: UriComponents): TPromise<void>;
675 676
	$watch(handle: number, session: number, resource: UriComponents, opts: IWatchOptions): void;
	$unwatch(handle: number, session: number): void;
677
}
678

679
export interface ExtHostSearchShape {
680 681
	$provideFileSearchResults(handle: number, session: number, query: IRawSearchQuery): TPromise<ISearchCompleteStats>;
	$provideTextSearchResults(handle: number, session: number, pattern: IPatternInfo, query: IRawSearchQuery): TPromise<ISearchCompleteStats>;
682 683
}

684 685
export interface ExtHostExtensionServiceShape {
	$activateByEvent(activationEvent: string): TPromise<void>;
686 687 688
}

export interface FileSystemEvents {
J
Johannes Rieken 已提交
689 690 691
	created: UriComponents[];
	changed: UriComponents[];
	deleted: UriComponents[];
692
}
693
export interface ExtHostFileSystemEventServiceShape {
694
	$onFileEvent(events: FileSystemEvents): void;
695 696
}

J
Johannes Rieken 已提交
697 698 699 700 701
export interface ObjectIdentifier {
	$ident: number;
}

export namespace ObjectIdentifier {
702
	export const name = '$ident';
J
Johannes Rieken 已提交
703
	export function mixin<T>(obj: T, id: number): T & ObjectIdentifier {
704
		Object.defineProperty(obj, name, { value: id, enumerable: true });
J
Johannes Rieken 已提交
705 706
		return <T & ObjectIdentifier>obj;
	}
707 708
	export function of(obj: any): number {
		return obj[name];
J
Johannes Rieken 已提交
709 710 711
	}
}

712 713
export interface ExtHostHeapServiceShape {
	$onGarbageCollection(ids: number[]): void;
714
}
715
export interface IRawColorInfo {
J
Joao Moreno 已提交
716
	color: [number, number, number, number];
717 718 719
	range: IRange;
}

720 721 722 723 724 725 726 727 728 729
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 {
730 731 732 733
	_id: number;
	_parentId: number;
}

734 735
export interface SuggestResultDto extends IdObject {
	suggestions: SuggestionDto[];
736 737 738
	incomplete?: boolean;
}

739 740 741
export interface LocationDto {
	uri: UriComponents;
	range: IRange;
742 743
}

744
export interface WorkspaceSymbolDto extends IdObject {
745 746 747 748 749 750 751
	name: string;
	containerName?: string;
	kind: modes.SymbolKind;
	location: LocationDto;
}

export interface WorkspaceSymbolsDto extends IdObject {
752
	symbols: WorkspaceSymbolDto[];
753 754
}

755 756 757 758 759 760
export interface ResourceFileEditDto {
	oldUri: UriComponents;
	newUri: UriComponents;
}

export interface ResourceTextEditDto {
761
	resource: UriComponents;
762 763
	modelVersionId?: number;
	edits: modes.TextEdit[];
764 765
}

766
export interface WorkspaceEditDto {
767 768 769
	edits: (ResourceFileEditDto | ResourceTextEditDto)[];

	// todo@joh reject should go into rename
770 771 772
	rejectReason?: string;
}

773 774 775 776 777 778 779 780 781 782 783 784 785 786
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;
}

787 788
export interface CodeActionDto {
	title: string;
789
	edit?: WorkspaceEditDto;
790 791
	diagnostics?: IMarkerData[];
	command?: modes.Command;
J
Johannes Rieken 已提交
792
	kind?: string;
793
}
794

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

825 826 827
export interface ExtHostQuickOpenShape {
	$onItemSelected(handle: number): void;
	$validateInput(input: string): TPromise<string>;
828 829 830
	$onDidChangeActive(sessionId: number, handles: number[]): void;
	$onDidChangeSelection(sessionId: number, handles: number[]): void;
	$onDidAccept(sessionId: number): void;
C
Christof Marti 已提交
831
	$onDidTriggerButton(sessionId: number, handle: number): void;
832 833
}

834 835 836 837 838 839 840 841
export interface ShellLaunchConfigDto {
	name?: string;
	executable?: string;
	args?: string[] | string;
	cwd?: string;
	env?: { [key: string]: string };
}

842 843
export interface ExtHostTerminalServiceShape {
	$acceptTerminalClosed(id: number): void;
844
	$acceptTerminalOpened(id: number, name: string): void;
845
	$acceptTerminalProcessId(id: number, processId: number): void;
A
Alex Dima 已提交
846
	$acceptTerminalProcessData(id: number, data: string): void;
D
Daniel Imms 已提交
847
	$acceptTerminalRendererInput(id: number, data: string): void;
D
Daniel Imms 已提交
848
	$acceptTerminalRendererDimensions(id: number, cols: number, rows: number): void;
849
	$createProcess(id: number, shellLaunchConfig: ShellLaunchConfigDto, cols: number, rows: number): void;
D
Daniel Imms 已提交
850 851 852
	$acceptProcessInput(id: number, data: string): void;
	$acceptProcessResize(id: number, cols: number, rows: number): void;
	$acceptProcessShutdown(id: number): void;
853 854
}

855
export interface ExtHostSCMShape {
856
	$provideOriginalResource(sourceControlHandle: number, uri: UriComponents): TPromise<UriComponents>;
J
Joao Moreno 已提交
857
	$onInputBoxValueChange(sourceControlHandle: number, value: string): TPromise<void>;
858
	$executeResourceCommand(sourceControlHandle: number, groupHandle: number, handle: number): TPromise<void>;
859
	$validateInput(sourceControlHandle: number, value: string, cursorPosition: number): TPromise<[string, number] | undefined>;
J
Joao Moreno 已提交
860 861
}

862 863
export interface ExtHostTaskShape {
	$provideTasks(handle: number): TPromise<TaskSet>;
864 865 866 867
	$onDidStartTask(execution: TaskExecutionDTO): void;
	$onDidStartTaskProcess(value: TaskProcessStartedDTO): void;
	$onDidEndTaskProcess(value: TaskProcessEndedDTO): void;
	$OnDidEndTask(execution: TaskExecutionDTO): void;
868
	$resolveVariables(workspaceFolder: UriComponents, variables: string[]): TPromise<any>;
869 870
}

871 872
export interface IBreakpointDto {
	type: string;
873
	id?: string;
874 875 876
	enabled: boolean;
	condition?: string;
	hitCondition?: string;
877 878 879 880 881
	logMessage?: string;
}

export interface IFunctionBreakpointDto extends IBreakpointDto {
	type: 'function';
882
	functionName: string;
883 884
}

885
export interface ISourceBreakpointDto extends IBreakpointDto {
886
	type: 'source';
887
	uri: UriComponents;
888 889
	line: number;
	character: number;
890 891
}

892 893 894 895
export interface IBreakpointsDeltaDto {
	added?: (ISourceBreakpointDto | IFunctionBreakpointDto)[];
	removed?: string[];
	changed?: (ISourceBreakpointDto | IFunctionBreakpointDto)[];
896 897
}

898 899 900 901
export interface ISourceMultiBreakpointDto {
	type: 'sourceMulti';
	uri: UriComponents;
	lines: {
902
		id: string;
903 904 905
		enabled: boolean;
		condition?: string;
		hitCondition?: string;
906
		logMessage?: string;
907 908 909
		line: number;
		character: number;
	}[];
910 911
}

912
export interface ExtHostDebugServiceShape {
A
Andre Weinand 已提交
913
	$substituteVariables(folder: UriComponents | undefined, config: IConfig): TPromise<IConfig>;
914
	$runInTerminal(args: DebugProtocol.RunInTerminalRequestArguments, config: ITerminalSettings): TPromise<void>;
A
Andre Weinand 已提交
915
	$startDASession(handle: number, debugType: string, adapterExecutableInfo: IAdapterExecutable | null, debugPort: number): TPromise<void>;
916 917
	$stopDASession(handle: number): TPromise<void>;
	$sendDAMessage(handle: number, message: DebugProtocol.ProtocolMessage): TPromise<void>;
918 919
	$resolveDebugConfiguration(handle: number, folder: UriComponents | undefined, debugConfiguration: IConfig): TPromise<IConfig>;
	$provideDebugConfigurations(handle: number, folder: UriComponents | undefined): TPromise<IConfig[]>;
920
	$debugAdapterExecutable(handle: number, folder: UriComponents | undefined): TPromise<IAdapterExecutable>;
921 922 923 924
	$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;
925
	$acceptBreakpointsDelta(delat: IBreakpointsDeltaDto): void;
926 927
}

928

929 930 931 932 933 934
export interface DecorationRequest {
	readonly id: number;
	readonly handle: number;
	readonly uri: UriComponents;
}

935
export type DecorationData = [number, boolean, string, string, ThemeColor, string];
936
export type DecorationReply = { [id: number]: DecorationData };
937 938

export interface ExtHostDecorationsShape {
939
	$provideDecorations(requests: DecorationRequest[]): TPromise<DecorationReply>;
940 941
}

942 943
export interface ExtHostWindowShape {
	$onDidChangeWindowFocus(value: boolean): void;
944 945
}

S
Sandeep Somavarapu 已提交
946
export interface ExtHostLogServiceShape {
A
Alex Dima 已提交
947
	$setLevel(level: LogLevel): void;
S
Sandeep Somavarapu 已提交
948 949
}

950 951 952 953
export interface ExtHostProgressShape {
	$acceptProgressCanceled(handle: number): void;
}

M
Matt Bierner 已提交
954
export interface ExtHostCommentsShape {
955
	$provideDocumentComments(handle: number, document: UriComponents): TPromise<modes.CommentInfo>;
956 957
	$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>;
958
	$provideWorkspaceComments(handle: number): TPromise<modes.CommentThread[]>;
M
Matt Bierner 已提交
959 960
}

961 962 963
// --- proxy identifiers

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

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