summaryrefslogtreecommitdiff
path: root/packages/cli/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/cli/src')
-rw-r--r--packages/cli/src/ui/components/shared/text-buffer.test.ts6
-rw-r--r--packages/cli/src/ui/components/shared/text-buffer.ts8
2 files changed, 13 insertions, 1 deletions
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 704666d1..da4a3cd7 100644
--- a/packages/cli/src/ui/components/shared/text-buffer.test.ts
+++ b/packages/cli/src/ui/components/shared/text-buffer.test.ts
@@ -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:
diff --git a/packages/cli/src/ui/components/shared/text-buffer.ts b/packages/cli/src/ui/components/shared/text-buffer.ts
index a8b8cef3..789a909a 100644
--- a/packages/cli/src/ui/components/shared/text-buffer.ts
+++ b/packages/cli/src/ui/components/shared/text-buffer.ts
@@ -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');