extHost.protocol.ts 46.0 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';

R
Rob Lourens 已提交
7 8
import { SerializedError } from 'vs/base/common/errors';
import { IDisposable } from 'vs/base/common/lifecycle';
9
import Severity from 'vs/base/common/severity';
10
import { URI, UriComponents } from 'vs/base/common/uri';
11
import { TPromise } from 'vs/base/common/winjs.base';
12
import { TextEditorCursorStyle } from 'vs/editor/common/config/editorOptions';
13 14
import { IPosition } from 'vs/editor/common/core/position';
import { IRange } from 'vs/editor/common/core/range';
15
import { ISelection, Selection } from 'vs/editor/common/core/selection';
R
Rob Lourens 已提交
16
import * as editorCommon from 'vs/editor/common/editorCommon';
J
Johannes Rieken 已提交
17
import { ISingleEditOperation } from 'vs/editor/common/model';
R
Rob Lourens 已提交
18 19 20 21 22 23 24
import { IModelChangedEvent } from 'vs/editor/common/model/mirrorTextModel';
import * as modes from 'vs/editor/common/modes';
import { CharacterPair, CommentRule, EnterAction } from 'vs/editor/common/modes/languageConfiguration';
import { ICommandHandlerDescription } from 'vs/platform/commands/common/commands';
import { ConfigurationTarget, IConfigurationData, IConfigurationModel } from 'vs/platform/configuration/common/configuration';
import { ConfigurationScope } from 'vs/platform/configuration/common/configurationRegistry';
import { FileChangeType, FileDeleteOptions, FileOverwriteOptions, FileSystemProviderCapabilities, FileType, FileWriteOptions, IStat, IWatchOptions } from 'vs/platform/files/common/files';
25
import { LabelRules } from 'vs/platform/label/common/label';
S
Sandeep Somavarapu 已提交
26
import { LogLevel } from 'vs/platform/log/common/log';
R
Rob Lourens 已提交
27 28
import { IMarkerData } from 'vs/platform/markers/common/markers';
import { IPickOptions, IQuickInputButton, IQuickPickItem } from 'vs/platform/quickinput/common/quickInput';
29
import { IPatternInfo, IQueryOptions, IRawFileMatch2, IRawSearchQuery, ISearchCompleteStats, ISearchQuery } from 'vs/platform/search/common/search';
R
Rob Lourens 已提交
30 31 32 33 34 35 36 37 38
import { StatusbarAlignment as MainThreadStatusBarAlignment } from 'vs/platform/statusbar/common/statusbar';
import { ITelemetryInfo } from 'vs/platform/telemetry/common/telemetry';
import { ThemeColor } from 'vs/platform/theme/common/themeService';
import { EndOfLine, IFileOperationOptions, TextEditorLineNumbersStyle } from 'vs/workbench/api/node/extHostTypes';
import { EditorViewColumn } from 'vs/workbench/api/shared/editor';
import { TaskDTO, TaskExecutionDTO, TaskFilterDTO, TaskHandleDTO, TaskProcessEndedDTO, TaskProcessStartedDTO, TaskSystemInfoDTO } from 'vs/workbench/api/shared/tasks';
import { ITreeItem } from 'vs/workbench/common/views';
import { IAdapterExecutable, IConfig, ITerminalSettings } from 'vs/workbench/parts/debug/common/debug';
import { TaskSet } from 'vs/workbench/parts/tasks/common/tasks';
D
Daniel Imms 已提交
39
import { ITerminalDimensions } from 'vs/workbench/parts/terminal/common/terminal';
R
Rob Lourens 已提交
40 41 42 43 44
import { IExtensionDescription } from 'vs/workbench/services/extensions/common/extensions';
import { createExtHostContextProxyIdentifier as createExtId, createMainContextProxyIdentifier as createMainId, IRPCProtocol, ProxyIdentifier } from 'vs/workbench/services/extensions/node/proxyIdentifier';
import { IProgressOptions, IProgressStep } from 'vs/workbench/services/progress/common/progress';
import { SaveReason } from 'vs/workbench/services/textfile/common/textfiles';
import * as vscode from 'vscode';
45
import { CancellationToken } from 'vs/base/common/cancellation';
S
Sandeep Somavarapu 已提交
46

47
export interface IEnvironment {
48
	isExtensionDevelopmentDebug: boolean;
J
Johannes Rieken 已提交
49
	appRoot: string;
50
	appSettingsHome: string;
51
	extensionDevelopmentLocationURI: URI;
52 53 54
	extensionTestsPath: string;
}

55 56
export interface IWorkspaceData {
	id: string;
57
	name: string;
58
	folders: { uri: UriComponents, name: string, index: number }[];
J
Johannes Rieken 已提交
59
	configuration?: UriComponents;
60 61
}

62 63 64
export interface IInitData {
	parentPid: number;
	environment: IEnvironment;
65
	workspace: IWorkspaceData;
66
	extensions: IExtensionDescription[];
S
Sandeep Somavarapu 已提交
67
	configuration: IConfigurationInitData;
68
	telemetryInfo: ITelemetryInfo;
S
Sandeep Somavarapu 已提交
69
	logLevel: LogLevel;
70
	logsLocation: URI;
71 72
}

S
Sandeep Somavarapu 已提交
73
export interface IConfigurationInitData extends IConfigurationData {
S
Sandeep Somavarapu 已提交
74
	configurationScopes: { [key: string]: ConfigurationScope };
S
Sandeep Somavarapu 已提交
75 76
}

77
export interface IWorkspaceConfigurationChangeEventData {
S
Sandeep Somavarapu 已提交
78 79
	changedConfiguration: IConfigurationModel;
	changedConfigurationByResource: { [folder: string]: IConfigurationModel };
80 81
}

A
Alex Dima 已提交
82
export interface IExtHostContext extends IRPCProtocol {
83 84
}

A
Alex Dima 已提交
85
export interface IMainContext extends IRPCProtocol {
86 87
}

88 89
// --- main thread

