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

import {
	createMainContextProxyIdentifier as createMainId,
	createExtHostContextProxyIdentifier as createExtId,
10
	ProxyIdentifier
11
} from 'vs/workbench/services/thread/common/threadService';
12

13 14 15 16
import * as vscode from 'vscode';

import URI from 'vs/base/common/uri';
import Severity from 'vs/base/common/severity';
17
import { TPromise } from 'vs/base/common/winjs.base';
18

19 20
import { IMarkerData } from 'vs/platform/markers/common/markers';
import { Position as EditorPosition } from 'vs/platform/editor/common/editor';
A
Alex Dima 已提交
21
import { IExtensionDescription } from 'vs/platform/extensions/common/extensions';
22 23
import { StatusbarAlignment as MainThreadStatusBarAlignment } from 'vs/platform/statusbar/common/statusbar';
import { ITelemetryInfo } from 'vs/platform/telemetry/common/telemetry';
24
import { ICommandHandlerDescription } from 'vs/platform/commands/common/commands';
J
Johannes Rieken 已提交
25
import { IProgressOptions, IProgressStep } from 'vs/platform/progress/common/progress';
26 27 28

import * as editorCommon from 'vs/editor/common/editorCommon';
import * as modes from 'vs/editor/common/modes';
29
import { IResourceEdit } from 'vs/editor/common/services/bulkEdit';
A
Alex Dima 已提交
30
import { ITextSource } from 'vs/editor/common/model/textSource';
31

32
import { ConfigurationTarget } from 'vs/workbench/services/configuration/common/configurationEditing';
33
import { IConfigurationData } from 'vs/platform/configuration/common/configuration';
34

J
Johannes Rieken 已提交
35
import { IPickOpenEntry, IPickOptions } from 'vs/platform/quickOpen/common/quickOpen';
36
import { SaveReason } from 'vs/workbench/services/textfile/common/textfiles';
37
import { TextEditorCursorStyle } from 'vs/editor/common/config/editorOptions';
38
import { EndOfLine, TextEditorLineNumbersStyle } from 'vs/workbench/api/node/extHostTypes';
39

40

41
import { TaskSet } from 'vs/workbench/parts/tasks/common/tasks';
A
Alex Dima 已提交
42
import { IModelChangedEvent } from 'vs/editor/common/model/mirrorModel';
43 44
import { IPosition } from 'vs/editor/common/core/position';
import { IRange } from 'vs/editor/common/core/range';
45
import { ISelection, Selection } from 'vs/editor/common/core/selection';
46

S
Sandeep Somavarapu 已提交
47
import { ITreeItem } from 'vs/workbench/parts/views/common/views';
B
Benjamin Pasero 已提交
48
import { ThemeColor } from 'vs/platform/theme/common/themeService';
49
import { IDisposable } from "vs/base/common/lifecycle";
S
Sandeep Somavarapu 已提交
50

51
export interface IEnvironment {
52
	isExtensionDevelopmentDebug: boolean;
53 54
	enableProposedApiForAll: boolean;
	enableProposedApiFor: string | string[];
55 56 57 58 59 60 61
	appSettingsHome: string;
	disableExtensions: boolean;
	userExtensionsHome: string;
	extensionDevelopmentPath: string;
	extensionTestsPath: string;
}

62 63
export interface IWorkspaceData {
	id: string;
64
	name: string;
65 66 67
	roots: URI[];
}

68 69 70
export interface IInitData {
	parentPid: number;
	environment: IEnvironment;
71
	workspace: IWorkspaceData;
72
	extensions: IExtensionDescription[];
73
	configuration: IConfigurationData<any>;
74
	telemetryInfo: ITelemetryInfo;
75 76
}

77 78 79 80 81
export interface IExtHostContext {
	/**
	 * Returns a proxy to an object addressable/named in the extension host process.
	 */
	get<T>(identifier: ProxyIdentifier<T>): T;
82

83 84 85 86
	/**
	 * Register manually created instance.
	 */
	set<T, R extends T>(identifier: ProxyIdentifier<T>, instance: R): R;
87 88 89 90 91 92 93 94 95
}

export interface IMainContext {
	/**
	 * Returns a proxy to an object addressable/named in the main/renderer process.
	 */
	get<T>(identifier: ProxyIdentifier<T>): T;
}

