# HG changeset patch # User Juri Linkov # Date 1276808177 -10800 # Node ID 35894ae393bbd883abf0d3a57b50eea2c89bd4b5 # Parent 9087d6113b47290513d37c78914657124a3c0ebb Fix revert-buffer functionality of Help mode and Info. * lisp/help-mode.el (help-mode): Set buffer-local variable revert-buffer-function to help-mode-revert-buffer. (help-mode-revert-buffer): New function. * lisp/info.el (Info-revert-find-node): Check for major-mode Info-mode before popping to "*info*" (like in other Info functions). Keep buffer-name in old-buffer-name. Keep Info-history-forward in old-history-forward. Pop to old-buffer-name or "*info*" to recreate the killed buffer. Set Info-history-forward from old-history-forward. (Info-breadcrumbs-depth): Add :group and :version. diff -r 9087d6113b47 -r 35894ae393bb lisp/ChangeLog --- a/lisp/ChangeLog Thu Jun 17 09:41:13 2010 -0700 +++ b/lisp/ChangeLog Thu Jun 17 23:56:17 2010 +0300 @@ -1,3 +1,17 @@ +2010-06-17 Juri Linkov + + * help-mode.el (help-mode): Set buffer-local variable + revert-buffer-function to help-mode-revert-buffer. + (help-mode-revert-buffer): New function. + + * info.el (Info-revert-find-node): Check for major-mode Info-mode + before popping to "*info*" (like in other Info functions). + Keep buffer-name in old-buffer-name. Keep Info-history-forward in + old-history-forward. Pop to old-buffer-name or "*info*" to + recreate the killed buffer. Set Info-history-forward from + old-history-forward. + (Info-breadcrumbs-depth): Add :group and :version. + 2010-06-17 Dan Nicolaescu * emacs-lisp/package.el (package-menu-mode-map): Add a menu. diff -r 9087d6113b47 -r 35894ae393bb lisp/help-mode.el --- a/lisp/help-mode.el Thu Jun 17 09:41:13 2010 -0700 +++ b/lisp/help-mode.el Thu Jun 17 23:56:17 2010 +0300 @@ -272,6 +272,9 @@ (with-current-buffer buffer (bury-buffer)))) + (set (make-local-variable 'revert-buffer-function) + 'help-mode-revert-buffer) + (run-mode-hooks 'help-mode-hook)) ;;;###autoload @@ -783,6 +786,17 @@ (fboundp sym) (facep sym)) (help-do-xref pos #'help-xref-interned (list sym))))) +(defun help-mode-revert-buffer (ignore-auto noconfirm) + (when (or noconfirm (yes-or-no-p "Revert help buffer? ")) + (let ((pos (point)) + (item help-xref-stack-item) + ;; Pretend there is no current item to add to the history. + (help-xref-stack-item nil) + ;; Use the current buffer. + (help-xref-following t)) + (apply (car item) (cdr item)) + (goto-char pos)))) + (defun help-insert-string (string) "Insert STRING to the help buffer and install xref info for it. This function can be used to restore the old contents of the help buffer diff -r 9087d6113b47 -r 35894ae393bb lisp/info.el --- a/lisp/info.el Thu Jun 17 09:41:13 2010 -0700 +++ b/lisp/info.el Thu Jun 17 23:56:17 2010 +0300 @@ -238,7 +238,9 @@ (defcustom Info-breadcrumbs-depth 4 "Depth of breadcrumbs to display. 0 means do not display breadcrumbs." - :type 'integer) + :version "23.1" + :type 'integer + :group 'info) (defcustom Info-search-whitespace-regexp "\\s-+" "If non-nil, regular expression to match a sequence of whitespace chars. @@ -800,17 +802,22 @@ "Go to an Info node FILENAME and NODENAME, re-reading disk contents. When *info* is already displaying FILENAME and NODENAME, the window position is preserved, if possible." - (pop-to-buffer "*info*") + (or (eq major-mode 'Info-mode) (pop-to-buffer "*info*")) (let ((old-filename Info-current-file) (old-nodename Info-current-node) + (old-buffer-name (buffer-name)) (pcolumn (current-column)) (pline (count-lines (point-min) (line-beginning-position))) (wline (count-lines (point-min) (window-start))) + (old-history-forward Info-history-forward) (old-history Info-history) (new-history (and Info-current-file (list Info-current-file Info-current-node (point))))) (kill-buffer (current-buffer)) + (pop-to-buffer (or old-buffer-name "*info*")) + (Info-mode) (Info-find-node filename nodename) + (setq Info-history-forward old-history-forward) (setq Info-history old-history) (if (and (equal old-filename Info-current-file) (equal old-nodename Info-current-node))