annotate lisp/autorevert.el @ 110410:f2e111723c3a

Merge changes made in Gnus trunk. Reimplement nnimap, and do tweaks to the rest of the code to support that. * gnus-int.el (gnus-finish-retrieve-group-infos) (gnus-retrieve-group-data-early): New functions. * gnus-range.el (gnus-range-nconcat): New function. * gnus-start.el (gnus-get-unread-articles): Support early retrieval of data. (gnus-read-active-for-groups): Support finishing the early retrieval of data. * gnus-sum.el (gnus-summary-move-article): Pass the move-to group name if the move is internal, so that nnimap can do fast internal moves. * gnus.el (gnus-article-special-mark-lists): Add uid/active tuples, for nnimap usage. * nnimap.el: Rewritten. * nnmail.el (nnmail-inhibit-default-split-group): New internal variable to allow the mail splitting to not return a default group. This is useful for nnimap, which will leave unmatched mail in the inbox. * utf7.el (utf7-encode): Autoload. Implement shell connection. * nnimap.el (nnimap-open-shell-stream): New function. (nnimap-open-connection): Use it. Get the number of lines by using BODYSTRUCTURE. (nnimap-transform-headers): Get the number of lines in each message. (nnimap-retrieve-headers): Query for BODYSTRUCTURE so that we get the number of lines. Not all servers return UIDNEXT. Work past this problem. Remove junk from end of file. Fix typo in "bogus" section. Make capabilties be case-insensitive. Require cl when compiling. Don't bug out if the LIST command doesn't have any parameters. 2010-09-17 Knut Anders Hatlen <kahatlen@gmail.com> (tiny change) * nnimap.el (nnimap-get-groups): Don't bug out if the LIST command doesn't have any parameters. (mm-text-html-renderer): Document gnus-article-html. 2010-09-17 Julien Danjou <julien@danjou.info> (tiny fix) * mm-decode.el (mm-text-html-renderer): Document gnus-article-html. * dgnushack.el: Define netrc-credentials. If the user doesn't have a /etc/services, supply some sensible port defaults. Have `unseen-or-unread' select an unread unseen article first. (nntp-open-server): Return whether the open was successful or not. Throughout all files, replace (save-excursion (set-buffer ...)) with (with-current-buffer ... ). Save result so that it doesn't say "failed" all the time. Add ~/.authinfo to the default, since that's probably most useful for users. Don't use the "finish" method when we're reading from the agent. Add some more nnimap-relevant agent stuff to nnagent.el. * nnimap.el (nnimap-with-process-buffer): Removed. Revert one line that was changed by mistake in the last checkin. (nnimap-open-connection): Don't error out when we can't make a connection nnimap-related changes to avoid bugging out if we can't contact a server. * gnus-start.el (gnus-get-unread-articles): Don't try to scan groups from methods that are denied. * nnimap.el (nnimap-possibly-change-group): Return nil if we can't log in. (nnimap-finish-retrieve-group-infos): Make sure we're not waiting for nothing. * gnus-sum.el (gnus-select-newsgroup): Indent.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Sat, 18 Sep 2010 10:02:19 +0000
parents 1d1d5d9bd884
children 376148b31b5e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 36992
diff changeset
1 ;;; autorevert.el --- revert buffers when files on disk change
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2
64762
41bb365f41c4 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64091
diff changeset
3 ;; Copyright (C) 1997, 1998, 1999, 2001, 2002, 2003, 2004,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 104126
diff changeset
4 ;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5
26673
f649f6c04a54 (auto-revert-buffers): Auto-revert mode was turned
Gerd Moellmann <gerd@gnu.org>
parents: 26097
diff changeset
6 ;; Author: Anders Lindgren <andersl@andersl.com>
22250
a77d473867b8 *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21289
diff changeset
7 ;; Keywords: convenience
26673
f649f6c04a54 (auto-revert-buffers): Auto-revert mode was turned
Gerd Moellmann <gerd@gnu.org>
parents: 26097
diff changeset
8 ;; Created: 1997-06-01
f649f6c04a54 (auto-revert-buffers): Auto-revert mode was turned
Gerd Moellmann <gerd@gnu.org>
parents: 26097
diff changeset
9 ;; Date: 1999-11-30
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 ;; This file is part of GNU Emacs.
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93216
diff changeset
13 ;; GNU Emacs is free software: you can redistribute it and/or modify
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14 ;; it under the terms of the GNU General Public License as published by
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93216
diff changeset
15 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93216
diff changeset
16 ;; (at your option) any later version.
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; GNU Emacs is distributed in the hope that it will be useful,
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21 ;; GNU General Public License for more details.
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23 ;; You should have received a copy of the GNU General Public License
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93216
diff changeset
24 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26 ;;; Commentary:
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28 ;; Introduction:
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29 ;;
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
30 ;; Whenever a file that Emacs is editing has been changed by another
21288
1b06a18f33fd Various doc fixes, mainly grammar.
Dave Love <fx@gnu.org>
parents: 20648
diff changeset
31 ;; program the user normally has to execute the command `revert-buffer'
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 ;; to load the new content of the file into Emacs.
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 ;;
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34 ;; This package contains two minor modes: Global Auto-Revert Mode and
21288
1b06a18f33fd Various doc fixes, mainly grammar.
Dave Love <fx@gnu.org>
parents: 20648
diff changeset
35 ;; Auto-Revert Mode. Both modes automatically revert buffers
56463
e86e7a1eccac Describe `Auto Revert Tail Mode' in `Commentary' section.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56415
diff changeset
36 ;; whenever the corresponding files have been changed on disk and the
e86e7a1eccac Describe `Auto Revert Tail Mode' in `Commentary' section.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56415
diff changeset
37 ;; buffer contains no unsaved changes.
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 ;;
55867
5514ad802f6b Update `Commentary' section.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55779
diff changeset
39 ;; Auto-Revert Mode can be activated for individual buffers. Global
5514ad802f6b Update `Commentary' section.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55779
diff changeset
40 ;; Auto-Revert Mode applies to all file buffers. (If the user option
5514ad802f6b Update `Commentary' section.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55779
diff changeset
41 ;; `global-auto-revert-non-file-buffers' is non-nil, it also applies
5514ad802f6b Update `Commentary' section.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55779
diff changeset
42 ;; to some non-file buffers. This option is disabled by default.)
5514ad802f6b Update `Commentary' section.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55779
diff changeset
43 ;; Since checking a remote file is too slow, these modes do not check
5514ad802f6b Update `Commentary' section.
Luc Teirlinck <teirllm@auburn.edu>
parents: 55779
diff changeset
44 ;; or revert remote files.
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45 ;;
21288
1b06a18f33fd Various doc fixes, mainly grammar.
Dave Love <fx@gnu.org>
parents: 20648
diff changeset
46 ;; Both modes operate by checking the time stamp of all files at
1b06a18f33fd Various doc fixes, mainly grammar.
Dave Love <fx@gnu.org>
parents: 20648
diff changeset
47 ;; intervals of `auto-revert-interval'. The default is every five
1b06a18f33fd Various doc fixes, mainly grammar.
Dave Love <fx@gnu.org>
parents: 20648
diff changeset
48 ;; seconds. The check is aborted whenever the user actually uses
1b06a18f33fd Various doc fixes, mainly grammar.
Dave Love <fx@gnu.org>
parents: 20648
diff changeset
49 ;; Emacs. You should never even notice that this package is active
1b06a18f33fd Various doc fixes, mainly grammar.
Dave Love <fx@gnu.org>
parents: 20648
diff changeset
50 ;; (except that your buffers will be reverted, of course).
54709
582d81c73e11 (auto-revert-handler): If point (or a window point) is at the end of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54671
diff changeset
51 ;;
582d81c73e11 (auto-revert-handler): If point (or a window point) is at the end of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54671
diff changeset
52 ;; After reverting a file buffer, Auto Revert Mode normally puts point
582d81c73e11 (auto-revert-handler): If point (or a window point) is at the end of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54671
diff changeset
53 ;; at the same position that a regular manual revert would. However,
582d81c73e11 (auto-revert-handler): If point (or a window point) is at the end of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54671
diff changeset
54 ;; there is one exception to this rule. If point is at the end of the
582d81c73e11 (auto-revert-handler): If point (or a window point) is at the end of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54671
diff changeset
55 ;; buffer before reverting, it stays at the end. Similarly if point
582d81c73e11 (auto-revert-handler): If point (or a window point) is at the end of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54671
diff changeset
56 ;; is displayed at the end of a file buffer in any window, it will stay
582d81c73e11 (auto-revert-handler): If point (or a window point) is at the end of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54671
diff changeset
57 ;; at the end of the buffer in that window, even if the window is not
582d81c73e11 (auto-revert-handler): If point (or a window point) is at the end of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54671
diff changeset
58 ;; selected. This way, you can use Auto Revert Mode to `tail' a file.
582d81c73e11 (auto-revert-handler): If point (or a window point) is at the end of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54671
diff changeset
59 ;; Just put point at the end of the buffer and it will stay there.
582d81c73e11 (auto-revert-handler): If point (or a window point) is at the end of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54671
diff changeset
60 ;; These rules apply to file buffers. For non-file buffers, the
582d81c73e11 (auto-revert-handler): If point (or a window point) is at the end of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54671
diff changeset
61 ;; behavior may be mode dependent.
56463
e86e7a1eccac Describe `Auto Revert Tail Mode' in `Commentary' section.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56415
diff changeset
62 ;;
e86e7a1eccac Describe `Auto Revert Tail Mode' in `Commentary' section.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56415
diff changeset
63 ;; While you can use Auto Revert Mode to tail a file, this package
e86e7a1eccac Describe `Auto Revert Tail Mode' in `Commentary' section.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56415
diff changeset
64 ;; contains a third minor mode, Auto Revert Tail Mode, which does so
e86e7a1eccac Describe `Auto Revert Tail Mode' in `Commentary' section.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56415
diff changeset
65 ;; more efficiently, as long as you are sure that the file will only
e86e7a1eccac Describe `Auto Revert Tail Mode' in `Commentary' section.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56415
diff changeset
66 ;; change by growing at the end. It only appends the new output,
e86e7a1eccac Describe `Auto Revert Tail Mode' in `Commentary' section.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56415
diff changeset
67 ;; instead of reverting the entire buffer. It does so even if the
e86e7a1eccac Describe `Auto Revert Tail Mode' in `Commentary' section.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56415
diff changeset
68 ;; buffer contains unsaved changes. (Because they will not be lost.)
104126
5170ba97b7f8 * autorevert.el (auto-revert-handler): Allow
Michael Albinus <michael.albinus@gmx.de>
parents: 103608
diff changeset
69 ;; Auto Revert Tail Mode works also for remote files.
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
71 ;; Usage:
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72 ;;
56415
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
73 ;; Go to the appropriate buffer and press either of:
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
74 ;; M-x auto-revert-mode RET
56415
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
75 ;; M-x auto-revert-tail-mode RET
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
76 ;;
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
77 ;; To activate Global Auto-Revert Mode, press:
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
78 ;; M-x global-auto-revert-mode RET
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
79 ;;
21288
1b06a18f33fd Various doc fixes, mainly grammar.
Dave Love <fx@gnu.org>
parents: 20648
diff changeset
80 ;; To activate Global Auto-Revert Mode every time Emacs is started
1b06a18f33fd Various doc fixes, mainly grammar.
Dave Love <fx@gnu.org>
parents: 20648
diff changeset
81 ;; customise the option `global-auto-revert-mode' or the following
1b06a18f33fd Various doc fixes, mainly grammar.
Dave Love <fx@gnu.org>
parents: 20648
diff changeset
82 ;; line could be added to your ~/.emacs:
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
83 ;; (global-auto-revert-mode 1)
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84 ;;
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85 ;; The function `turn-on-auto-revert-mode' could be added to any major
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
86 ;; mode hook to activate Auto-Revert Mode for all buffers in that
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
87 ;; mode. For example, the following line will activate Auto-Revert
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
88 ;; Mode in all C mode buffers:
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89 ;;
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 ;; (add-hook 'c-mode-hook 'turn-on-auto-revert-mode)
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
92 ;;; Code:
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
93
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
94 ;; Dependencies:
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96 (require 'timer)
53984
73f78af624f2 (auto-revert-dired-file-list): added missing variable `file' to `let'.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53980
diff changeset
97
54671
237f008115f7 Delete obsolete autoload's and defvar's.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54612
diff changeset
98 (eval-when-compile (require 'cl))
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
99
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
101 ;; Custom Group:
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102 ;;
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
103 ;; The two modes will be placed next to Auto Save Mode under the
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
104 ;; Files group under Emacs.
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
105
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
106 (defgroup auto-revert nil
21288
1b06a18f33fd Various doc fixes, mainly grammar.
Dave Love <fx@gnu.org>
parents: 20648
diff changeset
107 "Revert individual buffers when files on disk change.
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
108
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
109 Auto-Revert Mode can be activated for individual buffer.
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
110 Global Auto-Revert Mode applies to all buffers."
22250
a77d473867b8 *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21289
diff changeset
111 :group 'files
a77d473867b8 *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21289
diff changeset
112 :group 'convenience)
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
113
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
114
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
115 ;; Variables:
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
116
56415
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
117 ;;; What's this?: ;; Autoload for the benefit of `make-mode-line-mouse-sensitive'.
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
118 ;;; What's this?: ;;;###autoload
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
119 (defvar auto-revert-mode nil
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
120 "*Non-nil when Auto-Revert Mode is active.
44456
a7dbce305a53 (auto-revert-mode, global-auto-revert-mode):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38436
diff changeset
121 Never set this variable directly, use the command `auto-revert-mode' instead.")
a7dbce305a53 (auto-revert-mode, global-auto-revert-mode):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38436
diff changeset
122 (put 'auto-revert-mode 'permanent-local t)
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
123
56415
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
124 (defvar auto-revert-tail-mode nil
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
125 "*Non-nil when Auto-Revert Tail Mode is active.
59200
a5d9000cf1cd (auto-revert-tail-mode): Doc fix for defvar.
Luc Teirlinck <teirllm@auburn.edu>
parents: 57800
diff changeset
126 Never set this variable directly, use the command
a5d9000cf1cd (auto-revert-tail-mode): Doc fix for defvar.
Luc Teirlinck <teirllm@auburn.edu>
parents: 57800
diff changeset
127 `auto-revert-tail-mode' instead.")
56415
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
128 (put 'auto-revert-tail-mode 'permanent-local t)
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
129
54452
b0a078151291 (auto-revert-interval): Make new value take effect immediately when
Luc Teirlinck <teirllm@auburn.edu>
parents: 54045
diff changeset
130 (defvar auto-revert-timer nil
b0a078151291 (auto-revert-interval): Make new value take effect immediately when
Luc Teirlinck <teirllm@auburn.edu>
parents: 54045
diff changeset
131 "Timer used by Auto-Revert Mode.")
b0a078151291 (auto-revert-interval): Make new value take effect immediately when
Luc Teirlinck <teirllm@auburn.edu>
parents: 54045
diff changeset
132
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
133 (defcustom auto-revert-interval 5
53379
cd6072a24608 (auto-revert-interval): Doc fix.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 52401
diff changeset
134 "Time, in seconds, between Auto-Revert Mode file checks.
54452
b0a078151291 (auto-revert-interval): Make new value take effect immediately when
Luc Teirlinck <teirllm@auburn.edu>
parents: 54045
diff changeset
135 The value may be an integer or floating point number.
b0a078151291 (auto-revert-interval): Make new value take effect immediately when
Luc Teirlinck <teirllm@auburn.edu>
parents: 54045
diff changeset
136
b0a078151291 (auto-revert-interval): Make new value take effect immediately when
Luc Teirlinck <teirllm@auburn.edu>
parents: 54045
diff changeset
137 If a timer is already active, there are two ways to make sure
b0a078151291 (auto-revert-interval): Make new value take effect immediately when
Luc Teirlinck <teirllm@auburn.edu>
parents: 54045
diff changeset
138 that the new value will take effect immediately. You can set
b0a078151291 (auto-revert-interval): Make new value take effect immediately when
Luc Teirlinck <teirllm@auburn.edu>
parents: 54045
diff changeset
139 this variable through Custom or you can call the command
b0a078151291 (auto-revert-interval): Make new value take effect immediately when
Luc Teirlinck <teirllm@auburn.edu>
parents: 54045
diff changeset
140 `auto-revert-set-timer' after setting the variable. Otherwise,
b0a078151291 (auto-revert-interval): Make new value take effect immediately when
Luc Teirlinck <teirllm@auburn.edu>
parents: 54045
diff changeset
141 the new value will take effect the first time Auto Revert Mode
b0a078151291 (auto-revert-interval): Make new value take effect immediately when
Luc Teirlinck <teirllm@auburn.edu>
parents: 54045
diff changeset
142 calls `auto-revert-set-timer' for internal reasons or in your
b0a078151291 (auto-revert-interval): Make new value take effect immediately when
Luc Teirlinck <teirllm@auburn.edu>
parents: 54045
diff changeset
143 next editing session."
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
144 :group 'auto-revert
54452
b0a078151291 (auto-revert-interval): Make new value take effect immediately when
Luc Teirlinck <teirllm@auburn.edu>
parents: 54045
diff changeset
145 :type 'number
b0a078151291 (auto-revert-interval): Make new value take effect immediately when
Luc Teirlinck <teirllm@auburn.edu>
parents: 54045
diff changeset
146 :set (lambda (variable value)
b0a078151291 (auto-revert-interval): Make new value take effect immediately when
Luc Teirlinck <teirllm@auburn.edu>
parents: 54045
diff changeset
147 (set-default variable value)
b0a078151291 (auto-revert-interval): Make new value take effect immediately when
Luc Teirlinck <teirllm@auburn.edu>
parents: 54045
diff changeset
148 (and (boundp 'auto-revert-timer)
b0a078151291 (auto-revert-interval): Make new value take effect immediately when
Luc Teirlinck <teirllm@auburn.edu>
parents: 54045
diff changeset
149 auto-revert-timer
b0a078151291 (auto-revert-interval): Make new value take effect immediately when
Luc Teirlinck <teirllm@auburn.edu>
parents: 54045
diff changeset
150 (auto-revert-set-timer))))
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
151
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
152 (defcustom auto-revert-stop-on-user-input t
60094
daab1497df5a (auto-revert-stop-on-user-input, auto-revert-verbose): Doc fixes.
Luc Teirlinck <teirllm@auburn.edu>
parents: 59996
diff changeset
153 "When non-nil, user input temporarily interrupts Auto-Revert Mode.
60131
bb1a6b3a999d (auto-revert-stop-on-user-input): Further doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 60118
diff changeset
154 With this setting, Auto-Revert Mode checks for user input after
60118
705006da8774 (auto-revert-stop-on-user-input): Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 60094
diff changeset
155 handling each buffer and does not process any further buffers
705006da8774 (auto-revert-stop-on-user-input): Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 60094
diff changeset
156 \(until the next run of the timer) if user input is available.
705006da8774 (auto-revert-stop-on-user-input): Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 60094
diff changeset
157 When nil, Auto-Revert Mode checks files and reverts buffers,
705006da8774 (auto-revert-stop-on-user-input): Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 60094
diff changeset
158 with quitting disabled, without paying attention to user input.
60139
cf2460efae4d (auto-revert-stop-on-user-input): Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 60131
diff changeset
159 Thus, with this setting, Emacs might be non-responsive at times."
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
160 :group 'auto-revert
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
161 :type 'boolean)
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
162
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
163 (defcustom auto-revert-verbose t
60094
daab1497df5a (auto-revert-stop-on-user-input, auto-revert-verbose): Doc fixes.
Luc Teirlinck <teirllm@auburn.edu>
parents: 59996
diff changeset
164 "When nil, Auto-Revert Mode does not generate any messages.
54609
b35a0c2934f9 (auto-revert-verbose, global-auto-revert-non-file-buffers)
Luc Teirlinck <teirllm@auburn.edu>
parents: 54606
diff changeset
165 When non-nil, a message is generated whenever a file is reverted."
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
166 :group 'auto-revert
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
167 :type 'boolean)
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
168
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
169 (defcustom auto-revert-mode-text " ARev"
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
170 "String to display in the mode line when Auto-Revert Mode is active.
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
171
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
172 \(When the string is not empty, make sure that it has a leading space.)"
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
173 :tag "Auto Revert Mode Text" ; To separate it from `global-...'
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
174 :group 'auto-revert
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
175 :type 'string)
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
176
56415
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
177 (defcustom auto-revert-tail-mode-text " Tail"
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
178 "String to display in the mode line when Auto-Revert Tail Mode is active.
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
179
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
180 \(When the string is not empty, make sure that it has a leading space.)"
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
181 :group 'auto-revert
57800
ab671a8f1ce3 (auto-revert-tail-mode-text): Add :version keyword.
Luc Teirlinck <teirllm@auburn.edu>
parents: 57602
diff changeset
182 :type 'string
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59221
diff changeset
183 :version "22.1")
56415
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
184
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
185 (defcustom auto-revert-mode-hook nil
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
186 "Functions to run when Auto-Revert Mode is activated."
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
187 :tag "Auto Revert Mode Hook" ; To separate it from `global-...'
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
188 :group 'auto-revert
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
189 :type 'hook)
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191 (defcustom global-auto-revert-mode-text ""
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
192 "String to display when Global Auto-Revert Mode is active.
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
193
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
194 The default is nothing since when this mode is active this text doesn't
21288
1b06a18f33fd Various doc fixes, mainly grammar.
Dave Love <fx@gnu.org>
parents: 20648
diff changeset
195 vary over time, or between buffers. Hence mode line text
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
196 would only waste precious space."
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
197 :group 'auto-revert
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
198 :type 'string)
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
199
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200 (defcustom global-auto-revert-mode-hook nil
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
201 "Hook called when Global Auto-Revert Mode is activated."
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
202 :group 'auto-revert
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
203 :type 'hook)
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
204
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
205 (defcustom global-auto-revert-non-file-buffers nil
56169
c6dcd23450de (global-auto-revert-non-file-buffers): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 56156
diff changeset
206 "When nil, Global Auto-Revert mode operates only on file-visiting buffers.
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
207
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
208 When non-nil, both file buffers and buffers with a custom
54609
b35a0c2934f9 (auto-revert-verbose, global-auto-revert-non-file-buffers)
Luc Teirlinck <teirllm@auburn.edu>
parents: 54606
diff changeset
209 `revert-buffer-function' and a `buffer-stale-function' are
56156
698bb0e02eba (global-auto-revert-non-file-buffers): Update docstring.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56124
diff changeset
210 reverted by Global Auto-Revert mode. These include the Buffer
103608
3e9859a4c097 (global-auto-revert-non-file-buffers, global-auto-revert-mode): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
211 List buffer displayed by `buffer-menu', and Dired buffers showing
3e9859a4c097 (global-auto-revert-non-file-buffers, global-auto-revert-mode): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
212 complete local directories. The Buffer List buffer reverts every
3e9859a4c097 (global-auto-revert-non-file-buffers, global-auto-revert-mode): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
213 `auto-revert-interval' seconds; Dired buffers when the file list of
3e9859a4c097 (global-auto-revert-non-file-buffers, global-auto-revert-mode): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
214 the main directory changes. Dired buffers do not auto-revert as
3e9859a4c097 (global-auto-revert-non-file-buffers, global-auto-revert-mode): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
215 a result of changes in subdirectories, or in the contents, size,
3e9859a4c097 (global-auto-revert-non-file-buffers, global-auto-revert-mode): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
216 modes, etc., of files. You may still sometimes want to revert
3e9859a4c097 (global-auto-revert-non-file-buffers, global-auto-revert-mode): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
217 them manually.
44456
a7dbce305a53 (auto-revert-mode, global-auto-revert-mode):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38436
diff changeset
218
56169
c6dcd23450de (global-auto-revert-non-file-buffers): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 56156
diff changeset
219 Use this option with care since it could lead to excessive auto-reverts.
70471
c24a99a3c600 (global-auto-revert-non-file-buffers): Point Info links to the main manual,
Eli Zaretskii <eliz@gnu.org>
parents: 68651
diff changeset
220 For more information, see Info node `(emacs)Autorevert'."
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
221 :group 'auto-revert
56124
9d0ad446b262 (global-auto-revert-non-file-buffers): Add hyperlink to emacs-xtra
Luc Teirlinck <teirllm@auburn.edu>
parents: 55867
diff changeset
222 :type 'boolean
70471
c24a99a3c600 (global-auto-revert-non-file-buffers): Point Info links to the main manual,
Eli Zaretskii <eliz@gnu.org>
parents: 68651
diff changeset
223 :link '(info-link "(emacs)Autorevert"))
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
224
56415
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
225 (defcustom global-auto-revert-ignore-modes ()
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
226 "List of major modes Global Auto-Revert Mode should not check."
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
227 :group 'auto-revert
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
228 :type '(repeat sexp))
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
229
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
230 (defcustom auto-revert-load-hook nil
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
231 "Functions to run when Auto-Revert Mode is first loaded."
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
232 :tag "Load Hook"
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
233 :group 'auto-revert
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
234 :type 'hook)
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
235
54671
237f008115f7 Delete obsolete autoload's and defvar's.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54612
diff changeset
236 (defcustom auto-revert-check-vc-info nil
237f008115f7 Delete obsolete autoload's and defvar's.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54612
diff changeset
237 "If non-nil Auto Revert Mode reliably updates version control info.
237f008115f7 Delete obsolete autoload's and defvar's.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54612
diff changeset
238 Auto Revert Mode updates version control info whenever the buffer
237f008115f7 Delete obsolete autoload's and defvar's.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54612
diff changeset
239 needs reverting, regardless of the value of this variable.
237f008115f7 Delete obsolete autoload's and defvar's.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54612
diff changeset
240 However, the version control state can change without changes to
237f008115f7 Delete obsolete autoload's and defvar's.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54612
diff changeset
241 the work file. If the change is made from the current Emacs
237f008115f7 Delete obsolete autoload's and defvar's.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54612
diff changeset
242 session, all info is updated. But if, for instance, a new
237f008115f7 Delete obsolete autoload's and defvar's.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54612
diff changeset
243 version is checked in from outside the current Emacs session, the
237f008115f7 Delete obsolete autoload's and defvar's.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54612
diff changeset
244 version control number in the mode line, as well as other version
237f008115f7 Delete obsolete autoload's and defvar's.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54612
diff changeset
245 control related information, may not be properly updated. If you
237f008115f7 Delete obsolete autoload's and defvar's.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54612
diff changeset
246 are worried about this, set this variable to a non-nil value.
237f008115f7 Delete obsolete autoload's and defvar's.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54612
diff changeset
247
237f008115f7 Delete obsolete autoload's and defvar's.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54612
diff changeset
248 This currently works by automatically updating the version
237f008115f7 Delete obsolete autoload's and defvar's.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54612
diff changeset
249 control info every `auto-revert-interval' seconds. Nevertheless,
237f008115f7 Delete obsolete autoload's and defvar's.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54612
diff changeset
250 it should not cause excessive CPU usage on a reasonably fast
237f008115f7 Delete obsolete autoload's and defvar's.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54612
diff changeset
251 machine, if it does not apply to too many version controlled
61013
c0725fd29477 (auto-revert-check-vc-info): Minor doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 60139
diff changeset
252 buffers. CPU usage depends on the version control system."
54671
237f008115f7 Delete obsolete autoload's and defvar's.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54612
diff changeset
253 :group 'auto-revert
237f008115f7 Delete obsolete autoload's and defvar's.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54612
diff changeset
254 :type 'boolean
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59221
diff changeset
255 :version "22.1")
54671
237f008115f7 Delete obsolete autoload's and defvar's.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54612
diff changeset
256
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
257 (defvar global-auto-revert-ignore-buffer nil
20648
b644667dcd19 (global-auto-revert-ignore-buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 18597
diff changeset
258 "*When non-nil, Global Auto-Revert Mode will not revert this buffer.
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
259
21288
1b06a18f33fd Various doc fixes, mainly grammar.
Dave Love <fx@gnu.org>
parents: 20648
diff changeset
260 This variable becomes buffer local when set in any fashion.")
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
261 (make-variable-buffer-local 'global-auto-revert-ignore-buffer)
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
262
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
263 ;; Internal variables:
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
264
56415
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
265 (defvar auto-revert-buffer-list ()
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
266 "List of buffers in Auto-Revert Mode.
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
267
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
268 Note that only Auto-Revert Mode, never Global Auto-Revert Mode, adds
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
269 buffers to this list.
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
270
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
271 The timer function `auto-revert-buffers' is responsible for purging
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
272 the list of old buffers.")
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
273
56415
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
274 (defvar auto-revert-remaining-buffers ()
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
275 "Buffers not checked when user input stopped execution.")
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
276
56415
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
277 (defvar auto-revert-tail-pos 0
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
278 "Position of last known end of file.")
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
279
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
280 (add-hook 'find-file-hook
82257
8c188b53071d (auto-revert-tail-mode): auto-revert-tail-pos is zero, not nil, when
Glenn Morris <rgm@gnu.org>
parents: 82140
diff changeset
281 (lambda ()
8c188b53071d (auto-revert-tail-mode): auto-revert-tail-pos is zero, not nil, when
Glenn Morris <rgm@gnu.org>
parents: 82140
diff changeset
282 (set (make-local-variable 'auto-revert-tail-pos)
8c188b53071d (auto-revert-tail-mode): auto-revert-tail-pos is zero, not nil, when
Glenn Morris <rgm@gnu.org>
parents: 82140
diff changeset
283 (nth 7 (file-attributes buffer-file-name)))))
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
284
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
285 ;; Functions:
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
286
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
287 ;;;###autoload
44456
a7dbce305a53 (auto-revert-mode, global-auto-revert-mode):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38436
diff changeset
288 (define-minor-mode auto-revert-mode
21288
1b06a18f33fd Various doc fixes, mainly grammar.
Dave Love <fx@gnu.org>
parents: 20648
diff changeset
289 "Toggle reverting buffer when file on disk changes.
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
290
21288
1b06a18f33fd Various doc fixes, mainly grammar.
Dave Love <fx@gnu.org>
parents: 20648
diff changeset
291 With arg, turn Auto Revert mode on if and only if arg is positive.
1b06a18f33fd Various doc fixes, mainly grammar.
Dave Love <fx@gnu.org>
parents: 20648
diff changeset
292 This is a minor mode that affects only the current buffer.
56415
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
293 Use `global-auto-revert-mode' to automatically revert all buffers.
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
294 Use `auto-revert-tail-mode' if you know that the file will only grow
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
295 without being changed in the part that is already in the buffer."
61267
06afa2a6987d (auto-revert-mode): Specify :group.
Lute Kamstra <lute@gnu.org>
parents: 61013
diff changeset
296 :group 'auto-revert :lighter auto-revert-mode-text
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
297 (if auto-revert-mode
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
298 (if (not (memq (current-buffer) auto-revert-buffer-list))
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
299 (push (current-buffer) auto-revert-buffer-list))
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
300 (setq auto-revert-buffer-list
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
301 (delq (current-buffer) auto-revert-buffer-list)))
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
302 (auto-revert-set-timer)
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
303 (when auto-revert-mode
56415
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
304 (auto-revert-buffers)
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
305 (setq auto-revert-tail-mode nil)))
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
306
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
307
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
308 ;;;###autoload
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
309 (defun turn-on-auto-revert-mode ()
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
310 "Turn on Auto-Revert Mode.
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
311
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
312 This function is designed to be added to hooks, for example:
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
313 (add-hook 'c-mode-hook 'turn-on-auto-revert-mode)"
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
314 (auto-revert-mode 1))
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
315
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
316
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
317 ;;;###autoload
56415
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
318 (define-minor-mode auto-revert-tail-mode
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
319 "Toggle reverting tail of buffer when file on disk grows.
78492
7c8949dbfa0d Replace `iff' in doc-strings and comments.
Glenn Morris <rgm@gnu.org>
parents: 78408
diff changeset
320 With arg, turn Tail mode on if arg is positive, otherwise turn it off.
56415
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
321
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
322 When Tail mode is enabled, the tail of the file is constantly
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
323 followed, as with the shell command `tail -f'. This means that
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
324 whenever the file grows on disk (presumably because some
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
325 background process is appending to it from time to time), this is
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
326 reflected in the current buffer.
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
327
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
328 You can edit the buffer and turn this mode off and on again as
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
329 you please. But make sure the background process has stopped
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
330 writing before you save the file!
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
331
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
332 Use `auto-revert-mode' for changes other than appends!"
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
333 :group 'find-file :lighter auto-revert-tail-mode-text
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
334 (when auto-revert-tail-mode
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
335 (unless buffer-file-name
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
336 (auto-revert-tail-mode 0)
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
337 (error "This buffer is not visiting a file"))
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
338 (if (and (buffer-modified-p)
82257
8c188b53071d (auto-revert-tail-mode): auto-revert-tail-pos is zero, not nil, when
Glenn Morris <rgm@gnu.org>
parents: 82140
diff changeset
339 (zerop auto-revert-tail-pos) ; library was loaded only after finding file
56415
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
340 (not (y-or-n-p "Buffer is modified, so tail offset may be wrong. Proceed? ")))
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
341 (auto-revert-tail-mode 0)
78408
0f698dc9799c (auto-revert-tail-mode): auto-revert-tail-pos is zero, not nil, when
Glenn Morris <rgm@gnu.org>
parents: 78236
diff changeset
342 ;; a-r-tail-pos stores the size of the file at the time of the
0f698dc9799c (auto-revert-tail-mode): auto-revert-tail-pos is zero, not nil, when
Glenn Morris <rgm@gnu.org>
parents: 78236
diff changeset
343 ;; last revert. After this package loads, it adds a
0f698dc9799c (auto-revert-tail-mode): auto-revert-tail-pos is zero, not nil, when
Glenn Morris <rgm@gnu.org>
parents: 78236
diff changeset
344 ;; find-file-hook to set this variable every time a file is
0f698dc9799c (auto-revert-tail-mode): auto-revert-tail-pos is zero, not nil, when
Glenn Morris <rgm@gnu.org>
parents: 78236
diff changeset
345 ;; loaded. If the package is loaded only _after_ visiting the
0f698dc9799c (auto-revert-tail-mode): auto-revert-tail-pos is zero, not nil, when
Glenn Morris <rgm@gnu.org>
parents: 78236
diff changeset
346 ;; file to be reverted, then we have no idea what the value of
0f698dc9799c (auto-revert-tail-mode): auto-revert-tail-pos is zero, not nil, when
Glenn Morris <rgm@gnu.org>
parents: 78236
diff changeset
347 ;; a-r-tail-pos should have been when the file was visited. If
0f698dc9799c (auto-revert-tail-mode): auto-revert-tail-pos is zero, not nil, when
Glenn Morris <rgm@gnu.org>
parents: 78236
diff changeset
348 ;; the file has changed on disk in the meantime, all we can do
0f698dc9799c (auto-revert-tail-mode): auto-revert-tail-pos is zero, not nil, when
Glenn Morris <rgm@gnu.org>
parents: 78236
diff changeset
349 ;; is offer to revert the whole thing. If you choose not to
0f698dc9799c (auto-revert-tail-mode): auto-revert-tail-pos is zero, not nil, when
Glenn Morris <rgm@gnu.org>
parents: 78236
diff changeset
350 ;; revert, then you might miss some output then happened
0f698dc9799c (auto-revert-tail-mode): auto-revert-tail-pos is zero, not nil, when
Glenn Morris <rgm@gnu.org>
parents: 78236
diff changeset
351 ;; between visiting the file and activating a-r-t-mode.
0f698dc9799c (auto-revert-tail-mode): auto-revert-tail-pos is zero, not nil, when
Glenn Morris <rgm@gnu.org>
parents: 78236
diff changeset
352 (and (zerop auto-revert-tail-pos)
82257
8c188b53071d (auto-revert-tail-mode): auto-revert-tail-pos is zero, not nil, when
Glenn Morris <rgm@gnu.org>
parents: 82140
diff changeset
353 (not (verify-visited-file-modtime (current-buffer)))
8c188b53071d (auto-revert-tail-mode): auto-revert-tail-pos is zero, not nil, when
Glenn Morris <rgm@gnu.org>
parents: 82140
diff changeset
354 (y-or-n-p "File changed on disk, content may be missing. \
78408
0f698dc9799c (auto-revert-tail-mode): auto-revert-tail-pos is zero, not nil, when
Glenn Morris <rgm@gnu.org>
parents: 78236
diff changeset
355 Perform a full revert? ")
82257
8c188b53071d (auto-revert-tail-mode): auto-revert-tail-pos is zero, not nil, when
Glenn Morris <rgm@gnu.org>
parents: 82140
diff changeset
356 ;; Use this (not just revert-buffer) for point-preservation.
8c188b53071d (auto-revert-tail-mode): auto-revert-tail-pos is zero, not nil, when
Glenn Morris <rgm@gnu.org>
parents: 82140
diff changeset
357 (auto-revert-handler))
56415
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
358 ;; else we might reappend our own end when we save
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
359 (add-hook 'before-save-hook (lambda () (auto-revert-tail-mode 0)) nil t)
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
360 (or (local-variable-p 'auto-revert-tail-pos) ; don't lose prior position
64801
da6e5acb4109 (auto-revert-tail-mode): Use make-local-variable,
Richard M. Stallman <rms@gnu.org>
parents: 64762
diff changeset
361 (set (make-local-variable 'auto-revert-tail-pos)
76697
596838644e8e (find-file-hook, auto-revert-tail-mode):
Jason Rumney <jasonr@gnu.org>
parents: 76520
diff changeset
362 (nth 7 (file-attributes buffer-file-name))))
56415
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
363 ;; let auto-revert-mode set up the mechanism for us if it isn't already
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
364 (or auto-revert-mode
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
365 (let ((auto-revert-tail-mode t))
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
366 (auto-revert-mode 1)))
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
367 (setq auto-revert-mode nil))))
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
368
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
369
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
370 ;;;###autoload
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
371 (defun turn-on-auto-revert-tail-mode ()
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
372 "Turn on Auto-Revert Tail Mode.
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
373
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
374 This function is designed to be added to hooks, for example:
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
375 (add-hook 'my-logfile-mode-hook 'turn-on-auto-revert-tail-mode)"
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
376 (auto-revert-tail-mode 1))
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
377
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
378
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
379 ;;;###autoload
44456
a7dbce305a53 (auto-revert-mode, global-auto-revert-mode):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38436
diff changeset
380 (define-minor-mode global-auto-revert-mode
103608
3e9859a4c097 (global-auto-revert-non-file-buffers, global-auto-revert-mode): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
381 "Toggle Global Auto Revert mode.
3e9859a4c097 (global-auto-revert-non-file-buffers, global-auto-revert-mode): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
382 With optional prefix argument ARG, enable Global Auto Revert Mode
3e9859a4c097 (global-auto-revert-non-file-buffers, global-auto-revert-mode): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
383 if ARG > 0, else disable it.
3e9859a4c097 (global-auto-revert-non-file-buffers, global-auto-revert-mode): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
384
3e9859a4c097 (global-auto-revert-non-file-buffers, global-auto-revert-mode): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
385 This is a global minor mode that reverts any buffer associated
3e9859a4c097 (global-auto-revert-non-file-buffers, global-auto-revert-mode): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
386 with a file when the file changes on disk. Use `auto-revert-mode'
3e9859a4c097 (global-auto-revert-non-file-buffers, global-auto-revert-mode): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
387 to revert a particular buffer.
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
388
103608
3e9859a4c097 (global-auto-revert-non-file-buffers, global-auto-revert-mode): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
389 If `global-auto-revert-non-file-buffers' is non-nil, this mode
3e9859a4c097 (global-auto-revert-non-file-buffers, global-auto-revert-mode): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
390 may also revert some non-file buffers, as described in the
3e9859a4c097 (global-auto-revert-non-file-buffers, global-auto-revert-mode): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
391 documentation of that variable. It ignores buffers with modes
3e9859a4c097 (global-auto-revert-non-file-buffers, global-auto-revert-mode): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
392 matching `global-auto-revert-ignore-modes', and buffers with a
3e9859a4c097 (global-auto-revert-non-file-buffers, global-auto-revert-mode): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
393 non-nil vale of `global-auto-revert-ignore-buffer'.
3e9859a4c097 (global-auto-revert-non-file-buffers, global-auto-revert-mode): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
394
3e9859a4c097 (global-auto-revert-non-file-buffers, global-auto-revert-mode): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
395 This function calls the hook `global-auto-revert-mode-hook'.
3e9859a4c097 (global-auto-revert-non-file-buffers, global-auto-revert-mode): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
396 It displays the text that `global-auto-revert-mode-text'
3e9859a4c097 (global-auto-revert-non-file-buffers, global-auto-revert-mode): Doc fixes.
Glenn Morris <rgm@gnu.org>
parents: 100908
diff changeset
397 specifies in the mode line."
44456
a7dbce305a53 (auto-revert-mode, global-auto-revert-mode):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38436
diff changeset
398 :global t :group 'auto-revert :lighter global-auto-revert-mode-text
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
399 (auto-revert-set-timer)
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
400 (when global-auto-revert-mode
44456
a7dbce305a53 (auto-revert-mode, global-auto-revert-mode):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38436
diff changeset
401 (auto-revert-buffers)))
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
402
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
403
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
404 (defun auto-revert-set-timer ()
54609
b35a0c2934f9 (auto-revert-verbose, global-auto-revert-non-file-buffers)
Luc Teirlinck <teirllm@auburn.edu>
parents: 54606
diff changeset
405 "Restart or cancel the timer used by Auto-Revert Mode.
54612
ce6a58ba4c84 (auto-revert-set-timer): Minor doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54609
diff changeset
406 If such a timer is active, cancel it. Start a new timer if
54609
b35a0c2934f9 (auto-revert-verbose, global-auto-revert-non-file-buffers)
Luc Teirlinck <teirllm@auburn.edu>
parents: 54606
diff changeset
407 Global Auto-Revert Mode is active or if Auto-Revert Mode is active
b35a0c2934f9 (auto-revert-verbose, global-auto-revert-non-file-buffers)
Luc Teirlinck <teirllm@auburn.edu>
parents: 54606
diff changeset
408 in some buffer. Restarting the timer ensures that Auto-Revert Mode
b35a0c2934f9 (auto-revert-verbose, global-auto-revert-non-file-buffers)
Luc Teirlinck <teirllm@auburn.edu>
parents: 54606
diff changeset
409 will use an up-to-date value of `auto-revert-interval'"
54452
b0a078151291 (auto-revert-interval): Make new value take effect immediately when
Luc Teirlinck <teirllm@auburn.edu>
parents: 54045
diff changeset
410 (interactive)
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
411 (if (timerp auto-revert-timer)
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
412 (cancel-timer auto-revert-timer))
44456
a7dbce305a53 (auto-revert-mode, global-auto-revert-mode):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38436
diff changeset
413 (setq auto-revert-timer
a7dbce305a53 (auto-revert-mode, global-auto-revert-mode):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38436
diff changeset
414 (if (or global-auto-revert-mode auto-revert-buffer-list)
a7dbce305a53 (auto-revert-mode, global-auto-revert-mode):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38436
diff changeset
415 (run-with-timer auto-revert-interval
a7dbce305a53 (auto-revert-mode, global-auto-revert-mode):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38436
diff changeset
416 auto-revert-interval
56415
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
417 'auto-revert-buffers))))
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
418
53980
0bcb32954b6f Added support to detect changed dired buffers.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53379
diff changeset
419 (defun auto-revert-active-p ()
0bcb32954b6f Added support to detect changed dired buffers.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53379
diff changeset
420 "Check if auto-revert is active (in current buffer or globally)."
0bcb32954b6f Added support to detect changed dired buffers.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53379
diff changeset
421 (or auto-revert-mode
56415
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
422 auto-revert-tail-mode
53980
0bcb32954b6f Added support to detect changed dired buffers.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53379
diff changeset
423 (and
0bcb32954b6f Added support to detect changed dired buffers.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53379
diff changeset
424 global-auto-revert-mode
0bcb32954b6f Added support to detect changed dired buffers.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53379
diff changeset
425 (not global-auto-revert-ignore-buffer)
0bcb32954b6f Added support to detect changed dired buffers.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53379
diff changeset
426 (not (memq major-mode
0bcb32954b6f Added support to detect changed dired buffers.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53379
diff changeset
427 global-auto-revert-ignore-modes)))))
0bcb32954b6f Added support to detect changed dired buffers.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53379
diff changeset
428
0bcb32954b6f Added support to detect changed dired buffers.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53379
diff changeset
429 (defun auto-revert-handler ()
54609
b35a0c2934f9 (auto-revert-verbose, global-auto-revert-non-file-buffers)
Luc Teirlinck <teirllm@auburn.edu>
parents: 54606
diff changeset
430 "Revert current buffer, if appropriate.
b35a0c2934f9 (auto-revert-verbose, global-auto-revert-non-file-buffers)
Luc Teirlinck <teirllm@auburn.edu>
parents: 54606
diff changeset
431 This is an internal function used by Auto-Revert Mode."
56415
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
432 (when (or auto-revert-tail-mode (not (buffer-modified-p)))
84987
9f33047587c7 (auto-revert-handler): In `auto-revert-tail-mode',
David Kastrup <dak@gnu.org>
parents: 82365
diff changeset
433 (let* ((buffer (current-buffer)) size
56415
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
434 (revert
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
435 (or (and buffer-file-name
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
436 (file-readable-p buffer-file-name)
84987
9f33047587c7 (auto-revert-handler): In `auto-revert-tail-mode',
David Kastrup <dak@gnu.org>
parents: 82365
diff changeset
437 (if auto-revert-tail-mode
104126
5170ba97b7f8 * autorevert.el (auto-revert-handler): Allow
Michael Albinus <michael.albinus@gmx.de>
parents: 103608
diff changeset
438 ;; Tramp caches the file attributes. Setting
5170ba97b7f8 * autorevert.el (auto-revert-handler): Allow
Michael Albinus <michael.albinus@gmx.de>
parents: 103608
diff changeset
439 ;; `tramp-cache-inhibit' forces Tramp to
5170ba97b7f8 * autorevert.el (auto-revert-handler): Allow
Michael Albinus <michael.albinus@gmx.de>
parents: 103608
diff changeset
440 ;; reread the values.
5170ba97b7f8 * autorevert.el (auto-revert-handler): Allow
Michael Albinus <michael.albinus@gmx.de>
parents: 103608
diff changeset
441 (let ((tramp-cache-inhibit-cache t))
5170ba97b7f8 * autorevert.el (auto-revert-handler): Allow
Michael Albinus <michael.albinus@gmx.de>
parents: 103608
diff changeset
442 (/= auto-revert-tail-pos
5170ba97b7f8 * autorevert.el (auto-revert-handler): Allow
Michael Albinus <michael.albinus@gmx.de>
parents: 103608
diff changeset
443 (setq size
5170ba97b7f8 * autorevert.el (auto-revert-handler): Allow
Michael Albinus <michael.albinus@gmx.de>
parents: 103608
diff changeset
444 (nth 7 (file-attributes
5170ba97b7f8 * autorevert.el (auto-revert-handler): Allow
Michael Albinus <michael.albinus@gmx.de>
parents: 103608
diff changeset
445 buffer-file-name)))))
5170ba97b7f8 * autorevert.el (auto-revert-handler): Allow
Michael Albinus <michael.albinus@gmx.de>
parents: 103608
diff changeset
446 (and (not (file-remote-p buffer-file-name))
5170ba97b7f8 * autorevert.el (auto-revert-handler): Allow
Michael Albinus <michael.albinus@gmx.de>
parents: 103608
diff changeset
447 (not (verify-visited-file-modtime buffer)))))
56463
e86e7a1eccac Describe `Auto Revert Tail Mode' in `Commentary' section.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56415
diff changeset
448 (and (or auto-revert-mode
56415
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
449 global-auto-revert-non-file-buffers)
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
450 revert-buffer-function
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
451 (boundp 'buffer-stale-function)
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
452 (functionp buffer-stale-function)
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
453 (funcall buffer-stale-function t))))
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
454 eob eoblist)
54513
188394103088 (global-auto-revert-non-file-buffers): Expand doc string.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54452
diff changeset
455 (when revert
54671
237f008115f7 Delete obsolete autoload's and defvar's.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54612
diff changeset
456 (when (and auto-revert-verbose
237f008115f7 Delete obsolete autoload's and defvar's.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54612
diff changeset
457 (not (eq revert 'fast)))
54592
6a2022999abf (auto-revert-handler): Print revert message before, rather than after,
Luc Teirlinck <teirllm@auburn.edu>
parents: 54513
diff changeset
458 (message "Reverting buffer `%s'." (buffer-name)))
54709
582d81c73e11 (auto-revert-handler): If point (or a window point) is at the end of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54671
diff changeset
459 ;; If point (or a window point) is at the end of the buffer,
582d81c73e11 (auto-revert-handler): If point (or a window point) is at the end of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54671
diff changeset
460 ;; we want to keep it at the end after reverting. This allows
582d81c73e11 (auto-revert-handler): If point (or a window point) is at the end of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54671
diff changeset
461 ;; to tail a file.
582d81c73e11 (auto-revert-handler): If point (or a window point) is at the end of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54671
diff changeset
462 (when buffer-file-name
582d81c73e11 (auto-revert-handler): If point (or a window point) is at the end of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54671
diff changeset
463 (setq eob (eobp))
582d81c73e11 (auto-revert-handler): If point (or a window point) is at the end of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54671
diff changeset
464 (walk-windows
582d81c73e11 (auto-revert-handler): If point (or a window point) is at the end of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54671
diff changeset
465 #'(lambda (window)
582d81c73e11 (auto-revert-handler): If point (or a window point) is at the end of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54671
diff changeset
466 (and (eq (window-buffer window) buffer)
582d81c73e11 (auto-revert-handler): If point (or a window point) is at the end of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54671
diff changeset
467 (= (window-point window) (point-max))
582d81c73e11 (auto-revert-handler): If point (or a window point) is at the end of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54671
diff changeset
468 (push window eoblist)))
582d81c73e11 (auto-revert-handler): If point (or a window point) is at the end of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54671
diff changeset
469 'no-mini t))
56415
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
470 (if auto-revert-tail-mode
84987
9f33047587c7 (auto-revert-handler): In `auto-revert-tail-mode',
David Kastrup <dak@gnu.org>
parents: 82365
diff changeset
471 (auto-revert-tail-handler size)
57602
acc1f9ccb10c Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 56912
diff changeset
472 ;; Bind buffer-read-only in case user has done C-x C-q,
acc1f9ccb10c Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 56912
diff changeset
473 ;; so as not to forget that. This gives undesirable results
acc1f9ccb10c Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 56912
diff changeset
474 ;; when the file's mode changes, but that is less common.
56912
86b23d3c36a2 (auto-revert-handler): Bind `buffer-read-only' locally around the call
Luc Teirlinck <teirllm@auburn.edu>
parents: 56516
diff changeset
475 (let ((buffer-read-only buffer-read-only))
86b23d3c36a2 (auto-revert-handler): Bind `buffer-read-only' locally around the call
Luc Teirlinck <teirllm@auburn.edu>
parents: 56516
diff changeset
476 (revert-buffer 'ignore-auto 'dont-ask 'preserve-modes)))
54709
582d81c73e11 (auto-revert-handler): If point (or a window point) is at the end of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54671
diff changeset
477 (when buffer-file-name
582d81c73e11 (auto-revert-handler): If point (or a window point) is at the end of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54671
diff changeset
478 (when eob (goto-char (point-max)))
582d81c73e11 (auto-revert-handler): If point (or a window point) is at the end of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54671
diff changeset
479 (dolist (window eoblist)
582d81c73e11 (auto-revert-handler): If point (or a window point) is at the end of
Luc Teirlinck <teirllm@auburn.edu>
parents: 54671
diff changeset
480 (set-window-point window (point-max)))))
54671
237f008115f7 Delete obsolete autoload's and defvar's.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54612
diff changeset
481 ;; `preserve-modes' avoids changing the (minor) modes. But we
237f008115f7 Delete obsolete autoload's and defvar's.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54612
diff changeset
482 ;; do want to reset the mode for VC, so we do it manually.
237f008115f7 Delete obsolete autoload's and defvar's.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54612
diff changeset
483 (when (or revert auto-revert-check-vc-info)
237f008115f7 Delete obsolete autoload's and defvar's.
Luc Teirlinck <teirllm@auburn.edu>
parents: 54612
diff changeset
484 (vc-find-file-hook)))))
53980
0bcb32954b6f Added support to detect changed dired buffers.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53379
diff changeset
485
104126
5170ba97b7f8 * autorevert.el (auto-revert-handler): Allow
Michael Albinus <michael.albinus@gmx.de>
parents: 103608
diff changeset
486 (defun auto-revert-tail-handler (size)
84987
9f33047587c7 (auto-revert-handler): In `auto-revert-tail-mode',
David Kastrup <dak@gnu.org>
parents: 82365
diff changeset
487 (let ((modified (buffer-modified-p))
81721
59741e45a674 (auto-revert-tail-handler): Use inhibit-read-only.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 76697
diff changeset
488 (inhibit-read-only t) ; Ignore.
56415
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
489 (file buffer-file-name)
81721
59741e45a674 (auto-revert-tail-handler): Use inhibit-read-only.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 76697
diff changeset
490 (buffer-file-name nil)) ; Ignore that file has changed.
84987
9f33047587c7 (auto-revert-handler): In `auto-revert-tail-mode',
David Kastrup <dak@gnu.org>
parents: 82365
diff changeset
491 (when (/= auto-revert-tail-pos size)
81721
59741e45a674 (auto-revert-tail-handler): Use inhibit-read-only.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 76697
diff changeset
492 (run-hooks 'before-revert-hook)
59221
4de707f3cc8e (auto-revert-tail-handler): Put in undo boundaries.
Luc Teirlinck <teirllm@auburn.edu>
parents: 59200
diff changeset
493 (undo-boundary)
56415
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
494 (save-restriction
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
495 (widen)
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
496 (save-excursion
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
497 (goto-char (point-max))
84987
9f33047587c7 (auto-revert-handler): In `auto-revert-tail-mode',
David Kastrup <dak@gnu.org>
parents: 82365
diff changeset
498 (insert-file-contents file nil
9f33047587c7 (auto-revert-handler): In `auto-revert-tail-mode',
David Kastrup <dak@gnu.org>
parents: 82365
diff changeset
499 (and (< auto-revert-tail-pos size)
9f33047587c7 (auto-revert-handler): In `auto-revert-tail-mode',
David Kastrup <dak@gnu.org>
parents: 82365
diff changeset
500 auto-revert-tail-pos)
9f33047587c7 (auto-revert-handler): In `auto-revert-tail-mode',
David Kastrup <dak@gnu.org>
parents: 82365
diff changeset
501 size)))
81721
59741e45a674 (auto-revert-tail-handler): Use inhibit-read-only.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 76697
diff changeset
502 (run-hooks 'after-revert-hook)
59221
4de707f3cc8e (auto-revert-tail-handler): Put in undo boundaries.
Luc Teirlinck <teirllm@auburn.edu>
parents: 59200
diff changeset
503 (undo-boundary)
56415
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
504 (setq auto-revert-tail-pos size)
81721
59741e45a674 (auto-revert-tail-handler): Use inhibit-read-only.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 76697
diff changeset
505 (restore-buffer-modified-p modified)))
56415
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
506 (set-visited-file-modtime))
bda3d4cff473 (auto-revert-tail-mode, auto-revert-tail-mode-text, auto-revert-tail-pos): New vars.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 56169
diff changeset
507
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
508 (defun auto-revert-buffers ()
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
509 "Revert buffers as specified by Auto-Revert and Global Auto-Revert Mode.
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
510
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
511 Should `global-auto-revert-mode' be active all file buffers are checked.
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
512
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
513 Should `auto-revert-mode' be active in some buffers, those buffers
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
514 are checked.
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
515
54609
b35a0c2934f9 (auto-revert-verbose, global-auto-revert-non-file-buffers)
Luc Teirlinck <teirllm@auburn.edu>
parents: 54606
diff changeset
516 Non-file buffers that have a custom `revert-buffer-function' and
b35a0c2934f9 (auto-revert-verbose, global-auto-revert-non-file-buffers)
Luc Teirlinck <teirllm@auburn.edu>
parents: 54606
diff changeset
517 a `buffer-stale-function' are reverted either when Auto-Revert
b35a0c2934f9 (auto-revert-verbose, global-auto-revert-non-file-buffers)
Luc Teirlinck <teirllm@auburn.edu>
parents: 54606
diff changeset
518 Mode is active in that buffer, or when the variable
b35a0c2934f9 (auto-revert-verbose, global-auto-revert-non-file-buffers)
Luc Teirlinck <teirllm@auburn.edu>
parents: 54606
diff changeset
519 `global-auto-revert-non-file-buffers' is non-nil and Global
b35a0c2934f9 (auto-revert-verbose, global-auto-revert-non-file-buffers)
Luc Teirlinck <teirllm@auburn.edu>
parents: 54606
diff changeset
520 Auto-Revert Mode is active.
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
521
21288
1b06a18f33fd Various doc fixes, mainly grammar.
Dave Love <fx@gnu.org>
parents: 20648
diff changeset
522 This function stops whenever there is user input. The buffers not
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
523 checked are stored in the variable `auto-revert-remaining-buffers'.
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
524
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
525 To avoid starvation, the buffers in `auto-revert-remaining-buffers'
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
526 are checked first the next time this function is called.
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
527
21288
1b06a18f33fd Various doc fixes, mainly grammar.
Dave Love <fx@gnu.org>
parents: 20648
diff changeset
528 This function is also responsible for removing buffers no longer in
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
529 Auto-Revert mode from `auto-revert-buffer-list', and for canceling
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
530 the timer when no buffers need to be checked."
62957
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
531 (save-match-data
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
532 (let ((bufs (if global-auto-revert-mode
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
533 (buffer-list)
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
534 auto-revert-buffer-list))
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
535 (remaining ())
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
536 (new ()))
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
537 ;; Partition `bufs' into two halves depending on whether or not
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
538 ;; the buffers are in `auto-revert-remaining-buffers'. The two
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
539 ;; halves are then re-joined with the "remaining" buffers at the
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
540 ;; head of the list.
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
541 (dolist (buf auto-revert-remaining-buffers)
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
542 (if (memq buf bufs)
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
543 (push buf remaining)))
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
544 (dolist (buf bufs)
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
545 (if (not (memq buf remaining))
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
546 (push buf new)))
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
547 (setq bufs (nreverse (nconc new remaining)))
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
548 (while (and bufs
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
549 (not (and auto-revert-stop-on-user-input
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
550 (input-pending-p))))
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
551 (let ((buf (car bufs)))
93216
298da4c56fcb (auto-revert-buffers): Use buffer-live-p.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87649
diff changeset
552 (if (buffer-live-p buf)
62957
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
553 (with-current-buffer buf
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
554 ;; Test if someone has turned off Auto-Revert Mode in a
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
555 ;; non-standard way, for example by changing major mode.
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
556 (if (and (not auto-revert-mode)
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
557 (not auto-revert-tail-mode)
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
558 (memq buf auto-revert-buffer-list))
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
559 (setq auto-revert-buffer-list
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
560 (delq buf auto-revert-buffer-list)))
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
561 (when (auto-revert-active-p) (auto-revert-handler)))
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
562 ;; Remove dead buffer from `auto-revert-buffer-list'.
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
563 (setq auto-revert-buffer-list
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
564 (delq buf auto-revert-buffer-list))))
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
565 (setq bufs (cdr bufs)))
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
566 (setq auto-revert-remaining-buffers bufs)
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
567 ;; Check if we should cancel the timer.
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
568 (when (and (not global-auto-revert-mode)
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
569 (null auto-revert-buffer-list))
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
570 (cancel-timer auto-revert-timer)
e8139030a8a9 (auto-revert-buffers): Use save-match-data.
Luc Teirlinck <teirllm@auburn.edu>
parents: 61267
diff changeset
571 (setq auto-revert-timer nil)))))
18597
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
572
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
573
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
574 ;; The end:
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
575 (provide 'autorevert)
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
576
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
577 (run-hooks 'auto-revert-load-hook)
515b7c955cd8 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
578
81721
59741e45a674 (auto-revert-tail-handler): Use inhibit-read-only.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 76697
diff changeset
579 ;; arch-tag: f6bcb07b-4841-477e-9e44-b18678e58876
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 36992
diff changeset
580 ;;; autorevert.el ends here