From: Juri Linkov Date: Mon, 13 Jan 2014 08:04:09 +0000 (+0200) Subject: * lisp/info.el (Info-find-file): Go to DIR before displaying the error X-Git-Tag: emacs-24.3.90~173^2^2~42^2~45^2~401 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=3c0c4562d178819ee3f82f6876c19d61d281358a;p=emacs.git * lisp/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. Fixes: debbugs:16405 --- 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 + + * 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 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.