diff --git a/src/vs/workbench/api/electron-browser/mainThreadQuickOpen.ts b/src/vs/workbench/api/electron-browser/mainThreadQuickOpen.ts index 5defbc6bd6b..f6f1c5fcf87 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadQuickOpen.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadQuickOpen.ts @@ -5,7 +5,6 @@ 'use strict'; import { TPromise } from 'vs/base/common/winjs.base'; -import { asWinJsPromise } from 'vs/base/common/async'; import { IPickOptions, IInputOptions, IQuickInputService, IQuickInput } from 'vs/platform/quickinput/common/quickInput'; import { InputBoxOptions } from 'vscode'; import { ExtHostContext, MainThreadQuickOpenShape, ExtHostQuickOpenShape, TransferQuickPickItems, MainContext, IExtHostContext, TransferQuickInput, TransferQuickInputButton } from 'vs/workbench/api/node/extHost.protocol'; @@ -98,7 +97,7 @@ export class MainThreadQuickOpen implements MainThreadQuickOpenShape { // ---- input - $input(options: InputBoxOptions, validateInput: boolean): TPromise { + $input(options: InputBoxOptions, validateInput: boolean, token: CancellationToken): Thenable { const inputOptions: IInputOptions = Object.create(null); if (options) { @@ -116,7 +115,7 @@ export class MainThreadQuickOpen implements MainThreadQuickOpenShape { }; } - return asWinJsPromise(token => this._quickInputService.input(inputOptions, token)); + return this._quickInputService.input(inputOptions, token); } // ---- QuickInput diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 85761d96ef7..b51838a7e84 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -407,7 +407,7 @@ export interface MainThreadQuickOpenShape extends IDisposable { $show(options: IPickOptions, token: CancellationToken): Thenable; $setItems(items: TransferQuickPickItems[]): Thenable; $setError(error: Error): Thenable; - $input(options: vscode.InputBoxOptions, validateInput: boolean): TPromise; + $input(options: vscode.InputBoxOptions, validateInput: boolean, token: CancellationToken): Thenable; $createOrUpdate(params: TransferQuickInput): Thenable; $dispose(id: number): Thenable; } diff --git a/src/vs/workbench/api/node/extHostQuickOpen.ts b/src/vs/workbench/api/node/extHostQuickOpen.ts index a576853eead..c58075883bf 100644 --- a/src/vs/workbench/api/node/extHostQuickOpen.ts +++ b/src/vs/workbench/api/node/extHostQuickOpen.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ 'use strict'; -import { wireCancellationToken, asThenable } from 'vs/base/common/async'; +import { asThenable } from 'vs/base/common/async'; import { CancellationToken } from 'vs/base/common/cancellation'; import { Emitter } from 'vs/base/common/event'; import { dispose, IDisposable } from 'vs/base/common/lifecycle'; @@ -130,8 +130,16 @@ export class ExtHostQuickOpen implements ExtHostQuickOpenShape { // global validate fn used in callback below this._validateInput = options && options.validateInput; - const promise = this._proxy.$input(options, typeof this._validateInput === 'function'); - return wireCancellationToken(token, promise, true); + return this._proxy.$input(options, typeof this._validateInput === 'function', token) + .then(null, err => { + if (isPromiseCanceledError(err)) { + return undefined; + } + + this._proxy.$setError(err); + + return TPromise.wrapError(err); + }); } $validateInput(input: string): Thenable {