GNU bug report logs - #79042
29.4; dired-get-marked-files docstring is incorrect

Previous Next

Package: emacs;

Reported by: Sean McAfee <eefacm <at> gmail.com>

Date: Thu, 17 Jul 2025 20:49:02 UTC

Severity: normal

Found in version 29.4

Done: Eli Zaretskii <eliz <at> gnu.org>

To reply to this bug, email your comments to 79042 AT debbugs.gnu.org.
There is no need to reopen the bug first.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#79042; Package emacs. (Thu, 17 Jul 2025 20:49:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Sean McAfee <eefacm <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Thu, 17 Jul 2025 20:49:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Sean McAfee <eefacm <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 29.4; dired-get-marked-files docstring is incorrect
Date: Thu, 17 Jul 2025 13:47:01 -0700
[Message part 1 (text/plain, inline)]
Visit a directory with Dired, move to any file, and execute
the following code with eval-expression:

  (dired-get-marked-files nil 'marked)

It returns nil, even though the docstring for dired-get-marked-files
says "If ARG is any other [ie, not an integer] non-nil value, return
the current file name."  This is because the ARG argument is
passed to dired-map-over-marks, which interprets the symbol
"marked" in this way.

For context, I was looking for a way to get a list of marked files, or
nil if no files are explicitly marked.  The docstring for
dired-get-marked-files does not admit such a usage, but it actually is
possible, as described above.


In GNU Emacs 29.4 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.41,
 cairo version 1.18.0) of 2025-01-29 built on system76-pc Windowing
 system distributor 'The X.Org Foundation', version 11.0.12302006 System
 Description: Ubuntu 24.04.1 LTS

Configured using:
 'configure --with-json --with-tree-sitter'

Configured features:
CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON
LIBSELINUX LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND
SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM
XINPUT2 XPM GTK3 ZLIB

Important settings:
  value of $LC_MONETARY: en_US.UTF-8
  value of $LC_NUMERIC: en_US.UTF-8
  value of $LC_TIME: en_US.UTF-8
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: ELisp/l

Minor modes in effect:
  recentf-mode: t
  emms-mode-line-mode: t
  emms-playing-time-display-mode: t
  emms-playing-time-mode: t
  volatile-highlights-mode: t
  projectile-mode: t
  elisp-slime-nav-mode: t
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  shell-dirtrack-mode: t
  global-flycheck-mode: t
  flycheck-mode: t
  minibuffer-depth-indicate-mode: t
  ido-vertical-mode: t
  global-undo-tree-mode: t
  undo-tree-mode: t
  paredit-mode: t
  override-global-mode: t
  desktop-save-mode: t
  winner-mode: t
  electric-pair-mode: t
  savehist-mode: t
  ido-everywhere: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  global-prettify-symbols-mode: t
  prettify-symbols-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
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
~/emacs/ack hides /home/mcafee/.emacs.d/elpa/ack-1.11/ack
/home/mcafee/.emacs.d/elpa/git-commit-20240123.1358/git-commit hides
/home/mcafee/.emacs.d/elpa/magit-20241223.2133/git-commit
/home/mcafee/.emacs.d/elpa/transient-20241224.2234/transient hides
/usr/local/share/emacs/29.4/lisp/transient
/home/mcafee/.emacs.d/elpa/bind-key-20230203.2004/bind-key hides
/usr/local/share/emacs/29.4/lisp/use-package/bind-key
/home/mcafee/.emacs.d/elpa/use-package-20230426.2324/use-package-ensure
hides /usr/local/share/emacs/29.4/lisp/use-package/use-package-ensure
/home/mcafee/.emacs.d/elpa/use-package-20230426.2324/use-package-lint hides
/usr/local/share/emacs/29.4/lisp/use-package/use-package-lint
/home/mcafee/.emacs.d/elpa/use-package-20230426.2324/use-package-core hides
/usr/local/share/emacs/29.4/lisp/use-package/use-package-core
/home/mcafee/.emacs.d/elpa/use-package-20230426.2324/use-package hides
/usr/local/share/emacs/29.4/lisp/use-package/use-package
/home/mcafee/.emacs.d/elpa/use-package-20230426.2324/use-package-bind-key
hides /usr/local/share/emacs/29.4/lisp/use-package/use-package-bind-key
/home/mcafee/.emacs.d/elpa/use-package-20230426.2324/use-package-jump hides
/usr/local/share/emacs/29.4/lisp/use-package/use-package-jump
/home/mcafee/.emacs.d/elpa/use-package-20230426.2324/use-package-diminish
hides /usr/local/share/emacs/29.4/lisp/use-package/use-package-diminish
/home/mcafee/.emacs.d/elpa/use-package-20230426.2324/use-package-delight
hides /usr/local/share/emacs/29.4/lisp/use-package/use-package-delight
~/emacs/japanese hides /usr/local/share/emacs/29.4/lisp/language/japanese
~/emacs/chinese hides /usr/local/share/emacs/29.4/lisp/language/chinese

