GNU bug report logs -
#67856
Dired navigation via directory line does not respect dired-kill-when-opening-new-dired-buffer
Previous Next
Reported by: Jared Finder <jared <at> finder.org>
Date: Sat, 16 Dec 2023 20:36:01 UTC
Severity: normal
Tags: patch
Done: Eli Zaretskii <eliz <at> gnu.org>
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 67856 in the body.
You can then email your comments to 67856 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#67856
; Package
emacs
.
(Sat, 16 Dec 2023 20:36:01 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Jared Finder <jared <at> finder.org>
:
New bug report received and forwarded. Copy sent to
bug-gnu-emacs <at> gnu.org
.
(Sat, 16 Dec 2023 20:36:01 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
The option dired-kill-when-opening-new-dired-buffer is not respected
when clicking on parent directories in the directory line at the top of
dired
buffers. This can be fixed by calling
dired--find-possibly-alternate-file instead of dired in the callback, as
my attached patch does.
I believe changing to dired--find-possibly-alternate-file is safe
because from
playing around with dired, the directory being clicked on must be a
directory
and can not contain wildcards at this point. Therefore, at this point
it is
known that the directory is just a plain directory (no wildcards) and so
going
through find-file machinery will have the intended result.
Steps to reproduce:
emacs -Q
M-x load-library RET dired RET
M-x set-variable RET dired-kill-when-opening-new-dired-buffer RET t RET
C-x d ~/ RET
Click something in the directory line like "home" in "/home/jared" for
myself.
C-x C-b
See that there are two directory buffers instead of just one.
In GNU Emacs 29.1 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.37,
cairo version 1.16.0) of 2023-09-11, modified by Debian built on melete
System Description: Debian GNU/Linux 12 (bookworm)
Configured using:
'configure --build x86_64-linux-gnu --prefix=/usr
--sharedstatedir=/var/lib --libexecdir=/usr/libexec
--localstatedir=/var/lib --infodir=/usr/share/info
--mandir=/usr/share/man --with-libsystemd --with-pop=yes
--enable-locallisppath=/etc/emacs:/usr/local/share/emacs/29.1/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/29.1/site-lisp:/usr/share/emacs/site-lisp
--with-sound=alsa --without-gconf --with-mailutils
--with-native-compilation --build x86_64-linux-gnu --prefix=/usr
--sharedstatedir=/var/lib --libexecdir=/usr/libexec
--localstatedir=/var/lib --infodir=/usr/share/info
--mandir=/usr/share/man --with-libsystemd --with-pop=yes
--enable-locallisppath=/etc/emacs:/usr/local/share/emacs/29.1/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/29.1/site-lisp:/usr/share/emacs/site-lisp
--with-sound=alsa --without-gconf --with-mailutils
--with-native-compilation --with-pgtk 'CFLAGS=-g -O2
-ffile-prefix-map=/build/emacs-N816CI/emacs-29.1+1=.
-fstack-protector-strong
-Wformat -Werror=format-security -Wall' 'CPPFLAGS=-Wdate-time
-D_FORTIFY_SOURCE=2' LDFLAGS=-Wl,-z,relro'
Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP
NOTIFY INOTIFY PDUMPER PGTK PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XIM GTK3 ZLIB
Important settings:
value of $LANG: en_US.UTF-8
locale-coding-system: utf-8-unix
Major mode: Dired by name
Minor modes in effect:
tooltip-mode: t
global-eldoc-mode: t
show-paren-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
tool-bar-mode: t
menu-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
buffer-read-only: t
line-number-mode: t
indent-tabs-mode: t
transient-mark-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
Load-path shadows:
None found.
Features:
(shadow sort mail-extr emacsbug message mailcap yank-media puny rfc822
mml mml-sec password-cache epa derived epg rfc6068 epg-config gnus-util
text-property-search time-date mm-decode mm-bodies mm-encode mail-parse
rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045
ietf-drums mm-util mail-prsvr mail-utils mule-util display-line-numbers
dired-aux cus-edit pp cus-start cus-load wid-edit help-fns radix-tree
dired dired-loaddefs thingatpt cl-loaddefs comp comp-cstr warnings icons
subr-x rx cl-seq cl-macs gv cl-extra help-mode bytecomp byte-compile
cl-lib find-func rmc iso-transl tooltip cconv eldoc paren electric
uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
term/pgtk-win pgtk-win term/common-win pgtk-dnd tool-bar dnd fontset
image regexp-opt fringe tabulated-list replace newcomment text-mode
lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch
easymenu timer select scroll-bar mouse jit-lock font-lock syntax
font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads dbusbind inotify
dynamic-setting system-font-setting font-render-setting cairo gtk pgtk
lcms2 multi-tty make-network-process native-compile emacs)
Memory information:
((conses 16 105919 13638)
(symbols 48 9060 0)
(strings 32 24805 2351)
(string-bytes 1 725024)
(vectors 16 17316)
(vector-slots 8 354985 19128)
(floats 8 37 33)
(intervals 56 711 0)
(buffers 984 14))
[0001-Clicks-on-directory-line-kill-prev-buffer-if-option-.patch (text/x-diff, attachment)]
Added tag(s) patch.
Request was from
Stefan Kangas <stefankangas <at> gmail.com>
to
control <at> debbugs.gnu.org
.
(Sat, 16 Dec 2023 22:07:02 GMT)
Full text and
rfc822 format available.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#67856
; Package
emacs
.
(Thu, 21 Dec 2023 13:19:02 GMT)
Full text and
rfc822 format available.
Message #10 received at 67856 <at> debbugs.gnu.org (full text, mbox):
> Date: Sat, 16 Dec 2023 12:35:10 -0800
> From: Jared Finder via "Bug reports for GNU Emacs,
> the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org>
>
> The option dired-kill-when-opening-new-dired-buffer is not respected
> when clicking on parent directories in the directory line at the top
> of dired buffers. This can be fixed by calling
> dired--find-possibly-alternate-file instead of dired in the
> callback, as my attached patch does.
>
> I believe changing to dired--find-possibly-alternate-file is safe
> because from playing around with dired, the directory being clicked
> on must be a directory and can not contain wildcards at this point.
> Therefore, at this point it is known that the directory is just a
> plain directory (no wildcards) and so going through find-file
> machinery will have the intended result.
If we want to install this on the emacs-29 release branch, I'd prefer
a safer variant, which actually verified that we don't call
dired--find-possibly-alternate-file with a wildcard. That's because
we have quite a few features that place buffers in Dired mode, and we
could easily miss one that does have wildcards there.
So would you mind modifying the patch a little so that it checks
whether current-dir includes wildcards, and if so, calls 'dired'
instead of dired--find-possibly-alternate-file?
Thanks.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#67856
; Package
emacs
.
(Sun, 24 Dec 2023 20:12:02 GMT)
Full text and
rfc822 format available.
Message #13 received at 67856 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
On 2023-12-21 05:18, Eli Zaretskii wrote:
>> Date: Sat, 16 Dec 2023 12:35:10 -0800
>> From: Jared Finder via "Bug reports for GNU Emacs,
>> the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org>
>>
>> The option dired-kill-when-opening-new-dired-buffer is not respected
>> when clicking on parent directories in the directory line at the top
>> of dired buffers. This can be fixed by calling
>> dired--find-possibly-alternate-file instead of dired in the
>> callback, as my attached patch does.
>>
>> I believe changing to dired--find-possibly-alternate-file is safe
>> because from playing around with dired, the directory being clicked
>> on must be a directory and can not contain wildcards at this point.
>> Therefore, at this point it is known that the directory is just a
>> plain directory (no wildcards) and so going through find-file
>> machinery will have the intended result.
>
> If we want to install this on the emacs-29 release branch, I'd prefer
> a safer variant, which actually verified that we don't call
> dired--find-possibly-alternate-file with a wildcard. That's because
> we have quite a few features that place buffers in Dired mode, and we
> could easily miss one that does have wildcards there.
>
> So would you mind modifying the patch a little so that it checks
> whether current-dir includes wildcards, and if so, calls 'dired'
> instead of dired--find-possibly-alternate-file?
Done, new patch attached. Luckily, there already is a function that
does exactly the right check.
Feel free to alter the comment explaining why this third code path
exists. I wasn't sure the right style to indicate this type of
defensive code path that I am not certain is needed.
-- MJF
[0001-Clicks-on-directory-line-kill-prev-buffer-if-option-.patch (text/x-diff, attachment)]
Reply sent
to
Eli Zaretskii <eliz <at> gnu.org>
:
You have taken responsibility.
(Mon, 25 Dec 2023 13:09:01 GMT)
Full text and
rfc822 format available.
Notification sent
to
Jared Finder <jared <at> finder.org>
:
bug acknowledged by developer.
(Mon, 25 Dec 2023 13:09:02 GMT)
Full text and
rfc822 format available.
Message #18 received at 67856-done <at> debbugs.gnu.org (full text, mbox):
> Date: Sun, 24 Dec 2023 12:11:49 -0800
> From: Jared Finder <jared <at> finder.org>
> Cc: 67856 <at> debbugs.gnu.org
>
> On 2023-12-21 05:18, Eli Zaretskii wrote:
> >> Date: Sat, 16 Dec 2023 12:35:10 -0800
> >> From: Jared Finder via "Bug reports for GNU Emacs,
> >> the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org>
> >>
> >> The option dired-kill-when-opening-new-dired-buffer is not respected
> >> when clicking on parent directories in the directory line at the top
> >> of dired buffers. This can be fixed by calling
> >> dired--find-possibly-alternate-file instead of dired in the
> >> callback, as my attached patch does.
> >>
> >> I believe changing to dired--find-possibly-alternate-file is safe
> >> because from playing around with dired, the directory being clicked
> >> on must be a directory and can not contain wildcards at this point.
> >> Therefore, at this point it is known that the directory is just a
> >> plain directory (no wildcards) and so going through find-file
> >> machinery will have the intended result.
> >
> > If we want to install this on the emacs-29 release branch, I'd prefer
> > a safer variant, which actually verified that we don't call
> > dired--find-possibly-alternate-file with a wildcard. That's because
> > we have quite a few features that place buffers in Dired mode, and we
> > could easily miss one that does have wildcards there.
> >
> > So would you mind modifying the patch a little so that it checks
> > whether current-dir includes wildcards, and if so, calls 'dired'
> > instead of dired--find-possibly-alternate-file?
>
> Done, new patch attached. Luckily, there already is a function that
> does exactly the right check.
>
> Feel free to alter the comment explaining why this third code path
> exists. I wasn't sure the right style to indicate this type of
> defensive code path that I am not certain is needed.
Thanks, installed on the emacs-29 branch with some minor reformatting,
and closing the bug.
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Tue, 23 Jan 2024 12:24:08 GMT)
Full text and
rfc822 format available.
This bug report was last modified 1 year and 152 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.