GNU bug report logs -
#12230
24.2; revert-buffer in an Info buffer should refresh Info-index-nodes
Previous Next
Reported by: Eli Zaretskii <eliz <at> gnu.org>
Date: Sat, 18 Aug 2012 18:16:01 UTC
Severity: normal
Found in version 24.2
Done: Juri Linkov <juri <at> jurta.org>
Bug is archived. No further changes may be made.
Full log
Message #20 received at 12230 <at> debbugs.gnu.org (full text, mbox):
> Looks good to me, thanks.
Installed with cache invalidation for `Info-index-nodes' and
`Info-toc-nodes' (I had to put code to `info-insert-file-contents'
instead of `Info-find-file' because the full filename is available
only in the former).
There is also `Info-history' that contains information about nodes,
but I see no reasonable way to update `Info-history'
to reflect changes in the modified Info files.
BTW, let me use this opportunity to propose an improvement that restores
the original window point when returning back to the previous node.
This helps to avoid distraction when point jumps from the original
window position (displayed before leaving the Info node) to
another position (by default, center of the window):
=== modified file 'lisp/info.el'
--- lisp/info.el 2012-08-08 08:48:57 +0000
+++ lisp/info.el 2012-08-21 00:14:18 +0000
@@ -40,11 +40,11 @@ (defgroup info nil
(defvar Info-history nil
"Stack of Info nodes user has visited.
-Each element of the stack is a list (FILENAME NODENAME BUFFERPOS).")
+Each element of the stack is a list (FILENAME NODENAME BUFFERPOS WINDOWPOS).")
(defvar Info-history-forward nil
"Stack of Info nodes user has visited with `Info-history-back' command.
-Each element of the stack is a list (FILENAME NODENAME BUFFERPOS).")
+Each element of the stack is a list (FILENAME NODENAME BUFFERPOS WINDOWPOS).")
(defvar Info-history-list nil
"List of all Info nodes user has visited.
@@ -888,7 +925,7 @@ (defun Info-find-node (filename nodename
;; Record the node we are leaving, if we were in one.
(and (not no-going-back)
Info-current-file
- (push (list Info-current-file Info-current-node (point))
+ (push (list Info-current-file Info-current-node (point) (window-start))
Info-history))
(Info-find-node-2 filename nodename no-going-back))
@@ -922,7 +959,7 @@ (defun Info-revert-find-node (filename n
(pline (count-lines (point-min) (line-beginning-position)))
(wline (count-lines (point-min) (window-start)))
(new-history (and Info-current-file
- (list Info-current-file Info-current-node (point)))))
+ (list Info-current-file Info-current-node (point) (window-start)))))
;; When `Info-current-file' is nil, `Info-find-node-2' rereads the file.
(setq Info-current-file nil)
(Info-find-node filename nodename)
@@ -1192,7 +1229,8 @@ (defun Info-find-node-2 (filename nodena
(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))))))
+ (goto-char (nth 2 hist))
+ (set-window-start (selected-window) (nth 3 hist))))))
;; Cache the contents of the (virtual) dir file, once we have merged
;; it for the first time, so we can save time subsequently.
@@ -1968,7 +2008,7 @@ (defun Info-search (regexp &optional bou
(equal ofile Info-current-file))
(and isearch-mode isearch-wrapped
(eq opoint (if isearch-forward opoint-min opoint-max)))
- (setq Info-history (cons (list ofile onode opoint)
+ (setq Info-history (cons (list ofile onode opoint ostart)
Info-history))))))
(defun Info-search-case-sensitively ()
@@ -2174,17 +2214,19 @@ (defun Info-history-back ()
(or Info-history
(user-error "This is the first Info node you looked at"))
(let ((history-forward
- (cons (list Info-current-file Info-current-node (point))
+ (cons (list Info-current-file Info-current-node (point) (window-start))
Info-history-forward))
- filename nodename opoint)
+ filename nodename opoint ostart)
(setq filename (car (car Info-history)))
(setq nodename (car (cdr (car Info-history))))
(setq opoint (car (cdr (cdr (car Info-history)))))
+ (setq ostart (car (cdr (cdr (cdr (car Info-history))))))
(setq Info-history (cdr Info-history))
(Info-find-node filename nodename)
(setq Info-history (cdr Info-history))
(setq Info-history-forward history-forward)
- (goto-char opoint)))
+ (goto-char opoint)
+ (set-window-start (selected-window) ostart)))
(defalias 'Info-last 'Info-history-back)
@@ -2194,13 +2236,15 @@ (defun Info-history-forward ()
(or Info-history-forward
(user-error "This is the last Info node you looked at"))
(let ((history-forward (cdr Info-history-forward))
- filename nodename opoint)
+ filename nodename opoint ostart)
(setq filename (car (car Info-history-forward)))
(setq nodename (car (cdr (car Info-history-forward))))
(setq opoint (car (cdr (cdr (car Info-history-forward)))))
+ (setq ostart (car (cdr (cdr (cdr (car Info-history-forward))))))
(Info-find-node filename nodename)
(setq Info-history-forward history-forward)
- (goto-char opoint)))
+ (goto-char opoint)
+ (set-window-start (selected-window) ostart)))
(add-to-list 'Info-virtual-files
'("\\`dir\\'"
This bug report was last modified 12 years and 334 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.