mirror of
https://github.com/microsoft/vscode.git
synced 2025-12-25 04:36:23 +00:00
priority -> yieldTo for drop/paste API proposals (#189881)
Move await from `priority` for drop/paste API proposals For #179430, #30066 Switching to use `yieldTo` instead of `priority` to let an extension de-rank itself in the list of edits. `priority` was an arbitrary number while `yieldTo` gives more control over how the ranking takes place
This commit is contained in:
@@ -15,6 +15,7 @@ enum MimeType {
|
||||
png = 'image/png',
|
||||
tiff = 'image/tiff',
|
||||
webp = 'image/webp',
|
||||
plain = 'text/plain',
|
||||
uriList = 'text/uri-list',
|
||||
}
|
||||
|
||||
@@ -49,8 +50,6 @@ class DropOrPasteEditProvider implements vscode.DocumentPasteEditProvider, vscod
|
||||
|
||||
private readonly id = 'insertAttachment';
|
||||
|
||||
private readonly defaultPriority = 5;
|
||||
|
||||
async provideDocumentPasteEdits(
|
||||
document: vscode.TextDocument,
|
||||
_ranges: readonly vscode.Range[],
|
||||
@@ -68,7 +67,7 @@ class DropOrPasteEditProvider implements vscode.DocumentPasteEditProvider, vscod
|
||||
}
|
||||
|
||||
const pasteEdit = new vscode.DocumentPasteEdit(insert.insertText, this.id, vscode.l10n.t('Insert Image as Attachment'));
|
||||
pasteEdit.priority = this.getPastePriority(dataTransfer);
|
||||
pasteEdit.yieldTo = [{ mimeType: MimeType.plain }];
|
||||
pasteEdit.additionalEdit = insert.additionalEdit;
|
||||
return pasteEdit;
|
||||
}
|
||||
@@ -86,22 +85,12 @@ class DropOrPasteEditProvider implements vscode.DocumentPasteEditProvider, vscod
|
||||
|
||||
const dropEdit = new vscode.DocumentDropEdit(insert.insertText);
|
||||
dropEdit.id = this.id;
|
||||
dropEdit.priority = this.defaultPriority;
|
||||
dropEdit.yieldTo = [{ mimeType: MimeType.plain }];
|
||||
dropEdit.additionalEdit = insert.additionalEdit;
|
||||
dropEdit.label = vscode.l10n.t('Insert Image as Attachment');
|
||||
return dropEdit;
|
||||
}
|
||||
|
||||
private getPastePriority(dataTransfer: vscode.DataTransfer): number {
|
||||
if (dataTransfer.get('text/plain')) {
|
||||
// Deprioritize in favor of normal text content
|
||||
return -5;
|
||||
}
|
||||
|
||||
// Otherwise boost priority so attachments are preferred
|
||||
return this.defaultPriority;
|
||||
}
|
||||
|
||||
private async createInsertImageAttachmentEdit(
|
||||
document: vscode.TextDocument,
|
||||
dataTransfer: vscode.DataTransfer,
|
||||
|
||||
Reference in New Issue
Block a user