Features:
(shadow mail-extr emacsbug pulse misearch multi-isearch shortdoc
help-fns radix-tree executable recentf tree-widget conf-mode view vc-git
org-bullets org-element org-persist org-id org-refile avl-tree oc-basic
ol-eww eww xdg url-queue mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus
nnselect gnus-art mm-uu mml2015 mm-view mml-smime smime gnutls dig
gnus-sum shr pixel-fill kinsoku url-file svg gnus-group gnus-undo
gnus-start gnus-dbus gnus-cloud nnimap nnmail mail-source utf7 nnoo
parse-time gnus-spec gnus-int gnus-range gnus-win ol-docview doc-view
jka-compr image-mode exif ol-bibtex bibtex iso8601 ol-bbdb ol-w3m ol-doi
org-link-doi raku-detect org ob ob-tangle ob-ref ob-lob ob-table ob-exp
org-macro org-src ob-comint org-pcomplete org-list org-footnote
org-faces org-entities noutline outline ob-emacs-lisp ob-core ob-eval
org-cycle org-table ol org-fold org-fold-core org-keys oc org-loaddefs
cal-menu calendar cal-loaddefs org-version org-compat org-macs
gnus-dired dired-launch emms-idapi-browser emms-idapi
emms-idapi-musicbrainz emms-mpris dbus emms-librefm-stream xml
emms-librefm-scrobbler emms-playlist-limit emms-i18n emms-history
emms-score emms-stream-info emms-metaplaylist-mode emms-bookmarks
emms-cue emms-mode-line-icon emms-browser sort emms-volume
emms-volume-sndioctl emms-volume-mixerctl emms-volume-pulse
emms-volume-amixer emms-playlist-sort emms-last-played emms-player-xine
emms-player-mpd tq emms-lyrics emms-url emms-streams emms-show-all
emms-tag-editor emms-tag-tracktag emms-mark emms-mode-line emms-cache
emms-info-native emms-info-native-spc emms-info-native-mp3
emms-info-native-ogg emms-info-native-opus emms-info-native-flac
emms-info-native-vorbis bindat emms-info-exiftool emms-info-tinytag
emms-info-metaflac emms-info-opusinfo emms-info-ogginfo
emms-info-mp3info emms-playlist-mode emms-player-vlc emms-player-mpv
emms-playing-time emms-info emms-later-do emms-player-mplayer
emms-player-simple emms-source-playlist emms-source-file locate
emms-setup emms emms-compat treesit-auto xref-js2 vc vc-dispatcher
js2-mode js c-ts-common treesit cc-mode cc-fonts cc-guess cc-menus
cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs dired-filter f
dired-hacks-utils dired-aux dired-x shell-pop term disp-table ehelp
beginend volatile-highlights iedit iedit-lib
mc-hide-unmatched-lines-mode mc-mark-more tagedit s sgml-mode facemenu
dom mc-cycle-cursors multiple-cursors-core rect dtrt-indent advice
projectile lisp-mnt grep ibuf-ext ibuffer ibuffer-loaddefs
elisp-slime-nav etags fileloop generator xref project magit-submodule
magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull
magit-fetch magit-clone magit-remote magit-commit magit-sequence
magit-notes magit-worktree magit-tag magit-merge magit-branch
magit-reset magit-files magit-refs magit-status magit magit-repos
magit-apply magit-wip magit-log which-func imenu magit-diff smerge-mode
diff-mode git-commit log-edit message sendmail yank-media puny dired
dired-loaddefs rfc822 mml mml-sec epa epg rfc6068 epg-config mm-decode
mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums
mailabbrev gmm-utils mailheader pcvs-util add-log magit-core
magit-autorevert autorevert filenotify magit-margin magit-transient
magit-process with-editor shell pcomplete server magit-mode transient
benchmark magit-git magit-base magit-section format-spec cursor-sensor
crm compat compat-30 ido-completing-read+ memoize cus-edit pp cus-load
icons minibuf-eldef flycheck find-func diminish gnus nnheader gnus-util
time-date mail-utils range mm-util mail-prsvr wid-edit autoinsert misc
sanityinc-tomorrow-blue-theme color-theme-sanityinc-tomorrow color
mb-depth files-x ido-vertical-mode undo-tree diff queue ack derived
compile text-property-search paredit edmacro kmacro dash cl-extra
help-mode use-package use-package-ensure use-package-delight
use-package-diminish use-package-bind-key bind-key easy-mmode
use-package-core desktop frameset finder-inf winner elec-pair savehist
hippie-exp comint ansi-osc ansi-color ring thingatpt ido cl
color-theme-sanityinc-tomorrow-autoloads dired-filter-autoloads
dired-launch-autoloads dired-ranger-autoloads
dired-hacks-utils-autoloads dtrt-indent-autoloads emms-autoloads
expand-region-autoloads f-autoloads fix-word flycheck-autoloads
git-link-autoloads git-timemachine-autoloads haskell-mode-autoloads
helm-autoloads helm-core-autoloads async-autoloads magit-autoloads pcase
magit-section-autoloads markdown-mode-autoloads
multiple-cursors-autoloads nov-autoloads paredit-autoloads
projectile-autoloads rx shell-pop-autoloads transient-autoloads
treesit-auto-autoloads volatile-highlights-autoloads wfnames-autoloads
with-editor-autoloads info compat-autoloads js2-mode-autoloads
yasnippet-autoloads package browse-url url url-proxy url-privacy
url-expand url-methods url-history url-cookie generate-lisp-file
url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq
eieio eieio-core cl-macs password-cache json subr-x map byte-opt gv
bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc iso-transl tooltip
cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
elisp-mode mwheel term/x-win x-win term/common-win x-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
move-toolbar gtk x-toolkit xinput2 x multi-tty make-network-process
emacs)

