summaryrefslogtreecommitdiff
path: root/tests/test-system-commands-keymap.el
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-03 19:10:50 -0500
committerCraig Jennings <c@cjennings.net>2026-05-03 19:10:50 -0500
commitc2f355bf601fd9b7db0107c163c64432a7ae9a80 (patch)
tree9df8e899861bb0374d9a9157b7a37962b6f5d5e7 /tests/test-system-commands-keymap.el
parent875887fc3821869c7ca8f23777e79caa00b3999e (diff)
downloaddotemacs-c2f355bf601fd9b7db0107c163c64432a7ae9a80.tar.gz
dotemacs-c2f355bf601fd9b7db0107c163c64432a7ae9a80.zip
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.
Diffstat (limited to 'tests/test-system-commands-keymap.el')
-rw-r--r--tests/test-system-commands-keymap.el36
1 files changed, 36 insertions, 0 deletions
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