From: Eric Abrahamsen <eric@ericabrahamsen.net>
To: emacs-devel@gnu.org
Subject: Re: [Emacs-diffs] emacs-26 ee512e9: Ignore buffers whose name begins with a space in save-some-buffers
Date: Fri, 22 Sep 2017 08:52:30 -0700 [thread overview]
Message-ID: <87d16iivcx.fsf@ericabrahamsen.net> (raw)
In-Reply-To: 83zi9ncjg2.fsf@gnu.org
Eli Zaretskii <eliz@gnu.org> writes:
>> From: Eric Abrahamsen <eric@ericabrahamsen.net>
>> Date: Thu, 21 Sep 2017 12:57:39 -0700
>>
>> > Are there any upsides and downsides to consider wrt this solution? If
>> > so, what are they?
>>
>> It isn't so much upsides and downsides, as being careful to add a single
>> bit of functionality, without messing up present behavior and
>> expectations for a highly-trafficked bit of code. I think we can agree:
>>
>> 1. To leave the buffer name out of it (don't handle leading spaces
>> differently)
>> 2. To require `buffer-offer-save' to be explicitly set non-nil in order
>> to to consider a non-file buffer for potential saving. I think
>> Kaushal's right that we should require both `buffer-offer-save' and
>> `write-contents-functions' to be non-nil
>> 3. To leave the current behavior of the PRED argument unchanged
>>
>> So I think Kaushal's solution is good: it won't change anything at all
>> except to add a clause saying "when `buffer-offer-save' and
>> `write-contents-functions' have been set non-nil, consider the buffer
>> for saving". That's only going to happen when someone explicitly
>> requests it.
>
> Reusing buffer-offer-save for this purpose sounds a strange solution
> for me. That variable already says that Emacs should offer saving the
> buffer, and now it will have to do double duty in a convoluted manner.
> It sounds like we are making the problem harder, rather than simpler,
> for modes to solve.
It's appearing twice (which admittedly probably a bad idea), but it
isn't doing double duty: in both cases it simply means that the buffer
should be unilaterally offered for save, regardless of other checks.
> IOW, if we require buffer-offer-save to be non-nil, why do we need to
> also require that write-contents-functions is non-nil? There are 2
> clauses in the condition we are talking about, both require
> buffer-offer-save to be non-nil, and the only difference between them
> seems to be the condition of buffer size being positive. Is that what
> write-contents-functions is about -- to allow saving "empty" buffers?
No, it isn't. `write-contents-functions' doesn't need to be in there --
you're right that `buffer-offer-save' should be sufficient -- but then
we'll need to adjust handling of PRED somehow, which is currently being
slightly mis-used as a boolean when Emacs is exiting:
(and pred
(progn
(set-buffer buffer)
(and buffer-offer-save (> (buffer-size) 0))))
Unless a user has customized `save-some-buffers-default-predicate', PRED
is only t when Emacs is exiting.
I don't understand why it's being used this way, or why
`save-some-buffers' should behave differently when called interactively
vs when Emacs is exiting, but I didn't want to touch it because, as has
been pointed out, it's been this way for decades.
If we can come to a consensus about those two questions, it shouldn't be
hard to come up with a clean solution.
next prev parent reply other threads:[~2017-09-22 15:52 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20170918202953.21378.63492@vcs0.savannah.gnu.org>
[not found] ` <20170918202955.5043420AC4@vcs0.savannah.gnu.org>
2017-09-19 2:44 ` [Emacs-diffs] emacs-26 ee512e9: Ignore buffers whose name begins with a space in save-some-buffers Stefan Monnier
2017-09-19 3:12 ` Eric Abrahamsen
2017-09-19 12:42 ` Stefan Monnier
2017-09-19 13:25 ` Kaushal Modi
2017-09-19 15:44 ` Eric Abrahamsen
2017-09-19 15:50 ` Kaushal Modi
2017-09-19 15:53 ` Stefan Monnier
2017-09-19 16:03 ` Eric Abrahamsen
2017-09-19 15:37 ` Leo Liu
2017-09-19 15:56 ` Stefan Monnier
2017-09-19 10:48 ` Kaushal Modi
2017-09-19 12:08 ` Stefan Monnier
2017-09-19 12:26 ` Kaushal Modi
2017-09-19 18:13 ` Eric Abrahamsen
2017-09-20 2:10 ` Kaushal Modi
2017-09-20 7:16 ` Andreas Schwab
2017-09-20 17:14 ` Eric Abrahamsen
2017-09-21 8:01 ` Eli Zaretskii
2017-09-21 19:57 ` Eric Abrahamsen
2017-09-21 20:10 ` Kaushal Modi
2017-09-21 22:53 ` Eric Abrahamsen
2017-09-22 6:54 ` Eli Zaretskii
2017-09-22 15:52 ` Eric Abrahamsen [this message]
2017-09-22 16:18 ` Stefan Monnier
2017-09-22 16:54 ` Eric Abrahamsen
2017-09-22 19:03 ` Stefan Monnier
2017-09-22 23:27 ` Eric Abrahamsen
2017-09-23 2:43 ` Stefan Monnier
2017-09-24 19:25 ` Eric Abrahamsen
2017-09-24 19:29 ` Stefan Monnier
2017-09-24 20:59 ` Eric Abrahamsen
2017-09-22 17:21 ` Eli Zaretskii
2017-09-22 17:57 ` Eric Abrahamsen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87d16iivcx.fsf@ericabrahamsen.net \
--to=eric@ericabrahamsen.net \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.