fix(terminal): forward streamed bracketed paste properly (#39152)

This commit is contained in:
zeertzjq
2026-04-18 06:33:52 +08:00
committed by GitHub
parent e84076c7c6
commit 4eaf782bb6
3 changed files with 87 additions and 3 deletions

View File

@@ -1373,6 +1373,9 @@ Boolean nvim_paste(uint64_t channel_id, String data, Boolean crlf, Integer phase
});
if (phase == -1 || phase == 1) { // Start of paste-stream.
cancelled = false;
if (curbuf->terminal) {
terminal_set_streamed_paste(curbuf->terminal, true);
}
} else if (cancelled) {
// Skip remaining chunks. Report error only once per "stream".
goto theend;
@@ -1386,6 +1389,9 @@ Boolean nvim_paste(uint64_t channel_id, String data, Boolean crlf, Integer phase
if (ERROR_SET(err) || (rv.type == kObjectTypeBoolean && !rv.data.boolean)) {
cancelled = true;
}
if ((phase == -1 || phase == 3 || cancelled) && curbuf->terminal) {
terminal_set_streamed_paste(curbuf->terminal, false);
}
if (!cancelled && (phase == -1 || phase == 1)) {
paste_store(channel_id, kFalse, NULL_STRING, crlf);
}