Subject: bug#25478: 26.0.50; No hooks are called when auto-saving

From: Philipp Stephani <[email-masked]>
Date: Sun, 26 Mar 2017 19:17:53 +0000

Eli Zaretskii <[email-masked]> schrieb am So., 26. März 2017 um 20:46 Uhr:

> > From: Philipp Stephani <[email-masked]>
> > Date: Sun, 26 Mar 2017 18:21:01 +0000
> > Cc: [email-masked]
> >
> >  All in all, I think this option is subtly dangerous and should be
> >  either deprecated or completely reimplemented to invoke
> >  basic-save-buffer instead. I'm quite sure this option made sense in
> >  the past, when complications with encoding and save-related hooks
> >  didn't exist, but that is no longer the case in Emacs these days.
> >  If someone thinks using this option will allow them not to bother with
> >  saving their edits, they are in for an unpleasant surprise.
> >
> > That's quite unfortunate, as not having to bother with saving edits
> manually is a very desirable feature that I
> > think Emacs should offer out of the box.
> >
> > If you really want to deprecate auto-save-visited-file-name, how about
> adding a simple global minor mode that
> > invokes save-some-buffers from an idle timer to files.el?
>
> As I wrote, I'm also okay with Someone™ volunteering to reimplement
> this option such that it invokes basic-save-buffer instead.
>
> A minor mode that you describe would also be fine, but then it should
> probably disable auto-saving if auto-save-visited-file-name is set,
> right?
>

Sounds reasonable. I'll try to come up with something by next weekend.
Probably it will be just

(defvar auto-save--timer nil)
(defcustom auto-save-visited-interval 5
  "seconds"
  :group 'files
  :type 'number
  :set (lambda (symbol value)
         (set-default symbol value)
         (when auto-save--timer
           (timer-set-idle-time auto-save--timer value :repeat))))
(define-minor-mode auto-save-visited-mode nil
  :group 'files
  :global t
  (when auto-save--timer (kill-timer auto-save--timer))
  (setq auto-save--timer
        (when auto-save-visited-mode
          (run-with-idle-timer
           auto-save-visited-interval :repeat
           #'save-some-buffers :no-prompt
           (lambda ()
             (not (and buffer-auto-save-file-name
auto-save-visited-file-name)))))))

but it will also need tests and documentation, which take a bit more time.