diff --git a/docs/cli/keyboard-shortcuts.md b/docs/cli/keyboard-shortcuts.md index 96565a5cf3..b90954a31a 100644 --- a/docs/cli/keyboard-shortcuts.md +++ b/docs/cli/keyboard-shortcuts.md @@ -87,10 +87,10 @@ available combinations. #### Text Input -| Action | Keys | -| ------------------------------------ | ------------------------------------------------------------------------------------------- | -| Submit the current prompt. | `Enter (no Ctrl, no Shift, no Cmd, not Paste)` | -| Insert a newline without submitting. | `Ctrl + Enter`
`Cmd + Enter`
`Paste + Enter`
`Shift + Enter`
`Ctrl + J` | +| Action | Keys | +| ------------------------------------ | ---------------------------------------------------------------------- | +| Submit the current prompt. | `Enter (no Ctrl, no Shift, no Cmd)` | +| Insert a newline without submitting. | `Ctrl + Enter`
`Cmd + Enter`
`Shift + Enter`
`Ctrl + J` | #### External Tools diff --git a/packages/cli/src/config/keyBindings.test.ts b/packages/cli/src/config/keyBindings.test.ts index 2a4debd483..d8c83024f5 100644 --- a/packages/cli/src/config/keyBindings.test.ts +++ b/packages/cli/src/config/keyBindings.test.ts @@ -45,9 +45,6 @@ describe('keyBindings config', () => { if (binding.command !== undefined) { expect(typeof binding.command).toBe('boolean'); } - if (binding.paste !== undefined) { - expect(typeof binding.paste).toBe('boolean'); - } } } }); diff --git a/packages/cli/src/config/keyBindings.ts b/packages/cli/src/config/keyBindings.ts index 432d958489..d888c1046e 100644 --- a/packages/cli/src/config/keyBindings.ts +++ b/packages/cli/src/config/keyBindings.ts @@ -104,8 +104,6 @@ export interface KeyBinding { shift?: boolean; /** Command/meta key requirement: true=must be pressed, false=must not be pressed, undefined=ignore */ command?: boolean; - /** Paste operation requirement: true=must be paste, false=must not be paste, undefined=ignore */ - paste?: boolean; } /** @@ -211,7 +209,6 @@ export const defaultKeyBindings: KeyBindingConfig = { key: 'return', ctrl: false, command: false, - paste: false, shift: false, }, ], @@ -220,7 +217,6 @@ export const defaultKeyBindings: KeyBindingConfig = { [Command.NEWLINE]: [ { key: 'return', ctrl: true }, { key: 'return', command: true }, - { key: 'return', paste: true }, { key: 'return', shift: true }, { key: 'j', ctrl: true }, ], diff --git a/packages/cli/src/ui/AppContainer.test.tsx b/packages/cli/src/ui/AppContainer.test.tsx index dd648d1975..3dbf61c965 100644 --- a/packages/cli/src/ui/AppContainer.test.tsx +++ b/packages/cli/src/ui/AppContainer.test.tsx @@ -1858,7 +1858,6 @@ describe('AppContainer State Management', () => { ctrl: true, meta: false, shift: false, - paste: false, insertable: false, sequence: '\x13', }); @@ -1885,7 +1884,6 @@ describe('AppContainer State Management', () => { ctrl: true, meta: false, shift: false, - paste: false, insertable: false, sequence: '\x13', }); @@ -1900,7 +1898,6 @@ describe('AppContainer State Management', () => { ctrl: false, meta: false, shift: false, - paste: false, insertable: true, sequence: 'a', }); @@ -1921,7 +1918,6 @@ describe('AppContainer State Management', () => { ctrl: true, meta: false, shift: false, - paste: false, insertable: false, sequence: '\x13', }); @@ -1937,7 +1933,6 @@ describe('AppContainer State Management', () => { ctrl: false, meta: false, shift: false, - paste: false, insertable: true, sequence: 'a', }); diff --git a/packages/cli/src/ui/auth/ApiAuthDialog.test.tsx b/packages/cli/src/ui/auth/ApiAuthDialog.test.tsx index a17c2708bf..e752c616a0 100644 --- a/packages/cli/src/ui/auth/ApiAuthDialog.test.tsx +++ b/packages/cli/src/ui/auth/ApiAuthDialog.test.tsx @@ -112,7 +112,6 @@ describe('ApiAuthDialog', () => { ctrl: false, meta: false, shift: false, - paste: false, }); expect(expectedCall).toHaveBeenCalledWith(...args); diff --git a/packages/cli/src/ui/auth/LoginWithGoogleRestartDialog.test.tsx b/packages/cli/src/ui/auth/LoginWithGoogleRestartDialog.test.tsx index 5dd9d0c171..a7e857bd3b 100644 --- a/packages/cli/src/ui/auth/LoginWithGoogleRestartDialog.test.tsx +++ b/packages/cli/src/ui/auth/LoginWithGoogleRestartDialog.test.tsx @@ -52,7 +52,6 @@ describe('LoginWithGoogleRestartDialog', () => { ctrl: false, meta: false, shift: false, - paste: false, }); expect(onDismiss).toHaveBeenCalledTimes(1); @@ -72,7 +71,6 @@ describe('LoginWithGoogleRestartDialog', () => { ctrl: false, meta: false, shift: false, - paste: false, }); // Advance timers to trigger the setTimeout callback diff --git a/packages/cli/src/ui/components/InputPrompt.test.tsx b/packages/cli/src/ui/components/InputPrompt.test.tsx index b9a3d2622d..0a801cba87 100644 --- a/packages/cli/src/ui/components/InputPrompt.test.tsx +++ b/packages/cli/src/ui/components/InputPrompt.test.tsx @@ -1465,7 +1465,7 @@ describe('InputPrompt', () => { await waitFor(() => { expect(mockBuffer.handleInput).toHaveBeenCalledWith( expect.objectContaining({ - paste: true, + name: 'paste', sequence: 'pasted text', }), ); @@ -1708,7 +1708,7 @@ describe('InputPrompt', () => { expect(props.buffer.handleInput).toHaveBeenCalledTimes(1); expect(props.buffer.handleInput).toHaveBeenCalledWith( expect.objectContaining({ - paste: true, + name: 'paste', sequence: pastedText, }), ); diff --git a/packages/cli/src/ui/components/InputPrompt.tsx b/packages/cli/src/ui/components/InputPrompt.tsx index 762fc84b06..f2445d4061 100644 --- a/packages/cli/src/ui/components/InputPrompt.tsx +++ b/packages/cli/src/ui/components/InputPrompt.tsx @@ -396,11 +396,11 @@ export const InputPrompt: React.FC = ({ // We should probably stop supporting paste if the InputPrompt is not // focused. /// We want to handle paste even when not focused to support drag and drop. - if (!focus && !key.paste) { + if (!focus && key.name !== 'paste') { return; } - if (key.paste) { + if (key.name === 'paste') { // Record paste time to prevent accidental auto-submission if (!isTerminalPasteTrusted(kittyProtocol.enabled)) { setRecentUnsafePasteTime(Date.now()); diff --git a/packages/cli/src/ui/components/MultiFolderTrustDialog.test.tsx b/packages/cli/src/ui/components/MultiFolderTrustDialog.test.tsx index 64e992b06a..9ec91f53c4 100644 --- a/packages/cli/src/ui/components/MultiFolderTrustDialog.test.tsx +++ b/packages/cli/src/ui/components/MultiFolderTrustDialog.test.tsx @@ -94,7 +94,6 @@ describe('MultiFolderTrustDialog', () => { ctrl: false, meta: false, shift: false, - paste: false, sequence: '', insertable: false, }); diff --git a/packages/cli/src/ui/components/SessionBrowser.test.tsx b/packages/cli/src/ui/components/SessionBrowser.test.tsx index 5668d21037..3fa4da896d 100644 --- a/packages/cli/src/ui/components/SessionBrowser.test.tsx +++ b/packages/cli/src/ui/components/SessionBrowser.test.tsx @@ -111,7 +111,6 @@ const triggerKey = ( ctrl: false, meta: false, shift: false, - paste: false, insertable: false, sequence: '', ...partialKey, diff --git a/packages/cli/src/ui/components/SettingsDialog.tsx b/packages/cli/src/ui/components/SettingsDialog.tsx index b0c40e2d2c..97ae3939fb 100644 --- a/packages/cli/src/ui/components/SettingsDialog.tsx +++ b/packages/cli/src/ui/components/SettingsDialog.tsx @@ -606,7 +606,7 @@ export function SettingsDialog({ const definition = getSettingDefinition(editingKey); const type = definition?.type; - if (key.paste && key.sequence) { + if (key.name === 'paste' && key.sequence) { let pasted = key.sequence; if (type === 'number') { pasted = key.sequence.replace(/[^0-9\-+.]/g, ''); diff --git a/packages/cli/src/ui/components/shared/TextInput.test.tsx b/packages/cli/src/ui/components/shared/TextInput.test.tsx index 7af09fe7a9..56c3edbd37 100644 --- a/packages/cli/src/ui/components/shared/TextInput.test.tsx +++ b/packages/cli/src/ui/components/shared/TextInput.test.tsx @@ -155,7 +155,6 @@ describe('TextInput', () => { ctrl: false, meta: false, shift: false, - paste: false, }); expect(mockBuffer.handleInput).toHaveBeenCalledWith({ @@ -164,7 +163,6 @@ describe('TextInput', () => { ctrl: false, meta: false, shift: false, - paste: false, }); expect(mockBuffer.text).toBe('a'); }); @@ -182,7 +180,6 @@ describe('TextInput', () => { ctrl: false, meta: false, shift: false, - paste: false, }); expect(mockBuffer.handleInput).toHaveBeenCalledWith({ @@ -191,7 +188,6 @@ describe('TextInput', () => { ctrl: false, meta: false, shift: false, - paste: false, }); expect(mockBuffer.text).toBe('tes'); }); @@ -209,7 +205,6 @@ describe('TextInput', () => { ctrl: false, meta: false, shift: false, - paste: false, }); // Cursor moves from end to before 't' @@ -230,7 +225,6 @@ describe('TextInput', () => { ctrl: false, meta: false, shift: false, - paste: false, }); expect(mockBuffer.visualCursor[1]).toBe(3); @@ -249,7 +243,6 @@ describe('TextInput', () => { ctrl: false, meta: false, shift: false, - paste: false, }); expect(onSubmit).toHaveBeenCalledWith('test'); @@ -268,7 +261,6 @@ describe('TextInput', () => { ctrl: false, meta: false, shift: false, - paste: false, }); await vi.runAllTimersAsync(); diff --git a/packages/cli/src/ui/components/shared/text-buffer.test.ts b/packages/cli/src/ui/components/shared/text-buffer.test.ts index f127f28051..0cd7c7bfd2 100644 --- a/packages/cli/src/ui/components/shared/text-buffer.test.ts +++ b/packages/cli/src/ui/components/shared/text-buffer.test.ts @@ -1051,7 +1051,6 @@ describe('useTextBuffer', () => { ctrl: false, meta: false, shift: false, - paste: false, insertable: true, sequence: 'h', }), @@ -1062,7 +1061,6 @@ describe('useTextBuffer', () => { ctrl: false, meta: false, shift: false, - paste: false, insertable: true, sequence: 'i', }), @@ -1080,7 +1078,6 @@ describe('useTextBuffer', () => { ctrl: false, meta: false, shift: false, - paste: false, insertable: true, sequence: '\r', }), @@ -1098,7 +1095,6 @@ describe('useTextBuffer', () => { ctrl: false, meta: false, shift: false, - paste: false, insertable: false, sequence: '\t', }), @@ -1116,7 +1112,6 @@ describe('useTextBuffer', () => { ctrl: false, meta: false, shift: true, - paste: false, insertable: false, sequence: '\u001b[9;2u', }), @@ -1139,7 +1134,6 @@ describe('useTextBuffer', () => { ctrl: false, meta: false, shift: false, - paste: false, insertable: false, sequence: '\x7f', }), @@ -1164,7 +1158,6 @@ describe('useTextBuffer', () => { ctrl: false, meta: false, shift: false, - paste: false, insertable: false, sequence: '\x7f', }); @@ -1173,7 +1166,6 @@ describe('useTextBuffer', () => { ctrl: false, meta: false, shift: false, - paste: false, insertable: false, sequence: '\x7f', }); @@ -1182,7 +1174,6 @@ describe('useTextBuffer', () => { ctrl: false, meta: false, shift: false, - paste: false, insertable: false, sequence: '\x7f', }); @@ -1242,7 +1233,6 @@ describe('useTextBuffer', () => { ctrl: false, meta: false, shift: false, - paste: false, insertable: false, sequence: '\x1b[D', }), @@ -1254,7 +1244,6 @@ describe('useTextBuffer', () => { ctrl: false, meta: false, shift: false, - paste: false, insertable: false, sequence: '\x1b[C', }), @@ -1274,7 +1263,6 @@ describe('useTextBuffer', () => { ctrl: false, meta: false, shift: false, - paste: false, insertable: true, sequence: textWithAnsi, }), @@ -1292,7 +1280,6 @@ describe('useTextBuffer', () => { ctrl: false, meta: false, shift: true, - paste: false, insertable: true, sequence: '\r', }), @@ -1497,7 +1484,6 @@ Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots ctrl: false, meta: false, shift: false, - paste: false, insertable: true, sequence, }); @@ -1556,7 +1542,6 @@ Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots ctrl: false, meta: false, shift: false, - paste: false, insertable: true, sequence: largeTextWithUnsafe, }), @@ -1591,7 +1576,6 @@ Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots ctrl: false, meta: false, shift: false, - paste: false, insertable: true, sequence: largeTextWithAnsi, }), @@ -1616,7 +1600,6 @@ Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots ctrl: false, meta: false, shift: false, - paste: false, insertable: true, sequence: emojis, }), @@ -1808,7 +1791,6 @@ Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots ctrl: false, meta: false, shift: false, - paste: false, insertable: true, sequence: '\r', }), @@ -1830,7 +1812,6 @@ Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots ctrl: false, meta: false, shift: false, - paste: false, insertable: false, sequence: '\u001bOP', }), diff --git a/packages/cli/src/ui/components/shared/text-buffer.ts b/packages/cli/src/ui/components/shared/text-buffer.ts index 26c1ddca80..9ef6fdec83 100644 --- a/packages/cli/src/ui/components/shared/text-buffer.ts +++ b/packages/cli/src/ui/components/shared/text-buffer.ts @@ -2223,10 +2223,10 @@ export function useTextBuffer({ (key: Key): void => { const { sequence: input } = key; - if (key.paste) { + if (key.name === 'paste') { // Do not do any other processing on pastes so ensure we handle them // before all other cases. - insert(input, { paste: key.paste }); + insert(input, { paste: true }); return; } @@ -2253,7 +2253,7 @@ export function useTextBuffer({ else if (keyMatchers[Command.UNDO](key)) undo(); else if (keyMatchers[Command.REDO](key)) redo(); else if (key.insertable) { - insert(input, { paste: key.paste }); + insert(input, { paste: false }); } }, [ diff --git a/packages/cli/src/ui/contexts/KeypressContext.test.tsx b/packages/cli/src/ui/contexts/KeypressContext.test.tsx index 348f940dbd..24cadfa85c 100644 --- a/packages/cli/src/ui/contexts/KeypressContext.test.tsx +++ b/packages/cli/src/ui/contexts/KeypressContext.test.tsx @@ -384,7 +384,7 @@ describe('KeypressContext', () => { expect(keyHandler).toHaveBeenCalledWith( expect.objectContaining({ - paste: true, + name: 'paste', sequence: pastedText, }), ); @@ -405,7 +405,6 @@ describe('KeypressContext', () => { expect(keyHandler).toHaveBeenCalledWith( expect.objectContaining({ name: 'paste', - paste: true, sequence: 'Hello OSC 52', }), ); @@ -432,7 +431,6 @@ describe('KeypressContext', () => { expect(keyHandler).toHaveBeenCalledWith( expect.objectContaining({ name: 'paste', - paste: true, sequence: 'Split Paste', }), ); @@ -454,7 +452,6 @@ describe('KeypressContext', () => { expect(keyHandler).toHaveBeenCalledWith( expect.objectContaining({ name: 'paste', - paste: true, sequence: 'Terminated by ST', }), ); @@ -727,7 +724,6 @@ describe('KeypressContext', () => { ctrl: false, meta: true, shift: false, - paste: false, }, }; } else if (terminal === 'MacTerminal') { @@ -743,7 +739,6 @@ describe('KeypressContext', () => { ctrl: false, meta: true, shift: false, - paste: false, }, }; } else { @@ -759,7 +754,6 @@ describe('KeypressContext', () => { ctrl: false, meta: true, // Always expect meta:true after conversion shift: false, - paste: false, sequence: accentedChar, }, }; @@ -834,7 +828,6 @@ describe('KeypressContext', () => { expect.objectContaining({ name: 'undefined', sequence: INCOMPLETE_KITTY_SEQUENCE, - paste: false, }), ); }); @@ -853,7 +846,6 @@ describe('KeypressContext', () => { expect(keyHandler).toHaveBeenCalledWith( expect.objectContaining({ sequence: '\x1b[m', - paste: false, }), ); }); diff --git a/packages/cli/src/ui/contexts/KeypressContext.tsx b/packages/cli/src/ui/contexts/KeypressContext.tsx index c0fdd6deac..df59356990 100644 --- a/packages/cli/src/ui/contexts/KeypressContext.tsx +++ b/packages/cli/src/ui/contexts/KeypressContext.tsx @@ -250,11 +250,10 @@ function bufferPaste(keypressHandler: KeypressHandler): KeypressHandler { if (buffer.length > 0) { keypressHandler({ - name: '', + name: 'paste', ctrl: false, meta: false, shift: false, - paste: true, insertable: true, sequence: buffer, }); @@ -357,7 +356,6 @@ function* emitKeys( ctrl: false, meta: false, shift: false, - paste: true, insertable: true, sequence: decoded, }); @@ -570,7 +568,6 @@ function* emitKeys( ctrl, meta, shift, - paste: false, insertable: false, sequence: ESC, }); @@ -592,7 +589,6 @@ function* emitKeys( ctrl, meta, shift, - paste: false, insertable, sequence, }); @@ -606,7 +602,6 @@ export interface Key { ctrl: boolean; meta: boolean; shift: boolean; - paste: boolean; insertable: boolean; sequence: string; } diff --git a/packages/cli/src/ui/hooks/useKeypress.test.tsx b/packages/cli/src/ui/hooks/useKeypress.test.tsx index ebbc5eef82..71d901bcb5 100644 --- a/packages/cli/src/ui/hooks/useKeypress.test.tsx +++ b/packages/cli/src/ui/hooks/useKeypress.test.tsx @@ -114,7 +114,7 @@ describe(`useKeypress`, () => { const key = { name: 'return', sequence: '\x1B\r' }; act(() => stdin.write(key.sequence)); expect(onKeypress).toHaveBeenCalledWith( - expect.objectContaining({ ...key, meta: true, paste: false }), + expect.objectContaining({ ...key, meta: true }), ); }); @@ -139,11 +139,10 @@ describe(`useKeypress`, () => { expect(onKeypress).toHaveBeenCalledTimes(1); expect(onKeypress).toHaveBeenCalledWith({ - name: '', + name: 'paste', ctrl: false, meta: false, shift: false, - paste: true, insertable: true, sequence: pasteText, }); @@ -155,19 +154,19 @@ describe(`useKeypress`, () => { const keyA = { name: 'a', sequence: 'a' }; act(() => stdin.write('a')); expect(onKeypress).toHaveBeenCalledWith( - expect.objectContaining({ ...keyA, paste: false }), + expect.objectContaining({ ...keyA }), ); const pasteText = 'pasted'; act(() => stdin.write(PASTE_START + pasteText + PASTE_END)); expect(onKeypress).toHaveBeenCalledWith( - expect.objectContaining({ paste: true, sequence: pasteText }), + expect.objectContaining({ name: 'paste', sequence: pasteText }), ); const keyB = { name: 'b', sequence: 'b' }; act(() => stdin.write('b')); expect(onKeypress).toHaveBeenCalledWith( - expect.objectContaining({ ...keyB, paste: false }), + expect.objectContaining({ ...keyB }), ); expect(onKeypress).toHaveBeenCalledTimes(3); @@ -183,10 +182,8 @@ describe(`useKeypress`, () => { stdin.write(PASTE_END); }); expect(onKeypress).toHaveBeenCalledWith( - expect.objectContaining({ paste: true, sequence: pasteText }), + expect.objectContaining({ name: 'paste', sequence: pasteText }), ); - - expect(onKeypress).toHaveBeenCalledTimes(1); }); it('should handle paste false alarm', async () => { @@ -222,10 +219,10 @@ describe(`useKeypress`, () => { ); }); expect(onKeypress).toHaveBeenCalledWith( - expect.objectContaining({ paste: true, sequence: pasteText1 }), + expect.objectContaining({ name: 'paste', sequence: pasteText1 }), ); expect(onKeypress).toHaveBeenCalledWith( - expect.objectContaining({ paste: true, sequence: pasteText2 }), + expect.objectContaining({ name: 'paste', sequence: pasteText2 }), ); expect(onKeypress).toHaveBeenCalledTimes(2); @@ -237,7 +234,7 @@ describe(`useKeypress`, () => { const keyA = { name: 'a', sequence: 'a' }; act(() => stdin.write('a')); expect(onKeypress).toHaveBeenCalledWith( - expect.objectContaining({ ...keyA, paste: false }), + expect.objectContaining({ ...keyA }), ); const pasteText = 'pasted'; @@ -251,13 +248,13 @@ describe(`useKeypress`, () => { stdin.write(PASTE_END.slice(3)); }); expect(onKeypress).toHaveBeenCalledWith( - expect.objectContaining({ paste: true, sequence: pasteText }), + expect.objectContaining({ name: 'paste', sequence: pasteText }), ); const keyB = { name: 'b', sequence: 'b' }; act(() => stdin.write('b')); expect(onKeypress).toHaveBeenCalledWith( - expect.objectContaining({ ...keyB, paste: false }), + expect.objectContaining({ ...keyB }), ); expect(onKeypress).toHaveBeenCalledTimes(3); diff --git a/packages/cli/src/ui/hooks/useSelectionList.test.tsx b/packages/cli/src/ui/hooks/useSelectionList.test.tsx index 38351710b0..7006f0f5d3 100644 --- a/packages/cli/src/ui/hooks/useSelectionList.test.tsx +++ b/packages/cli/src/ui/hooks/useSelectionList.test.tsx @@ -61,7 +61,6 @@ describe('useSelectionList', () => { ctrl: options.ctrl ?? false, meta: false, shift: options.shift ?? false, - paste: false, insertable: false, }; activeKeypressHandler(key); @@ -331,7 +330,6 @@ describe('useSelectionList', () => { ctrl: false, meta: false, shift: false, - paste: false, insertable: true, }; handler(key); @@ -381,7 +379,6 @@ describe('useSelectionList', () => { ctrl: false, meta: false, shift: false, - paste: false, insertable: false, }; handler(key); diff --git a/packages/cli/src/ui/hooks/vim.test.tsx b/packages/cli/src/ui/hooks/vim.test.tsx index a7931f0733..db7d287425 100644 --- a/packages/cli/src/ui/hooks/vim.test.tsx +++ b/packages/cli/src/ui/hooks/vim.test.tsx @@ -39,7 +39,6 @@ const createKey = (partial: Partial): Key => ({ ctrl: partial.ctrl || false, meta: partial.meta || false, shift: partial.shift || false, - paste: partial.paste || false, insertable: partial.insertable || false, ...partial, }); diff --git a/packages/cli/src/ui/hooks/vim.ts b/packages/cli/src/ui/hooks/vim.ts index dc3344a201..46492220a0 100644 --- a/packages/cli/src/ui/hooks/vim.ts +++ b/packages/cli/src/ui/hooks/vim.ts @@ -312,7 +312,6 @@ export function useVim(buffer: TextBuffer, onSubmit?: (value: string) => void) { ctrl: key.ctrl || false, meta: key.meta || false, shift: key.shift || false, - paste: key.paste || false, insertable: key.insertable || false, }), [], diff --git a/packages/cli/src/ui/keyMatchers.test.ts b/packages/cli/src/ui/keyMatchers.test.ts index 06af0e0a95..670f84a87b 100644 --- a/packages/cli/src/ui/keyMatchers.test.ts +++ b/packages/cli/src/ui/keyMatchers.test.ts @@ -16,7 +16,6 @@ describe('keyMatchers', () => { ctrl: false, meta: false, shift: false, - paste: false, insertable: false, sequence: name, ...mods, @@ -243,7 +242,6 @@ describe('keyMatchers', () => { negative: [ createKey('return', { ctrl: true }), createKey('return', { meta: true }), - createKey('return', { paste: true }), ], }, { @@ -251,7 +249,6 @@ describe('keyMatchers', () => { positive: [ createKey('return', { ctrl: true }), createKey('return', { meta: true }), - createKey('return', { paste: true }), ], negative: [createKey('return'), createKey('n')], }, diff --git a/packages/cli/src/ui/keyMatchers.ts b/packages/cli/src/ui/keyMatchers.ts index 103c571003..b12160dbb6 100644 --- a/packages/cli/src/ui/keyMatchers.ts +++ b/packages/cli/src/ui/keyMatchers.ts @@ -46,10 +46,6 @@ function matchKeyBinding(keyBinding: KeyBinding, key: Key): boolean { return false; } - if (keyBinding.paste !== undefined && key.paste !== keyBinding.paste) { - return false; - } - return true; }