96 97
// --- main thread

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

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

110
export interface MainThreadDiagnosticsShape extends IDisposable {
111 112
	$changeMany(owner: string, entries: [URI, IMarkerData[]][]): TPromise<any>;
	$clear(owner: string): TPromise<any>;
113 114
}

115
export interface MainThreadDocumentContentProvidersShape extends IDisposable {
116 117 118
	$registerTextContentProvider(handle: number, scheme: string): void;
	$unregisterTextContentProvider(handle: number): void;
	$onVirtualDocumentChange(uri: URI, value: ITextSource): void;
119 120
}

121
export interface MainThreadDocumentsShape extends IDisposable {
122 123 124
	$tryCreateDocument(options?: { language?: string; content?: string; }): TPromise<any>;
	$tryOpenDocument(uri: URI): TPromise<any>;
	$trySaveDocument(uri: URI): TPromise<boolean>;
125 126
}

127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
export interface ISelectionChangeEvent {
	selections: Selection[];
	source?: string;
}

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;
}



164 165 166 167
export interface ITextDocumentShowOptions {
	position?: EditorPosition;
	preserveFocus?: boolean;
	pinned?: boolean;
168
	selection?: IRange;
169 170
}

171
export interface MainThreadEditorsShape extends IDisposable {
172 173 174 175 176 177 178 179 180 181 182 183
	$tryShowTextDocument(resource: URI, options: ITextDocumentShowOptions): TPromise<string>;
	$registerTextEditorDecorationType(key: string, options: editorCommon.IDecorationRenderOptions): void;
	$removeTextEditorDecorationType(key: string): void;
	$tryShowEditor(id: string, position: EditorPosition): TPromise<void>;
	$tryHideEditor(id: string): TPromise<void>;
	$trySetOptions(id: string, options: ITextEditorConfigurationUpdate): TPromise<any>;
	$trySetDecorations(id: string, key: string, ranges: editorCommon.IDecorationOptions[]): TPromise<any>;
	$tryRevealRange(id: string, range: IRange, revealType: TextEditorRevealType): TPromise<any>;
	$trySetSelections(id: string, selections: ISelection[]): TPromise<any>;
	$tryApplyEdits(id: string, modelVersionId: number, edits: editorCommon.ISingleEditOperation[], opts: IApplyEditsOptions): TPromise<boolean>;
	$tryInsertSnippet(id: string, template: string, selections: IRange[], opts: IUndoStopOptions): TPromise<any>;
	$getDiffInformation(id: string): TPromise<editorCommon.ILineChange[]>;
184 185
}

186
export interface MainThreadTreeViewsShape extends IDisposable {
187 188
	$registerView(treeViewId: string): void;
	$refresh(treeViewId: string, treeItemHandles: number[]): void;
189 190
}

191
export interface MainThreadErrorsShape extends IDisposable {
192
	$onUnexpectedExtHostError(err: any): void;
193 194
}

195
export interface MainThreadLanguageFeaturesShape extends IDisposable {
196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217
	$unregister(handle: number): TPromise<any>;
	$registerOutlineSupport(handle: number, selector: vscode.DocumentSelector): TPromise<any>;
	$registerCodeLensSupport(handle: number, selector: vscode.DocumentSelector, eventHandle: number): TPromise<any>;
	$emitCodeLensEvent(eventHandle: number, event?: any): TPromise<any>;
	$registerDeclaractionSupport(handle: number, selector: vscode.DocumentSelector): TPromise<any>;
	$registerImplementationSupport(handle: number, selector: vscode.DocumentSelector): TPromise<any>;
	$registerTypeDefinitionSupport(handle: number, selector: vscode.DocumentSelector): TPromise<any>;
	$registerHoverProvider(handle: number, selector: vscode.DocumentSelector): TPromise<any>;
	$registerDocumentHighlightProvider(handle: number, selector: vscode.DocumentSelector): TPromise<any>;
	$registerReferenceSupport(handle: number, selector: vscode.DocumentSelector): TPromise<any>;
	$registerQuickFixSupport(handle: number, selector: vscode.DocumentSelector): TPromise<any>;
	$registerDocumentFormattingSupport(handle: number, selector: vscode.DocumentSelector): TPromise<any>;
	$registerRangeFormattingSupport(handle: number, selector: vscode.DocumentSelector): TPromise<any>;
	$registerOnTypeFormattingSupport(handle: number, selector: vscode.DocumentSelector, autoFormatTriggerCharacters: string[]): TPromise<any>;
	$registerNavigateTypeSupport(handle: number): TPromise<any>;
	$registerRenameSupport(handle: number, selector: vscode.DocumentSelector): TPromise<any>;
	$registerSuggestSupport(handle: number, selector: vscode.DocumentSelector, triggerCharacters: string[]): TPromise<any>;
	$registerSignatureHelpProvider(handle: number, selector: vscode.DocumentSelector, triggerCharacter: string[]): TPromise<any>;
	$registerDocumentLinkProvider(handle: number, selector: vscode.DocumentSelector): TPromise<any>;
	$registerColorFormats(formats: IRawColorFormatMap): TPromise<any>;
	$registerDocumentColorProvider(handle: number, selector: vscode.DocumentSelector): TPromise<any>;
	$setLanguageConfiguration(handle: number, languageId: string, configuration: vscode.LanguageConfiguration): TPromise<any>;
218 219
}

