From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Juri Linkov Newsgroups: gmane.emacs.bugs Subject: bug#12230: 24.2; revert-buffer in an Info buffer should refresh Info-index-nodes Date: Tue, 21 Aug 2012 03:15:14 +0300 Organization: JURTA Message-ID: <87a9xphzfa.fsf@mail.jurta.org> References: <83boi8dq2r.fsf@gnu.org> <877gsvg7d6.fsf@mail.jurta.org> <831uj3egws.fsf@gnu.org> <87393i8n9q.fsf@mail.jurta.org> <83ehn2cmd7.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1345508461 29048 80.91.229.3 (21 Aug 2012 00:21:01 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 21 Aug 2012 00:21:01 +0000 (UTC) Cc: 12230@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Tue Aug 21 02:21:01 2012 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1T3cDF-0001BC-7r for geb-bug-gnu-emacs@m.gmane.org; Tue, 21 Aug 2012 02:20:53 +0200 Original-Received: from localhost ([::1]:56935 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T3cDD-0001Ss-LV for geb-bug-gnu-emacs@m.gmane.org; Mon, 20 Aug 2012 20:20:51 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:33952) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T3cDA-0001Sn-0F for bug-gnu-emacs@gnu.org; Mon, 20 Aug 2012 20:20:49 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T3cD8-0004VZ-IO for bug-gnu-emacs@gnu.org; Mon, 20 Aug 2012 20:20:47 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:59293) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T3cD8-0004VU-E1 for bug-gnu-emacs@gnu.org; Mon, 20 Aug 2012 20:20:46 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1T3cDO-0008E7-0p for bug-gnu-emacs@gnu.org; Mon, 20 Aug 2012 20:21:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Juri Linkov Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 21 Aug 2012 00:21:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 12230 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 12230-submit@debbugs.gnu.org id=B12230.134550843431587 (code B ref 12230); Tue, 21 Aug 2012 00:21:01 +0000 Original-Received: (at 12230) by debbugs.gnu.org; 21 Aug 2012 00:20:34 +0000 Original-Received: from localhost ([127.0.0.1]:40606 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T3cCv-0008DP-K6 for submit@debbugs.gnu.org; Mon, 20 Aug 2012 20:20:34 -0400 Original-Received: from ps18281.dreamhost.com ([69.163.218.105]:48896 helo=ps18281.dreamhostps.com) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1T3cCs-0008DH-5t for 12230@debbugs.gnu.org; Mon, 20 Aug 2012 20:20:31 -0400 Original-Received: from localhost (ps18281.dreamhostps.com [69.163.218.105]) by ps18281.dreamhostps.com (Postfix) with ESMTP id 8A9CD451CB12; Mon, 20 Aug 2012 17:20:12 -0700 (PDT) In-Reply-To: <83ehn2cmd7.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 20 Aug 2012 05:45:24 +0300") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2.50 (x86_64-pc-linux-gnu) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:63331 Archived-At: > 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\\'"