90
export interface MainThreadCommandsShape extends IDisposable {
91 92
	$registerCommand(id: string): void;
	$unregisterCommand(id: string): void;
93 94
	$executeCommand<T>(id: string, args: any[]): Thenable<T>;
	$getCommands(): Thenable<string[]>;
95 96
}

M
Matt Bierner 已提交
97
export interface MainThreadCommentsShape extends IDisposable {
98 99 100 101
	$registerDocumentCommentProvider(handle: number): void;
	$unregisterDocumentCommentProvider(handle: number): void;
	$registerWorkspaceCommentProvider(handle: number): void;
	$unregisterWorkspaceCommentProvider(handle: number): void;
102
	$onDidCommentThreadsChange(handle: number, event: modes.CommentThreadChangedEvent): void;
M
Matt Bierner 已提交
103 104
}

105
export interface MainThreadConfigurationShape extends IDisposable {
106 107
	$updateConfigurationOption(target: ConfigurationTarget, key: string, value: any, resource: UriComponents): Thenable<void>;
	$removeConfigurationOption(target: ConfigurationTarget, key: string, resource: UriComponents): Thenable<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 {
148 149 150
	$tryCreateDocument(options?: { language?: string; content?: string; }): Thenable<UriComponents>;
	$tryOpenDocument(uri: UriComponents): Thenable<void>;
	$trySaveDocument(uri: UriComponents): Thenable<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
export interface ITextDocumentShowOptions {
184
	position?: EditorViewColumn;
185 186
	preserveFocus?: boolean;
	pinned?: boolean;
187
	selection?: IRange;
188 189
}

190
export interface MainThreadTextEditorsShape extends IDisposable {
191
	$tryShowTextDocument(resource: UriComponents, options: ITextDocumentShowOptions): Thenable<string>;
192 193
	$registerTextEditorDecorationType(key: string, options: editorCommon.IDecorationRenderOptions): void;
	$removeTextEditorDecorationType(key: string): void;
194 195 196 197 198 199 200 201 202 203 204
	$tryShowEditor(id: string, position: EditorViewColumn): Thenable<void>;
	$tryHideEditor(id: string): Thenable<void>;
	$trySetOptions(id: string, options: ITextEditorConfigurationUpdate): Thenable<void>;
	$trySetDecorations(id: string, key: string, ranges: editorCommon.IDecorationOptions[]): Thenable<void>;
	$trySetDecorationsFast(id: string, key: string, ranges: number[]): Thenable<void>;
	$tryRevealRange(id: string, range: IRange, revealType: TextEditorRevealType): Thenable<void>;
	$trySetSelections(id: string, selections: ISelection[]): Thenable<void>;
	$tryApplyEdits(id: string, modelVersionId: number, edits: ISingleEditOperation[], opts: IApplyEditsOptions): Thenable<boolean>;
	$tryApplyWorkspaceEdit(workspaceEditDto: WorkspaceEditDto): Thenable<boolean>;
	$tryInsertSnippet(id: string, template: string, selections: IRange[], opts: IUndoStopOptions): Thenable<boolean>;
	$getDiffInformation(id: string): Thenable<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>;
210
	$reveal(treeViewId: string, treeItem: ITreeItem, parentChain: ITreeItem[], options: { select: boolean, focus: boolean }): Thenable<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 291
	$getLanguages(): Thenable<string[]>;
	$changeLanguage(resource: UriComponents, languageId: string): Thenable<void>;
292 293
}

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

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

303
export interface MainThreadOutputServiceShape extends IDisposable {
304 305 306 307 308 309
	$register(channelId: string, label: string, file?: UriComponents): Thenable<void>;
	$append(channelId: string, value: string): Thenable<void>;
	$clear(channelId: string): Thenable<void>;
	$reveal(channelId: string, preserveFocus: boolean): Thenable<void>;
	$close(channelId: string): Thenable<void>;
	$dispose(channelId: string): Thenable<void>;
310 311
}

312
export interface MainThreadProgressShape extends IDisposable {
313

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

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

328
	// Process
329 330 331
	$sendProcessTitle(terminalId: number, title: string): void;
	$sendProcessData(terminalId: number, data: string): void;
	$sendProcessPid(terminalId: number, pid: number): void;
D
Daniel Imms 已提交
332
	$sendProcessExit(terminalId: number, exitCode: number): void;
333 334 335

	// Renderer
	$terminalRendererSetName(terminalId: number, name: string): void;
D
Daniel Imms 已提交
336
	$terminalRendererSetDimensions(terminalId: number, dimensions: ITerminalDimensions): void;
337
	$terminalRendererWrite(terminalId: number, text: string): void;
D
Daniel Imms 已提交
338
	$terminalRendererRegisterOnInputListener(terminalId: number): void;
D
Daniel Imms 已提交
339 340
}

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

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

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

C
Christof Marti 已提交
374
	items?: TransferQuickPickItems[];
375

376 377 378 379
	activeItems?: number[];

	selectedItems?: number[];

380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398
	canSelectMany?: boolean;

	ignoreFocusOut?: boolean;

	matchOnDescription?: boolean;

	matchOnDetail?: boolean;
}

export interface TransferInputBox extends BaseTransferQuickInput {

	type?: 'inputBox';

	value?: string;

	placeholder?: string;

	password?: boolean;

C
Christof Marti 已提交
399
	buttons?: TransferQuickInputButton[];
400 401 402 403 404 405

	prompt?: string;

