From c8f5f0ed70733ea6a71e5dd4bcc9bddd41a11825 Mon Sep 17 00:00:00 2001 From: "Andre A. Gomes" Date: Thu, 19 Sep 2024 14:38:53 +0300 Subject: [PATCH] Revert "buffer: Delete dummy-buffer-p." This reverts commit d027b315bb2c7c91e694f5181c3777c4fa9e564c. It turns out that the changes introduced in d027b315bb2c7c91e694f5181c3777c4fa9e564c change the logic. Indeed window-set-buffer is a sea of obscure incantations and bad design. See #3510. --- source/buffer.lisp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/source/buffer.lisp b/source/buffer.lisp index 5f079fdda6c..540e8c163e4 100644 --- a/source/buffer.lisp +++ b/source/buffer.lisp @@ -1012,6 +1012,9 @@ This is a low-level function. See `buffer-delete' and `delete-buffer'." (when *browser* (alex:hash-table-values (windows *browser*)))) +(defun dummy-buffer-p (buffer) + (eq 'buffer (type-of buffer))) + (export-always 'window-set-buffer) (defun window-set-buffer (window buffer &key (focus t)) "Set BROWSER's WINDOW buffer to BUFFER. @@ -1030,7 +1033,7 @@ proceeding." ;; So that `current-buffer' returns the new value if buffer was ;; switched inside a `with-current-buffer': (setf %buffer nil) - (if (active-buffer window) + (if (dummy-buffer-p (active-buffer window)) (let ((dummy (active-buffer window))) (ffi-window-set-buffer window buffer :focus focus) (setf (active-buffer window) buffer)