diff options
| author | Craig Jennings <c@cjennings.net> | 2026-06-15 21:52:30 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-06-15 21:52:30 -0500 |
| commit | ea46c4a90c9f2de94cdb6ab4e47e744a9506ee37 (patch) | |
| tree | 46bce18474facc12ba12a8808cf5373d1a9ea84d /tests/test-ui-navigation-split-follow-undo-kill.el | |
| parent | a7acefc5065558de2d301700c23d71f83bffdc83 (diff) | |
| download | dotemacs-ea46c4a90c9f2de94cdb6ab4e47e744a9506ee37.tar.gz dotemacs-ea46c4a90c9f2de94cdb6ab4e47e744a9506ee37.zip | |
fix(ui-navigation): undo-kill-buffer skips open files via equal
The visited-file filter used delq, comparing expand-file-name strings by eq, so an already-open file was never removed from the candidates (the skip logic was dead). Use delete (equal). Adds a test with the open file at the head of the list, where the eq/equal difference actually shows.
Diffstat (limited to 'tests/test-ui-navigation-split-follow-undo-kill.el')
| -rw-r--r-- | tests/test-ui-navigation-split-follow-undo-kill.el | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/test-ui-navigation-split-follow-undo-kill.el b/tests/test-ui-navigation-split-follow-undo-kill.el index 8e3900743..f6981a36a 100644 --- a/tests/test-ui-navigation-split-follow-undo-kill.el +++ b/tests/test-ui-navigation-split-follow-undo-kill.el @@ -76,6 +76,29 @@ non-visited entry, not the second." (when (get-buffer "*test-alive*") (kill-buffer "*test-alive*")))) (should (equal opened "/tmp/dead.org")))) +(ert-deftest test-ui-navigation-undo-kill-buffer-skips-open-file-at-head () + "Boundary: an open file at the head of the list is skipped (equal, not eq). +The previous delq compared expand-file-name strings by identity, so a +currently-open most-recent file was never skipped." + (let ((opened nil) + (recentf-mode t) + ;; The open file is FIRST — only an equal-based filter removes it. + (recentf-list '("/tmp/alive.txt" "/tmp/dead.org"))) + (cl-letf (((symbol-function 'require) (lambda (&rest _) t)) + ((symbol-function 'recentf-mode) (lambda (&rest _) t)) + ((symbol-function 'buffer-list) + (lambda (&rest _) + (list (let ((b (get-buffer-create "*test-alive*"))) + (with-current-buffer b + (setq buffer-file-name "/tmp/alive.txt")) + b)))) + ((symbol-function 'find-file) + (lambda (f) (setq opened f)))) + (unwind-protect + (cj/undo-kill-buffer 1) + (when (get-buffer "*test-alive*") (kill-buffer "*test-alive*")))) + (should (equal opened "/tmp/dead.org")))) + (ert-deftest test-ui-navigation-undo-kill-buffer-numeric-arg-is-one-based () "Normal: a numeric prefix is 1-based — N=2 opens the second non-visited entry." (let ((opened nil) |
