* lisp/info.el (Info-find-file): Go to DIR before displaying the error
authorJuri Linkov <juri@jurta.org>
Mon, 13 Jan 2014 08:04:09 +0000 (10:04 +0200)
committerJuri Linkov <juri@jurta.org>
Mon, 13 Jan 2014 08:04:09 +0000 (10:04 +0200)
about a nonexistent file if no previous Info file is visited.
Use `user-error' instead of `error' for "Info file %s does not exist".
(Info-find-node-2): In case of a nonexistent node in unwind forms
go to the Top node if there is no previous node to revert to.

Fixes: debbugs:16405

lisp/ChangeLog
lisp/info.el

index 8508ca7..93436bf 100644 (file)
@@ -1,3 +1,12 @@
+2014-01-13  Juri Linkov  <juri@jurta.org>
+
+       * info.el (Info-find-file): Go to DIR before displaying the error
+       about a nonexistent file if no previous Info file is visited.
+       Use `user-error' instead of `error' for "Info file %s does not exist".
+       (Info-find-node-2): In case of a nonexistent node in unwind forms
+       go to the Top node if there is no previous node to revert to.
+       (Bug#16405)
+
 2014-01-13  Martin Rudalics  <rudalics@gmx.at>
 
        fit-frame/window-to-buffer code fixes including one for Bug#14096.
index 74bdef5..78e0dda 100644 (file)
@@ -925,7 +925,10 @@ just return nil (no error)."
          (setq filename found)
        (if noerror
            (setq filename nil)
-         (error "Info file %s does not exist" filename)))
+         ;; If there is no previous Info file, go to the directory.
+         (unless Info-current-file
+           (Info-directory))
+         (user-error "Info file %s does not exist" filename)))
       filename))))
 
 (defun Info-find-node (filename nodename &optional no-going-back strict-case)
@@ -1245,12 +1248,14 @@ is non-nil)."
                   (Info-find-index-name Info-point-loc)
                   (setq Info-point-loc nil))))))
     ;; If we did not finish finding the specified node,
-    ;; go back to the previous one.
-    (or Info-current-node no-going-back (null Info-history)
-        (let ((hist (car Info-history)))
-          (setq Info-history (cdr Info-history))
-          (Info-find-node (nth 0 hist) (nth 1 hist) t)
-          (goto-char (nth 2 hist))))))
+    ;; go back to the previous one or to the Top node.
+    (unless (or Info-current-node no-going-back)
+      (if Info-history
+         (let ((hist (car Info-history)))
+           (setq Info-history (cdr Info-history))
+           (Info-find-node (nth 0 hist) (nth 1 hist) t)
+           (goto-char (nth 2 hist)))
+       (Info-find-node Info-current-file "Top" t)))))
 
 ;; Cache the contents of the (virtual) dir file, once we have merged
 ;; it for the first time, so we can save time subsequently.