              (location (cdr (cadr module-info))))
         (cond
          (location
-          (view-file-other-window
-           (concat location (ocaml-uncapitalize module) ".mli"))
-          (bury-buffer (current-buffer)))
+          (let ((file (concat location (ocaml-uncapitalize module) ".mli")))
+            (if (window-live-p same-window)
+                (progn (select-window same-window)
+                       (view-mode-exit view-return-to-alist view-exit-action))
+              ;; (view-buffer (find-file-noselect file) 'view))
+              )
+            (view-file-other-window file)
+            (bury-buffer (current-buffer))))
          (info-section (error "Aborted"))
          (t (error "No help for module %s" module))))
       )

;; Help function. 


(defun ocaml-goto-help (&optional module entry)
  "Searches info manual for MODULE and ENTRY in MODULE.
If unspecified, MODULE and ENTRY are inferred from the position in the
current buffer using \\[ocaml-qualified-identifier]."

(defun ocaml-link-goto (click)
  (interactive "e")
  (let* ((pos (caml-event-point-start click))
         (win (caml-event-window click))
         (buf (window-buffer win))
         (window (selected-window))
         (link))
    (setq link
          (with-current-buffer buf
            (buffer-substring
             (previous-single-property-change (+ pos 1) 'local-map
                                                   buf (- pos 100))
             (next-single-property-change pos  'local-map
                                        buf (+ pos 100)))))
    (if (string-match (concat "^" ocaml-longident-regexp "$") link)
        (ocaml-goto-help (match-string 1 link) (match-string 2 link) win)
      (if (not (equal (window-buffer window) buf))
          (switch-to-buffer-other-window buf))
      (if (setq link (assoc link (cdr ocaml-links)))
