From c2f355bf601fd9b7db0107c163c64432a7ae9a80 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Sun, 3 May 2026 19:10:50 -0500 Subject: fix: keep C-; ! as system command prefix The module was binding `cj/system-command-map` under `C-; !`, then a few lines later overwriting the same prefix with `cj/system-command-menu`. The second bind won, so every documented subkey, like `C-; ! r` for reboot and `C-; ! l` for lock, was unreachable. I kept the prefix map and folded the completing-read menu into it at `C-; ! !`. So `C-; !` still opens the prefix, the menu is one extra `!` away, and the single-letter shortcuts work again. I also added which-key labels for every documented subkey so the popup actually says what each one does. I added `tests/test-system-commands-keymap.el`. It asserts the prefix stays mounted and that every binding (`!`, `L`, `r`, `s`, `S`, `l`, `E`, `e`) resolves to the right command. --- tests/test-system-commands-keymap.el | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 tests/test-system-commands-keymap.el (limited to 'tests/test-system-commands-keymap.el') diff --git a/tests/test-system-commands-keymap.el b/tests/test-system-commands-keymap.el new file mode 100644 index 00000000..ac78a25d --- /dev/null +++ b/tests/test-system-commands-keymap.el @@ -0,0 +1,36 @@ +;;; test-system-commands-keymap.el --- Tests for system command keymap -*- lexical-binding: t; -*- + +;;; Commentary: + +;; The system command keymap should remain mounted as a prefix under C-; ! so +;; which-key can show the documented subcommands. + +;;; Code: + +(require 'ert) + +(defvar cj/custom-keymap (make-sparse-keymap) + "Stub custom keymap for system-commands tests.") + +(require 'system-commands) + +(ert-deftest test-system-commands-keymap-normal-prefix-mounted () + "Normal: C-; ! remains a prefix keymap, not a direct command." + (should (eq (keymap-lookup cj/custom-keymap "!") + cj/system-command-map))) + +(ert-deftest test-system-commands-keymap-normal-documented-subkeys () + "Normal: documented system command subkeys resolve under the prefix." + (dolist (binding '(("!" . cj/system-command-menu) + ("L" . cj/system-cmd-logout) + ("r" . cj/system-cmd-reboot) + ("s" . cj/system-cmd-shutdown) + ("S" . cj/system-cmd-suspend) + ("l" . cj/system-cmd-lock) + ("E" . cj/system-cmd-exit-emacs) + ("e" . cj/system-cmd-restart-emacs))) + (should (eq (keymap-lookup cj/system-command-map (car binding)) + (cdr binding))))) + +(provide 'test-system-commands-keymap) +;;; test-system-commands-keymap.el ends here -- cgit v1.2.3