diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-18 20:28:27 -0400 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-18 20:28:27 -0400 |
| commit | 926cb678f2aaaae205a98a9172ead8009ee0ca25 (patch) | |
| tree | 428331acd17316aa9124f148213bb60191a5a035 /modules/cj-window-toggle-lib.el | |
| parent | 950927e2c4fe20d434b0fd75ee25bba7bf5cfd13 (diff) | |
| download | dotemacs-926cb678f2aaaae205a98a9172ead8009ee0ca25.tar.gz dotemacs-926cb678f2aaaae205a98a9172ead8009ee0ca25.zip | |
fix(vterm): stop wheel/escape forwarders from blocking Emacs
vterm-send-string ends with (accept-process-output ... vterm-timer-delay
...). The global vterm-timer-delay is nil in this config, so the call
blocks forever when the pty's program consumes the event without producing
output -- a common pattern for TUIs like Claude Code reacting to mouse
wheel or Escape. The symptom is a spinning cursor until C-g.
cj/vterm--send-mouse-wheel and cj/vterm-send-escape now wrap the send in a
let-binding that pins vterm-timer-delay to 0, so accept-process-output
returns immediately. A top-level (defvar vterm-timer-delay) declaration
goes alongside so the let is dynamic. Without it, lexical-binding-t in
this file makes the binding lexical, invisible to vterm-send-string across
files. The backtrace from the failing case confirmed the lookup was still
receiving nil before the declaration.
Diffstat (limited to 'modules/cj-window-toggle-lib.el')
0 files changed, 0 insertions, 0 deletions
