diff --git a/src/vs/editor/contrib/quickFix/browser/quickFixModel.ts b/src/vs/editor/contrib/quickFix/browser/quickFixModel.ts index ee282098c29..9acb2c68fcb 100644 --- a/src/vs/editor/contrib/quickFix/browser/quickFixModel.ts +++ b/src/vs/editor/contrib/quickFix/browser/quickFixModel.ts @@ -14,8 +14,8 @@ import { Range } from 'vs/editor/common/core/range'; import { Selection } from 'vs/editor/common/core/selection'; import { ICommonCodeEditor, IPosition, IRange } from 'vs/editor/common/editorCommon'; import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; -import { CodeActionProviderRegistry } from 'vs/editor/common/modes'; -import { IQuickFix2, getCodeActions } from '../common/quickFix'; +import { CodeActionProviderRegistry, CodeAction } from 'vs/editor/common/modes'; +import { getCodeActions } from '../common/quickFix'; class QuickFixOracle { @@ -98,7 +98,7 @@ export interface QuickFixComputeEvent { type: 'auto' | 'manual'; range: IRange; position: IPosition; - fixes: TPromise; + fixes: TPromise; } export class QuickFixModel { diff --git a/src/vs/editor/contrib/quickFix/browser/quickFixWidget.ts b/src/vs/editor/contrib/quickFix/browser/quickFixWidget.ts index 5e82b1543fc..239bcbe11ef 100644 --- a/src/vs/editor/contrib/quickFix/browser/quickFixWidget.ts +++ b/src/vs/editor/contrib/quickFix/browser/quickFixWidget.ts @@ -10,7 +10,7 @@ import { getDomNodePagePosition } from 'vs/base/browser/dom'; import { Position } from 'vs/editor/common/core/position'; import { IPosition } from 'vs/editor/common/editorCommon'; import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; -import { IQuickFix2 } from '../common/quickFix'; +import { CodeAction } from 'vs/editor/common/modes'; import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; import { ICommandService } from 'vs/platform/commands/common/commands'; import { Action } from 'vs/base/common/actions'; @@ -28,7 +28,7 @@ export class QuickFixContextMenu { this._commandService = commandService; } - show(fixes: TPromise, at: { x: number; y: number } | IPosition) { + show(fixes: TPromise, at: { x: number; y: number } | IPosition) { const actions = fixes.then(value => { return value.map(({command}) => { diff --git a/src/vs/editor/contrib/quickFix/common/quickFix.ts b/src/vs/editor/contrib/quickFix/common/quickFix.ts index ec099bca58c..ca4aa6c2b30 100644 --- a/src/vs/editor/contrib/quickFix/common/quickFix.ts +++ b/src/vs/editor/contrib/quickFix/common/quickFix.ts @@ -8,44 +8,27 @@ import { illegalArgument, onUnexpectedError } from 'vs/base/common/errors'; import URI from 'vs/base/common/uri'; import { TPromise } from 'vs/base/common/winjs.base'; -import { IdGenerator } from 'vs/base/common/idGenerator'; import { Range } from 'vs/editor/common/core/range'; import { IReadOnlyModel } from 'vs/editor/common/editorCommon'; import { CommonEditorRegistry } from 'vs/editor/common/editorCommonExtensions'; -import { CodeActionProviderRegistry, CodeAction, CodeActionProvider } from 'vs/editor/common/modes'; +import { CodeActionProviderRegistry, CodeAction } from 'vs/editor/common/modes'; import { IModelService } from 'vs/editor/common/services/modelService'; import { asWinJsPromise } from 'vs/base/common/async'; -export interface IQuickFix2 extends CodeAction { - support: CodeActionProvider; - id: string; -} +export function getCodeActions(model: IReadOnlyModel, range: Range): TPromise { -export function getCodeActions(model: IReadOnlyModel, range: Range): TPromise { - - const quickFixes: IQuickFix2[] = []; - let ids = new IdGenerator('quickfix'); + const allResults: CodeAction[] = []; const promises = CodeActionProviderRegistry.all(model).map(support => { - return asWinJsPromise((token) => { - return support.provideCodeActions(model, range, token); - }).then(result => { - if (!Array.isArray(result)) { - return; - } - for (let fix of result) { - quickFixes.push({ - command: fix.command, - score: fix.score, - id: ids.nextId(), - support - }); + return asWinJsPromise(token => support.provideCodeActions(model, range, token)).then(result => { + if (Array.isArray(result)) { + allResults.push(...result); } }, err => { onUnexpectedError(err); }); }); - return TPromise.join(promises).then(() => quickFixes); + return TPromise.join(promises).then(() => allResults); } CommonEditorRegistry.registerLanguageCommand('_executeCodeActionProvider', function (accessor, args) { diff --git a/src/vs/workbench/api/node/extHostApiCommands.ts b/src/vs/workbench/api/node/extHostApiCommands.ts index 61ea59bf93c..d7ba704e899 100644 --- a/src/vs/workbench/api/node/extHostApiCommands.ts +++ b/src/vs/workbench/api/node/extHostApiCommands.ts @@ -14,7 +14,6 @@ import { ISingleEditOperation } from 'vs/editor/common/editorCommon'; import * as modes from 'vs/editor/common/modes'; import { ICommandHandlerDescription } from 'vs/platform/commands/common/commands'; import { ExtHostCommands } from 'vs/workbench/api/node/extHostCommands'; -import { IQuickFix2 } from 'vs/editor/contrib/quickFix/common/quickFix'; import { IOutline } from 'vs/editor/contrib/quickOpen/common/quickOpen'; import { IWorkspaceSymbolProvider, IWorkspaceSymbol } from 'vs/workbench/parts/search/common/search'; import { ICodeLensData } from 'vs/editor/contrib/codelens/common/codelens'; @@ -366,7 +365,7 @@ class ExtHostApiCommands { resource, range: typeConverters.fromRange(range) }; - return this._commands.executeCommand('_executeCodeActionProvider', args).then(value => { + return this._commands.executeCommand('_executeCodeActionProvider', args).then(value => { if (!Array.isArray(value)) { return; }