Skip to content

Commit ac87e91

Browse files
committed
Always enable bracketed paste
1 parent eb75f59 commit ac87e91

2 files changed

Lines changed: 3 additions & 67 deletions

File tree

packages/cli/src/ui/utils/terminalCapabilityManager.test.ts

Lines changed: 0 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -266,46 +266,4 @@ describe('TerminalCapabilityManager', () => {
266266
expect(manager.isModifyOtherKeysEnabled()).toBe(true);
267267
});
268268
});
269-
270-
describe('bracketed paste detection', () => {
271-
it('should detect bracketed paste support (mode set)', async () => {
272-
const manager = TerminalCapabilityManager.getInstance();
273-
const promise = manager.detectCapabilities();
274-
275-
// Simulate bracketed paste response: \x1b[?2004;1$y
276-
stdin.emit('data', Buffer.from('\x1b[?2004;1$y'));
277-
// Complete detection with DA1
278-
stdin.emit('data', Buffer.from('\x1b[?62c'));
279-
280-
await promise;
281-
expect(manager.isBracketedPasteSupported()).toBe(true);
282-
expect(manager.isBracketedPasteEnabled()).toBe(true);
283-
});
284-
285-
it('should detect bracketed paste support (mode reset)', async () => {
286-
const manager = TerminalCapabilityManager.getInstance();
287-
const promise = manager.detectCapabilities();
288-
289-
// Simulate bracketed paste response: \x1b[?2004;2$y
290-
stdin.emit('data', Buffer.from('\x1b[?2004;2$y'));
291-
// Complete detection with DA1
292-
stdin.emit('data', Buffer.from('\x1b[?62c'));
293-
294-
await promise;
295-
expect(manager.isBracketedPasteSupported()).toBe(true);
296-
expect(manager.isBracketedPasteEnabled()).toBe(true);
297-
});
298-
299-
it('should not enable bracketed paste if not supported', async () => {
300-
const manager = TerminalCapabilityManager.getInstance();
301-
const promise = manager.detectCapabilities();
302-
303-
// Complete detection with DA1 only
304-
stdin.emit('data', Buffer.from('\x1b[?62c'));
305-
306-
await promise;
307-
expect(manager.isBracketedPasteSupported()).toBe(false);
308-
expect(manager.isBracketedPasteEnabled()).toBe(false);
309-
});
310-
});
311269
});

packages/cli/src/ui/utils/terminalCapabilityManager.ts

Lines changed: 3 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,6 @@ export class TerminalCapabilityManager {
4343
// modifyOtherKeys response: CSI > 4 ; level m
4444
// eslint-disable-next-line no-control-regex
4545
private static readonly MODIFY_OTHER_KEYS_REGEX = /\x1b\[>4;(\d+)m/;
46-
// DECRQM response for bracketed paste: CSI ? 2004 ; Ps $ y
47-
// Ps = 1 (set), 2 (reset), 3 (permanently set), 4 (permanently reset)
48-
// eslint-disable-next-line no-control-regex
49-
private static readonly BRACKETED_PASTE_REGEX = /\x1b\[\?2004;([1-4])\$y/;
5046

5147
private terminalBackgroundColor: TerminalBackgroundColor;
5248
private kittySupported = false;
@@ -55,7 +51,6 @@ export class TerminalCapabilityManager {
5551
private terminalName: string | undefined;
5652
private modifyOtherKeysSupported = false;
5753
private modifyOtherKeysEnabled = false;
58-
private bracketedPasteSupported = false;
5954
private bracketedPasteEnabled = false;
6055

6156
private constructor() {}
@@ -107,7 +102,6 @@ export class TerminalCapabilityManager {
107102
let deviceAttributesReceived = false;
108103
let bgReceived = false;
109104
let modifyOtherKeysReceived = false;
110-
let bracketedPasteReceived = false;
111105
// eslint-disable-next-line prefer-const
112106
let timeoutId: NodeJS.Timeout;
113107

@@ -172,17 +166,6 @@ export class TerminalCapabilityManager {
172166
}
173167
}
174168

175-
// check for bracketed paste support
176-
if (!bracketedPasteReceived) {
177-
const match = buffer.match(
178-
TerminalCapabilityManager.BRACKETED_PASTE_REGEX,
179-
);
180-
if (match) {
181-
bracketedPasteReceived = true;
182-
this.bracketedPasteSupported = true;
183-
}
184-
}
185-
186169
// Check for Terminal Name/Version response.
187170
if (!terminalNameReceived) {
188171
const match = buffer.match(
@@ -238,10 +221,9 @@ export class TerminalCapabilityManager {
238221
enableModifyOtherKeys();
239222
this.modifyOtherKeysEnabled = true;
240223
}
241-
if (this.bracketedPasteSupported) {
242-
enableBracketedPasteMode();
243-
this.bracketedPasteEnabled = true;
244-
}
224+
// Always enable bracketed paste since it'll be ignored if unsupported.
225+
enableBracketedPasteMode();
226+
this.bracketedPasteEnabled = true;
245227
} catch (e) {
246228
debugLogger.warn('Failed to enable keyboard protocols:', e);
247229
}
@@ -259,10 +241,6 @@ export class TerminalCapabilityManager {
259241
return this.kittyEnabled;
260242
}
261243

262-
isBracketedPasteSupported(): boolean {
263-
return this.bracketedPasteSupported;
264-
}
265-
266244
isBracketedPasteEnabled(): boolean {
267245
return this.bracketedPasteEnabled;
268246
}

0 commit comments

Comments
 (0)