aboutsummaryrefslogtreecommitdiff
path: root/todo.org
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-06-13 00:56:38 -0500
committerCraig Jennings <c@cjennings.net>2026-06-13 00:56:38 -0500
commita631938c95ee7974a1d5489ad3aba713c4f0a0d5 (patch)
treeb0e9fe7b88fa3f0707f4787429cbf2554a2a91af /todo.org
parent2cc54965d614151c8d8df7c0c857cbcd4aedf1af (diff)
downloaddotemacs-a631938c95ee7974a1d5489ad3aba713c4f0a0d5.tar.gz
dotemacs-a631938c95ee7974a1d5489ad3aba713c4f0a0d5.zip
fix(keys): revert 4a1ecf64, restore the M-S- launcher bindings
4a1ecf64 rebound eww/elfeed/calibredb from M-S-e/r/b to the uppercase Meta events M-E/M-R/M-B, on the theory that the keyboard emits the uppercase event and the lowercase-shift spec never matched. It was wrong. keyboard-compat.el installs a key-translation-map entry (M-E -> M-S-e, etc.) in GUI frames, so the original M-S- bindings did reach the launchers. Binding M-E directly while that translation stayed in place rewrote the keypress to the now-unbound M-S-e, breaking all three in GUI on the next restart. The audit and the review missed it because they checked key-binding, which ignores key-translation-map, and the running daemon still held the pre-fix bindings as stale state. This restores M-S-e/r/b, deletes the key-binding-only test that certified the broken config, and reclassifies the task as not-a-bug. The real problem, that these chords are dead outside GUI, is the subject of the keybinding-console-safety spec.
Diffstat (limited to 'todo.org')
-rw-r--r--todo.org6
1 files changed, 3 insertions, 3 deletions
diff --git a/todo.org b/todo.org
index 8c18109a9..8662866ec 100644
--- a/todo.org
+++ b/todo.org
@@ -859,9 +859,9 @@ From the 2026-06 config audit, =modules/dwim-shell-config.el=:
** TODO [#B] prog hooks mutate global state per buffer :bug:quick:solo:
From the 2026-06 config audit: =prog-go.el:64=, =prog-c.el:73=, =prog-shell.el:77= call global =(electric-pair-mode t)= from buffer setup hooks — one Go/C/shell buffer turns on pairing in org/text everywhere (python/webdev correctly use =electric-pair-local-mode=). =prog-general.el:79-80= — =display-line-numbers-type 'relative= setq/setq-default run from the hook AFTER the mode is enabled, so the first prog buffer of a session gets absolute numbers. Local-mode for the three; move the line-number setqs to top level.
-** DONE [#B] M-S- launcher keys dead: eww, elfeed, calibredb unreachable :bug:quick:solo:
-CLOSED: [2026-06-12 Fri]
-Fixed: rewrote the three =:bind= specs as =M-E= / =M-R= / =M-B= (=eww-config.el=, =elfeed-config.el=, =calibredb-epub-config.el=) so the uppercase event the keyboard actually emits is bound. 3 ERT tests in =tests/test-launcher-meta-shift-keys.el= assert =(key-binding (kbd "M-E"))= etc. resolve to =eww= / =cj/elfeed-open= / =calibredb= (red before, green after). Verified live in the daemon. Open follow-ups (not done here, kept scoped): the "same class" =M-S-i= binding in text-config, and an audit of the keyboard-compat translation layer that makes Weather's =M-S-w= work.
+** CANCELLED [#B] M-S- launcher keys dead: eww, elfeed, calibredb unreachable :bug:quick:solo:
+CLOSED: [2026-06-13 Sat]
+Not a bug. The audit used =key-binding=, which ignores =key-translation-map=, so it read the M-S- launcher chords as dead. They work in GUI: =keyboard-compat.el= installs a =key-translation-map= entry (=M-E -> M-S-e=, etc.) in GUI frames, so Meta+Shift+letter reaches eww/elfeed/calibredb. The "fix" =4a1ecf64= bound =M-E= directly and broke them instead; reverted here. The real console-reachability problem (the chords are dead outside GUI) is the subject of [[file:docs/design/keybinding-console-safety-spec.org][the keybinding-console-safety spec]].
** TODO [#B] ai-rewrite: chosen directive never reaches the request :bug:solo:
=modules/ai-rewrite.el:64= — the directive is let-bound around =(call-interactively #'gptel-rewrite)=, but gptel-rewrite is a transient prefix that returns when the menu shows; the send resolves the directive AFTER the binding unwound (verified against ~/code/gptel/gptel-rewrite.el:780-799). The picker's choice is silently dropped — the module's core feature is inert. Set =gptel--rewrite-directive= buffer-locally (restore via =gptel-post-rewrite-functions=) or use a self-removing global hook entry. From the 2026-06 config audit.