summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2025-10-20 09:13:44 -0500
committerCraig Jennings <c@cjennings.net>2025-10-20 09:13:44 -0500
commitf041d7f355cdfeeee963553e98e0deea4306f1a9 (patch)
treeb941a216e3de74d3527f9b6bfc18759764869fb9
parentcfcf2c4e43afbea074787cd103c518ae90c6dd67 (diff)
chore: undead-buffers: Update keybinding functions and docstrings
- Replace `global-set-key` with `keymap-global-set` for defining keybindings. - Update docstrings to use single quotes instead of equal signs for code symbols. - Remove ERT tests for cleanup and clarity (moved to tests/ in another PR)
-rw-r--r--modules/undead-buffers.el117
1 files changed, 8 insertions, 109 deletions
diff --git a/modules/undead-buffers.el b/modules/undead-buffers.el
index 428ed870..a7584476 100644
--- a/modules/undead-buffers.el
+++ b/modules/undead-buffers.el
@@ -32,10 +32,10 @@
(if (member (buffer-name) cj/buffer-bury-alive-list)
(bury-buffer)
(kill-buffer)))))
-(global-set-key [remap kill-buffer] #'cj/kill-buffer-or-bury-alive)
+(keymap-global-set "<remap> <kill-buffer>" #'cj/kill-buffer-or-bury-alive)
(defun cj/undead-buffer-p ()
- "Predicate for =save-some-buffers= that skips buffers in =cj/buffer-bury-alive-list=."
+ "Predicate for `save-some-buffers' that skips buffers in `cj/buffer-bury-alive-list'."
(let* ((buf (current-buffer))
(name (buffer-name buf)))
(and
@@ -44,8 +44,8 @@
(buffer-modified-p buf))))
(defun cj/save-some-buffers (&optional arg)
- "Save some buffers, omitting those in =cj/buffer-bury-alive-list=.
-ARG is passed to =save-some-buffers=."
+ "Save some buffers, omitting those in `cj/buffer-bury-alive-list'.
+ARG is passed to `save-some-buffers'."
(interactive "P")
(save-some-buffers arg #'cj/undead-buffer-p))
@@ -55,7 +55,7 @@ ARG is passed to =save-some-buffers=."
(let ((buf (current-buffer)))
(delete-window)
(cj/kill-buffer-or-bury-alive buf)))
-(global-set-key (kbd "M-C") #'cj/kill-buffer-and-window)
+(keymap-global-set "M-C" #'cj/kill-buffer-and-window)
(defun cj/kill-other-window ()
"Delete the next window and kill or bury its buffer."
@@ -65,7 +65,7 @@ ARG is passed to =save-some-buffers=."
(unless (one-window-p)
(delete-window))
(cj/kill-buffer-or-bury-alive buf)))
-(global-set-key (kbd "M-O") #'cj/kill-other-window)
+(keymap-global-set "M-O" #'cj/kill-other-window)
(defun cj/kill-all-other-buffers-and-windows ()
"Kill or bury all other buffers, then delete other windows."
@@ -74,108 +74,7 @@ ARG is passed to =save-some-buffers=."
(delete-other-windows)
(mapc #'cj/kill-buffer-or-bury-alive
(delq (current-buffer) (buffer-list))))
-(global-set-key (kbd "M-M") #'cj/kill-all-other-buffers-and-windows)
+(keymap-global-set "M-M" #'cj/kill-all-other-buffers-and-windows)
(provide 'undead-buffers)
-;;; undead-buffers.el ends here.
-
-;; --------------------------------- ERT Tests ---------------------------------
-;; Run these tests with M-x ert RET t RET
-
-(require 'ert)
-(require 'cl-lib)
-
-(ert-deftest undead-buffers/kill-or-bury-when-not-in-list-kills ()
- "cj/kill-buffer-or-bury-alive should kill a buffer not in `cj/buffer-bury-alive-list'."
- (let* ((buf (generate-new-buffer "test-not-in-list"))
- (orig (copy-sequence cj/buffer-bury-alive-list)))
- (unwind-protect
- (progn
- (should (buffer-live-p buf))
- (cj/kill-buffer-or-bury-alive (buffer-name buf))
- (should-not (buffer-live-p buf)))
- (setq cj/buffer-bury-alive-list orig)
- (when (buffer-live-p buf) (kill-buffer buf)))))
-
-(ert-deftest undead-buffers/kill-or-bury-when-in-list-buries ()
- "cj/kill-buffer-or-bury-alive should bury (not kill) a buffer in the list."
- (let* ((name "*dashboard*") ; an element already in the default list
- (buf (generate-new-buffer name))
- (orig (copy-sequence cj/buffer-bury-alive-list))
- win-was)
- (unwind-protect
- (progn
- (add-to-list 'cj/buffer-bury-alive-list name)
- ;; show it in a temporary window so we can detect bury
- (setq win-was (display-buffer buf))
- (cj/kill-buffer-or-bury-alive name)
- ;; bury should leave it alive
- (should (buffer-live-p buf))
- ;; note: Emacs’s `bury-buffer` does not delete windows by default,
- ;; so we no longer assert that no window shows it.
- )
- ;; cleanup
- (setq cj/buffer-bury-alive-list orig)
- (delete-windows-on buf)
- (kill-buffer buf))))
-
-(ert-deftest undead-buffers/kill-or-bury-adds-to-list-with-prefix ()
- "Calling `cj/kill-buffer-or-bury-alive' with a prefix arg should add the buffer to the list."
- (let* ((buf (generate-new-buffer "test-add-prefix"))
- (orig (copy-sequence cj/buffer-bury-alive-list)))
- (unwind-protect
- (progn
- (let ((current-prefix-arg '(4)))
- (cj/kill-buffer-or-bury-alive (buffer-name buf)))
- (should (member (buffer-name buf) cj/buffer-bury-alive-list)))
- (setq cj/buffer-bury-alive-list orig)
- (kill-buffer buf))))
-
-(ert-deftest undead-buffers/kill-buffer-and-window-removes-window ()
- "cj/kill-buffer-and-window should delete the current window and kill/bury its buffer."
- (let* ((buf (generate-new-buffer "test-kill-and-win"))
- (orig (copy-sequence cj/buffer-bury-alive-list)))
- (split-window) ; now two windows
- (let ((win (next-window)))
- (set-window-buffer win buf)
- (select-window win)
- (cj/kill-buffer-and-window)
- (should-not (window-live-p win))
- (unless (member (buffer-name buf) orig)
- (should-not (buffer-live-p buf))))
- (setq cj/buffer-bury-alive-list orig)))
-
-(ert-deftest undead-buffers/kill-other-window-deletes-that-window ()
- "cj/kill-other-window should delete the *other* window and kill/bury its buffer."
- (let* ((buf1 (current-buffer))
- (buf2 (generate-new-buffer "test-other-window"))
- (orig (copy-sequence cj/buffer-bury-alive-list)))
- (split-window)
- (let* ((win1 (selected-window))
- (win2 (next-window win1)))
- (set-window-buffer win2 buf2)
- ;; stay on the original window
- (select-window win1)
- (cj/kill-other-window)
- (should-not (window-live-p win2))
- (unless (member (buffer-name buf2) orig)
- (should-not (buffer-live-p buf2))))
- (setq cj/buffer-bury-alive-list orig)))
-
-(ert-deftest undead-buffers/kill-all-other-buffers-and-windows-keeps-only-current ()
- "cj/kill-all-other-buffers-and-windows should delete other windows and kill/bury all other buffers."
- (let* ((main (current-buffer))
- (extra (generate-new-buffer "test-all-others"))
- (orig (copy-sequence cj/buffer-bury-alive-list)))
- (split-window)
- (set-window-buffer (next-window) extra)
- (cj/kill-all-other-buffers-and-windows)
- (should (one-window-p))
- ;; main buffer still exists
- (should (buffer-live-p main))
- ;; extra buffer either buried or killed
- (unless (member (buffer-name extra) orig)
- (should-not (buffer-live-p extra)))
- ;; cleanup
- (setq cj/buffer-bury-alive-list orig)
- (when (buffer-live-p extra) (kill-buffer extra))))
+;;; undead-buffers.el ends here