Add preparePaste
method to check if copied text should potentially have smart paste enabled or not
#59881
Closed
6 tasks done
Labels
Milestone
🔍 Search Terms
✅ Viability Checklist
⭐ Suggestion
Add a new
preparePasteEdits
api that lets editors quickly check if copied code may have a paste edit or not.preparePasteEdits
would be called on copy, while todaygetPasteEdits
is called on pasteThis would align with the VS Code paste API proposal: https://github.com/microsoft/vscode/blob/cbcf121deb9f7195e7dc1d63b298b98b254bba5a/src/vscode-dts/vscode.proposed.documentPaste.d.ts#L85
📃 Motivating Example
On paste, VS Code shows UI that lets users select how the content should be pasted. For TS, we now show a
paste with imports
:In order to keep the editor response, we need to show this paste UI quickly after paste. However the TS paste edit may take some time. To mitigate this, we've:
On the VS Code side, restricted the cases when we try getting TS's paste with imports (only if pasting between VS Code files). This uses a
prepare
API that lets a provider add metadata on copy that controls if a paste edit may be available or notLet paste providers deprioritize their edits so that show up later in the list (and don't have to be fully resolved right away)
Added API that lets paste edit providers deferring computing the workspace edit for a paste until we need to apply it (see
resolveDocumentPasteEdit
)However the UX for TS pasting is still too slow to enable by default. A big cause of this is that
paste with imports
gets triggered even when pasting source that does not have any importable symbols, such as text from a comment or string. We should be able to determine this when copying and avoid showingpaste with import
at all in these casesHere's what I think the vscode <-> TS flow should look like:
On copy, VS Code calls
preparePasteEdits
for the copied text. This signals if there may be a paste edit or not. This check should happen fairly quicklyIf
preparePasteEdits
returns false, VS Code does not try asking TS for paste edits when the clipboard content is pastedIf
preparePasteEdits
returns true, then on paste VS Code will callgetPasteEdits
to get the actual editThe text was updated successfully, but these errors were encountered: