summaryrefslogtreecommitdiff
path: root/packages/cli/src/ui/contexts/KeypressContext.tsx
diff options
context:
space:
mode:
authorJacob Richman <[email protected]>2025-08-19 13:41:08 -0700
committerGitHub <[email protected]>2025-08-19 20:41:08 +0000
commit2143731f6efdf1aafff38ec249caf01a8bcd163e (patch)
treeb9f3a81148192632f65c0bcc21250da11fe12100 /packages/cli/src/ui/contexts/KeypressContext.tsx
parented1fc4ddb39a25fad2c9dd12a250959c050a6343 (diff)
fix(paste) incorrect handling of \\\n in pastes (#6532)
Diffstat (limited to 'packages/cli/src/ui/contexts/KeypressContext.tsx')
-rw-r--r--packages/cli/src/ui/contexts/KeypressContext.tsx48
1 files changed, 26 insertions, 22 deletions
diff --git a/packages/cli/src/ui/contexts/KeypressContext.tsx b/packages/cli/src/ui/contexts/KeypressContext.tsx
index b1e70aed..eaf1819b 100644
--- a/packages/cli/src/ui/contexts/KeypressContext.tsx
+++ b/packages/cli/src/ui/contexts/KeypressContext.tsx
@@ -172,6 +172,29 @@ export function KeypressProvider({
};
const handleKeypress = (_: unknown, key: Key) => {
+ if (key.name === 'paste-start') {
+ isPaste = true;
+ return;
+ }
+ if (key.name === 'paste-end') {
+ isPaste = false;
+ broadcast({
+ name: '',
+ ctrl: false,
+ meta: false,
+ shift: false,
+ paste: true,
+ sequence: pasteBuffer.toString(),
+ });
+ pasteBuffer = Buffer.alloc(0);
+ return;
+ }
+
+ if (isPaste) {
+ pasteBuffer = Buffer.concat([pasteBuffer, Buffer.from(key.sequence)]);
+ return;
+ }
+
if (key.name === 'return' && waitingForEnterAfterBackslash) {
if (backslashTimeout) {
clearTimeout(backslashTimeout);
@@ -278,29 +301,10 @@ export function KeypressProvider({
}
}
- if (key.name === 'paste-start') {
- isPaste = true;
- } else if (key.name === 'paste-end') {
- isPaste = false;
- broadcast({
- name: '',
- ctrl: false,
- meta: false,
- shift: false,
- paste: true,
- sequence: pasteBuffer.toString(),
- });
- pasteBuffer = Buffer.alloc(0);
- } else {
- if (isPaste) {
- pasteBuffer = Buffer.concat([pasteBuffer, Buffer.from(key.sequence)]);
- } else {
- if (key.name === 'return' && key.sequence === `${ESC}\r`) {
- key.meta = true;
- }
- broadcast({ ...key, paste: isPaste });
- }
+ if (key.name === 'return' && key.sequence === `${ESC}\r`) {
+ key.meta = true;
}
+ broadcast({ ...key, paste: isPaste });
};
const handleRawKeypress = (data: Buffer) => {