diff options
| -rw-r--r-- | modules/calibredb-epub-config.el | 2 | ||||
| -rw-r--r-- | modules/elfeed-config.el | 2 | ||||
| -rw-r--r-- | modules/eww-config.el | 2 | ||||
| -rw-r--r-- | tests/test-launcher-meta-shift-keys.el | 32 | ||||
| -rw-r--r-- | todo.org | 6 |
5 files changed, 6 insertions, 38 deletions
diff --git a/modules/calibredb-epub-config.el b/modules/calibredb-epub-config.el index 20262e6e..a17bf8c9 100644 --- a/modules/calibredb-epub-config.el +++ b/modules/calibredb-epub-config.el @@ -112,7 +112,7 @@ which re-applies `calibredb-search-filter' instead." (use-package calibredb :commands calibredb :bind - ("M-B" . calibredb) ;; Meta+Shift+b emits the uppercase event; overrides backward-word + ("M-S-b" . calibredb) ;; was M-B, overrides backward-word ;; use built-in filter by tag, add clear-filters (:map calibredb-search-mode-map ("l" . calibredb-filter-by-tag) diff --git a/modules/elfeed-config.el b/modules/elfeed-config.el index 4f408915..ad7bda83 100644 --- a/modules/elfeed-config.el +++ b/modules/elfeed-config.el @@ -33,7 +33,7 @@ (use-package elfeed :bind - ("M-R" . cj/elfeed-open) ;; Meta+Shift+r emits the uppercase event + ("M-S-r" . cj/elfeed-open) ;; was M-R (:map elfeed-show-mode-map ("w" . eww-open-in-new-buffer)) (:map elfeed-search-mode-map diff --git a/modules/eww-config.el b/modules/eww-config.el index 18648c1b..066fae98 100644 --- a/modules/eww-config.el +++ b/modules/eww-config.el @@ -67,7 +67,7 @@ (use-package eww :ensure nil ;; built-in :bind - (("M-E" . eww) ;; Meta+Shift+e emits the uppercase event; overrides forward-sentence + (("M-S-e" . eww) ;; was M-E, overrides forward-sentence :map eww-mode-map ("<" . eww-back-url) (">" . eww-forward-url) diff --git a/tests/test-launcher-meta-shift-keys.el b/tests/test-launcher-meta-shift-keys.el deleted file mode 100644 index 574a8d68..00000000 --- a/tests/test-launcher-meta-shift-keys.el +++ /dev/null @@ -1,32 +0,0 @@ -;;; test-launcher-meta-shift-keys.el --- Meta+Shift launcher keys reach their commands -*- lexical-binding: t; -*- - -;;; Commentary: -;; Meta+Shift+<letter> emits the uppercase event (M-E, M-R, M-B), so a -;; binding written as "M-S-e" on a lowercase letter is never reached by -;; the keychord. These launchers must be bound under the uppercase -;; event the keyboard actually produces. - -;;; Code: - -(require 'ert) -(require 'testutil-general) - -(add-to-list 'load-path (expand-file-name "modules" user-emacs-directory)) -(require 'eww-config) -(require 'elfeed-config) -(require 'calibredb-epub-config) - -(ert-deftest test-launcher-meta-shift-e-opens-eww () - "Normal: M-E (Meta+Shift+e) is bound to `eww'." - (should (eq (key-binding (kbd "M-E")) 'eww))) - -(ert-deftest test-launcher-meta-shift-r-opens-elfeed () - "Normal: M-R (Meta+Shift+r) is bound to `cj/elfeed-open'." - (should (eq (key-binding (kbd "M-R")) 'cj/elfeed-open))) - -(ert-deftest test-launcher-meta-shift-b-opens-calibredb () - "Normal: M-B (Meta+Shift+b) is bound to `calibredb'." - (should (eq (key-binding (kbd "M-B")) 'calibredb))) - -(provide 'test-launcher-meta-shift-keys) -;;; test-launcher-meta-shift-keys.el ends here @@ -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. |
