Skip to content

Commit 1d44987

Browse files
authored
Support for notebook.format Code Action (#212750)
* initial support + remove some unnecessary early returns * notebook default formatter setting + skip formatting if format codeaction + restructuring * support default formatter for notebooks + provider holds extensionId * remove unreachable code, simplify default formatter setting
1 parent 601ea43 commit 1d44987

File tree

8 files changed

+220
-95
lines changed

8 files changed

+220
-95
lines changed

src/vs/editor/common/languages.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -834,6 +834,8 @@ export interface CodeActionProvider {
834834

835835
displayName?: string;
836836

837+
extensionId?: string;
838+
837839
/**
838840
* Provide commands for the given document and range.
839841
*/

src/vs/workbench/api/browser/mainThreadLanguageFeatures.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -367,9 +367,9 @@ export class MainThreadLanguageFeatures extends Disposable implements MainThread
367367
}));
368368
}
369369

370-
// --- quick fix
370+
// --- code actions
371371

372-
$registerQuickFixSupport(handle: number, selector: IDocumentFilterDto[], metadata: ICodeActionProviderMetadataDto, displayName: string, supportsResolve: boolean): void {
372+
$registerCodeActionSupport(handle: number, selector: IDocumentFilterDto[], metadata: ICodeActionProviderMetadataDto, displayName: string, extensionId: string, supportsResolve: boolean): void {
373373
const provider: languages.CodeActionProvider = {
374374
provideCodeActions: async (model: ITextModel, rangeOrSelection: EditorRange | Selection, context: languages.CodeActionContext, token: CancellationToken): Promise<languages.CodeActionList | undefined> => {
375375
const listDto = await this._proxy.$provideCodeActions(handle, model.uri, rangeOrSelection, context, token);
@@ -387,7 +387,8 @@ export class MainThreadLanguageFeatures extends Disposable implements MainThread
387387
},
388388
providedCodeActionKinds: metadata.providedKinds,
389389
documentation: metadata.documentation,
390-
displayName
390+
displayName,
391+
extensionId,
391392
};
392393

393394
if (supportsResolve) {

src/vs/workbench/api/common/extHost.protocol.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -414,7 +414,7 @@ export interface MainThreadLanguageFeaturesShape extends IDisposable {
414414
$registerMultiDocumentHighlightProvider(handle: number, selector: IDocumentFilterDto[]): void;
415415
$registerLinkedEditingRangeProvider(handle: number, selector: IDocumentFilterDto[]): void;
416416
$registerReferenceSupport(handle: number, selector: IDocumentFilterDto[]): void;
417-
$registerQuickFixSupport(handle: number, selector: IDocumentFilterDto[], metadata: ICodeActionProviderMetadataDto, displayName: string, supportsResolve: boolean): void;
417+
$registerCodeActionSupport(handle: number, selector: IDocumentFilterDto[], metadata: ICodeActionProviderMetadataDto, displayName: string, extensionID: string, supportsResolve: boolean): void;
418418
$registerPasteEditProvider(handle: number, selector: IDocumentFilterDto[], metadata: IPasteEditProviderMetadataDto): void;
419419
$registerDocumentFormattingSupport(handle: number, selector: IDocumentFilterDto[], extensionId: ExtensionIdentifier, displayName: string): void;
420420
$registerRangeFormattingSupport(handle: number, selector: IDocumentFilterDto[], extensionId: ExtensionIdentifier, displayName: string, supportRanges: boolean): void;

src/vs/workbench/api/common/extHostLanguageFeatures.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2196,6 +2196,10 @@ export class ExtHostLanguageFeatures implements extHostProtocol.ExtHostLanguageF
21962196
return ext.displayName || ext.name;
21972197
}
21982198

2199+
private static _extId(ext: IExtensionDescription): string {
2200+
return ext.identifier.value;
2201+
}
2202+
21992203
// --- outline
22002204

22012205
registerDocumentSymbolProvider(extension: IExtensionDescription, selector: vscode.DocumentSelector, provider: vscode.DocumentSymbolProvider, metadata?: vscode.DocumentSymbolProviderMetadata): vscode.Disposable {
@@ -2385,18 +2389,18 @@ export class ExtHostLanguageFeatures implements extHostProtocol.ExtHostLanguageF
23852389
return this._withAdapter(handle, ReferenceAdapter, adapter => adapter.provideReferences(URI.revive(resource), position, context, token), undefined, token);
23862390
}
23872391

2388-
// --- quick fix
2392+
// --- code actions
23892393

23902394
registerCodeActionProvider(extension: IExtensionDescription, selector: vscode.DocumentSelector, provider: vscode.CodeActionProvider, metadata?: vscode.CodeActionProviderMetadata): vscode.Disposable {
23912395
const store = new DisposableStore();
23922396
const handle = this._addNewAdapter(new CodeActionAdapter(this._documents, this._commands.converter, this._diagnostics, provider, this._logService, extension, this._apiDeprecation), extension);
2393-
this._proxy.$registerQuickFixSupport(handle, this._transformDocumentSelector(selector, extension), {
2397+
this._proxy.$registerCodeActionSupport(handle, this._transformDocumentSelector(selector, extension), {
23942398
providedKinds: metadata?.providedCodeActionKinds?.map(kind => kind.value),
23952399
documentation: metadata?.documentation?.map(x => ({
23962400
kind: x.kind.value,
23972401
command: this._commands.converter.toInternal(x.command, store),
23982402
}))
2399-
}, ExtHostLanguageFeatures._extLabel(extension), Boolean(provider.resolveCodeAction));
2403+
}, ExtHostLanguageFeatures._extLabel(extension), ExtHostLanguageFeatures._extId(extension), Boolean(provider.resolveCodeAction));
24002404
store.add(this._createDisposable(handle));
24012405
return store;
24022406
}

src/vs/workbench/contrib/format/browser/formatActionsMultiple.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ import { generateUuid } from 'vs/base/common/uuid';
3737

3838
type FormattingEditProvider = DocumentFormattingEditProvider | DocumentRangeFormattingEditProvider;
3939

40-
class DefaultFormatter extends Disposable implements IWorkbenchContribution {
40+
export class DefaultFormatter extends Disposable implements IWorkbenchContribution {
4141

4242
static readonly configName = 'editor.defaultFormatter';
4343

0 commit comments

Comments
 (0)