Add priority to paste / drop apis (#182109)

* Add priority to paste / drop apis

Fixes #181886

Replacement for #181453

* Make notebooks prefer text over creating attachments
This commit is contained in:
Matt Bierner
2023-05-10 14:18:05 -07:00
committed by GitHub
parent 46b7e7b02c
commit 4d38422afe
11 changed files with 124 additions and 72 deletions

View File

@@ -32,13 +32,19 @@ class PasteEditProvider implements vscode.DocumentPasteEditProvider {
return;
}
const edit = await this._makeCreateImagePasteEdit(document, dataTransfer, token);
if (edit) {
return edit;
const createEdit = await this._makeCreateImagePasteEdit(document, dataTransfer, token);
if (createEdit) {
return createEdit;
}
const snippet = await tryGetUriListSnippet(document, dataTransfer, token);
return snippet ? new vscode.DocumentPasteEdit(snippet.snippet, this._id, snippet.label) : undefined;
if (!snippet) {
return;
}
const uriEdit = new vscode.DocumentPasteEdit(snippet.snippet, this._id, snippet.label);
uriEdit.priority = this._getPriority(dataTransfer);
return uriEdit;
}
private async _makeCreateImagePasteEdit(document: vscode.TextDocument, dataTransfer: vscode.DataTransfer, token: vscode.CancellationToken): Promise<vscode.DocumentPasteEdit | undefined> {
@@ -89,10 +95,19 @@ class PasteEditProvider implements vscode.DocumentPasteEditProvider {
return;
}
const pasteEdit = new vscode.DocumentPasteEdit(snippet.snippet, '', snippet.label);
const pasteEdit = new vscode.DocumentPasteEdit(snippet.snippet, this._id, snippet.label);
pasteEdit.additionalEdit = workspaceEdit;
pasteEdit.priority = this._getPriority(dataTransfer);
return pasteEdit;
}
private _getPriority(dataTransfer: vscode.DataTransfer): number {
if (dataTransfer.get('text/plain')) {
// Deprioritize in favor of normal text content
return -10;
}
return 0;
}
}
export function registerPasteSupport(selector: vscode.DocumentSelector,) {