	validationMessage?: string;
}

406
export interface MainThreadQuickOpenShape extends IDisposable {
407
	$show(options: IPickOptions<TransferQuickPickItems>, token: CancellationToken): Thenable<number | number[]>;
408 409
	$setItems(items: TransferQuickPickItems[]): Thenable<any>;
	$setError(error: Error): Thenable<any>;
410
	$input(options: vscode.InputBoxOptions, validateInput: boolean): TPromise<string>;
411 412
	$createOrUpdate(params: TransferQuickInput): Thenable<void>;
	$dispose(id: number): Thenable<void>;
413 414
}

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

420
export interface MainThreadStorageShape extends IDisposable {
421 422
	$getValue<T>(shared: boolean, key: string): Thenable<T>;
	$setValue(shared: boolean, key: string, value: any): Thenable<void>;
423 424
}

425
export interface MainThreadTelemetryShape extends IDisposable {
426
	$publicLog(eventName: string, data?: any): void;
427 428
}

429
export type WebviewPanelHandle = string;
M
Matt Bierner 已提交
430

M
Matt Bierner 已提交
431 432 433 434 435
export interface WebviewPanelShowOptions {
	readonly viewColumn?: EditorViewColumn;
	readonly preserveFocus?: boolean;
}

M
Matt Bierner 已提交
436
export interface MainThreadWebviewsShape extends IDisposable {
M
Matt Bierner 已提交
437
	$createWebviewPanel(handle: WebviewPanelHandle, viewType: string, title: string, showOptions: WebviewPanelShowOptions, options: vscode.WebviewPanelOptions & vscode.WebviewOptions, extensionLocation: UriComponents): void;
438
	$disposeWebview(handle: WebviewPanelHandle): void;
M
Matt Bierner 已提交
439
	$reveal(handle: WebviewPanelHandle, showOptions: WebviewPanelShowOptions): void;
440
	$setTitle(handle: WebviewPanelHandle, value: string): void;
441
	$setIconPath(handle: WebviewPanelHandle, value: { light: UriComponents, dark: UriComponents } | undefined): void;
442
	$setHtml(handle: WebviewPanelHandle, value: string): void;
443
	$setOptions(handle: WebviewPanelHandle, options: vscode.WebviewOptions): void;
M
Matt Bierner 已提交
444
	$postMessage(handle: WebviewPanelHandle, value: any): Thenable<boolean>;
445 446 447

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

M
Matt Bierner 已提交
450 451 452 453 454 455
export interface WebviewPanelViewState {
	readonly active: boolean;
	readonly visible: boolean;
	readonly position: EditorViewColumn;
}

M
Matt Bierner 已提交
456
export interface ExtHostWebviewsShape {
457
	$onMessage(handle: WebviewPanelHandle, message: any): void;
M
Matt Bierner 已提交
458
	$onDidChangeWebviewPanelViewState(handle: WebviewPanelHandle, newState: WebviewPanelViewState): void;
459
	$onDidDisposeWebviewPanel(handle: WebviewPanelHandle): Thenable<void>;
460
	$deserializeWebviewPanel(newWebviewHandle: WebviewPanelHandle, viewType: string, title: string, state: any, position: EditorViewColumn, options: vscode.WebviewOptions): Thenable<void>;
M
Matt Bierner 已提交
461 462
}

J
Joao Moreno 已提交
463
export interface MainThreadUrlsShape extends IDisposable {
464 465
	$registerUriHandler(handle: number, extensionId: string): Thenable<void>;
	$unregisterUriHandler(handle: number): Thenable<void>;
J
Joao Moreno 已提交
466 467 468
}

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

472
export interface MainThreadWorkspaceShape extends IDisposable {
R
Rob Lourens 已提交
473
	$startFileSearch(includePattern: string, includeFolder: string, excludePatternOrDisregardExcludes: string | false, maxResults: number, requestId: number): Thenable<UriComponents[]>;
474 475
	$startTextSearch(query: IPatternInfo, options: IQueryOptions, requestId: number): Thenable<void>;
	$checkExists(query: ISearchQuery, requestId: number): Thenable<boolean>;
476 477
	$cancelSearch(requestId: number): Thenable<boolean>;
	$saveAll(includeUntitled?: boolean): Thenable<boolean>;
478
	$updateWorkspaceFolders(extensionName: string, index: number, deleteCount: number, workspaceFoldersToAdd: { uri: UriComponents, name?: string }[]): Thenable<void>;
479
}
480

J
Johannes Rieken 已提交
481 482 483 484 485
export interface IFileChangeDto {
	resource: UriComponents;
	type: FileChangeType;
}

486
export interface MainThreadFileSystemShape extends IDisposable {
487
	$registerFileSystemProvider(handle: number, scheme: string, capabilities: FileSystemProviderCapabilities): void;
488
	$unregisterProvider(handle: number): void;
489
	$setUriFormatter(scheme: string, formatter: LabelRules): void;
J
Johannes Rieken 已提交
490
	$onFileSystemChange(handle: number, resource: IFileChangeDto[]): void;
491
}
J
Johannes Rieken 已提交
492

493
export interface MainThreadSearchShape extends IDisposable {
494 495 496
	$registerFileSearchProvider(handle: number, scheme: string): void;
	$registerTextSearchProvider(handle: number, scheme: string): void;
	$registerFileIndexProvider(handle: number, scheme: string): void;
497
	$unregisterProvider(handle: number): void;
498
	$handleFileMatch(handle: number, session: number, data: UriComponents[]): void;
R
Rob Lourens 已提交
499
	$handleTextMatch(handle: number, session: number, data: IRawFileMatch2[]): void;
500
	$handleTelemetry(eventName: string, data: any): void;
501 502
}

503
export interface MainThreadTaskShape extends IDisposable {
504 505 506 507 508
	$registerTaskProvider(handle: number): Thenable<void>;
	$unregisterTaskProvider(handle: number): Thenable<void>;
	$fetchTasks(filter?: TaskFilterDTO): Thenable<TaskDTO[]>;
	$executeTask(task: TaskHandleDTO | TaskDTO): Thenable<TaskExecutionDTO>;
	$terminateTask(id: string): Thenable<void>;
509
	$registerTaskSystem(scheme: string, info: TaskSystemInfoDTO): void;
510 511
}

512
export interface MainThreadExtensionServiceShape extends IDisposable {
513
	$localShowMessage(severity: Severity, msg: string): void;
A
Alex Dima 已提交
514
	$onExtensionActivated(extensionId: string, startup: boolean, codeLoadingTime: number, activateCallTime: number, activateResolvedTime: number, activationEvent: string): void;
515
	$onExtensionActivationFailed(extensionId: string): void;
516
	$onExtensionRuntimeError(extensionId: string, error: SerializedError): void;
A
Alex Dima 已提交
517
	$addMessage(extensionId: string, severity: Severity, message: string): void;
518 519
}

J
Joao Moreno 已提交
520
export interface SCMProviderFeatures {
J
Joao Moreno 已提交
521 522
	hasQuickDiffProvider?: boolean;
	count?: number;
523 524 525
	commitTemplate?: string;
	acceptInputCommand?: modes.Command;
	statusBarCommands?: modes.Command[];
J
Joao Moreno 已提交
526 527 528 529
}

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

J
Joao Moreno 已提交
532
export type SCMRawResource = [
533
	number /*handle*/,
534
	UriComponents /*resourceUri*/,
J
Joao Moreno 已提交
535
	string[] /*icons: light, dark*/,
536
	string /*tooltip*/,
537
	boolean /*strike through*/,
538 539
	boolean /*faded*/,

J
Joao Moreno 已提交
540 541 542
	string | undefined /*source*/,
	string | undefined /*letter*/,
	ThemeColor | null /*color*/
J
Joao Moreno 已提交
543
];
544

545 546 547
export type SCMRawResourceSplice = [
	number /* start */,
	number /* delete count */,
J
Joao 已提交
548 549 550
	SCMRawResource[]
];

551 552 553 554 555
export type SCMRawResourceSplices = [
	number, /*handle*/
	SCMRawResourceSplice[]
];

556
export interface MainThreadSCMShape extends IDisposable {
557
	$registerSourceControl(handle: number, id: string, label: string, rootUri: UriComponents | undefined): void;
558 559
	$updateSourceControl(handle: number, features: SCMProviderFeatures): void;
	$unregisterSourceControl(handle: number): void;
J
Joao Moreno 已提交
560

561 562 563 564
	$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 已提交
565

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

J
Joao Moreno 已提交
568
	$setInputBoxValue(sourceControlHandle: number, value: string): void;
569
	$setInputBoxPlaceholder(sourceControlHandle: number, placeholder: string): void;
570
	$setValidationProviderIsEnabled(sourceControlHandle: number, enabled: boolean): void;
J
Joao Moreno 已提交
571 572
}

573 574
export type DebugSessionUUID = string;

575
export interface MainThreadDebugServiceShape extends IDisposable {
A
Alex Dima 已提交
576 577 578 579
	$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;
580 581 582 583 584 585 586 587
	$registerDebugConfigurationProvider(type: string, hasProvideMethod: boolean, hasResolveMethod: boolean, hasDebugAdapterExecutable: boolean, handle: number): Thenable<any>;
	$unregisterDebugConfigurationProvider(handle: number): Thenable<any>;
	$startDebugging(folder: UriComponents | undefined, nameOrConfig: string | vscode.DebugConfiguration): Thenable<boolean>;
	$customDebugAdapterRequest(id: DebugSessionUUID, command: string, args: any): Thenable<any>;
	$appendDebugConsole(value: string): Thenable<any>;
	$startBreakpointEvents(): Thenable<any>;
	$registerBreakpoints(breakpoints: (ISourceMultiBreakpointDto | IFunctionBreakpointDto)[]): Thenable<void>;
	$unregisterBreakpoints(breakpointIds: string[], functionBreakpointIds: string[]): Thenable<void>;
588 589
}

590
export interface MainThreadWindowShape extends IDisposable {
591
	$getWindowVisibility(): Thenable<boolean>;
592 593
}

594 595
// -- extension host

596
export interface ExtHostCommandsShape {
J
Johannes Rieken 已提交
597
	$executeContributedCommand<T>(id: string, ...args: any[]): Thenable<T>;
598
	$getContributedCommandHandlerDescriptions(): Thenable<{ [id: string]: string | ICommandHandlerDescription }>;
599 600
}

601
export interface ExtHostConfigurationShape {
602
	$acceptConfigurationChanged(data: IConfigurationData, eventData: IWorkspaceConfigurationChangeEventData): void;
603 604
}

605
export interface ExtHostDiagnosticsShape {
606 607 608

}

609
export interface ExtHostDocumentContentProvidersShape {
610
	$provideTextDocumentContent(handle: number, uri: UriComponents): Promise<string>;
611 612
}

613
export interface IModelAddedData {
614
	uri: UriComponents;
615
	versionId: number;
616 617
	lines: string[];
	EOL: string;
618 619 620
	modeId: string;
	isDirty: boolean;
}
621
export interface ExtHostDocumentsShape {
622 623 624 625
	$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;
626 627
}

628
export interface ExtHostDocumentSaveParticipantShape {
J
Johannes Rieken 已提交
629
	$participateInSave(resource: UriComponents, reason: SaveReason): Thenable<boolean[]>;
630 631
}

632 633
export interface ITextEditorAddData {
	id: string;
634
	documentUri: UriComponents;
635
	options: IResolvedTextEditorConfiguration;
A
Alex Dima 已提交
636
	selections: ISelection[];
637
	visibleRanges: IRange[];
638
	editorPosition: EditorViewColumn;
639 640
}
export interface ITextEditorPositionData {
641
	[id: string]: EditorViewColumn;
642
}
643 644 645
export interface IEditorPropertiesChangeData {
	options: IResolvedTextEditorConfiguration | null;
	selections: ISelectionChangeEvent | null;
646
	visibleRanges: IRange[] | null;
647 648 649 650 651 652
}
export interface ISelectionChangeEvent {
	selections: Selection[];
	source?: string;
}

653
export interface ExtHostEditorsShape {
654
	$acceptEditorPropertiesChanged(id: string, props: IEditorPropertiesChangeData): void;
655
	$acceptEditorPositionData(data: ITextEditorPositionData): void;
656 657
}

J
Johannes Rieken 已提交
658
export interface IDocumentsAndEditorsDelta {
659
	removedDocuments?: UriComponents[];
J
Johannes Rieken 已提交
660 661 662 663 664 665
	addedDocuments?: IModelAddedData[];
	removedEditors?: string[];
	addedEditors?: ITextEditorAddData[];
	newActiveEditor?: string;
}

666 667
export interface ExtHostDocumentsAndEditorsShape {
	$acceptDocumentsAndEditorsDelta(delta: IDocumentsAndEditorsDelta): void;
J
Johannes Rieken 已提交
668 669
}

670
export interface ExtHostTreeViewsShape {
671
	$getChildren(treeViewId: string, treeItemHandle?: string): TPromise<ITreeItem[]>;
672
	$setExpanded(treeViewId: string, treeItemHandle: string, expanded: boolean): void;
673
	$setSelection(treeViewId: string, treeItemHandles: string[]): void;
674
	$setVisible(treeViewId: string, visible: boolean): void;
S
Sandeep Somavarapu 已提交
675 676
}

677 678
export interface ExtHostWorkspaceShape {
	$acceptWorkspaceData(workspace: IWorkspaceData): void;
R
Rob Lourens 已提交
679
	$handleTextSearchResult(result: IRawFileMatch2, requestId: number): void;
680
}
681

682
export interface ExtHostFileSystemShape {
683 684 685 686 687 688 689 690
	$stat(handle: number, resource: UriComponents): Thenable<IStat>;
	$readdir(handle: number, resource: UriComponents): Thenable<[string, FileType][]>;
	$readFile(handle: number, resource: UriComponents): Thenable<Buffer>;
	$writeFile(handle: number, resource: UriComponents, content: Buffer, opts: FileWriteOptions): Thenable<void>;
	$rename(handle: number, resource: UriComponents, target: UriComponents, opts: FileOverwriteOptions): Thenable<void>;
	$copy(handle: number, resource: UriComponents, target: UriComponents, opts: FileOverwriteOptions): Thenable<void>;
	$mkdir(handle: number, resource: UriComponents): Thenable<void>;
	$delete(handle: number, resource: UriComponents, opts: FileDeleteOptions): Thenable<void>;
691 692
	$watch(handle: number, session: number, resource: UriComponents, opts: IWatchOptions): void;
	$unwatch(handle: number, session: number): void;
693 694 695 696
	$open(handle: number, resource: UriComponents): Thenable<number>;
	$close(handle: number, fd: number): Thenable<void>;
	$read(handle: number, fd: number, pos: number, data: Buffer, offset: number, length: number): Thenable<number>;
	$write(handle: number, fd: number, pos: number, data: Buffer, offset: number, length: number): Thenable<number>;
697
}
698

699
export interface ExtHostSearchShape {
700
	$provideFileSearchResults(handle: number, session: number, query: IRawSearchQuery): TPromise<ISearchCompleteStats>;
701
	$clearCache(cacheKey: string): TPromise<void>;
702
	$provideTextSearchResults(handle: number, session: number, pattern: IPatternInfo, query: IRawSearchQuery): TPromise<ISearchCompleteStats>;
703 704
}

705
export interface ExtHostExtensionServiceShape {
706
	$activateByEvent(activationEvent: string): Thenable<void>;
707 708 709
}

export interface FileSystemEvents {
J
Johannes Rieken 已提交
710 711 712
	created: UriComponents[];
	changed: UriComponents[];
	deleted: UriComponents[];
713
}
714
export interface ExtHostFileSystemEventServiceShape {
715
	$onFileEvent(events: FileSystemEvents): void;
716
	$onFileRename(oldUri: UriComponents, newUri: UriComponents): void;
717
	$onWillRename(oldUri: UriComponents, newUri: UriComponents): TPromise<any>;
718 719
}

J
Johannes Rieken 已提交
720 721 722 723 724
export interface ObjectIdentifier {
	$ident: number;
}

export namespace ObjectIdentifier {
725
	export const name = '$ident';
J
Johannes Rieken 已提交
726
	export function mixin<T>(obj: T, id: number): T & ObjectIdentifier {
727
		Object.defineProperty(obj, name, { value: id, enumerable: true });
J
Johannes Rieken 已提交
728 729
		return <T & ObjectIdentifier>obj;
	}
730 731
	export function of(obj: any): number {
		return obj[name];
J
Johannes Rieken 已提交
732 733 734
	}
}

735 736
export interface ExtHostHeapServiceShape {
	$onGarbageCollection(ids: number[]): void;
737
}
738
export interface IRawColorInfo {
J
Joao Moreno 已提交
739
	color: [number, number, number, number];
740 741 742
	range: IRange;
}

743 744 745 746 747 748 749 750 751 752
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 {
753 754 755 756
	_id: number;
	_parentId: number;
}

757 758
export interface SuggestResultDto extends IdObject {
	suggestions: SuggestionDto[];
759 760 761
	incomplete?: boolean;
}

762 763 764
export interface LocationDto {
	uri: UriComponents;
	range: IRange;
765 766
}

M
Matt Bierner 已提交
767 768 769 770 771 772 773
export interface DefinitionLinkDto {
	origin?: IRange;
	uri: UriComponents;
	range: IRange;
	selectionRange?: IRange;
}

774
export interface WorkspaceSymbolDto extends IdObject {
775 776 777 778 779 780 781
	name: string;
	containerName?: string;
	kind: modes.SymbolKind;
	location: LocationDto;
}

export interface WorkspaceSymbolsDto extends IdObject {
782
	symbols: WorkspaceSymbolDto[];
783 784
}

785 786 787
export interface ResourceFileEditDto {
	oldUri: UriComponents;
	newUri: UriComponents;
788
	options: IFileOperationOptions;
789 790 791
}

export interface ResourceTextEditDto {
792
	resource: UriComponents;
793 794
	modelVersionId?: number;
	edits: modes.TextEdit[];
795 796
}

797
export interface WorkspaceEditDto {
798 799 800
	edits: (ResourceFileEditDto | ResourceTextEditDto)[];

