From: Joseph Turner Date: Sat, 6 Apr 2024 01:32:36 +0000 (-0700) Subject: Display Info buffer after ensuring it contains text X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=d5d81d51087390cc67bb071e8a4a16487a084223;p=emacs.git 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). (cherry picked from commit 21775a936bd3838adaae38bd5c5ec776434736c1) --- diff --git a/lisp/info.el b/lisp/info.el index 901f0384c62..b459406959e 100644 --- a/lisp/info.el +++ b/lisp/info.el @@ -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)) + + (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)))) - (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)))) - - (when window - (select-window window))))) ;;;###autoload (put 'info 'info-file (purecopy "emacs")) ;;;###autoload