From: pillule Date: Wed, 18 Aug 2021 07:16:06 +0000 (+0200) Subject: Fix behavior when switch-to-prev-buffer-skip is a function (Bug#49275) X-Git-Tag: emacs-28.0.90~1458 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=eddb003f30e48bdbc0b9cb774f261b1558912167;p=emacs.git 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. --- 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)))