feat(cli): clear input buffer on CTRL+C when not executing commands (#1729)
Co-authored-by: Scott Densmore <scottdensmore@mac.com>
This commit is contained in:
parent
0903421b1a
commit
d622e596a1
|
@ -543,4 +543,30 @@ describe('InputPrompt', () => {
|
||||||
expect(props.buffer.newline).toHaveBeenCalled();
|
expect(props.buffer.newline).toHaveBeenCalled();
|
||||||
unmount();
|
unmount();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should clear the buffer on Ctrl+C if it has text', async () => {
|
||||||
|
props.buffer.setText('some text to clear');
|
||||||
|
const { stdin, unmount } = render(<InputPrompt {...props} />);
|
||||||
|
await wait();
|
||||||
|
|
||||||
|
stdin.write('\x03'); // Ctrl+C character
|
||||||
|
await wait();
|
||||||
|
|
||||||
|
expect(props.buffer.setText).toHaveBeenCalledWith('');
|
||||||
|
expect(mockCompletion.resetCompletionState).toHaveBeenCalled();
|
||||||
|
expect(props.onSubmit).not.toHaveBeenCalled();
|
||||||
|
unmount();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should NOT clear the buffer on Ctrl+C if it is empty', async () => {
|
||||||
|
props.buffer.text = '';
|
||||||
|
const { stdin, unmount } = render(<InputPrompt {...props} />);
|
||||||
|
await wait();
|
||||||
|
|
||||||
|
stdin.write('\x03'); // Ctrl+C character
|
||||||
|
await wait();
|
||||||
|
|
||||||
|
expect(props.buffer.setText).not.toHaveBeenCalled();
|
||||||
|
unmount();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -356,6 +356,16 @@ export const InputPrompt: React.FC<InputPromptProps> = ({
|
||||||
}
|
}
|
||||||
if (key.ctrl && key.name === 'e') {
|
if (key.ctrl && key.name === 'e') {
|
||||||
buffer.move('end');
|
buffer.move('end');
|
||||||
|
buffer.moveToOffset(cpLen(buffer.text));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Ctrl+C (Clear input)
|
||||||
|
if (key.ctrl && key.name === 'c') {
|
||||||
|
if (buffer.text.length > 0) {
|
||||||
|
buffer.setText('');
|
||||||
|
resetCompletionState();
|
||||||
|
return;
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -397,6 +407,7 @@ export const InputPrompt: React.FC<InputPromptProps> = ({
|
||||||
handleSubmitAndClear,
|
handleSubmitAndClear,
|
||||||
shellHistory,
|
shellHistory,
|
||||||
handleClipboardImage,
|
handleClipboardImage,
|
||||||
|
resetCompletionState,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue