Move drop/paste ids onto providers (#189961)

For #179430, #30066

This lets us call just the provider we are interested in
This commit is contained in:
Matt Bierner
2023-08-08 14:44:03 -07:00
committed by GitHub
parent 8f4385d10c
commit 8c7747252e
16 changed files with 113 additions and 105 deletions

View File

@@ -9,11 +9,11 @@ import { createEditForMediaFiles, createEditAddingLinksForUriList, mediaMimes, g
class PasteEditProvider implements vscode.DocumentPasteEditProvider {
private readonly _id = 'insertLink';
public static readonly id = 'insertLink';
private readonly _yieldTo = [
{ mimeType: 'text/plain' },
{ extensionId: 'vscode.ipynb', editId: 'insertAttachment' },
{ extensionId: 'vscode.ipynb', providerId: 'insertAttachment' },
];
async provideDocumentPasteEdits(
@@ -32,7 +32,7 @@ class PasteEditProvider implements vscode.DocumentPasteEditProvider {
return createEdit;
}
const uriEdit = new vscode.DocumentPasteEdit('', this._id, '');
const uriEdit = new vscode.DocumentPasteEdit('', '');
const urlList = await dataTransfer.get('text/uri-list')?.asString();
if (!urlList) {
return;
@@ -65,7 +65,7 @@ class PasteEditProvider implements vscode.DocumentPasteEditProvider {
return;
}
const pasteEdit = new vscode.DocumentPasteEdit(edit.snippet, this._id, edit.label);
const pasteEdit = new vscode.DocumentPasteEdit(edit.snippet, edit.label);
pasteEdit.additionalEdit = edit.additionalEdits;
pasteEdit.yieldTo = this._yieldTo;
return pasteEdit;
@@ -74,6 +74,7 @@ class PasteEditProvider implements vscode.DocumentPasteEditProvider {
export function registerPasteSupport(selector: vscode.DocumentSelector,) {
return vscode.languages.registerDocumentPasteEditProvider(selector, new PasteEditProvider(), {
id: PasteEditProvider.id,
pasteMimeTypes: [
'text/uri-list',
...mediaMimes,

View File

@@ -10,7 +10,7 @@ const textPlainMime = 'text/plain';
class PasteLinkEditProvider implements vscode.DocumentPasteEditProvider {
readonly id = 'insertMarkdownLink';
public static readonly id = 'insertMarkdownLink';
async provideDocumentPasteEdits(
document: vscode.TextDocument,
@@ -34,7 +34,7 @@ class PasteLinkEditProvider implements vscode.DocumentPasteEditProvider {
return;
}
const edit = new vscode.DocumentPasteEdit('', this.id, pasteEdit.label);
const edit = new vscode.DocumentPasteEdit('', pasteEdit.label);
edit.additionalEdit = pasteEdit.additionalEdits;
edit.yieldTo = pasteEdit.markdownLink ? undefined : [{ mimeType: textPlainMime }];
return edit;
@@ -43,6 +43,7 @@ class PasteLinkEditProvider implements vscode.DocumentPasteEditProvider {
export function registerLinkPasteSupport(selector: vscode.DocumentSelector,) {
return vscode.languages.registerDocumentPasteEditProvider(selector, new PasteLinkEditProvider(), {
id: PasteLinkEditProvider.id,
pasteMimeTypes: [textPlainMime]
});
}

View File

@@ -10,11 +10,11 @@ import { Schemes } from '../../util/schemes';
class MarkdownImageDropProvider implements vscode.DocumentDropEditProvider {
private readonly _id = 'insertLink';
public static readonly id = 'insertLink';
private readonly _yieldTo = [
{ mimeType: 'text/plain' },
{ extensionId: 'vscode.ipynb', editId: 'insertAttachment' },
{ extensionId: 'vscode.ipynb', providerId: 'insertAttachment' },
];
async provideDocumentDropEdits(document: vscode.TextDocument, _position: vscode.Position, dataTransfer: vscode.DataTransfer, token: vscode.CancellationToken): Promise<vscode.DocumentDropEdit | undefined> {
@@ -46,7 +46,6 @@ class MarkdownImageDropProvider implements vscode.DocumentDropEditProvider {
}
const edit = new vscode.DocumentDropEdit(snippet.snippet);
edit.id = this._id;
edit.label = snippet.label;
edit.yieldTo = this._yieldTo;
return edit;
@@ -68,7 +67,6 @@ class MarkdownImageDropProvider implements vscode.DocumentDropEditProvider {
}
const edit = new vscode.DocumentDropEdit(filesEdit.snippet);
edit.id = this._id;
edit.label = filesEdit.label;
edit.additionalEdit = filesEdit.additionalEdits;
edit.yieldTo = this._yieldTo;
@@ -78,6 +76,7 @@ class MarkdownImageDropProvider implements vscode.DocumentDropEditProvider {
export function registerDropIntoEditorSupport(selector: vscode.DocumentSelector) {
return vscode.languages.registerDocumentDropEditProvider(selector, new MarkdownImageDropProvider(), {
id: MarkdownImageDropProvider.id,
dropMimeTypes: [
'text/uri-list',
...mediaMimes,