Skip to content

Restore bracketed paste mode after external editor exit#13606

Merged
scidomino merged 1 commit intomainfrom
tomm_bracketed_paste
Nov 21, 2025
Merged

Restore bracketed paste mode after external editor exit#13606
scidomino merged 1 commit intomainfrom
tomm_bracketed_paste

Conversation

@scidomino
Copy link
Copy Markdown
Collaborator

@scidomino scidomino commented Nov 21, 2025

Summary

Restore bracketed paste mode after external editor exit

Details

Also fixed gemini.test.tsx bug that left the keyboard in a bad state after running.

Related Issues

Fixes #12920

How to Validate

Enter and exit edit mode with ctrl+x.

Pre-Merge Checklist

  • Updated relevant documentation and README (if needed)
  • Added/updated tests (if needed)
  • Noted breaking changes (if any)
  • Validated on required platforms/methods:
    • MacOS
      • npm run
      • npx
      • Docker
      • Podman
      • Seatbelt
    • Windows
      • npm run
      • npx
      • Docker
    • Linux
      • npm run
      • npx
      • Docker

@scidomino scidomino requested a review from a team as a code owner November 21, 2025 19:43
@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @scidomino, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request addresses a bug where terminal modes, specifically bracketed paste, mouse events, and the kitty protocol, were not reliably re-enabled after returning from an external editor. The changes centralize the management of these terminal modes into new utility functions, ensuring their correct restoration and preventing potential issues like unsafe paste warnings.

Highlights

  • Centralized Terminal Mode Management: Introduced a new utility enableTerminalModes to consolidate the re-enabling of bracketed paste, mouse events, and kitty protocol after an external editor exits, ensuring consistent terminal state.
  • Dedicated Bracketed Paste Utilities: Extracted the logic for enabling and disabling bracketed paste mode into its own utility file (bracketedPaste.ts) for improved modularity and maintainability.
  • Improved Editor Exit Handling: Ensures that critical terminal modes are consistently restored upon returning from an external editor, thereby preventing issues such as unsafe paste warnings in various terminal emulators.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request refactors terminal mode handling and fixes an issue where bracketed paste mode was not restored after an external editor exits. The refactoring is a good improvement, centralizing terminal mode management. However, I've identified a potential issue where mouse events are now unconditionally re-enabled, which could cause problems for users not running in alternate screen mode. My review includes suggestions to make mouse event restoration conditional, similar to the previous behavior, while still applying the bracketed paste mode fix unconditionally.

Comment thread packages/cli/src/ui/AppContainer.tsx Outdated
Comment thread packages/cli/src/ui/utils/terminalModes.ts Outdated
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Nov 21, 2025

Size Change: +255 B (0%)

Total Size: 21.1 MB

ℹ️ View Unchanged
Filename Size Change
./bundle/gemini.js 21.1 MB +255 B (0%)
./bundle/sandbox-macos-permissive-closed.sb 1.03 kB 0 B
./bundle/sandbox-macos-permissive-open.sb 890 B 0 B
./bundle/sandbox-macos-permissive-proxied.sb 1.31 kB 0 B
./bundle/sandbox-macos-restrictive-closed.sb 3.29 kB 0 B
./bundle/sandbox-macos-restrictive-open.sb 3.36 kB 0 B
./bundle/sandbox-macos-restrictive-proxied.sb 3.56 kB 0 B

compressed-size-action

@scidomino scidomino force-pushed the tomm_bracketed_paste branch from b18c38e to f266e15 Compare November 21, 2025 19:50
This ensures that bracketed paste mode (along with mouse and kitty protocol) is correctly re-enabled after returning from an external editor like vim or nano, preventing unsafe paste warnings in terminals like Ghostty.
@scidomino scidomino force-pushed the tomm_bracketed_paste branch from f266e15 to ef56535 Compare November 21, 2025 20:58
@scidomino
Copy link
Copy Markdown
Collaborator Author

/gemini review

@scidomino scidomino changed the title Fix: Restore bracketed paste mode after external editor exit Restore bracketed paste mode after external editor exit Nov 21, 2025
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request correctly addresses an issue where bracketed paste mode was not being restored after an external editor exits. The changes are well-structured, introducing a new utility for managing bracketed paste mode, which is a good refactoring that improves maintainability. The fix itself, which involves re-enabling bracketed paste mode in the handleEditorClose callback, is correctly implemented and placed alongside other terminal state restoration logic. The related test mocks have also been updated appropriately. Overall, the changes are solid and I have no concerns.

Copy link
Copy Markdown
Contributor

@jacob314 jacob314 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@scidomino scidomino added this pull request to the merge queue Nov 21, 2025
Merged via the queue into main with commit 1e715d1 Nov 21, 2025
22 checks passed
@scidomino scidomino deleted the tomm_bracketed_paste branch November 21, 2025 21:30
thacio added a commit to thacio/auditaria that referenced this pull request Nov 23, 2025
werdnum pushed a commit to werdnum/gemini-cli that referenced this pull request Nov 24, 2025
danpalmer pushed a commit to danpalmer/gemini-cli that referenced this pull request Nov 29, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Issues with Pasting multi line text

2 participants