bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#62417: ; Regression: 59ecf25fc860 is the first bad commit


From: Eli Zaretskii
Subject: bug#62417: ; Regression: 59ecf25fc860 is the first bad commit
Date: Mon, 27 Mar 2023 20:09:44 +0300

> From: João Távora <joaotavora@gmail.com>
> Date: Mon, 27 Mar 2023 16:42:05 +0000
> Cc: philipk@posteo.net, 62417@debbugs.gnu.org
> 
> On Mon, Mar 27, 2023 at 5:33 PM Eli Zaretskii <eliz@gnu.org> wrote:
> >
> > To make a long story short: here's how the call to
> > display-buffer-assq-regexp looked like in Emacs 28:
> >
> >       (let* ((user-action
> >               (display-buffer-assq-regexp
> >                (buffer-name buffer) display-buffer-alist action))
> >
> > And here's how it looks like in Emacs 29:
> >
> >     (let* ((user-action
> >             (display-buffer-assq-regexp
> >              buffer display-buffer-alist action))
> >
> > Your change modified display-buffer-assq-regexp to pass to
> > buffer-match-p the name of the buffer if display-buffer-assq-regexp
> > was called with a buffer object.  This is not TRT, since, among other
> > issues, it changes the API of display-buffer-assq-regexp, which is a
> > public function.
> 
> Is it?  Not documented in the manual.  Looked a lot like bog-standard
> generic data-accessing implementation detail to me, and I can't
> see any advantage of using it directly.
> 
> But don't let that stop you from doing this change, which, if it
> works (I've given a super simple recipe to check), is 120% percent
> fine by me.

OK.  Philip, any objections to the following change:

diff --git a/lisp/window.el b/lisp/window.el
index 4bdc265..016d53f 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -7556,19 +7556,16 @@ display-buffer-fallback-action
 `display-buffer'.")
 (put 'display-buffer-fallback-action 'risky-local-variable t)
 
-(defun display-buffer-assq-regexp (buffer-or-name alist action)
-  "Retrieve ALIST entry corresponding to buffer specified by BUFFER-OR-NAME.
+(defun display-buffer-assq-regexp (buffer-name alist action)
+  "Retrieve ALIST entry corresponding to buffer whose name is BUFFER-NAME.
 This returns the cdr of the alist entry ALIST if the entry's
 key (its car) and the name of the buffer designated by
-BUFFER-OR-NAME satisfy `buffer-match-p', using the key as
+BUFFER-NAME satisfy `buffer-match-p', using the key as
 CONDITION argument of `buffer-match-p'.  ACTION should have the
 form of the action argument passed to `display-buffer'."
   (catch 'match
     (dolist (entry alist)
-      (when (buffer-match-p (car entry) (if (stringp buffer-or-name)
-                                            buffer-or-name
-                                          (buffer-name buffer-or-name))
-                                          action)
+      (when (buffer-match-p (car entry) buffer-name action)
         (throw 'match (cdr entry))))))
 
 (defvar display-buffer--same-window-action
@@ -7727,6 +7724,9 @@ display-buffer
   (let ((buffer (if (bufferp buffer-or-name)
                    buffer-or-name
                  (get-buffer buffer-or-name)))
+        (buf-name (if (bufferp buffer-or-name)
+                      (buffer-name buffer-or-name)
+                    buffer-or-name))
        ;; Make sure that when we split windows the old window keeps
        ;; point, bug#14829.
        (split-window-keep-point t)
@@ -7735,7 +7735,7 @@ display-buffer
     (unless (listp action) (setq action nil))
     (let* ((user-action
             (display-buffer-assq-regexp
-             buffer display-buffer-alist action))
+             buf-name display-buffer-alist action))
            (special-action (display-buffer--special-action buffer))
            ;; Extra actions from the arguments to this function:
            (extra-action





reply via email to

[Prev in Thread] Current Thread [Next in Thread]