Merge from vscode a234f13c45b40a0929777cb440ee011b7549eed2 (#8911)

* Merge from vscode a234f13c45b40a0929777cb440ee011b7549eed2

* update distro

* fix layering

* update distro

* fix tests
This commit is contained in:
Anthony Dresser
2020-01-22 13:42:37 -08:00
committed by GitHub
parent 977111eb21
commit bd7aac8ee0
895 changed files with 24651 additions and 14520 deletions

View File

@@ -6,16 +6,16 @@
import { equals, flatten, isNonEmptyArray, mergeSort } from 'vs/base/common/arrays';
import { CancellationToken } from 'vs/base/common/cancellation';
import { illegalArgument, isPromiseCanceledError, onUnexpectedExternalError } from 'vs/base/common/errors';
import { Disposable, DisposableStore, IDisposable } from 'vs/base/common/lifecycle';
import { URI } from 'vs/base/common/uri';
import { TextModelCancellationTokenSource } from 'vs/editor/browser/core/editorState';
import { registerLanguageCommand } from 'vs/editor/browser/editorExtensions';
import { Range } from 'vs/editor/common/core/range';
import { Selection } from 'vs/editor/common/core/selection';
import { ITextModel } from 'vs/editor/common/model';
import { CodeAction, CodeActionContext, CodeActionProviderRegistry, CodeActionTrigger as CodeActionTriggerKind } from 'vs/editor/common/modes';
import * as modes from 'vs/editor/common/modes';
import { IModelService } from 'vs/editor/common/services/modelService';
import { CodeActionFilter, CodeActionKind, CodeActionTrigger, filtersAction, mayIncludeActionsOfKind } from './types';
import { TextModelCancellationTokenSource } from 'vs/editor/browser/core/editorState';
import { DisposableStore, IDisposable, Disposable } from 'vs/base/common/lifecycle';
export const codeActionCommandId = 'editor.action.codeAction';
export const refactorCommandId = 'editor.action.refactor';
@@ -24,14 +24,14 @@ export const organizeImportsCommandId = 'editor.action.organizeImports';
export const fixAllCommandId = 'editor.action.fixAll';
export interface CodeActionSet extends IDisposable {
readonly validActions: readonly CodeAction[];
readonly allActions: readonly CodeAction[];
readonly validActions: readonly modes.CodeAction[];
readonly allActions: readonly modes.CodeAction[];
readonly hasAutoFix: boolean;
}
class ManagedCodeActionSet extends Disposable implements CodeActionSet {
private static codeActionsComparator(a: CodeAction, b: CodeAction): number {
private static codeActionsComparator(a: modes.CodeAction, b: modes.CodeAction): number {
if (isNonEmptyArray(a.diagnostics)) {
if (isNonEmptyArray(b.diagnostics)) {
return a.diagnostics[0].message.localeCompare(b.diagnostics[0].message);
@@ -45,10 +45,10 @@ class ManagedCodeActionSet extends Disposable implements CodeActionSet {
}
}
public readonly validActions: readonly CodeAction[];
public readonly allActions: readonly CodeAction[];
public readonly validActions: readonly modes.CodeAction[];
public readonly allActions: readonly modes.CodeAction[];
public constructor(actions: readonly CodeAction[], disposables: DisposableStore) {
public constructor(actions: readonly modes.CodeAction[], disposables: DisposableStore) {
super();
this._register(disposables);
this.allActions = mergeSort([...actions], ManagedCodeActionSet.codeActionsComparator);
@@ -68,9 +68,9 @@ export function getCodeActions(
): Promise<CodeActionSet> {
const filter = trigger.filter || {};
const codeActionContext: CodeActionContext = {
const codeActionContext: modes.CodeActionContext = {
only: filter.include?.value,
trigger: trigger.type === 'manual' ? CodeActionTriggerKind.Manual : CodeActionTriggerKind.Automatic
trigger: trigger.type,
};
const cts = new TextModelCancellationTokenSource(model, token);
@@ -94,8 +94,8 @@ export function getCodeActions(
}
});
const listener = CodeActionProviderRegistry.onDidChange(() => {
const newProviders = CodeActionProviderRegistry.all(model);
const listener = modes.CodeActionProviderRegistry.onDidChange(() => {
const newProviders = modes.CodeActionProviderRegistry.all(model);
if (!equals(newProviders, providers)) {
cts.cancel();
}
@@ -114,7 +114,7 @@ function getCodeActionProviders(
model: ITextModel,
filter: CodeActionFilter
) {
return CodeActionProviderRegistry.all(model)
return modes.CodeActionProviderRegistry.all(model)
// Don't include providers that we know will not return code actions of interest
.filter(provider => {
if (!provider.providedCodeActionKinds) {
@@ -125,7 +125,7 @@ function getCodeActionProviders(
});
}
registerLanguageCommand('_executeCodeActionProvider', async function (accessor, args): Promise<ReadonlyArray<CodeAction>> {
registerLanguageCommand('_executeCodeActionProvider', async function (accessor, args): Promise<ReadonlyArray<modes.CodeAction>> {
const { resource, rangeOrSelection, kind } = args;
if (!(resource instanceof URI)) {
throw illegalArgument();
@@ -149,7 +149,7 @@ registerLanguageCommand('_executeCodeActionProvider', async function (accessor,
const codeActionSet = await getCodeActions(
model,
validatedRangeOrSelection,
{ type: 'manual', filter: { includeSourceActions: true, include: kind && kind.value ? new CodeActionKind(kind.value) : undefined } },
{ type: modes.CodeActionTriggerType.Manual, filter: { includeSourceActions: true, include: kind && kind.value ? new CodeActionKind(kind.value) : undefined } },
CancellationToken.None);
setTimeout(() => codeActionSet.dispose(), 100);