mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-04-23 11:34:44 -07:00
Simplify paste handling (#16654)
This commit is contained in:
committed by
GitHub
parent
41369f67eb
commit
94d5ae541e
@@ -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');
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -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 },
|
||||
],
|
||||
|
||||
@@ -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',
|
||||
});
|
||||
|
||||
@@ -112,7 +112,6 @@ describe('ApiAuthDialog', () => {
|
||||
ctrl: false,
|
||||
meta: false,
|
||||
shift: false,
|
||||
paste: false,
|
||||
});
|
||||
|
||||
expect(expectedCall).toHaveBeenCalledWith(...args);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
}),
|
||||
);
|
||||
|
||||
@@ -396,11 +396,11 @@ export const InputPrompt: React.FC<InputPromptProps> = ({
|
||||
// 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());
|
||||
|
||||
@@ -94,7 +94,6 @@ describe('MultiFolderTrustDialog', () => {
|
||||
ctrl: false,
|
||||
meta: false,
|
||||
shift: false,
|
||||
paste: false,
|
||||
sequence: '',
|
||||
insertable: false,
|
||||
});
|
||||
|
||||
@@ -111,7 +111,6 @@ const triggerKey = (
|
||||
ctrl: false,
|
||||
meta: false,
|
||||
shift: false,
|
||||
paste: false,
|
||||
insertable: false,
|
||||
sequence: '',
|
||||
...partialKey,
|
||||
|
||||
@@ -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, '');
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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',
|
||||
}),
|
||||
|
||||
@@ -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 });
|
||||
}
|
||||
},
|
||||
[
|
||||
|
||||
@@ -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,
|
||||
}),
|
||||
);
|
||||
});
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -39,7 +39,6 @@ const createKey = (partial: Partial<Key>): Key => ({
|
||||
ctrl: partial.ctrl || false,
|
||||
meta: partial.meta || false,
|
||||
shift: partial.shift || false,
|
||||
paste: partial.paste || false,
|
||||
insertable: partial.insertable || false,
|
||||
...partial,
|
||||
});
|
||||
|
||||
@@ -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,
|
||||
}),
|
||||
[],
|
||||
|
||||
@@ -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')],
|
||||
},
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user