Subject: bug#11274: 23.1; auto-save invoked in read-only directories

From: Michael Heerdegen <[email-masked]>
Date: Fri, 20 Apr 2012 03:06:04 +0200

Hello Kevin,

> On 4/18/12 3:03 PM, [email-masked] wrote:
> > When i edit a file in a directory to which i do not have
> > write-permission (such as /etc), after i type a line or
> > two of text, or type a few characters and then move around
> > in the buffer, emacs will suddenly freeze and just print
> > a message in the mini-buffer that my text could not be auto-saved.
> >
> > The message stays up for several seconds before it
> > yields control of the terminal back to me.
> >
> > This is extremely inconvenient, and the only way i can
> > prevent this from happening is to frequently save the file.
>
> These statements seem contradictory to me:
>
> > I do not want to turn auto-save off, or to mark any buffers
>                                        ^^^^^^^^^^^^^^^^^^^^^^
> > as to not be auto-saved, or to change the location of the
>   ^^^^^^^^^^^^^^^^^^^^^^^
> > auto-saves (unless it can be done once and forever, only
> > apply to files in write-protected directories and no others,
> > and not require a listing of either the files or directories
> > to which it is to be applied).
> >
> > The desired behavior is that emacs recognize that a directory
>                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > is write-protected, and if an attempt to write to that directory
>   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > fails, that it fail silently.  (It would be quite OK to have
>   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > this governed by the behavior of a variable set in my .emacs file.)

He means that he doesn't want to have to intervene in any form.  He
wants that Emacs turns off auto saving for the file when it's not
possible to auto-save.

> (add-hook 'find-file-hook
> 	  (lambda () (when (file-writable-p
> 			    (file-name-directory buffer-file-name))
> 		       (auto-save-mode 0))))
>
> (add-hook 'find-file-not-found-functions
> 	  (lambda () (when (file-writable-p
> 			    (file-name-directory buffer-file-name))
> 		       (auto-save-mode 0))
> 		     ;; don't short-circuit run-hook-with-args-until-success:
> 		     nil))

Yes, something like that works no doubt (I think you mean
(not (file-writable-p ...)) ).

In addition, there should be a warning for the user.

But something like that should not have to be done in the user's
configuration.  The current behavior of Emacs makes no sense at all.  It
continues to try to autosave, fails every time, beeps and beeps and
shows messages.  This is not only very annoying, it does not make any
sense at all - it has no benefit for the user.

So, can we add something like the above code to Emacs?

Michael.