	// todo@joh reject should go into rename
801 802 803
	rejectReason?: string;
}

804 805 806 807 808 809 810 811 812 813 814 815 816 817
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;
}

818 819
export interface CodeActionDto {
	title: string;
820
	edit?: WorkspaceEditDto;
821 822
	diagnostics?: IMarkerData[];
	command?: modes.Command;
J
Johannes Rieken 已提交
823
	kind?: string;
824
}
825

826
export interface ExtHostLanguageFeaturesShape {
827 828 829 830 831 832
	$provideDocumentSymbols(handle: number, resource: UriComponents, token: CancellationToken): Thenable<modes.DocumentSymbol[]>;
	$provideCodeLenses(handle: number, resource: UriComponents, token: CancellationToken): Thenable<modes.ICodeLensSymbol[]>;
	$resolveCodeLens(handle: number, resource: UriComponents, symbol: modes.ICodeLensSymbol, token: CancellationToken): Thenable<modes.ICodeLensSymbol>;
	$provideDefinition(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Thenable<DefinitionLinkDto[]>;
	$provideImplementation(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Thenable<DefinitionLinkDto[]>;
	$provideTypeDefinition(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Thenable<DefinitionLinkDto[]>;
833
	$provideHover(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Thenable<modes.Hover>;
834 835 836 837 838 839 840 841
	$provideDocumentHighlights(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Thenable<modes.DocumentHighlight[]>;
	$provideReferences(handle: number, resource: UriComponents, position: IPosition, context: modes.ReferenceContext, token: CancellationToken): Thenable<LocationDto[]>;
	$provideCodeActions(handle: number, resource: UriComponents, rangeOrSelection: IRange | ISelection, context: modes.CodeActionContext, token: CancellationToken): Thenable<CodeActionDto[]>;
	$provideDocumentFormattingEdits(handle: number, resource: UriComponents, options: modes.FormattingOptions, token: CancellationToken): Thenable<ISingleEditOperation[]>;
	$provideDocumentRangeFormattingEdits(handle: number, resource: UriComponents, range: IRange, options: modes.FormattingOptions, token: CancellationToken): Thenable<ISingleEditOperation[]>;
	$provideOnTypeFormattingEdits(handle: number, resource: UriComponents, position: IPosition, ch: string, options: modes.FormattingOptions, token: CancellationToken): Thenable<ISingleEditOperation[]>;
	$provideWorkspaceSymbols(handle: number, search: string, token: CancellationToken): Thenable<WorkspaceSymbolsDto>;
	$resolveWorkspaceSymbol(handle: number, symbol: WorkspaceSymbolDto, token: CancellationToken): Thenable<WorkspaceSymbolDto>;
842
	$releaseWorkspaceSymbols(handle: number, id: number): void;
843 844 845 846
	$provideRenameEdits(handle: number, resource: UriComponents, position: IPosition, newName: string, token: CancellationToken): Thenable<WorkspaceEditDto>;
	$resolveRenameLocation(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Thenable<modes.RenameLocation>;
	$provideCompletionItems(handle: number, resource: UriComponents, position: IPosition, context: modes.SuggestContext, token: CancellationToken): Thenable<SuggestResultDto>;
	$resolveCompletionItem(handle: number, resource: UriComponents, position: IPosition, suggestion: modes.ISuggestion, token: CancellationToken): Thenable<modes.ISuggestion>;
847
	$releaseCompletionItems(handle: number, id: number): void;
848 849 850 851 852 853
	$provideSignatureHelp(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Thenable<modes.SignatureHelp>;
	$provideDocumentLinks(handle: number, resource: UriComponents, token: CancellationToken): Thenable<modes.ILink[]>;
	$resolveDocumentLink(handle: number, link: modes.ILink, token: CancellationToken): Thenable<modes.ILink>;
	$provideDocumentColors(handle: number, resource: UriComponents, token: CancellationToken): Thenable<IRawColorInfo[]>;
	$provideColorPresentations(handle: number, resource: UriComponents, colorInfo: IRawColorInfo, token: CancellationToken): Thenable<modes.IColorPresentation[]>;
	$provideFoldingRanges(handle: number, resource: UriComponents, context: modes.FoldingContext, token: CancellationToken): Thenable<modes.FoldingRange[]>;
854 855
}

856 857 858
export interface ExtHostQuickOpenShape {
	$onItemSelected(handle: number): void;
	$validateInput(input: string): TPromise<string>;
859 860 861
	$onDidChangeActive(sessionId: number, handles: number[]): void;
	$onDidChangeSelection(sessionId: number, handles: number[]): void;
	$onDidAccept(sessionId: number): void;
862
	$onDidChangeValue(sessionId: number, value: string): void;
C
Christof Marti 已提交
863
	$onDidTriggerButton(sessionId: number, handle: number): void;
864
	$onDidHide(sessionId: number): void;
865 866
}

867 868 869 870 871 872 873 874
export interface ShellLaunchConfigDto {
	name?: string;
	executable?: string;
	args?: string[] | string;
	cwd?: string;
	env?: { [key: string]: string };
}

875 876
export interface ExtHostTerminalServiceShape {
	$acceptTerminalClosed(id: number): void;
877
	$acceptTerminalOpened(id: number, name: string): void;
878
	$acceptActiveTerminalChanged(id: number | null): void;
879
	$acceptTerminalProcessId(id: number, processId: number): void;
A
Alex Dima 已提交
880
	$acceptTerminalProcessData(id: number, data: string): void;
D
Daniel Imms 已提交
881
	$acceptTerminalRendererInput(id: number, data: string): void;
D
Daniel Imms 已提交
882
	$acceptTerminalRendererDimensions(id: number, cols: number, rows: number): void;
883
	$createProcess(id: number, shellLaunchConfig: ShellLaunchConfigDto, cols: number, rows: number): void;
D
Daniel Imms 已提交
884 885
	$acceptProcessInput(id: number, data: string): void;
	$acceptProcessResize(id: number, cols: number, rows: number): void;
886
	$acceptProcessShutdown(id: number, immediate: boolean): void;
887 888
}

889
export interface ExtHostSCMShape {
890
	$provideOriginalResource(sourceControlHandle: number, uri: UriComponents): TPromise<UriComponents>;
891
	$onInputBoxValueChange(sourceControlHandle: number, value: string): Thenable<void>;
892
	$executeResourceCommand(sourceControlHandle: number, groupHandle: number, handle: number): TPromise<void>;
893
	$validateInput(sourceControlHandle: number, value: string, cursorPosition: number): TPromise<[string, number] | undefined>;
894
	$setSelectedSourceControls(selectedSourceControlHandles: number[]): Thenable<void>;
J
Joao Moreno 已提交
895 896
}

897
export interface ExtHostTaskShape {
898
	$provideTasks(handle: number, validTypes: { [key: string]: boolean; }): TPromise<TaskSet>;
899 900 901 902
	$onDidStartTask(execution: TaskExecutionDTO): void;
	$onDidStartTaskProcess(value: TaskProcessStartedDTO): void;
	$onDidEndTaskProcess(value: TaskProcessEndedDTO): void;
	$OnDidEndTask(execution: TaskExecutionDTO): void;
903
	$resolveVariables(workspaceFolder: UriComponents, variables: string[]): TPromise<any>;
904 905
}

906 907
export interface IBreakpointDto {
	type: string;
908
	id?: string;
909 910 911
	enabled: boolean;
	condition?: string;
	hitCondition?: string;
912 913 914 915 916
	logMessage?: string;
}

export interface IFunctionBreakpointDto extends IBreakpointDto {
	type: 'function';
917
	functionName: string;
918 919
}

920
export interface ISourceBreakpointDto extends IBreakpointDto {
921
	type: 'source';
922
	uri: UriComponents;
923 924
	line: number;
	character: number;
925 926
}

927 928 929 930
export interface IBreakpointsDeltaDto {
	added?: (ISourceBreakpointDto | IFunctionBreakpointDto)[];
	removed?: string[];
	changed?: (ISourceBreakpointDto | IFunctionBreakpointDto)[];
931 932
}

933 934 935 936
export interface ISourceMultiBreakpointDto {
	type: 'sourceMulti';
	uri: UriComponents;
	lines: {
937
		id: string;
938 939 940
		enabled: boolean;
		condition?: string;
		hitCondition?: string;
941
		logMessage?: string;
942 943 944
		line: number;
		character: number;
	}[];
945 946
}

947
export interface ExtHostDebugServiceShape {
A
Andre Weinand 已提交
948
	$substituteVariables(folder: UriComponents | undefined, config: IConfig): TPromise<IConfig>;
949
	$runInTerminal(args: DebugProtocol.RunInTerminalRequestArguments, config: ITerminalSettings): TPromise<void>;
A
Andre Weinand 已提交
950
	$startDASession(handle: number, debugType: string, adapterExecutableInfo: IAdapterExecutable | null, debugPort: number): TPromise<void>;
951
	$stopDASession(handle: number): TPromise<void>;
952
	$sendDAMessage(handle: number, message: DebugProtocol.ProtocolMessage): void;
953 954
	$resolveDebugConfiguration(handle: number, folder: UriComponents | undefined, debugConfiguration: IConfig): TPromise<IConfig>;
	$provideDebugConfigurations(handle: number, folder: UriComponents | undefined): TPromise<IConfig[]>;
955
	$debugAdapterExecutable(handle: number, folder: UriComponents | undefined): TPromise<IAdapterExecutable>;
956 957 958 959
	$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;
960
	$acceptBreakpointsDelta(delat: IBreakpointsDeltaDto): void;
961 962
}

963

964 965 966 967 968 969
export interface DecorationRequest {
	readonly id: number;
	readonly handle: number;
	readonly uri: UriComponents;
}

970
export type DecorationData = [number, boolean, string, string, ThemeColor, string];
971
export type DecorationReply = { [id: number]: DecorationData };
972 973

export interface ExtHostDecorationsShape {
974
	$provideDecorations(requests: DecorationRequest[]): Thenable<DecorationReply>;
975 976
}

977 978
export interface ExtHostWindowShape {
	$onDidChangeWindowFocus(value: boolean): void;
979 980
}

S
Sandeep Somavarapu 已提交
981
export interface ExtHostLogServiceShape {
A
Alex Dima 已提交
982
	$setLevel(level: LogLevel): void;
S
Sandeep Somavarapu 已提交
983 984
}

985 986 987 988
export interface ExtHostProgressShape {
	$acceptProgressCanceled(handle: number): void;
}

M
Matt Bierner 已提交
989
export interface ExtHostCommentsShape {
990 991 992 993
	$provideDocumentComments(handle: number, document: UriComponents): Thenable<modes.CommentInfo>;
	$createNewCommentThread?(handle: number, document: UriComponents, range: IRange, text: string): Thenable<modes.CommentThread>;
	$replyToCommentThread?(handle: number, document: UriComponents, range: IRange, commentThread: modes.CommentThread, text: string): Thenable<modes.CommentThread>;
	$provideWorkspaceComments(handle: number): Thenable<modes.CommentThread[]>;
M
Matt Bierner 已提交
994 995
}

996 997 998
// --- proxy identifiers

export const MainContext = {
999
	MainThreadCommands: <ProxyIdentifier<MainThreadCommandsShape>>createMainId<MainThreadCommandsShape>('MainThreadCommands'),
M
Matt Bierner 已提交
1000
	MainThreadComments: createMainId<MainThreadCommentsShape>('MainThreadComments'),
1001
	MainThreadConfiguration: createMainId<MainThreadConfigurationShape>('MainThreadConfiguration'),
1002
	MainThreadDebugService: createMainId<MainThreadDebugServiceShape>('MainThreadDebugService'),
1003 1004 1005 1006
	MainThreadDecorations: createMainId<MainThreadDecorationsShape>('MainThreadDecorations'),
	MainThreadDiagnostics: createMainId<MainThreadDiagnosticsShape>('MainThreadDiagnostics'),
	MainThreadDialogs: createMainId<MainThreadDiaglogsShape>('MainThreadDiaglogs'),
	MainThreadDocuments: createMainId<MainThreadDocumentsShape>('MainThreadDocuments'),
1007
	MainThreadDocumentContentProviders: createMainId<MainThreadDocumentContentProvidersShape>('MainThreadDocumentContentProviders'),
1008
	MainThreadTextEditors: createMainId<MainThreadTextEditorsShape>('MainThreadTextEditors'),
1009 1010
	MainThreadErrors: createMainId<MainThreadErrorsShape>('MainThreadErrors'),
	MainThreadTreeViews: createMainId<MainThreadTreeViewsShape>('MainThreadTreeViews'),
1011
	MainThreadLanguageFeatures: createMainId<MainThreadLanguageFeaturesShape>('MainThreadLanguageFeatures'),
1012
	MainThreadLanguages: createMainId<MainThreadLanguagesShape>('MainThreadLanguages'),
1013
	MainThreadMessageService: createMainId<MainThreadMessageServiceShape>('MainThreadMessageService'),
1014 1015
	MainThreadOutputService: createMainId<MainThreadOutputServiceShape>('MainThreadOutputService'),
	MainThreadProgress: createMainId<MainThreadProgressShape>('MainThreadProgress'),
1016
	MainThreadQuickOpen: createMainId<MainThreadQuickOpenShape>('MainThreadQuickOpen'),
1017
	MainThreadStatusBar: createMainId<MainThreadStatusBarShape>('MainThreadStatusBar'),
1018
	MainThreadStorage: createMainId<MainThreadStorageShape>('MainThreadStorage'),
1019
	MainThreadTelemetry: createMainId<MainThreadTelemetryShape>('MainThreadTelemetry'),
1020
	MainThreadTerminalService: createMainId<MainThreadTerminalServiceShape>('MainThreadTerminalService'),
M
Matt Bierner 已提交
1021
	MainThreadWebviews: createMainId<MainThreadWebviewsShape>('MainThreadWebviews'),
J
Joao Moreno 已提交
1022
	MainThreadUrls: createMainId<MainThreadUrlsShape>('MainThreadUrls'),
1023
	MainThreadWorkspace: createMainId<MainThreadWorkspaceShape>('MainThreadWorkspace'),
1024
	MainThreadFileSystem: createMainId<MainThreadFileSystemShape>('MainThreadFileSystem'),
1025
	MainThreadExtensionService: createMainId<MainThreadExtensionServiceShape>('MainThreadExtensionService'),
J
Joao Moreno 已提交
1026
	MainThreadSCM: createMainId<MainThreadSCMShape>('MainThreadSCM'),
1027
	MainThreadSearch: createMainId<MainThreadSearchShape>('MainThreadSearch'),
1028
	MainThreadTask: createMainId<MainThreadTaskShape>('MainThreadTask'),
1029
	MainThreadWindow: createMainId<MainThreadWindowShape>('MainThreadWindow'),
1030 1031 1032
};

export const ExtHostContext = {
1033
	ExtHostCommands: createExtId<ExtHostCommandsShape>('ExtHostCommands'),
1034
	ExtHostConfiguration: createExtId<ExtHostConfigurationShape>('ExtHostConfiguration'),
1035
	ExtHostDiagnostics: createExtId<ExtHostDiagnosticsShape>('ExtHostDiagnostics'),
1036
	ExtHostDebugService: createExtId<ExtHostDebugServiceShape>('ExtHostDebugService'),
J
Johannes Rieken 已提交
1037
	ExtHostDecorations: createExtId<ExtHostDecorationsShape>('ExtHostDecorations'),
1038
	ExtHostDocumentsAndEditors: createExtId<ExtHostDocumentsAndEditorsShape>('ExtHostDocumentsAndEditors'),
1039
	ExtHostDocuments: createExtId<ExtHostDocumentsShape>('ExtHostDocuments'),
J
Johannes Rieken 已提交
1040
	ExtHostDocumentContentProviders: createExtId<ExtHostDocumentContentProvidersShape>('ExtHostDocumentContentProviders'),
J
Johannes Rieken 已提交
1041
	ExtHostDocumentSaveParticipant: createExtId<ExtHostDocumentSaveParticipantShape>('ExtHostDocumentSaveParticipant'),
J
Johannes Rieken 已提交
1042
	ExtHostEditors: createExtId<ExtHostEditorsShape>('ExtHostEditors'),
1043
	ExtHostTreeViews: createExtId<ExtHostTreeViewsShape>('ExtHostTreeViews'),
J
Johannes Rieken 已提交
1044
	ExtHostFileSystem: createExtId<ExtHostFileSystemShape>('ExtHostFileSystem'),
J
Johannes Rieken 已提交
1045
	ExtHostFileSystemEventService: createExtId<ExtHostFileSystemEventServiceShape>('ExtHostFileSystemEventService'),
1046
	ExtHostHeapService: createExtId<ExtHostHeapServiceShape>('ExtHostHeapMonitor'),
1047
	ExtHostLanguageFeatures: createExtId<ExtHostLanguageFeaturesShape>('ExtHostLanguageFeatures'),
1048 1049
	ExtHostQuickOpen: createExtId<ExtHostQuickOpenShape>('ExtHostQuickOpen'),
	ExtHostExtensionService: createExtId<ExtHostExtensionServiceShape>('ExtHostExtensionService'),
1050
	ExtHostLogService: createExtId<ExtHostLogServiceShape>('ExtHostLogService'),
1051
	ExtHostTerminalService: createExtId<ExtHostTerminalServiceShape>('ExtHostTerminalService'),
J
Joao Moreno 已提交
1052
	ExtHostSCM: createExtId<ExtHostSCMShape>('ExtHostSCM'),
1053
	ExtHostSearch: createExtId<ExtHostSearchShape>('ExtHostSearch'),
1054
	ExtHostTask: createExtId<ExtHostTaskShape>('ExtHostTask'),
1055
	ExtHostWorkspace: createExtId<ExtHostWorkspaceShape>('ExtHostWorkspace'),
1056
	ExtHostWindow: createExtId<ExtHostWindowShape>('ExtHostWindow'),
1057
	ExtHostWebviews: createExtId<ExtHostWebviewsShape>('ExtHostWebviews'),
M
Matt Bierner 已提交
1058
	ExtHostProgress: createMainId<ExtHostProgressShape>('ExtHostProgress'),
1059
	ExtHostComments: createMainId<ExtHostCommentsShape>('ExtHostComments'),
P
Peng Lyu 已提交
1060
	ExtHostUrls: createExtId<ExtHostUrlsShape>('ExtHostUrls')
1061
};