220
export interface MainThreadLanguagesShape extends IDisposable {
221
	$getLanguages(): TPromise<string[]>;
222 223
}

224
export interface MainThreadMessageServiceShape extends IDisposable {
225
	$showMessage(severity: Severity, message: string, options: vscode.MessageOptions, commands: { title: string; isCloseAffordance: boolean; handle: number; }[]): Thenable<number>;
226 227
}

228
export interface MainThreadOutputServiceShape extends IDisposable {
229 230 231 232 233
	$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>;
234 235
}

236
export interface MainThreadProgressShape extends IDisposable {
237

238 239 240
	$startProgress(handle: number, options: IProgressOptions): void;
	$progressReport(handle: number, message: IProgressStep): void;
	$progressEnd(handle: number): void;
241 242
}

243
export interface MainThreadTerminalServiceShape extends IDisposable {
244 245 246 247 248
	$createTerminal(name?: string, shellPath?: string, shellArgs?: string[], waitOnExit?: boolean): TPromise<number>;
	$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 已提交
249 250
}

251 252 253
export interface MyQuickPickItems extends IPickOpenEntry {
	handle: number;
}
254
export interface MainThreadQuickOpenShape extends IDisposable {
255 256 257 258
	$show(options: IPickOptions): TPromise<number>;
	$setItems(items: MyQuickPickItems[]): TPromise<any>;
	$setError(error: Error): TPromise<any>;
	$input(options: vscode.InputBoxOptions, validateInput: boolean): TPromise<string>;
259 260
}

261
export interface MainThreadStatusBarShape extends IDisposable {
262 263
	$setEntry(id: number, extensionId: string, text: string, tooltip: string, command: string, color: string | ThemeColor, alignment: MainThreadStatusBarAlignment, priority: number): void;
	$dispose(id: number);
264 265
}

266
export interface MainThreadStorageShape extends IDisposable {
267 268
	$getValue<T>(shared: boolean, key: string): TPromise<T>;
	$setValue(shared: boolean, key: string, value: any): TPromise<any>;
269 270
}

271
export interface MainThreadTelemetryShape extends IDisposable {
272 273
	$publicLog(eventName: string, data?: any): void;
	$getTelemetryInfo(): TPromise<ITelemetryInfo>;
274 275
}

276
export interface MainThreadWorkspaceShape extends IDisposable {
277 278 279 280 281 282
	$startSearch(include: string, exclude: string, maxResults: number, requestId: number): Thenable<URI[]>;
	$cancelSearch(requestId: number): Thenable<boolean>;
	$saveAll(includeUntitled?: boolean): Thenable<boolean>;
	$applyWorkspaceEdit(edits: IResourceEdit[]): TPromise<boolean>;
	$registerFileSystemProvider(handle: number, authority: string): void;
	$onFileSystemChange(handle: number, resource: URI): void;
283 284
}

285
export interface MainThreadTaskShape extends IDisposable {
286 287
	$registerTaskProvider(handle: number): TPromise<any>;
	$unregisterTaskProvider(handle: number): TPromise<any>;
288 289
}

