summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/ChangeLog9
-rw-r--r--lisp/info.el19
2 files changed, 21 insertions, 7 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 8508ca7b357..93436bf3cb3 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -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.
diff --git a/lisp/info.el b/lisp/info.el
index 74bdef5b050..78e0dda7cf7 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -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.