From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: Luc Teirlinck Newsgroups: gmane.emacs.devel Subject: Re: Suggestion for autorevert.el Date: Fri, 2 Apr 2004 17:46:52 -0600 (CST) Sender: emacs-devel-bounces+emacs-devel=quimby.gnus.org@gnu.org Message-ID: <200404022346.i32Nkqp26746@raven.dms.auburn.edu> References: <87zna6l1kn.fsf@offby1.atm01.sea.blarg.net> <200404010330.i313Ug621242@raven.dms.auburn.edu> <200404020409.i3249Vw24362@raven.dms.auburn.edu> <200404021602.i32G2jX25019@raven.dms.auburn.edu> NNTP-Posting-Host: deer.gmane.org X-Trace: sea.gmane.org 1080949906 2142 80.91.224.253 (2 Apr 2004 23:51:46 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Fri, 2 Apr 2004 23:51:46 +0000 (UTC) Cc: offby1@blarg.net, emacs-devel@gnu.org, monnier@iro.umontreal.ca, rms@gnu.org Original-X-From: emacs-devel-bounces+emacs-devel=quimby.gnus.org@gnu.org Sat Apr 03 01:51:36 2004 Return-path: Original-Received: from quimby.gnus.org ([80.91.224.244]) by deer.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 1B9YRk-0006Yp-00 for ; Sat, 03 Apr 2004 01:51:36 +0200 Original-Received: from monty-python.gnu.org ([199.232.76.173]) by quimby.gnus.org with esmtp (Exim 3.35 #1 (Debian)) id 1B9YRk-0005ai-00 for ; Sat, 03 Apr 2004 01:51:36 +0200 Original-Received: from localhost ([127.0.0.1] helo=monty-python.gnu.org) by monty-python.gnu.org with esmtp (Exim 4.30) id 1B9YQi-00043f-AX for emacs-devel@quimby.gnus.org; Fri, 02 Apr 2004 18:50:32 -0500 Original-Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.30) id 1B9YQc-00042F-E1 for emacs-devel@gnu.org; Fri, 02 Apr 2004 18:50:26 -0500 Original-Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.30) id 1B9YQ6-0003uv-5N for emacs-devel@gnu.org; Fri, 02 Apr 2004 18:50:25 -0500 Original-Received: from [131.204.53.104] (helo=manatee.dms.auburn.edu) by monty-python.gnu.org with esmtp (Exim 4.30) id 1B9YPO-0003hD-TX; Fri, 02 Apr 2004 18:49:10 -0500 Original-Received: from raven.dms.auburn.edu (raven.dms.auburn.edu [131.204.53.29]) by manatee.dms.auburn.edu (8.12.10/8.12.10) with ESMTP id i32Nn7Kt021014; Fri, 2 Apr 2004 17:49:07 -0600 (CST) Original-Received: (from teirllm@localhost) by raven.dms.auburn.edu (8.11.6+Sun/8.11.6) id i32Nkqp26746; Fri, 2 Apr 2004 17:46:52 -0600 (CST) X-Authentication-Warning: raven.dms.auburn.edu: teirllm set sender to teirllm@dms.auburn.edu using -f Original-To: teirllm@dms.auburn.edu In-reply-to: <200404021602.i32G2jX25019@raven.dms.auburn.edu> (message from Luc Teirlinck on Fri, 2 Apr 2004 10:02:45 -0600 (CST)) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+emacs-devel=quimby.gnus.org@gnu.org Xref: main.gmane.org gmane.emacs.devel:21213 X-Report-Spam: http://spam.gmane.org/gmane.emacs.devel:21213 >>From my previous message: The added code, which calls the non-primitive and non-optimized `get-buffer-window-list' I do not know what I was worrying about, because `get-buffer-window-list' does by no means appear to be as slow as I assumed (I mistakenly deduced that from comments in the source code saying that it really should be a primitive). Apparently one would need several thousands of constantly reverting buffers for these calls to add up to something and in such a situation, there would presumably be other things to worry about. Anyway, the following patch would appear to be better than the one I submitted yesterday (there is no difference in behavior, it just appears to be somewhat more efficient): ===File ~/autorevert-newdiff================================ *** autorevert.el 31 Mar 2004 10:03:44 -0600 1.28 --- autorevert.el 02 Apr 2004 17:15:25 -0600 *************** *** 44,49 **** --- 44,60 ---- ;; seconds. The check is aborted whenever the user actually uses ;; Emacs. You should never even notice that this package is active ;; (except that your buffers will be reverted, of course). + ;; + ;; After reverting a file buffer, Auto Revert Mode normally puts point + ;; at the same position that a regular manual revert would. However, + ;; there is one exception to this rule. If point is at the end of the + ;; buffer before reverting, it stays at the end. Similarly if point + ;; is displayed at the end of a file buffer in any window, it will stay + ;; at the end of the buffer in that window, even if the window is not + ;; selected. This way, you can use Auto Revert Mode to `tail' a file. + ;; Just put point at the end of the buffer and it will stay there. + ;; These rules apply to file buffers. For non-file buffers, the + ;; behavior may be mode dependent. ;; Usage: ;; *************** *** 298,307 **** "Revert current buffer, if appropriate. This is an internal function used by Auto-Revert Mode." (unless (buffer-modified-p) ! (let (revert) ! (or (and (buffer-file-name) ! (file-readable-p (buffer-file-name)) ! (not (verify-visited-file-modtime (current-buffer))) (setq revert t)) (and (or auto-revert-mode global-auto-revert-non-file-buffers) revert-buffer-function --- 309,318 ---- "Revert current buffer, if appropriate. This is an internal function used by Auto-Revert Mode." (unless (buffer-modified-p) ! (let ((buffer (current-buffer)) revert eob eoblist) ! (or (and buffer-file-name ! (file-readable-p buffer-file-name) ! (not (verify-visited-file-modtime buffer)) (setq revert t)) (and (or auto-revert-mode global-auto-revert-non-file-buffers) revert-buffer-function *************** *** 312,318 **** (when (and auto-revert-verbose (not (eq revert 'fast))) (message "Reverting buffer `%s'." (buffer-name))) ! (revert-buffer 'ignore-auto 'dont-ask 'preserve-modes)) ;; `preserve-modes' avoids changing the (minor) modes. But we ;; do want to reset the mode for VC, so we do it manually. (when (or revert auto-revert-check-vc-info) --- 323,341 ---- (when (and auto-revert-verbose (not (eq revert 'fast))) (message "Reverting buffer `%s'." (buffer-name))) ! (when buffer-file-name ! (setq eob (eobp)) ! (walk-windows ! #'(lambda (window) ! (and (eq (window-buffer window) buffer) ! (= (window-point window) (point-max)) ! (push window eoblist))) ! 'no-mini t)) ! (revert-buffer 'ignore-auto 'dont-ask 'preserve-modes) ! (when buffer-file-name ! (when eob (goto-char (point-max))) ! (dolist (window eoblist) ! (set-window-point window (point-max))))) ;; `preserve-modes' avoids changing the (minor) modes. But we ;; do want to reset the mode for VC, so we do it manually. (when (or revert auto-revert-check-vc-info) ============================================================