From eddb003f30e48bdbc0b9cb774f261b1558912167 Mon Sep 17 00:00:00 2001 From: pillule Date: Wed, 18 Aug 2021 09:16:06 +0200 Subject: Fix behavior when switch-to-prev-buffer-skip is a function (Bug#49275) * lisp/window.el (switch-to-prev-buffer) (switch-to-next-buffer): More correctly handle cases where 'switch-to-prev-buffer-skip' is a function. --- lisp/window.el | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lisp/window.el b/lisp/window.el index 0346397566a..e14d472cf3f 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -4721,8 +4721,8 @@ This function is called by `prev-buffer'." window new-buffer (nth 1 entry) (nth 2 entry)) (throw 'found t))))) - (when skipped - ;; Show first skipped buffer. + (when (and skipped (not (functionp switch-to-prev-buffer-skip))) + ;; Show first skipped buffer, unless skip was a function. (setq new-buffer skipped) (set-window-buffer-start-and-point window new-buffer))) @@ -4831,6 +4831,7 @@ This function is called by `next-buffer'." ;; nreverse here!) (dolist (entry (reverse (window-prev-buffers window))) (when (and (not (eq new-buffer (car entry))) + (not (eq old-buffer (car entry))) (setq new-buffer (car entry)) (or (buffer-live-p new-buffer) (not (setq killed-buffers @@ -4842,8 +4843,8 @@ This function is called by `next-buffer'." window new-buffer (nth 1 entry) (nth 2 entry)) (throw 'found t)))) - (when skipped - ;; Show first skipped buffer. + (when (and skipped (not (functionp switch-to-prev-buffer-skip))) + ;; Show first skipped buffer, unless skip was a function. (setq new-buffer skipped) (set-window-buffer-start-and-point window new-buffer))) -- cgit v1.2.3