Re: autorevert.el

From:

Luc Teirlinck

Subject:

Re: autorevert.el

Date:

Fri, 12 Mar 2004 21:10:08 -0600 (CST)

Three weeks ago a (without further changes) for all practical purposes
unusable, patch to autorevert.el, to make dired buffers as well as
some other non-file buffers autorevert, was applied. I proposed
changes that would make the dired part completely functional. I have
tested those changes for three weeks now, not only in routine, but
also in various rather extreme situations and I never encountered any
problems. I do find autoreverting dired buffers useful.
Nevertheless, there _are_ potential severe problems with autoreverting
non-file, non-vc, non-dired buffers. *Only* the fact that many
non-file buffers mark themselves modified even though the _user_ never
modified them, saves the non-file autoreverting from complete disaster
(by preventing it from kicking in). Currently non-file autoreverting
applies to all non-file buffers with a revert-buffer-function. But
many revert-buffer-function's were not written to be called by
auto-revert. Some pop up buffers. For instance the buffer-menu uses
a revert-buffer-function that is just `list-buffers' with two dummy
arguments. *Fortunately*, the buffer-menu marks its buffer modified
so it does _not_ get auto-reverted. I tried to change the buffer-menu
so it no longer marked its buffer modified. With auto-reverting of
non-file buffers enabled, Emacs became unusable because *Buffer List*
kept continuously popping up.
Stefan had one objection to my original patch. The fact that I used a
variable, `auto-revert-flag' to prevent dired from displaying its
usual "Reading directory /home/teirllm/...done" messages which
otherwise can occasionally get so noisy that they are not only
excessively distracting but interfere with normal minibuffer usage.
Stefan proposed to instead get rid of these messages completely.
So a first question is:
What do people think of just completely getting rid of these dired
"Reading directory /home/teirllm/...done" messages?
The second question is:
How do we prevent autorevert.el from using inappropriate
revert-buffer-function's?
One, trivial to implement, possibility, would be an
`auto-revert-buffer-function' for non-file, non-vc, non-dired buffers,
which could always, of course, just be set to the regular
revert-buffer-function if appropriate. The buffer would only get
auto-reverted by global-auto-revert-mode if
`auto-revert-buffer-function' is non-nil. Or else we could just stick
to autoreverting dired and vc-buffers and give up on other non-file
buffers altogether. But the current situation is just to dangerous.
There are disasters waiting to happen.
If we are actually going to seriously implement auto-reverting for
non-file, non-vc, non-dired buffers (actually it _already_ is
implemented right now in a very dangerous way) then I probably might
eventually need that `auto-revert-flag' variable Stefan objects to
anyway, in order to use the same function as both
revert-buffer-function and auto-revert-buffer-function.
Would anybody actually find auto-reverting the buffer-menu useful? It
might be a good test case, but I do not know whether it really would
be useful enough. Or are there any other non-file, non-vc, non-dired
buffers people would like to autorevert?
Sincerely,
Luc.