From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Philipp Stephani Newsgroups: gmane.emacs.devel Subject: Re: make pred customable in auto-save-visited-mode Date: Sat, 31 Mar 2018 10:28:58 +0000 Message-ID: References: <83a7uo8wk5.fsf@gnu.org> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="f4f5e807ade0b6926f0568b2d34c" X-Trace: blaine.gmane.org 1522492078 1417 195.159.176.226 (31 Mar 2018 10:27:58 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sat, 31 Mar 2018 10:27:58 +0000 (UTC) Cc: =?UTF-8?B?57qq56eA5bOw?= , emacs-devel@gnu.org To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Mar 31 12:27:53 2018 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f2Djl-0000FD-5z for ged-emacs-devel@m.gmane.org; Sat, 31 Mar 2018 12:27:53 +0200 Original-Received: from localhost ([::1]:36509 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f2Dlo-00064I-OY for ged-emacs-devel@m.gmane.org; Sat, 31 Mar 2018 06:30:00 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:33058) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f2Dl4-00063z-EA for emacs-devel@gnu.org; Sat, 31 Mar 2018 06:29:15 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f2Dl3-0006cU-6n for emacs-devel@gnu.org; Sat, 31 Mar 2018 06:29:14 -0400 Original-Received: from mail-lf0-x230.google.com ([2a00:1450:4010:c07::230]:38147) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1f2Dl0-0006Zf-IP; Sat, 31 Mar 2018 06:29:10 -0400 Original-Received: by mail-lf0-x230.google.com with SMTP id u3-v6so15152135lff.5; Sat, 31 Mar 2018 03:29:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=8ko7UOLtPWOdm9nxncGNz/S9CSHmF3YYmd5WhH6qOEM=; b=PPhubTcQ2oWuMAa5Pyrpe/x8pCzmTCHZlJQEvAJs007oc+lXELiwKW1gfM/B/iVsNr TMqQPWwRwXVIQItyOjspiFZrty64J8cwuzt8MEdutMrrkQmcLnd/veIeOg1HW9+L5hfl N+vEu14/BWvCnAZA8cREYvh3nFdyGPLJ8kSfoxsoXVhj3dIt7xSy6z7psKsM9M3PQgjv JQmL/pibuqUzZssx4vIus0c68pTd+r/xP21LwD8oPAZpPYur52Q91MZy6atoBeH7CxOe xiv1Bx3zsgOhynkeEkZhV7fbcWJj2bZay1959FbU0eE+FekmxMnN80hFfVTvkEPycgPC LGjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=8ko7UOLtPWOdm9nxncGNz/S9CSHmF3YYmd5WhH6qOEM=; b=k+o1XK+S5ZIE9/gl6HLxlWzAX/U8SI9gREj2dji9H+f/hqs+OX12SCZZEOtPbesJxN Z6XDlGL8AAR0+aO6TvP6kIVpf48EJ2ENFXdNQxloFTsf8yh8orZhWCN1YKx6WzwLdrRI XNLCWUPtuebZOoMiSpt4K4A/4SAgs4zFb1R5fguH4jyM7AzpCoAXGxI5oMp0RD8wTbLs 6wN65Aa/K53IWT6MnTAhgL9xQf5YdBqTQphGdzQh7WzujN5srsB3yybFCH9PMs3gAEct cjrb8reUX31udLWaHd8KCX78ZoSul6S713VhEkFi1Smq3pYqQNJrrHpcU4/xyLsM7Xye j/IQ== X-Gm-Message-State: AElRT7EdGaztVHQ0Rf0HrIEmilaeyBqlhFhvaKjDkFo31wz9nmluLoDx Rt0hLekX8ikLF7LCvO+D0t/4IN4z/qe72ysqElcMqA== X-Google-Smtp-Source: AIpwx4/7l0vBLPcQLQC8ZORnJWgUeyja9l119ch1qjDXzKaOcS90pJicf3HxTN1D0of0b+Y+R3xHoOrHyigeC1NmlIQ= X-Received: by 10.46.112.24 with SMTP id l24mr1552793ljc.104.1522492148970; Sat, 31 Mar 2018 03:29:08 -0700 (PDT) In-Reply-To: X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4010:c07::230 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:224200 Archived-At: --f4f5e807ade0b6926f0568b2d34c Content-Type: multipart/alternative; boundary="f4f5e807ade0b6926b0568b2d34a" --f4f5e807ade0b6926b0568b2d34a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Philipp Stephani schrieb am Sa., 31. M=C3=A4rz 2018= um 12:23 Uhr: > Eli Zaretskii schrieb am Sa., 31. M=C3=A4rz 2018 um 10:44 = Uhr: > >> >> >> > (setq auto-save--timer >> > (when auto-save-visited-mode >> > (run-with-idle-timer >> > auto-save-visited-interval :repeat >> > #'save-some-buffers :no-prompt >> > (lambda () ;;<=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80= =94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94how about= make this customable >> > (not (and buffer-auto-save-file-name >> > auto-save-visited-file-name))))))) >> >> Letting users customize a non-trivial function is not the best way of >> affecting this behavior. I think you can have what you want by adding >> a function to ediff-startup-hook, and in that function set >> buffer-auto-save-file-name of the *ediff-merge* buffer to nil. >> >> > I agree that customization isn't the best solution here. However, I'm > suprised that `save-some-buffers' still prompts even if :noprompt is pass= ed. > The issue might be in `save-some-buffers': Its docstring says "If PRED is > t, then certain non-file buffers will also be considered.", but later it > only checks whether PRED is non-nil: > > (or > (buffer-file-name buffer) > (with-current-buffer buffer > (or (eq buffer-offer-save 'always) > (and pred buffer-offer-save (> (buffer-size) > 0))))) > > Maybe instead of `pred' here we should say (eq pred t). Alternative, the > predicate lambda should check whether `buffer-file-name' is non-nil. > Probably the second option is better because the first option would prevent PRED from running for non-file-visiting buffers. Patch attached. --f4f5e807ade0b6926b0568b2d34a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


Philip= p Stephani <p.stephani2@gmail.c= om> schrieb am Sa., 31. M=C3=A4rz 2018 um 12:23=C2=A0Uhr:
<= blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px= #ccc solid;padding-left:1ex">
<= div dir=3D"ltr">Eli Zaretskii <eliz@gnu.org> schrieb am Sa., 31. M=C3=A4rz 2018 um 10:44= =C2=A0Uhr:

<= /div>

>=C2=A0 =C2=A0(setq auto-save--timer
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(when auto-save-visited-mode
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(run-with-idle-timer
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 auto-save-visited-interval :r= epeat
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #'save-some-buffers :no-p= rompt
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (lambda ()=C2=A0 ;;<=E2=80= =94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94= =E2=80=94=E2=80=94=E2=80=94how about make this customable
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (not (and buffer-auto-= save-file-name
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 auto-save-visited-file-name)))))))

Letting users customize a non-trivial function is not the best way of
affecting this behavior.=C2=A0 I think you can have what you want by adding=
a function to ediff-startup-hook, and in that function set
buffer-auto-save-file-name of the *ediff-merge* buffer to nil.


I agree that customization isn't the best solution he= re. However, I'm suprised that `save-some-buffers' still prompts ev= en if :noprompt is passed.
The issue might be in `save-some-buffe= rs': Its docstring says "If PRED is t, then certain non-file buffe= rs will also be considered.", but later it only checks whether PRED is= non-nil:

=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (or
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(buffer-file-name buffe= r)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0(with-current-buffer buffer
=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(or (eq buffe= r-offer-save 'always)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(and pred buffer= -offer-save (> (buffer-size) 0)))))

Maybe= instead of `pred' here we should say (eq pred t). Alternative, the pre= dicate lambda should check whether `buffer-file-name' is non-nil.
=

Probably the second option is = better because the first option would prevent PRED from running for non-fil= e-visiting buffers. Patch attached.
--f4f5e807ade0b6926b0568b2d34a-- --f4f5e807ade0b6926f0568b2d34c Content-Type: text/plain; charset="US-ASCII"; name="0001-files.el-auto-save-visited-mode-Don-t-prompt-for-filen.txt" Content-Disposition: attachment; filename="0001-files.el-auto-save-visited-mode-Don-t-prompt-for-filen.txt" Content-Transfer-Encoding: base64 Content-ID: <1627b9a363d4a31cb7c1> X-Attachment-Id: 1627b9a363d4a31cb7c1 RnJvbSA2NWVmYzFiZmNmYThhOWIxNGYzMjVkZjA5ODdiZDIzM2VjMjVlZGIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwIFN0ZXBoYW5pIDxwaHN0QGdvb2dsZS5jb20+CkRh dGU6IFNhdCwgMzEgTWFyIDIwMTggMTI6MjY6MzAgKzAyMDAKU3ViamVjdDogW1BBVENIXSAqIGZp bGVzLmVsIChhdXRvLXNhdmUtdmlzaXRlZC1tb2RlKTogRG9uJ3QgcHJvbXB0IGZvcgogZmlsZW5h bWVzLgoKLS0tCiBsaXNwL2ZpbGVzLmVsIHwgNSArKystLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5z ZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saXNwL2ZpbGVzLmVsIGIv bGlzcC9maWxlcy5lbAppbmRleCA2YTEzYTlkNzFhLi44M2NiYTI0MzM2IDEwMDY0NAotLS0gYS9s aXNwL2ZpbGVzLmVsCisrKyBiL2xpc3AvZmlsZXMuZWwKQEAgLTQzNiw4ICs0MzYsOSBAQCBhdXRv LXNhdmUtdmlzaXRlZC1tb2RlCiAgICAgICAgICAgIGF1dG8tc2F2ZS12aXNpdGVkLWludGVydmFs IDpyZXBlYXQKICAgICAgICAgICAgIydzYXZlLXNvbWUtYnVmZmVycyA6bm8tcHJvbXB0CiAgICAg ICAgICAgIChsYW1iZGEgKCkKLSAgICAgICAgICAgICAobm90IChhbmQgYnVmZmVyLWF1dG8tc2F2 ZS1maWxlLW5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgYXV0by1zYXZlLXZpc2l0ZWQtZmls ZS1uYW1lKSkpKSkpKQorICAgICAgICAgICAgIChhbmQgYnVmZmVyLWZpbGUtbmFtZQorICAgICAg ICAgICAgICAgICAgKG5vdCAoYW5kIGJ1ZmZlci1hdXRvLXNhdmUtZmlsZS1uYW1lCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYXV0by1zYXZlLXZpc2l0ZWQtZmlsZS1uYW1lKSkpKSkpKSkK IAogOzsgVGhlICdzZXQnIHBhcnQgaXMgc28gd2UgZG9uJ3QgZ2V0IGEgd2FybmluZyBmb3IgdXNp bmcgdGhpcyB2YXJpYWJsZQogOzsgYWJvdmUsIHdoaWxlIHN0aWxsIGNhdGNoaW5nIGNvZGUgdGhh dCBfc2V0c18gdGhlIHZhcmlhYmxlIHRvIGdldAotLSAKMi4xNi4xCgo= --f4f5e807ade0b6926f0568b2d34c--