290
export interface MainThreadExtensionServiceShape extends IDisposable {
291 292 293
	$localShowMessage(severity: Severity, msg: string): void;
	$onExtensionActivated(extensionId: string): void;
	$onExtensionActivationFailed(extensionId: string): void;
294 295
}

J
Joao Moreno 已提交
296
export interface SCMProviderFeatures {
J
Joao Moreno 已提交
297 298
	hasQuickDiffProvider?: boolean;
	count?: number;
299 300 301
	commitTemplate?: string;
	acceptInputCommand?: modes.Command;
	statusBarCommands?: modes.Command[];
J
Joao Moreno 已提交
302 303 304 305
}

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

J
Joao Moreno 已提交
308
export type SCMRawResource = [
309
	number /*handle*/,
J
Joao Moreno 已提交
310 311
	string /*resourceUri*/,
	modes.Command /*command*/,
J
Joao Moreno 已提交
312
	string[] /*icons: light, dark*/,
313
	string /*tooltip*/,
314 315
	boolean /*strike through*/,
	boolean /*faded*/
J
Joao Moreno 已提交
316
];
317

318
export interface MainThreadSCMShape extends IDisposable {
319 320 321
	$registerSourceControl(handle: number, id: string, label: string): void;
	$updateSourceControl(handle: number, features: SCMProviderFeatures): void;
	$unregisterSourceControl(handle: number): void;
J
Joao Moreno 已提交
322

323 324 325 326 327
	$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;
	$updateGroupResourceStates(sourceControlHandle: number, groupHandle: number, resources: SCMRawResource[]): void;
	$unregisterGroup(sourceControlHandle: number, handle: number): void;
J
Joao Moreno 已提交
328

329
	$setInputBoxValue(value: string): void;
J
Joao Moreno 已提交
330 331
}

332 333
export type DebugSessionUUID = string;

334
export interface MainThreadDebugServiceShape extends IDisposable {
335 336
	$registerDebugConfigurationProvider(type: string, hasProvideMethod: boolean, hasResolveMethod: boolean, handle: number): TPromise<any>;
	$unregisterDebugConfigurationProvider(handle: number): TPromise<any>;
337 338 339
	$startDebugging(folderUri: URI | undefined, nameOrConfig: string | vscode.DebugConfiguration): TPromise<boolean>;
	$startDebugSession(folderUri: URI | undefined, config: vscode.DebugConfiguration): TPromise<DebugSessionUUID>;
	$customDebugAdapterRequest(id: DebugSessionUUID, command: string, args: any): TPromise<any>;
340 341
}

342
export interface MainThreadCredentialsShape extends IDisposable {
343 344 345
	$readSecret(service: string, account: string): Thenable<string | undefined>;
	$writeSecret(service: string, account: string, secret: string): Thenable<void>;
	$deleteSecret(service: string, account: string): Thenable<boolean>;
C
Christof Marti 已提交
346 347
}

348 349
// -- extension host

350 351 352
export interface ExtHostCommandsShape {
	$executeContributedCommand<T>(id: string, ...args: any[]): Thenable<T>;
	$getContributedCommandHandlerDescriptions(): TPromise<{ [id: string]: string | ICommandHandlerDescription }>;
353 354
}

355 356
export interface ExtHostConfigurationShape {
	$acceptConfigurationChanged(data: IConfigurationData<any>);
357 358
}

359
export interface ExtHostDiagnosticsShape {
360 361 362

}

363 364
export interface ExtHostDocumentContentProvidersShape {
	$provideTextDocumentContent(handle: number, uri: URI): TPromise<string>;
365 366
}

367 368 369
export interface IModelAddedData {
	url: URI;
	versionId: number;
370 371
	lines: string[];
	EOL: string;
372 373 374
	modeId: string;
	isDirty: boolean;
}
375 376 377 378 379
export interface ExtHostDocumentsShape {
	$acceptModelModeChanged(strURL: string, oldModeId: string, newModeId: string): void;
	$acceptModelSaved(strURL: string): void;
	$acceptDirtyStateChanged(strURL: string, isDirty: boolean): void;
	$acceptModelChanged(strURL: string, e: IModelChangedEvent, isDirty: boolean): void;
380 381
}

