GNU bug report logs -
#31782
26.1; dired-recursive-deletes broken
Previous Next
Reported by: Leo Liu <sdl.web <at> gmail.com>
Date: Mon, 11 Jun 2018 05:10:01 UTC
Severity: normal
Tags: fixed, patch
Found in version 26.1
Fixed in version 26.2
Done: Noam Postavsky <npostavs <at> gmail.com>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 31782 in the body.
You can then email your comments to 31782 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#31782
; Package
emacs
.
(Mon, 11 Jun 2018 05:10:01 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Leo Liu <sdl.web <at> gmail.com>
:
New bug report received and forwarded. Copy sent to
bug-gnu-emacs <at> gnu.org
.
(Mon, 11 Jun 2018 05:10:01 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
Sigh!
I am annoyed to answer this question in 26.1 constantly
Recursively trash XXX? [yes, no, all, quit, help]
Previously there is only yes or no (which I replace with y or n). Now I
have to type all of these things. It's madness. So I set
dired-recursive-deletes to always. But that question pops up still.
To make it worse, I already have delete-by-moving-to-trash so all of
these questions are useless and slows me down. Why change for the worse?
Leo
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#31782
; Package
emacs
.
(Mon, 11 Jun 2018 14:34:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 31782 <at> debbugs.gnu.org (full text, mbox):
On 11 June 2018 at 01:09, Leo Liu <sdl.web <at> gmail.com> wrote:
>
> Sigh!
>
> I am annoyed to answer this question in 26.1 constantly
>
> Recursively trash XXX? [yes, no, all, quit, help]
>
> Previously there is only yes or no (which I replace with y or n). Now I
> have to type all of these things.
I think this is solved in the master branch. See Bug#30073.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#31782
; Package
emacs
.
(Mon, 11 Jun 2018 17:24:01 GMT)
Full text and
rfc822 format available.
Message #11 received at 31782 <at> debbugs.gnu.org (full text, mbox):
> From: Noam Postavsky <npostavs <at> gmail.com>
> Date: Mon, 11 Jun 2018 10:33:50 -0400
> Cc: 31782 <at> debbugs.gnu.org
>
> > I am annoyed to answer this question in 26.1 constantly
> >
> > Recursively trash XXX? [yes, no, all, quit, help]
> >
> > Previously there is only yes or no (which I replace with y or n). Now I
> > have to type all of these things.
>
> I think this is solved in the master branch. See Bug#30073.
Should we backport that to the emacs-26 branch?
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#31782
; Package
emacs
.
(Tue, 12 Jun 2018 21:56:02 GMT)
Full text and
rfc822 format available.
Message #14 received at 31782 <at> debbugs.gnu.org (full text, mbox):
Eli Zaretskii <eliz <at> gnu.org> writes:
>> From: Noam Postavsky <npostavs <at> gmail.com>
>> Date: Mon, 11 Jun 2018 10:33:50 -0400
>> Cc: 31782 <at> debbugs.gnu.org
>>
>> > I am annoyed to answer this question in 26.1 constantly
>> >
>> > Recursively trash XXX? [yes, no, all, quit, help]
>> >
>> > Previously there is only yes or no (which I replace with y or n). Now I
>> > have to type all of these things.
>>
>> I think this is solved in the master branch. See Bug#30073.
>
> Should we backport that to the emacs-26 branch?
Probably yes. I have the impression that yes-or-no-p is sort of a
counterexample to what Leo mentioned in Bug#31772; that is, many (most?)
people are not very happy with it, but it's so easy to just do (fset
'yes-or-no-p #'y-or-n-p) so nobody bothers to complain about it. But
it's a "customization" that breaks down in cases like this one.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#31782
; Package
emacs
.
(Wed, 13 Jun 2018 02:33:01 GMT)
Full text and
rfc822 format available.
Message #17 received at 31782 <at> debbugs.gnu.org (full text, mbox):
> From: Noam Postavsky <npostavs <at> gmail.com>
> Cc: 31782 <at> debbugs.gnu.org, sdl.web <at> gmail.com
> Date: Tue, 12 Jun 2018 17:55:21 -0400
>
> >> > Recursively trash XXX? [yes, no, all, quit, help]
> >> >
> >> > Previously there is only yes or no (which I replace with y or n). Now I
> >> > have to type all of these things.
> >>
> >> I think this is solved in the master branch. See Bug#30073.
> >
> > Should we backport that to the emacs-26 branch?
>
> Probably yes.
Then let's do that.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#31782
; Package
emacs
.
(Thu, 14 Jun 2018 04:16:02 GMT)
Full text and
rfc822 format available.
Message #20 received at 31782 <at> debbugs.gnu.org (full text, mbox):
On 2018-06-13 05:32 +0300, Eli Zaretskii wrote:
>> Probably yes.
>
> Then let's do that.
The verbosity of the question is one problem. I think the piece is a bit
over-engineered. (setq dired-recursive-deletes 'aways) still get
questioned is another problem.
It is worth a fix anyhow.
Leo
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#31782
; Package
emacs
.
(Thu, 14 Jun 2018 13:06:02 GMT)
Full text and
rfc822 format available.
Message #23 received at 31782 <at> debbugs.gnu.org (full text, mbox):
Leo Liu <sdl.web <at> gmail.com> writes:
> (setq dired-recursive-deletes 'aways) still get
> questioned is another problem.
Oh, I missed that part. I'm not able to reproduce with emacs-26. I
tried
mkdir -p a/b/c
touch a/b/c/foo
mkdir -p d/e/f
then 'emacs -Q --eval (setq dired-recursive-deletes (quote always))' and
then mark the 'a' and 'd' directories in dired, and hit D
(dired-do-delete). I get the yes/no question about deleting 'a' and
'd', but no further questions about recursive deletions of any other
directories.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#31782
; Package
emacs
.
(Thu, 14 Jun 2018 13:28:02 GMT)
Full text and
rfc822 format available.
Message #26 received at 31782 <at> debbugs.gnu.org (full text, mbox):
On 2018-06-14 09:05 -0400, Noam Postavsky wrote:
>> (setq dired-recursive-deletes 'aways) still get
I got an unfortunate typo here.
>> questioned is another problem.
>
> Oh, I missed that part. I'm not able to reproduce with emacs-26. I
> tried
>
> mkdir -p a/b/c
> touch a/b/c/foo
> mkdir -p d/e/f
My bad. Just realised I had a typo in my init. So that is not dired's
fault.
Leo
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#31782
; Package
emacs
.
(Fri, 15 Jun 2018 11:26:01 GMT)
Full text and
rfc822 format available.
Message #29 received at 31782 <at> debbugs.gnu.org (full text, mbox):
Leo Liu <sdl.web <at> gmail.com> writes:
> On 2018-06-14 09:05 -0400, Noam Postavsky wrote:
>>> (setq dired-recursive-deletes 'aways) still get
>
> I got an unfortunate typo here.
Oh, hah, I missed that too.
So, looking at the Bug#30073 fix, the new (currently being introduced in
Emacs 27) read-answer function looks pretty similar to
read-multiple-choice. Perhaps some sharing is in order?
Another thing is that the defcustom default value trick doesn't work as
intended (as far as I understand the intention, at least).
;; For backward compatibility check if short y/n answers are preferred.
(defcustom read-answer-short (eq (symbol-function 'yes-or-no-p) 'y-or-n-p)
"If non-nil, accept short answers to the question."
For a user with .emacs consisting of
(fset 'yes-or-no-p 'y-or-n-p)
<f1> v read-answer-short RET gives:
read-answer-short is a variable defined in ‘map-ynp.el’.
Its value is nil
Original value was t
I think we'd want some `auto' setting which would tell read-answer to
look at the yes-or-no-p function value at run time.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#31782
; Package
emacs
.
(Tue, 31 Jul 2018 01:40:02 GMT)
Full text and
rfc822 format available.
Message #32 received at 31782 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
tags 31782 + patch
quit
Noam Postavsky <npostavs <at> gmail.com> writes:
> So, looking at the Bug#30073 fix, the new (currently being introduced in
> Emacs 27) read-answer function looks pretty similar to
> read-multiple-choice. Perhaps some sharing is in order?
There are differences in both the interface and implementation which
make it difficult to merge these, even though the functionality has some
overlap. Maybe something could be done later, but for now we'll have to
settle for taking it as is (modulo the fix for the standard value
problem). Here is the backported patch:
[0001-New-function-read-answer-bug-30073.patch (text/plain, attachment)]
[Message part 3 (text/plain, inline)]
I guess assoc-delete-all should be announced in NEWS too? Although it
looks like it could be replaced with cl-delete instead.
> Another thing is that the defcustom default value trick doesn't work as
> intended (as far as I understand the intention, at least).
>
> ;; For backward compatibility check if short y/n answers are preferred.
> (defcustom read-answer-short (eq (symbol-function 'yes-or-no-p) 'y-or-n-p)
> "If non-nil, accept short answers to the question."
> I think we'd want some `auto' setting which would tell read-answer to
> look at the yes-or-no-p function value at run time.
Here's a patch for that against master (I already included this into the
backported patch above).
[0001-Respect-non-saved-value-of-read-short-answer-Bug-317.patch (text/x-diff, inline)]
From 1059db2520f1aa8d26d2cdb253c57421f647df2e Mon Sep 17 00:00:00 2001
From: Noam Postavsky <npostavs <at> gmail.com>
Date: Wed, 4 Jul 2018 22:51:45 -0400
Subject: [PATCH 1/2] Respect non-saved value of `read-short-answer'
(Bug#31782)
* lisp/emacs-lisp/map-ynp.el (read-answer-short): Add an `auto'
setting.
(read-answer): Check the function cell of `yes-or-no-p' when
`read-answer-short' is `auto' rather than calling
`custom-reevaluate-setting' which would reset the option to its saved
value.
---
lisp/emacs-lisp/map-ynp.el | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/lisp/emacs-lisp/map-ynp.el b/lisp/emacs-lisp/map-ynp.el
index 61c04ff7b3..c029c7e1b5 100644
--- a/lisp/emacs-lisp/map-ynp.el
+++ b/lisp/emacs-lisp/map-ynp.el
@@ -257,9 +257,14 @@ map-y-or-n-p
;; either long or short answers.
;; For backward compatibility check if short y/n answers are preferred.
-(defcustom read-answer-short (eq (symbol-function 'yes-or-no-p) 'y-or-n-p)
- "If non-nil, accept short answers to the question."
- :type 'boolean
+(defcustom read-answer-short 'auto
+ "Control whether `read-answer' accepts short answers.
+If t, accept short (single key-press) answers to the question.
+If nil, require long answers. If `auto', accept short answers if
+the function cell of `yes-or-no-p' is set to `y-or-on-p'."
+ :type '(choice (const :tag "Accept short answers" t)
+ (const :tag "Require long answer" nil)
+ (const :tag "Guess preference" auto))
:version "27.1"
:group 'minibuffer)
@@ -290,8 +295,9 @@ read-answer
Return a long answer even in case of accepting short ones.
When `use-dialog-box' is t, pop up a dialog window to get user input."
- (custom-reevaluate-setting 'read-answer-short)
- (let* ((short read-answer-short)
+ (let* ((short (if (eq read-answer-short 'auto)
+ (eq (symbol-function 'yes-or-no-p) 'y-or-n-p)
+ read-answer-short))
(answers-with-help
(if (assoc "help" answers)
answers
--
2.11.0
[Message part 5 (text/plain, inline)]
And once backported, we should remove the announcement from 27.1 NEWS,
since the new function it will already be introduced in 26.2:
[0002-etc-NEWS-Remove-read-answer-it-was-backported-to-v26.patch (text/x-diff, inline)]
From c791639c259abe6e514a4e3ffd62c904cff636e2 Mon Sep 17 00:00:00 2001
From: Noam Postavsky <npostavs <at> gmail.com>
Date: Mon, 30 Jul 2018 21:02:07 -0400
Subject: [PATCH 2/2] ; etc/NEWS: Remove read-answer, it was backported to v26
---
etc/NEWS | 4 ----
1 file changed, 4 deletions(-)
diff --git a/etc/NEWS b/etc/NEWS
index 5ca1b428de..2825bb9f59 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -913,10 +913,6 @@ higher-level functions.
some years back. It now respects 'imagemagick-types-inhibit' as a way
to disable that.
-+++
-** The new function 'read-answer' accepts either long or short answers
-depending on the new customizable variable 'read-answer-short'.
-
** The function 'load' now behaves correctly when loading modules.
Specifically, it puts the module name into 'load-history', prints
loading messages if requested, and protects against recursive loads.
--
2.11.0
Added tag(s) patch.
Request was from
Noam Postavsky <npostavs <at> gmail.com>
to
control <at> debbugs.gnu.org
.
(Tue, 31 Jul 2018 01:40:02 GMT)
Full text and
rfc822 format available.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#31782
; Package
emacs
.
(Tue, 31 Jul 2018 16:01:01 GMT)
Full text and
rfc822 format available.
Message #37 received at 31782 <at> debbugs.gnu.org (full text, mbox):
> From: Noam Postavsky <npostavs <at> gmail.com>
> Date: Mon, 30 Jul 2018 21:39:12 -0400
> Cc: 31782 <at> debbugs.gnu.org, Juri Linkov <juri <at> linkov.net>
>
> There are differences in both the interface and implementation which
> make it difficult to merge these, even though the functionality has some
> overlap. Maybe something could be done later, but for now we'll have to
> settle for taking it as is (modulo the fix for the standard value
> problem). Here is the backported patch:
LGTM, thanks.
> +;; For backward compatibility check if short y/n answers are preferred.
> +(defcustom read-answer-short 'auto
> + "Control whether `read-answer' accepts short answers.
This is unnecessarily vague. How about
If non-nil, `read-answer' accepts single-character answers.
with all the rest intact?
> I guess assoc-delete-all should be announced in NEWS too?
Yes, please.
> Although it looks like it could be replaced with cl-delete instead.
Such a small and simple function doesn't justify loading cl-seq, IMO.
And we already have a similar function in subr.el.
> -(defcustom read-answer-short (eq (symbol-function 'yes-or-no-p) 'y-or-n-p)
> - "If non-nil, accept short answers to the question."
> - :type 'boolean
> +(defcustom read-answer-short 'auto
> + "Control whether `read-answer' accepts short answers.
> +If t, accept short (single key-press) answers to the question.
> +If nil, require long answers. If `auto', accept short answers if
> +the function cell of `yes-or-no-p' is set to `y-or-on-p'."
> + :type '(choice (const :tag "Accept short answers" t)
> + (const :tag "Require long answer" nil)
> + (const :tag "Guess preference" auto))
> :version "27.1"
The :version tag should change, right?
> And once backported, we should remove the announcement from 27.1 NEWS,
> since the new function it will already be introduced in 26.2:
Right.
Thanks.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#31782
; Package
emacs
.
(Wed, 01 Aug 2018 04:37:02 GMT)
Full text and
rfc822 format available.
Message #40 received at 31782 <at> debbugs.gnu.org (full text, mbox):
[[[ To any NSA and FBI agents reading my email: please consider ]]]
[[[ whether defending the US Constitution against all enemies, ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]
> LGTM, thanks.
Every time I see "LGTM", it comes into my mind that LG stands for
"little green". and the M stands for "man".
If only I could figure out what the T stands for.
--
Dr Richard Stallman
President, Free Software Foundation (https://gnu.org, https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#31782
; Package
emacs
.
(Wed, 01 Aug 2018 06:06:02 GMT)
Full text and
rfc822 format available.
Message #43 received at 31782 <at> debbugs.gnu.org (full text, mbox):
> From: Richard Stallman <rms <at> gnu.org>
> Cc: npostavs <at> gmail.com, 31782 <at> debbugs.gnu.org, sdl.web <at> gmail.com,
> juri <at> linkov.net
> Date: Wed, 01 Aug 2018 00:35:57 -0400
>
> > LGTM, thanks.
>
> Every time I see "LGTM", it comes into my mind that LG stands for
> "little green". and the M stands for "man".
>
> If only I could figure out what the T stands for.
It stands for "to".
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#31782
; Package
emacs
.
(Wed, 01 Aug 2018 13:01:01 GMT)
Full text and
rfc822 format available.
Message #46 received at 31782 <at> debbugs.gnu.org (full text, mbox):
Richard Stallman <rms <at> gnu.org> writes:
> [[[ To any NSA and FBI agents reading my email: please consider ]]]
> [[[ whether defending the US Constitution against all enemies, ]]]
> [[[ foreign or domestic, requires you to follow Snowden's example. ]]]
>
> > LGTM, thanks.
>
> Every time I see "LGTM", it comes into my mind that LG stands for
> "little green". and the M stands for "man".
>
> If only I could figure out what the T stands for.
"Terrestrial"?
--
Basil
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#31782
; Package
emacs
.
(Sat, 04 Aug 2018 16:03:02 GMT)
Full text and
rfc822 format available.
Message #49 received at 31782 <at> debbugs.gnu.org (full text, mbox):
tags 31782 fixed
close 31782 26.2
quit
Eli Zaretskii <eliz <at> gnu.org> writes:
>> +;; For backward compatibility check if short y/n answers are preferred.
>> +(defcustom read-answer-short 'auto
>> + "Control whether `read-answer' accepts short answers.
>
> This is unnecessarily vague. How about
>
> If non-nil, `read-answer' accepts single-character answers.
>
> with all the rest intact?
Okay, I'm always a bit unsure how to summarize these multi-way choice
options.
>> I guess assoc-delete-all should be announced in NEWS too?
>
> Yes, please.
>> +(defcustom read-answer-short 'auto
>> + "Control whether `read-answer' accepts short answers.
>> +If t, accept short (single key-press) answers to the question.
>> +If nil, require long answers. If `auto', accept short answers if
>> +the function cell of `yes-or-no-p' is set to `y-or-on-p'."
>> + :type '(choice (const :tag "Accept short answers" t)
>> + (const :tag "Require long answer" nil)
>> + (const :tag "Guess preference" auto))
>> :version "27.1"
>
> The :version tag should change, right?
Oh, I got confused with the multiple branches. Should be fixed now.
>> And once backported, we should remove the announcement from 27.1 NEWS,
>> since the new function it will already be introduced in 26.2:
>
> Right.
All done; [1: cc233365a9] in emacs-26, [2: 95050a5841], [3: 84ecc48d1f],
and [4: 111916596f] in master.
[1: cc233365a9]: 2018-08-04 11:37:39 -0400
New function read-answer (Bug#31782)
https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=cc233365a925dcf9fa7270630819f2e6e75280da
[2: 95050a5841]: 2018-08-04 11:55:40 -0400
Respect non-saved value of `read-short-answer' (Bug#31782)
https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=95050a5841c01bbcb6e8a82838881eee7879b7b9
[3: 84ecc48d1f]: 2018-08-04 11:55:40 -0400
; etc/NEWS: Remove read-answer, it was backported to v26
https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=84ecc48d1f9a98626977151aca332cfd4d7361b9
[4: 111916596f]: 2018-08-04 12:00:43 -0400
; (read-answer-short): Fix :version setting for backport
https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=111916596fc8518cffcd0c32cf0f99e638f6ec24
Added tag(s) fixed.
Request was from
Noam Postavsky <npostavs <at> gmail.com>
to
control <at> debbugs.gnu.org
.
(Sat, 04 Aug 2018 16:03:03 GMT)
Full text and
rfc822 format available.
bug marked as fixed in version 26.2, send any further explanations to
31782 <at> debbugs.gnu.org and Leo Liu <sdl.web <at> gmail.com>
Request was from
Noam Postavsky <npostavs <at> gmail.com>
to
control <at> debbugs.gnu.org
.
(Sat, 04 Aug 2018 16:03:03 GMT)
Full text and
rfc822 format available.
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Sun, 02 Sep 2018 11:24:04 GMT)
Full text and
rfc822 format available.
This bug report was last modified 5 years and 238 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.