mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-03-11 14:40:52 -07:00
Restore bracketed paste mode after external editor exit (#13606)
This commit is contained in:
committed by
GitHub
parent
9f9a2fa844
commit
1e715d1e5c
@@ -62,6 +62,10 @@ vi.mock('@google/gemini-cli-core', async (importOriginal) => {
|
||||
write: vi.fn(),
|
||||
},
|
||||
})),
|
||||
enableMouseEvents: vi.fn(),
|
||||
disableMouseEvents: vi.fn(),
|
||||
enterAlternateScreen: vi.fn(),
|
||||
disableLineWrapping: vi.fn(),
|
||||
};
|
||||
});
|
||||
|
||||
|
||||
@@ -116,6 +116,7 @@ import { isWorkspaceTrusted } from '../config/trustedFolders.js';
|
||||
import { useAlternateBuffer } from './hooks/useAlternateBuffer.js';
|
||||
import { useSettings } from './contexts/SettingsContext.js';
|
||||
import { enableSupportedProtocol } from './utils/kittyProtocolDetector.js';
|
||||
import { enableBracketedPaste } from './utils/bracketedPaste.js';
|
||||
|
||||
const WARNING_PROMPT_DURATION_MS = 1000;
|
||||
const QUEUE_ERROR_DISPLAY_DURATION_MS = 3000;
|
||||
@@ -387,6 +388,7 @@ export const AppContainer = (props: AppContainerProps) => {
|
||||
disableLineWrapping();
|
||||
app.rerender();
|
||||
}
|
||||
enableBracketedPaste();
|
||||
enableSupportedProtocol();
|
||||
refreshStatic();
|
||||
}, [refreshStatic, isAlternateBuffer, app, config]);
|
||||
|
||||
@@ -5,10 +5,10 @@
|
||||
*/
|
||||
|
||||
import { useEffect } from 'react';
|
||||
import { writeToStdout } from '@google/gemini-cli-core';
|
||||
|
||||
const ENABLE_BRACKETED_PASTE = '\x1b[?2004h';
|
||||
const DISABLE_BRACKETED_PASTE = '\x1b[?2004l';
|
||||
import {
|
||||
disableBracketedPaste,
|
||||
enableBracketedPaste,
|
||||
} from '../utils/bracketedPaste.js';
|
||||
|
||||
/**
|
||||
* Enables and disables bracketed paste mode in the terminal.
|
||||
@@ -18,11 +18,11 @@ const DISABLE_BRACKETED_PASTE = '\x1b[?2004l';
|
||||
*/
|
||||
export const useBracketedPaste = () => {
|
||||
const cleanup = () => {
|
||||
writeToStdout(DISABLE_BRACKETED_PASTE);
|
||||
disableBracketedPaste();
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
writeToStdout(ENABLE_BRACKETED_PASTE);
|
||||
enableBracketedPaste();
|
||||
|
||||
process.on('exit', cleanup);
|
||||
process.on('SIGINT', cleanup);
|
||||
|
||||
18
packages/cli/src/ui/utils/bracketedPaste.ts
Normal file
18
packages/cli/src/ui/utils/bracketedPaste.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
/**
|
||||
* @license
|
||||
* Copyright 2025 Google LLC
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
import { writeToStdout } from '@google/gemini-cli-core';
|
||||
|
||||
const ENABLE_BRACKETED_PASTE = '\x1b[?2004h';
|
||||
const DISABLE_BRACKETED_PASTE = '\x1b[?2004l';
|
||||
|
||||
export const enableBracketedPaste = () => {
|
||||
writeToStdout(ENABLE_BRACKETED_PASTE);
|
||||
};
|
||||
|
||||
export const disableBracketedPaste = () => {
|
||||
writeToStdout(DISABLE_BRACKETED_PASTE);
|
||||
};
|
||||
Reference in New Issue
Block a user