382 383
export interface ExtHostDocumentSaveParticipantShape {
	$participateInSave(resource: URI, reason: SaveReason): TPromise<boolean[]>;
384 385
}

386 387 388 389
export interface ITextEditorAddData {
	id: string;
	document: URI;
	options: IResolvedTextEditorConfiguration;
A
Alex Dima 已提交
390
	selections: ISelection[];
391 392 393 394 395
	editorPosition: EditorPosition;
}
export interface ITextEditorPositionData {
	[id: string]: EditorPosition;
}
396 397 398 399
export interface ExtHostEditorsShape {
	$acceptOptionsChanged(id: string, opts: IResolvedTextEditorConfiguration): void;
	$acceptSelectionsChanged(id: string, event: ISelectionChangeEvent): void;
	$acceptEditorPositionData(data: ITextEditorPositionData): void;
400 401
}

J
Johannes Rieken 已提交
402 403 404 405 406 407 408 409
export interface IDocumentsAndEditorsDelta {
	removedDocuments?: string[];
	addedDocuments?: IModelAddedData[];
	removedEditors?: string[];
	addedEditors?: ITextEditorAddData[];
	newActiveEditor?: string;
}

410 411
export interface ExtHostDocumentsAndEditorsShape {
	$acceptDocumentsAndEditorsDelta(delta: IDocumentsAndEditorsDelta): void;
J
Johannes Rieken 已提交
412 413
}

414 415 416
export interface ExtHostTreeViewsShape {
	$getElements(treeViewId: string): TPromise<ITreeItem[]>;
	$getChildren(treeViewId: string, treeItemHandle: number): TPromise<ITreeItem[]>;
S
Sandeep Somavarapu 已提交
417 418
}

419 420 421 422
export interface ExtHostWorkspaceShape {
	$acceptWorkspaceData(workspace: IWorkspaceData): void;
	$resolveFile(handle: number, resource: URI): TPromise<string>;
	$storeFile(handle: number, resource: URI, content: string): TPromise<any>;
423 424
}

425 426
export interface ExtHostExtensionServiceShape {
	$activateByEvent(activationEvent: string): TPromise<void>;
427 428 429 430 431 432 433
}

export interface FileSystemEvents {
	created: URI[];
	changed: URI[];
	deleted: URI[];
}
434 435
export interface ExtHostFileSystemEventServiceShape {
	$onFileEvent(events: FileSystemEvents);
436 437
}

J
Johannes Rieken 已提交
438 439 440 441 442
export interface ObjectIdentifier {
	$ident: number;
}

export namespace ObjectIdentifier {
443
	export const name = '$ident';
J
Johannes Rieken 已提交
444
	export function mixin<T>(obj: T, id: number): T & ObjectIdentifier {
445
		Object.defineProperty(obj, name, { value: id, enumerable: true });
J
Johannes Rieken 已提交
446 447
		return <T & ObjectIdentifier>obj;
	}
448 449
	export function of(obj: any): number {
		return obj[name];
J
Johannes Rieken 已提交
450 451 452
	}
}

453 454
export interface ExtHostHeapServiceShape {
	$onGarbageCollection(ids: number[]): void;
455
}
456
export interface IRawColorInfo {
J
Joao Moreno 已提交
457 458
	color: [number, number, number, number];
	availableFormats: (number | [number, number])[];
459 460 461
	range: IRange;
}

J
Joao Moreno 已提交
462
export type IRawColorFormatMap = [number, string][];
463

