]> code.delx.au - gnu-emacs/blobdiff - lisp/info-look.el
(dired-pop-to-buffer): Try to make this behave the
[gnu-emacs] / lisp / info-look.el
index fc8ff1e578b002ef87e527697ca0a644d6e99c4e..a061611aa9b7acc23d0811481c4abd2a8c83c17f 100644 (file)
@@ -2,7 +2,7 @@
 ;; An older version of this was known as libc.el.
 
 ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003,
-;;   2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+;;   2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
 
 ;; Author: Ralph Schleicher <rs@nunatak.allgaeu.org>
 ;;         (did not show signs of life (Nov 2001)  -stef)
@@ -335,22 +335,23 @@ If optional argument QUERY is non-nil, query for the help mode."
              (cons (list Info-current-file Info-current-node (point))
                    Info-history))))
          found doc-spec node prefix suffix doc-found)
-    (if (not (eq major-mode 'Info-mode))
-       (if (not info-lookup-other-window-flag)
-           (info)
-         (progn
-           (save-window-excursion (info))
-           ;; Determine whether or not the Info buffer is visible in
-           ;; another frame on the same display.  If it is, simply raise
-           ;; that frame.  Otherwise, display it in another window.
-           (let* ((window (get-buffer-window "*info*" t))
-                  (info-frame (and window (window-frame window))))
-             (if (and info-frame
-                      (display-multi-frame-p)
-                      (memq info-frame (frames-on-display-list))
-                      (not (eq info-frame (selected-frame))))
-                 (select-frame info-frame)
-               (switch-to-buffer-other-window "*info*"))))))
+    (unless (eq major-mode 'Info-mode)
+      (if (not info-lookup-other-window-flag)
+         (info)
+       (save-window-excursion (info))
+       (let* ((info-window (get-buffer-window "*info*" t))
+              (info-frame (and info-window (window-frame info-window))))
+         (if (and info-frame
+                  (not (eq info-frame (selected-frame)))
+                  (display-multi-frame-p)
+                  (memq info-frame (frames-on-display-list)))
+             ;; *info* is visible in another frame on same display.
+             ;; Raise that frame and select the window.
+             (progn
+               (select-window info-window)
+               (raise-frame info-frame))
+           ;; In any other case, switch to *info* in another window.
+           (switch-to-buffer-other-window "*info*")))))
     (while (and (not found) modes)
       (setq doc-spec (info-lookup->doc-spec topic (car modes)))
       (while (and (not found) doc-spec)