Display Info buffer after ensuring it contains text

* lisp/info.el (info-pop-to-buffer): Move display of Info buffer
to a later stage after its text contents is ready to display.
This helps to use fit-window-to-buffer in display-buffer-alist (bug#70213).
This commit is contained in:
Joseph Turner 2024-04-05 18:32:36 -07:00 committed by Juri Linkov
parent 0fab2649e2
commit 21775a936b

View file

@ -807,30 +807,28 @@ Select the window used, if it has been made."
(get-buffer-create "*info*")))))
(with-current-buffer buffer
(unless (derived-mode-p 'Info-mode)
(Info-mode)))
(Info-mode))
(let* ((window
(display-buffer buffer
(if other-window
'(nil (inhibit-same-window . t))
'(display-buffer-same-window)))))
(with-current-buffer buffer
(if file-or-node
;; If argument already contains parentheses, don't add another set
;; since the argument will then be parsed improperly. This also
;; has the added benefit of allowing node names to be included
;; following the parenthesized filename.
(Info-goto-node
(if (and (stringp file-or-node) (string-match "(.*)" file-or-node))
file-or-node
(concat "(" file-or-node ")")))
(if (and (zerop (buffer-size))
(null Info-history))
;; If we just created the Info buffer, go to the directory.
(Info-directory))))
(if file-or-node
;; If argument already contains parentheses, don't add another set
;; since the argument will then be parsed improperly. This also
;; has the added benefit of allowing node names to be included
;; following the parenthesized filename.
(Info-goto-node
(if (and (stringp file-or-node) (string-match "(.*)" file-or-node))
file-or-node
(concat "(" file-or-node ")")))
(if (and (zerop (buffer-size))
(null Info-history))
;; If we just created the Info buffer, go to the directory.
(Info-directory))))
(when-let ((window (display-buffer buffer
(if other-window
'(nil (inhibit-same-window . t))
'(display-buffer-same-window)))))
(select-window window))))
(when window
(select-window window)))))
;;;###autoload (put 'info 'info-file (purecopy "emacs"))
;;;###autoload