*** empty log message ***
[bpt/emacs.git] / lisp / autorevert.el
index 31dd39c..9d189e0 100644 (file)
@@ -1,6 +1,7 @@
 ;;; autorevert.el --- revert buffers when files on disk change
 
-;; Copyright (C) 1997, 1998, 1999, 2001, 2004 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 1998, 1999, 2001, 2002, 2003, 2004,
+;;   2005, 2006 Free Software Foundation, Inc.
 
 ;; Author: Anders Lindgren <andersl@andersl.com>
 ;; Keywords: convenience
@@ -21,8 +22,8 @@
 
 ;; You should have received a copy of the GNU General Public License
 ;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
 
 ;;; Commentary:
 
@@ -156,7 +157,7 @@ handling each buffer and does not process any further buffers
 \(until the next run of the timer) if user input is available.
 When nil, Auto-Revert Mode checks files and reverts buffers,
 with quitting disabled, without paying attention to user input.
-Thus, Emacs might be non-responsive at times."
+Thus, with this setting, Emacs might be non-responsive at times."
   :group 'auto-revert
   :type 'boolean)
 
@@ -214,10 +215,10 @@ changes in subdirectories or in the contents, size, modes, etc.,
 of files.  You may still sometimes want to revert them manually.
 
 Use this option with care since it could lead to excessive auto-reverts.
-For more information, see Info node `(emacs-xtra)Autorevert'."
+For more information, see Info node `(emacs)Autorevert'."
   :group 'auto-revert
   :type 'boolean
-  :link '(info-link "(emacs-xtra)Autorevert"))
+  :link '(info-link "(emacs)Autorevert"))
 
 (defcustom global-auto-revert-ignore-modes ()
   "List of major modes Global Auto-Revert Mode should not check."
@@ -246,7 +247,7 @@ This currently works by automatically updating the version
 control info every `auto-revert-interval' seconds.  Nevertheless,
 it should not cause excessive CPU usage on a reasonably fast
 machine, if it does not apply to too many version controlled
-buffers.  CPU usage depends on the version control system"
+buffers.  CPU usage depends on the version control system."
   :group 'auto-revert
   :type 'boolean
   :version "22.1")
@@ -290,7 +291,7 @@ This is a minor mode that affects only the current buffer.
 Use `global-auto-revert-mode' to automatically revert all buffers.
 Use `auto-revert-tail-mode' if you know that the file will only grow
 without being changed in the part that is already in the buffer."
-  nil auto-revert-mode-text nil
+  :group 'auto-revert :lighter auto-revert-mode-text
   (if auto-revert-mode
       (if (not (memq (current-buffer) auto-revert-buffer-list))
          (push (current-buffer) auto-revert-buffer-list))
@@ -339,7 +340,7 @@ Use `auto-revert-mode' for changes other than appends!"
       ;; else we might reappend our own end when we save
       (add-hook 'before-save-hook (lambda () (auto-revert-tail-mode 0)) nil t)
       (or (local-variable-p 'auto-revert-tail-pos) ; don't lose prior position
-         (set (make-variable-buffer-local 'auto-revert-tail-pos)
+         (set (make-local-variable 'auto-revert-tail-pos)
               (save-restriction (widen) (1- (point-max)))))
       ;; let auto-revert-mode set up the mechanism for us if it isn't already
       (or auto-revert-mode
@@ -484,46 +485,47 @@ are checked first the next time this function is called.
 This function is also responsible for removing buffers no longer in
 Auto-Revert mode from `auto-revert-buffer-list', and for canceling
 the timer when no buffers need to be checked."
-  (let ((bufs (if global-auto-revert-mode
-                 (buffer-list)
-               auto-revert-buffer-list))
-       (remaining ())
-       (new ()))
-    ;; Partition `bufs' into two halves depending on whether or not
-    ;; the buffers are in `auto-revert-remaining-buffers'.  The two
-    ;; halves are then re-joined with the "remaining" buffers at the
-    ;; head of the list.
-    (dolist (buf auto-revert-remaining-buffers)
-      (if (memq buf bufs)
-         (push buf remaining)))
-    (dolist (buf bufs)
-      (if (not (memq buf remaining))
-         (push buf new)))
-    (setq bufs (nreverse (nconc new remaining)))
-    (while (and bufs
-               (not (and auto-revert-stop-on-user-input
-                         (input-pending-p))))
-      (let ((buf (car bufs)))
-       (if (buffer-name buf)           ; Buffer still alive?
-           (with-current-buffer buf
-             ;; Test if someone has turned off Auto-Revert Mode in a
-             ;; non-standard way, for example by changing major mode.
-             (if (and (not auto-revert-mode)
-                      (not auto-revert-tail-mode)
-                      (memq buf auto-revert-buffer-list))
-                 (setq auto-revert-buffer-list
-                       (delq buf auto-revert-buffer-list)))
-             (when (auto-revert-active-p) (auto-revert-handler)))
-         ;; Remove dead buffer from `auto-revert-buffer-list'.
-         (setq auto-revert-buffer-list
-               (delq buf auto-revert-buffer-list))))
-      (setq bufs (cdr bufs)))
-    (setq auto-revert-remaining-buffers bufs)
-    ;; Check if we should cancel the timer.
-    (when (and (not global-auto-revert-mode)
-              (null auto-revert-buffer-list))
-      (cancel-timer auto-revert-timer)
-      (setq auto-revert-timer nil))))
+  (save-match-data
+    (let ((bufs (if global-auto-revert-mode
+                   (buffer-list)
+                 auto-revert-buffer-list))
+         (remaining ())
+         (new ()))
+      ;; Partition `bufs' into two halves depending on whether or not
+      ;; the buffers are in `auto-revert-remaining-buffers'.  The two
+      ;; halves are then re-joined with the "remaining" buffers at the
+      ;; head of the list.
+      (dolist (buf auto-revert-remaining-buffers)
+       (if (memq buf bufs)
+           (push buf remaining)))
+      (dolist (buf bufs)
+       (if (not (memq buf remaining))
+           (push buf new)))
+      (setq bufs (nreverse (nconc new remaining)))
+      (while (and bufs
+                 (not (and auto-revert-stop-on-user-input
+                           (input-pending-p))))
+       (let ((buf (car bufs)))
+         (if (buffer-name buf)         ; Buffer still alive?
+             (with-current-buffer buf
+               ;; Test if someone has turned off Auto-Revert Mode in a
+               ;; non-standard way, for example by changing major mode.
+               (if (and (not auto-revert-mode)
+                        (not auto-revert-tail-mode)
+                        (memq buf auto-revert-buffer-list))
+                   (setq auto-revert-buffer-list
+                         (delq buf auto-revert-buffer-list)))
+               (when (auto-revert-active-p) (auto-revert-handler)))
+           ;; Remove dead buffer from `auto-revert-buffer-list'.
+           (setq auto-revert-buffer-list
+                 (delq buf auto-revert-buffer-list))))
+       (setq bufs (cdr bufs)))
+      (setq auto-revert-remaining-buffers bufs)
+      ;; Check if we should cancel the timer.
+      (when (and (not global-auto-revert-mode)
+                (null auto-revert-buffer-list))
+       (cancel-timer auto-revert-timer)
+       (setq auto-revert-timer nil)))))
 
 
 ;; The end: