; Fix incompatibility in 'display-buffer-assq-regexp'

* lisp/window.el (display-buffer-assq-regexp): Make it accept a
buffer's name again, as it did in Emacs 28.  This makes computing
the buffer's name inside the function unnecessary.
(display-buffer): Always pass the buffer's name to
'display-buffer-assq-regexp'.  (Bug#62417)
This commit is contained in:
Eli Zaretskii 2023-03-28 14:08:29 +03:00
parent ba3ade58f3
commit 4ec4f614c7

View file

@ -7556,19 +7556,16 @@ all fail. It should never be set by programs or users. See
`display-buffer'.") `display-buffer'.")
(put 'display-buffer-fallback-action 'risky-local-variable t) (put 'display-buffer-fallback-action 'risky-local-variable t)
(defun display-buffer-assq-regexp (buffer-or-name alist action) (defun display-buffer-assq-regexp (buffer-name alist action)
"Retrieve ALIST entry corresponding to buffer specified by BUFFER-OR-NAME. "Retrieve ALIST entry corresponding to buffer whose name is BUFFER-NAME.
This returns the cdr of the alist entry ALIST if the entry's This returns the cdr of the alist entry ALIST if the entry's
key (its car) and the name of the buffer designated by 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 CONDITION argument of `buffer-match-p'. ACTION should have the
form of the action argument passed to `display-buffer'." form of the action argument passed to `display-buffer'."
(catch 'match (catch 'match
(dolist (entry alist) (dolist (entry alist)
(when (buffer-match-p (car entry) (if (stringp buffer-or-name) (when (buffer-match-p (car entry) buffer-name action)
buffer-or-name
(buffer-name buffer-or-name))
action)
(throw 'match (cdr entry)))))) (throw 'match (cdr entry))))))
(defvar display-buffer--same-window-action (defvar display-buffer--same-window-action
@ -7727,6 +7724,9 @@ specified by the ACTION argument."
(let ((buffer (if (bufferp buffer-or-name) (let ((buffer (if (bufferp buffer-or-name)
buffer-or-name buffer-or-name
(get-buffer 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 ;; Make sure that when we split windows the old window keeps
;; point, bug#14829. ;; point, bug#14829.
(split-window-keep-point t) (split-window-keep-point t)
@ -7735,7 +7735,7 @@ specified by the ACTION argument."
(unless (listp action) (setq action nil)) (unless (listp action) (setq action nil))
(let* ((user-action (let* ((user-action
(display-buffer-assq-regexp (display-buffer-assq-regexp
buffer display-buffer-alist action)) buf-name display-buffer-alist action))
(special-action (display-buffer--special-action buffer)) (special-action (display-buffer--special-action buffer))
;; Extra actions from the arguments to this function: ;; Extra actions from the arguments to this function:
(extra-action (extra-action