464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486
export interface ExtHostLanguageFeaturesShape {
	$provideDocumentSymbols(handle: number, resource: URI): TPromise<modes.SymbolInformation[]>;
	$provideCodeLenses(handle: number, resource: URI): TPromise<modes.ICodeLensSymbol[]>;
	$resolveCodeLens(handle: number, resource: URI, symbol: modes.ICodeLensSymbol): TPromise<modes.ICodeLensSymbol>;
	$provideDefinition(handle: number, resource: URI, position: IPosition): TPromise<modes.Definition>;
	$provideImplementation(handle: number, resource: URI, position: IPosition): TPromise<modes.Definition>;
	$provideTypeDefinition(handle: number, resource: URI, position: IPosition): TPromise<modes.Definition>;
	$provideHover(handle: number, resource: URI, position: IPosition): TPromise<modes.Hover>;
	$provideDocumentHighlights(handle: number, resource: URI, position: IPosition): TPromise<modes.DocumentHighlight[]>;
	$provideReferences(handle: number, resource: URI, position: IPosition, context: modes.ReferenceContext): TPromise<modes.Location[]>;
	$provideCodeActions(handle: number, resource: URI, range: IRange): TPromise<modes.Command[]>;
	$provideDocumentFormattingEdits(handle: number, resource: URI, options: modes.FormattingOptions): TPromise<editorCommon.ISingleEditOperation[]>;
	$provideDocumentRangeFormattingEdits(handle: number, resource: URI, range: IRange, options: modes.FormattingOptions): TPromise<editorCommon.ISingleEditOperation[]>;
	$provideOnTypeFormattingEdits(handle: number, resource: URI, position: IPosition, ch: string, options: modes.FormattingOptions): TPromise<editorCommon.ISingleEditOperation[]>;
	$provideWorkspaceSymbols(handle: number, search: string): TPromise<modes.SymbolInformation[]>;
	$resolveWorkspaceSymbol(handle: number, symbol: modes.SymbolInformation): TPromise<modes.SymbolInformation>;
	$provideRenameEdits(handle: number, resource: URI, position: IPosition, newName: string): TPromise<modes.WorkspaceEdit>;
	$provideCompletionItems(handle: number, resource: URI, position: IPosition): TPromise<modes.ISuggestResult>;
	$resolveCompletionItem(handle: number, resource: URI, position: IPosition, suggestion: modes.ISuggestion): TPromise<modes.ISuggestion>;
	$provideSignatureHelp(handle: number, resource: URI, position: IPosition): TPromise<modes.SignatureHelp>;
	$provideDocumentLinks(handle: number, resource: URI): TPromise<modes.ILink[]>;
	$provideDocumentColors(handle: number, resource: URI): TPromise<IRawColorInfo[]>;
	$resolveDocumentLink(handle: number, link: modes.ILink): TPromise<modes.ILink>;
487 488
}

489 490 491
export interface ExtHostQuickOpenShape {
	$onItemSelected(handle: number): void;
	$validateInput(input: string): TPromise<string>;
492 493
}

494 495 496
export interface ExtHostTerminalServiceShape {
	$acceptTerminalClosed(id: number): void;
	$acceptTerminalProcessId(id: number, processId: number): void;
497 498
}

499 500 501 502 503
export interface ExtHostSCMShape {
	$provideOriginalResource(sourceControlHandle: number, uri: URI): TPromise<URI>;
	$onActiveSourceControlChange(sourceControlHandle: number): TPromise<void>;
	$onInputBoxValueChange(value: string): TPromise<void>;
	$onInputBoxAcceptChanges(): TPromise<void>;
J
Joao Moreno 已提交
504 505
}

506 507
export interface ExtHostTaskShape {
	$provideTasks(handle: number): TPromise<TaskSet>;
508 509
}

510
export interface ExtHostDebugServiceShape {
511 512
	$resolveDebugConfiguration(handle: number, folder: URI | undefined, debugConfiguration: any): TPromise<any>;
	$provideDebugConfigurations(handle: number, folder: URI | undefined): TPromise<any[]>;
513 514 515 516
	$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;
517 518
}

519
export interface ExtHostCredentialsShape {
520 521
}

522 523 524
// --- proxy identifiers

