fix(cli): Handle VSCode Shift+Enter in text buffer
- The text buffer now correctly interprets `\\\r` (produced by Shift+Enter in the VSCode terminal) as a newline character. - Added a corresponding test case to `text-buffer.test.ts`. Fixes https://buganizer.corp.google.com/issues/418505364
This commit is contained in:
parent
ba7f1e1e3c
commit
7fd7c1a539
|
@ -508,6 +508,12 @@ describe('useTextBuffer', () => {
|
|||
act(() => result.current.handleInput(textWithAnsi, {}));
|
||||
expect(getBufferState(result).text).toBe('Hello World');
|
||||
});
|
||||
|
||||
it('should handle VSCode terminal Shift+Enter as newline', () => {
|
||||
const { result } = renderHook(() => useTextBuffer({ viewport }));
|
||||
act(() => result.current.handleInput('\r', {})); // Simulates Shift+Enter in VSCode terminal
|
||||
expect(getBufferState(result).lines).toEqual(['', '']);
|
||||
});
|
||||
});
|
||||
|
||||
// More tests would be needed for:
|
||||
|
|
|
@ -1151,7 +1151,13 @@ export function useTextBuffer({
|
|||
|
||||
if (key['escape']) return false;
|
||||
|
||||
if (key['return'] || input === '\r' || input === '\n') newline();
|
||||
if (
|
||||
key['return'] ||
|
||||
input === '\r' ||
|
||||
input === '\n' ||
|
||||
input === '\\\r' // VSCode terminal represents shift + enter this way
|
||||
)
|
||||
newline();
|
||||
else if (key['leftArrow'] && !key['meta'] && !key['ctrl'] && !key['alt'])
|
||||
move('left');
|
||||
else if (key['ctrl'] && input === 'b') move('left');
|
||||
|
|
Loading…
Reference in New Issue