Add back support for escaping newline with a \ character (#4064)

This commit is contained in:
Billy Biggs 2025-07-14 05:34:20 +02:00 committed by GitHub
parent b018e2d3ad
commit ef8ec98489
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 25 additions and 1 deletions

View File

@ -90,6 +90,7 @@ describe('InputPrompt', () => {
killLineLeft: vi.fn(),
openInExternalEditor: vi.fn(),
newline: vi.fn(),
backspace: vi.fn(),
} as unknown as TextBuffer;
mockShellHistory = {
@ -527,4 +528,19 @@ describe('InputPrompt', () => {
expect(props.onSubmit).not.toHaveBeenCalled();
unmount();
});
it('should add a newline on enter when the line ends with a backslash', async () => {
props.buffer.setText('first line\\');
const { stdin, unmount } = render(<InputPrompt {...props} />);
await wait();
stdin.write('\r');
await wait();
expect(props.onSubmit).not.toHaveBeenCalled();
expect(props.buffer.backspace).toHaveBeenCalled();
expect(props.buffer.newline).toHaveBeenCalled();
unmount();
});
});

View File

@ -329,7 +329,15 @@ export const InputPrompt: React.FC<InputPromptProps> = ({
if (key.name === 'return' && !key.ctrl && !key.meta && !key.paste) {
if (buffer.text.trim()) {
handleSubmitAndClear(buffer.text);
const [row, col] = buffer.cursor;
const line = buffer.lines[row];
const charBefore = col > 0 ? cpSlice(line, col - 1, col) : '';
if (charBefore === '\\') {
buffer.backspace();
buffer.newline();
} else {
handleSubmitAndClear(buffer.text);
}
}
return;
}