export const MainContext = {
525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544
	MainThreadCommands: createMainId<MainThreadCommandsShape>('MainThreadCommands'),
	MainThreadConfiguration: createMainId<MainThreadConfigurationShape>('MainThreadConfiguration'),
	MainThreadDebugService: createMainId<MainThreadDebugServiceShape>('MainThreadDebugService'),
	MainThreadDiagnostics: createMainId<MainThreadDiagnosticsShape>('MainThreadDiagnostics'),
	MainThreadDocuments: createMainId<MainThreadDocumentsShape>('MainThreadDocuments'),
	MainThreadDocumentContentProviders: createMainId<MainThreadDocumentContentProvidersShape>('MainThreadDocumentContentProviders'),
	MainThreadEditors: createMainId<MainThreadEditorsShape>('MainThreadEditors'),
	MainThreadErrors: createMainId<MainThreadErrorsShape>('MainThreadErrors'),
	MainThreadTreeViews: createMainId<MainThreadTreeViewsShape>('MainThreadTreeViews'),
	MainThreadLanguageFeatures: createMainId<MainThreadLanguageFeaturesShape>('MainThreadLanguageFeatures'),
	MainThreadLanguages: createMainId<MainThreadLanguagesShape>('MainThreadLanguages'),
	MainThreadMessageService: createMainId<MainThreadMessageServiceShape>('MainThreadMessageService'),
	MainThreadOutputService: createMainId<MainThreadOutputServiceShape>('MainThreadOutputService'),
	MainThreadProgress: createMainId<MainThreadProgressShape>('MainThreadProgress'),
	MainThreadQuickOpen: createMainId<MainThreadQuickOpenShape>('MainThreadQuickOpen'),
	MainThreadStatusBar: createMainId<MainThreadStatusBarShape>('MainThreadStatusBar'),
	MainThreadStorage: createMainId<MainThreadStorageShape>('MainThreadStorage'),
	MainThreadTelemetry: createMainId<MainThreadTelemetryShape>('MainThreadTelemetry'),
	MainThreadTerminalService: createMainId<MainThreadTerminalServiceShape>('MainThreadTerminalService'),
	MainThreadWorkspace: createMainId<MainThreadWorkspaceShape>('MainThreadWorkspace'),
545
	MainThreadExtensionService: createMainId<MainThreadExtensionServiceShape>('MainThreadExtensionService'),
546 547 548
	MainThreadSCM: createMainId<MainThreadSCMShape>('MainThreadSCM'),
	MainThreadTask: createMainId<MainThreadTaskShape>('MainThreadTask'),
	MainThreadCredentials: createMainId<MainThreadCredentialsShape>('MainThreadCredentials'),
549 550 551
};

export const ExtHostContext = {
552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571
	ExtHostCommands: createExtId<ExtHostCommandsShape>('ExtHostCommands'),
	ExtHostConfiguration: createExtId<ExtHostConfigurationShape>('ExtHostConfiguration'),
	ExtHostDiagnostics: createExtId<ExtHostDiagnosticsShape>('ExtHostDiagnostics'),
	ExtHostDebugService: createExtId<ExtHostDebugServiceShape>('ExtHostDebugService'),
	ExtHostDocumentsAndEditors: createExtId<ExtHostDocumentsAndEditorsShape>('ExtHostDocumentsAndEditors'),
	ExtHostDocuments: createExtId<ExtHostDocumentsShape>('ExtHostDocuments'),
	ExtHostDocumentContentProviders: createExtId<ExtHostDocumentContentProvidersShape>('ExtHostDocumentContentProviders'),
	ExtHostDocumentSaveParticipant: createExtId<ExtHostDocumentSaveParticipantShape>('ExtHostDocumentSaveParticipant'),
	ExtHostEditors: createExtId<ExtHostEditorsShape>('ExtHostEditors'),
	ExtHostTreeViews: createExtId<ExtHostTreeViewsShape>('ExtHostTreeViews'),
	ExtHostFileSystemEventService: createExtId<ExtHostFileSystemEventServiceShape>('ExtHostFileSystemEventService'),
	ExtHostHeapService: createExtId<ExtHostHeapServiceShape>('ExtHostHeapMonitor'),
	ExtHostLanguageFeatures: createExtId<ExtHostLanguageFeaturesShape>('ExtHostLanguageFeatures'),
	ExtHostQuickOpen: createExtId<ExtHostQuickOpenShape>('ExtHostQuickOpen'),
	ExtHostExtensionService: createExtId<ExtHostExtensionServiceShape>('ExtHostExtensionService'),
	ExtHostTerminalService: createExtId<ExtHostTerminalServiceShape>('ExtHostTerminalService'),
	ExtHostSCM: createExtId<ExtHostSCMShape>('ExtHostSCM'),
	ExtHostTask: createExtId<ExtHostTaskShape>('ExtHostTask'),
	ExtHostWorkspace: createExtId<ExtHostWorkspaceShape>('ExtHostWorkspace'),
	ExtHostCredentials: createExtId<ExtHostCredentialsShape>('ExtHostCredentials'),
572
};