emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Emacs-diffs] emacs-26 ee512e9: Ignore buffers whose name begins wit


From: Kaushal Modi
Subject: Re: [Emacs-diffs] emacs-26 ee512e9: Ignore buffers whose name begins with a space in save-some-buffers
Date: Wed, 20 Sep 2017 02:10:11 +0000

On Tue, Sep 19, 2017 at 2:14 PM Eric Abrahamsen <address@hidden> wrote:

I've played with this a bit, and am getting hung up on the (and pred...
part above. "pred" is nil unless someone's customized
`save-some-buffers-default-predicate', so in the majority of cases the
check won't even reach `buffer-offer-save'.

Wow! That (and pred.. ) section has been there since the genesis of files.el in 1991 by Roland McGrath: http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=b4da00e92a09a2ee2cfb5df2ec111636c66e1597

(Thanks to vc-region-history.)

It was named exiting.. and at some point got renamed to pred. So it looks like, by design buffer-offer-save was checked only at the time of exiting emacs i.e. during the call to save-some-buffers within save-buffer-kill-emacs.

>  I don't really know why that (and pred... is in there, and don't feel comfortable just yanking it out.

Yes, given that it had always been there.

The pred will be true automatically at the time of quitting emacs (aptly because earlier that var was called 'exiting').. but not when you call C-x s.

So looks like along with setting buffer-offer-save to t, you would also need to set save-some-buffers-default-predicate to t locally for the special buffers you need saving.

How about this as a solution? With this, you only need to set buffer-over-save.

diff --git a/lisp/files.el b/lisp/files.el
index 0c30d40c13..5c05e3168b 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -5188,15 +5188,15 @@ save-some-buffers
        (and (buffer-live-p buffer)
     (buffer-modified-p buffer)
                     (not (buffer-base-buffer buffer))
-                    (not (eq (aref (buffer-name buffer) 0) ?\s))
                     (or
                      (buffer-file-name buffer)
                      (and pred
                           (progn
                             (set-buffer buffer)
                             (and buffer-offer-save (> (buffer-size) 0))))
-                     (buffer-local-value
-                      'write-contents-functions buffer))
+                     (and buffer-offer-save
+                          (buffer-local-value
+                           'write-contents-functions buffer)))
                     (or (not (functionp pred))
                         (with-current-buffer buffer (funcall pred)))
                     (if arg

Stefan? Eli?
--

Kaushal Modi


reply via email to

[Prev in Thread] Current Thread [Next in Thread]