Subject: Re: bug#48301: 28.0.50; Dired asks if buffer "" should be deleted with ls flag -p

From: Tassilo Horn <[email-masked]>
Date: Tue, 11 May 2021 15:41:04 +0200

Lars Ingebrigtsen <[email-masked]> writes:

>> 1. emacs -Q
>> 2. (setq dired-listing-switches "-Alhp") ;; the -p prints dirs as foo/,
>>                                          ;; i.e., with trailing /.
>> 3. M-x dired RET ~ RET
>> 4. Visit directory ~/foobar in dired
>> 5. Delete ~/foobar directory in dired
>> 6. Dired asks: "Kill Dired buffer of , too?" where it should ask if the
>>    buffer of foobar should be killed.
>>
>> The reason is that with the -p flag to ls which prints directories with
>> trailing slash, `dired-clean-up-after-deletion' is called with filename
>> FN "/home/foo/foobar/" and then (file-name-nondirectory
>> "/home/foo/foobar/") returns "".
>
> I'm unable to reproduce this bug in Emacs 28 -- I get no prompt at all
> when deleting the foobar directory (when testing with "emacs -Q").
> Are there some missing steps here?

Oh, I'm sorry, you are right.  It seems that one needs to require
dired-x, too.  So here a completed/amended recipe:

>> 1. emacs -Q
>> 2. (setq dired-listing-switches "-Alhp") ;; the -p prints dirs as foo/,
>>                                          ;; i.e., with trailing /.

2.1 (require 'dired-x)

>> 3. M-x dired RET ~ RET

3.1 Create foobar subdir using `+ foobar RET'
3.2 Refresh using `g' because only then the new foobar directory will be
    shown as foobar/ instead of foobar (without the trailing /).

>> 4. Visit directory ~/foobar/ in dired (a new dired buffer)
>> 5. Delete ~/foobar/ directory in the original dired buffer
>> 6. Dired asks: "Kill Dired buffer of , too?" where it should ask if the
>>    buffer of foobar should be killed.

Bye,
Tassilo