Memory information:
((conses 16 1036589 83243)
 (symbols 48 50195 11)
 (strings 32 279255 11680)
 (string-bytes 1 7740814)
 (vectors 16 101791)
 (vector-slots 8 1879206 240753)
 (floats 8 572 113)
 (intervals 56 52623 352)
 (buffers 984 71))
[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79042; Package emacs. (Thu, 17 Jul 2025 22:43:02 GMT) Full text and rfc822 format available.

Message #8 received at 79042 <at> debbugs.gnu.org (full text, mbox):

From: Drew Adams <drew.adams <at> oracle.com>
To: Sean McAfee <eefacm <at> gmail.com>, "79042 <at> debbugs.gnu.org"
 <79042 <at> debbugs.gnu.org>
Subject: RE: [External] : bug#79042: 29.4; dired-get-marked-files docstring is
 incorrect
Date: Thu, 17 Jul 2025 22:42:42 +0000
Good find!

It's not a doc bug, it's a product bug - a regression
introduced in Emacs 29.  In prior versions it works
as the doc says: (dired-get-marked-files nil 'marked)
returns the file name on the current line.

The bug occurs only with symbol `marked' passed as
the second arg.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79042; Package emacs. (Fri, 18 Jul 2025 03:41:01 GMT) Full text and rfc822 format available.

Message #11 received at 79042 <at> debbugs.gnu.org (full text, mbox):

From: Sean McAfee <eefacm <at> gmail.com>
To: Drew Adams <drew.adams <at> oracle.com>, 79042 <at> debbugs.gnu.org
Subject: Re: [External] : bug#79042: 29.4;
 dired-get-marked-files docstring is incorrect
Date: Thu, 17 Jul 2025 20:39:52 -0700
[Message part 1 (text/plain, inline)]
On Thu, Jul 17, 2025 at 3:42 PM Drew Adams <drew.adams <at> oracle.com> wrote:

> Good find!
>
> It's not a doc bug, it's a product bug - a regression
> introduced in Emacs 29.  In prior versions it works
> as the doc says: (dired-get-marked-files nil 'marked)
> returns the file name on the current line.
>

Wait, so dired-get-marked-files isn't *supposed* to be able to distinguish
between
a single explicitly marked file and no files being marked?  But that's
information
that I need.  How do I get it, if not with dired-get-marked-files?
[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79042; Package emacs. (Fri, 18 Jul 2025 16:28:02 GMT) Full text and rfc822 format available.

Message #14 received at 79042 <at> debbugs.gnu.org (full text, mbox):

From: Drew Adams <drew.adams <at> oracle.com>
To: Sean McAfee <eefacm <at> gmail.com>, "79042 <at> debbugs.gnu.org"
 <79042 <at> debbugs.gnu.org>
Subject: RE: [External] : bug#79042: 29.4; dired-get-marked-files docstring is
 incorrect
Date: Fri, 18 Jul 2025 16:27:36 +0000
>> It's not a doc bug, it's a product bug - a regression
>> introduced in Emacs 29.  In prior versions it works
>> as the doc says: (dired-get-marked-files nil 'marked)
>> returns the file name on the current line.
>
> Wait, so dired-get-marked-files isn't supposed to be able to 
> distinguish between a single explicitly marked file and no files 
> being marked?  But that's information that I need.
> How do I get it, if not with dired-get-marked-files?

Mea culpa.  I shouldn't have said the Emacs 29+ behavior
of recognizing a special `marked' value for ARG is a bug.
(It's maybe not the best way to allow that behavior, but
it's OK.)

And I guess you're right, that that code change made the
`dired-get-marked-files' doc incorrect.  So your report
is a good one.  Sorry for the noise.

`dired-get-marked-files' is pretty much a utility function
for defining commands, i.e., for interactive use, which is
why it returns the file name of the current line if there
are no explicit marks.

You can use macro `dired-map-over-marks' (in Emacs 29+) to
do what you want:

(defun my-marked-files-list (&optional localp distinguish-one-marked)
  "..."
  (delq nil (save-excursion
              (dired-map-over-marks (dired-get-filename localp 'NO-ERROR)
				              'marked
				              nil
				              distinguish-one-marked))))

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79042; Package emacs. (Fri, 18 Jul 2025 19:02:02 GMT) Full text and rfc822 format available.

Message #17 received at 79042 <at> debbugs.gnu.org (full text, mbox):

From: Sean McAfee <eefacm <at> gmail.com>
To: Drew Adams <drew.adams <at> oracle.com>
Cc: "79042 <at> debbugs.gnu.org" <79042 <at> debbugs.gnu.org>
Subject: Re: [External] : bug#79042: 29.4;
 dired-get-marked-files docstring is incorrect
Date: Fri, 18 Jul 2025 12:01:20 -0700
[Message part 1 (text/plain, inline)]
On Fri, Jul 18, 2025 at 9:27 AM Drew Adams <drew.adams <at> oracle.com> wrote:

> >> It's not a doc bug, it's a product bug - a regression
> >> introduced in Emacs 29.  In prior versions it works
> >> as the doc says: (dired-get-marked-files nil 'marked)
> >> returns the file name on the current line.
> >
> > Wait, so dired-get-marked-files isn't supposed to be able to
> > distinguish between a single explicitly marked file and no files
> > being marked?  But that's information that I need.
> > How do I get it, if not with dired-get-marked-files?
>
> Mea culpa.  I shouldn't have said the Emacs 29+ behavior
> of recognizing a special `marked' value for ARG is a bug.
> (It's maybe not the best way to allow that behavior, but
> it's OK.)
>

I understood, I'm just astonished that the current behavior is
considered a bug, since it seems so useful.  Is there a
compelling reason not to allow dired-get-marked-files to
return nil when no files are explicitly marked, when it's
given a special distinguished value for ARG?  It's a
pattern that's used in many other places.
[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79042; Package emacs. (Fri, 18 Jul 2025 21:09:02 GMT) Full text and rfc822 format available.

Message #20 received at 79042 <at> debbugs.gnu.org (full text, mbox):

From: Drew Adams <drew.adams <at> oracle.com>
To: Sean McAfee <eefacm <at> gmail.com>
Cc: "79042 <at> debbugs.gnu.org" <79042 <at> debbugs.gnu.org>
Subject: RE: [External] : bug#79042: 29.4; dired-get-marked-files docstring is
 incorrect
Date: Fri, 18 Jul 2025 21:08:12 +0000
> I understood, I'm just astonished that the current behavior
> is considered a bug, since it seems so useful.

As I said, I mistakenly said this new (>= Emacs 29)
behavior is a bug.  As you said at the outset, the
`dired-get-marked-files' doc could/should be updated
to reflect this new behavior.  Other functions that
use `dired-map-over-marks' might also need to have
their doc updated for the ARG description.

> Is there a compelling reason not to allow
> dired-get-marked-files to return nil when no files
> are explicitly marked, when it's given a special
> distinguished value for ARG?  It's a pattern that's
> used in many other places.

I gave a reason why I think it hasn't bothered to
allow that: existing uses of `dired-get-marked-files'
are for _commands_ where it's a _feature_ to pick up
the file name on the current line if ARG isn't an
integer and no lines are explicitly marked.  (And of
course those existing commands haven't provided an
interactive way to get an ARG value of `marked'.)

In sum, I think the doc of `dired-get-marked-files'
was based on its behavior, which was based on the
existing uses of it, which was by commands that had
no particular use for the ARG=`marked' behavior and
provided no way to get such a value interactively.

It's _possible_ that `dired-map-over-marks' was
changed without a lot of thought about all of its
existing or possible new uses.  I don't know.

With Emacs 29 changing `dired-map-over-marks' to
recognize ARG = `marked', the behavior of functions
that use that macro also changes (unless they get
changed to call `dired-map-over-marks' differently).
One such function is `dired-get-marked-files'.

Other functions also use `dired-map-over-marks', in 
`dired.el', `dired-aux.el', `dired-x.el', `ediff.el',
`message.el', and `image-dired-dired.el.  Someone
fixing the doc of `dired-get-marked-files' for this
bug could check their doc strings as well.  (And
similarly for functions that use such functions, if
their own doc describes the same ARG.)

___

FWIW (only related as another change to ARG behavior):

In my own code (Dired+), if argument ARG of 
`dired-get-marked-files' is a cons (e.g. from using
`C-u' with a command that calls it) then it returns
_all_ files, ignoring any marks, as follows:

 If ARG is a cons with element 16, 64, or 256, corresponding to
  `C-u C-u', `C-u C-u C-u', or `C-u C-u C-u C-u', then use all files
  in the Dired buffer, where:
    16 includes NO directories (including `.' and `..')
    64 includes directories EXCEPT `.' and `..'
   256 includes ALL directories (including `.' and `..')

(This is implemented by the Dired+ version of
`dired-map-over-marks'.)

IMO, being able to _keep a set of markings_ and act
on all files is an important, and common, use case.

And now, because of the Emacs 29 `dired-map-over-marks'
change, it has a new possibility: passing it an ARG of
`marked' from Lisp.  (I haven't given users a way to do
that interactively, and probably won't.)

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79042; Package emacs. (Sat, 19 Jul 2025 10:07:02 GMT) Full text and rfc822 format available.

Message #23 received at 79042 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Sean McAfee <eefacm <at> gmail.com>
Cc: 79042 <at> debbugs.gnu.org, drew.adams <at> oracle.com
Subject: Re: bug#79042: 29.4; dired-get-marked-files docstring is incorrect
Date: Sat, 19 Jul 2025 13:06:36 +0300
> Cc: "79042 <at> debbugs.gnu.org" <79042 <at> debbugs.gnu.org>
> From: Sean McAfee <eefacm <at> gmail.com>
> Date: Fri, 18 Jul 2025 12:01:20 -0700
> 
> On Fri, Jul 18, 2025 at 9:27 AM Drew Adams <drew.adams <at> oracle.com> wrote:
> 
>  >> It's not a doc bug, it's a product bug - a regression
>  >> introduced in Emacs 29.  In prior versions it works
>  >> as the doc says: (dired-get-marked-files nil 'marked)
>  >> returns the file name on the current line.
>  >
>  > Wait, so dired-get-marked-files isn't supposed to be able to 
>  > distinguish between a single explicitly marked file and no files 
>  > being marked?  But that's information that I need.
>  > How do I get it, if not with dired-get-marked-files?

You could call dired-get-marked-files with nil ARG and then with ARG
equal to 'marked', and compare the results.

>  Mea culpa.  I shouldn't have said the Emacs 29+ behavior
>  of recognizing a special `marked' value for ARG is a bug.
>  (It's maybe not the best way to allow that behavior, but
>  it's OK.)
> 
> I understood, I'm just astonished that the current behavior is
> considered a bug, since it seems so useful.  Is there a
> compelling reason not to allow dired-get-marked-files to
> return nil when no files are explicitly marked, when it's
> given a special distinguished value for ARG?  It's a
> pattern that's used in many other places.

The previous behavior wasn't a bug.  The new special value of 'marked'
was introduced in support of the new user option
dired-mouse-drag-files, which needs to distinguish between the two
cases.  Since the special value 'marked' is new in Emacs 29, and used
only in a couple of places, I don't understand why you are saying that
it's "a pattern that's used in many other places".  How could that be
true?  Is there perhaps a misunderstanding here?  What are the
specific practical problems you encountered with this new feature?

Your original report said:

> For context, I was looking for a way to get a list of marked files, or
> nil if no files are explicitly marked.  The docstring for
> dired-get-marked-files does not admit such a usage, but it actually is
> possible, as described above.

This is explicitly possible using this new value.  So I'm not sure
what other issues did you have in this regard.

In any case, I've updated (on the emacs-30 release branch) the doc
strings of the relevant functions with the effect of the special value
'marked'.  I think this is all we need to do in this bug.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79042; Package emacs. (Sun, 20 Jul 2025 20:49:01 GMT) Full text and rfc822 format available.

Message #26 received at 79042 <at> debbugs.gnu.org (full text, mbox):

From: Sean McAfee <eefacm <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 79042 <at> debbugs.gnu.org, drew.adams <at> oracle.com
Subject: Re: bug#79042: 29.4; dired-get-marked-files docstring is incorrect
Date: Sun, 20 Jul 2025 13:47:41 -0700
[Message part 1 (text/plain, inline)]
On Sat, Jul 19, 2025 at 3:06 AM Eli Zaretskii <eliz <at> gnu.org> wrote:

> The previous behavior wasn't a bug.  The new special value of 'marked'
> was introduced in support of the new user option
> dired-mouse-drag-files, which needs to distinguish between the two
> cases.  Since the special value 'marked' is new in Emacs 29, and used
> only in a couple of places, I don't understand why you are saying that
> it's "a pattern that's used in many other places".  How could that be
> true?


The pattern I mentioned is that of a function modifying its behavior
if it receives a "special distinguished value" for an argument; for
example, an argument that is usually an integer may also be some
special symbol value.

Look, long story short, when the first response said the report was
"not a doc bug," I interpreted that to mean that the current docstring
is correct, and dired-map-over-marks is not meant to do anything
special if given the symbol "marked" for ARG, since the docstring
doesn't mention it.  The second response still seemed somewhat
ambiguous to me, since it offered a function my-marked-files-list
that I could use instead of dired-get-marked-files.  Why would I
want or need that, if the functionality of dired-get-marked-files
weren't going to change?

In any case, I've updated (on the emacs-30 release branch) the doc
> strings of the relevant functions with the effect of the special value
> 'marked'.  I think this is all we need to do in this bug.
>

Yes!  Thank you!  That is exactly what I wanted and expected to
happen when I filed my bug.
[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79042; Package emacs. (Mon, 21 Jul 2025 11:11:02 GMT) Full text and rfc822 format available.

Message #29 received at 79042 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Sean McAfee <eefacm <at> gmail.com>
Cc: 79042 <at> debbugs.gnu.org, drew.adams <at> oracle.com
Subject: Re: bug#79042: 29.4; dired-get-marked-files docstring is incorrect
Date: Mon, 21 Jul 2025 14:10:17 +0300
> From: Sean McAfee <eefacm <at> gmail.com>
> Date: Sun, 20 Jul 2025 13:47:41 -0700
> Cc: drew.adams <at> oracle.com, 79042 <at> debbugs.gnu.org
> 
> On Sat, Jul 19, 2025 at 3:06 AM Eli Zaretskii <eliz <at> gnu.org> wrote:
> 
>  The previous behavior wasn't a bug.  The new special value of 'marked'
>  was introduced in support of the new user option
>  dired-mouse-drag-files, which needs to distinguish between the two
>  cases.  Since the special value 'marked' is new in Emacs 29, and used
>  only in a couple of places, I don't understand why you are saying that
>  it's "a pattern that's used in many other places".  How could that be
>  true?
> 
> The pattern I mentioned is that of a function modifying its behavior
> if it receives a "special distinguished value" for an argument; for
> example, an argument that is usually an integer may also be some
> special symbol value.
> 
> Look, long story short, when the first response said the report was
> "not a doc bug," I interpreted that to mean that the current docstring
> is correct, and dired-map-over-marks is not meant to do anything
> special if given the symbol "marked" for ARG, since the docstring
> doesn't mention it.  The second response still seemed somewhat
> ambiguous to me, since it offered a function my-marked-files-list
> that I could use instead of dired-get-marked-files.  Why would I
> want or need that, if the functionality of dired-get-marked-files
> weren't going to change?

I'm sorry about the confusion.  I understood that Drew was trying to
help you by showing a variant of an existing function which could
maybe solve a different use case.

>  In any case, I've updated (on the emacs-30 release branch) the doc
>  strings of the relevant functions with the effect of the special value
>  'marked'.  I think this is all we need to do in this bug.
> 
> Yes!  Thank you!  That is exactly what I wanted and expected to
> happen when I filed my bug.

OK, so I guess we can now close this bug?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79042; Package emacs. (Mon, 21 Jul 2025 20:58:01 GMT) Full text and rfc822 format available.

Message #32 received at 79042 <at> debbugs.gnu.org (full text, mbox):

From: Sean McAfee <eefacm <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 79042 <at> debbugs.gnu.org, drew.adams <at> oracle.com
Subject: Re: bug#79042: 29.4; dired-get-marked-files docstring is incorrect
Date: Mon, 21 Jul 2025 13:56:44 -0700
[Message part 1 (text/plain, inline)]
On Mon, Jul 21, 2025 at 4:10 AM Eli Zaretskii <eliz <at> gnu.org> wrote:

> OK, so I guess we can now close this bug?
>

Sounds good to me!
[Message part 2 (text/html, inline)]

Reply sent to Eli Zaretskii <eliz <at> gnu.org>:
You have taken responsibility. (Tue, 22 Jul 2025 12:47:01 GMT) Full text and rfc822 format available.

Notification sent to Sean McAfee <eefacm <at> gmail.com>:
bug acknowledged by developer. (Tue, 22 Jul 2025 12:47:01 GMT) Full text and rfc822 format available.

Message #37 received at 79042-done <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Sean McAfee <eefacm <at> gmail.com>
Cc: drew.adams <at> oracle.com, 79042-done <at> debbugs.gnu.org
Subject: Re: bug#79042: 29.4; dired-get-marked-files docstring is incorrect
Date: Tue, 22 Jul 2025 15:46:25 +0300
> From: Sean McAfee <eefacm <at> gmail.com>
> Date: Mon, 21 Jul 2025 13:56:44 -0700
> Cc: drew.adams <at> oracle.com, 79042 <at> debbugs.gnu.org
> 
> On Mon, Jul 21, 2025 at 4:10 AM Eli Zaretskii <eliz <at> gnu.org> wrote:
> 
>  OK, so I guess we can now close this bug?
> 
> Sounds good to me!

Thanks, done.




This bug report was last modified 24 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.