diff options
| author | Craig Jennings <c@cjennings.net> | 2026-06-05 09:55:41 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-06-05 09:55:41 -0500 |
| commit | d89a7a0e2692e7e38bc1b4c881aba838b2632db7 (patch) | |
| tree | 2cc9cb2372ed7112a7e1e54874bd1ffc2a300341 /modules/diff-config.el | |
| parent | f84f5d7958288b4a7e2fc6ccda07c77a020e0319 (diff) | |
| download | dotemacs-d89a7a0e2692e7e38bc1b4c881aba838b2632db7.tar.gz dotemacs-d89a7a0e2692e7e38bc1b4c881aba838b2632db7.zip | |
fix(term): forward C-SPC and window-nav keys in ghostel buffers
Two keystrokes weren't reaching Emacs inside a ghostel terminal, both because of how ghostel routes keys in semi-char mode.
C-SPC was the worse one. ghostel forwards the `C-@' event but not the distinct `C-SPC' event GUI Emacs produces, so C-Space fell through to the global `set-mark-command' and set an Emacs region in the terminal buffer. That region followed point as output streamed (a stuck "selection" Escape and C-g couldn't clear), and it meant tmux copy-mode's begin-selection never started, so M-w copied nothing. I bind C-SPC to cj/term-send-C-SPC, which forwards NUL like a terminal key.
The C-M-arrows (buffer-move, window swap) were being forwarded to the terminal program the same way the F9 family was. I added the windmove S-arrows and buffer-move C-M-arrows to ghostel-keymap-exceptions and rebuilt the semi-char map. The S-arrows already reached Emacs by keymap precedence, but listing them makes the window-nav contract explicit rather than accidental.
Regression tests cover all three: C-SPC bound to the forwarder, and the window-nav keys in the exceptions with the semi-char map no longer forwarding them.
Diffstat (limited to 'modules/diff-config.el')
0 files changed, 0 insertions, 0 deletions
