Subject: bug#41097: 28.0.50; (dired-toggle-marks) not working after copy

From: Drew Adams <[email-masked]>
Date: Sun, 10 May 2020 12:18:18 -0700 (PDT)

> > Please reconsider.
> 
> Done.
> 
> > Can you point to any other occurrence of referring
> > to some mark other than `D' as a "flag" - anywhere
> > in the Dired doc or code?  All marks, including
> > `D', are marks.  Only `D' is called "flag".
> 
> "Flag" is just a word.

So is "mark".  What is your point?  Only `D' has
been called a flag by Emacs, until now.

Dired actions affect marks differently, depending
on the mark.  There are 3 kinds of actions - 3
groups of marks:

1. Actions that affect only mark `*'.
2. Actions that affect only mark `D'.
3. Actions that affect all marks (including
   `*' and `D').

By "affect" I mean either act on a file line that
has such a mark or add such a mark to a file line.

How to refer to these actions, these groups
of marks?  Up until your change:

1. Emacs has always referred to #1 as "mark",
   not making specific mention that only `*'
   is affected.  This is the most common kind of
   action and the most common kind of mark used.

2. Emacs has always, everywhere, referred ONLY
   to #2 as "flag", including the specific action
   of UNflagging as "unflag".  That said, see #3.

3. Emacs has always, for actions that affect ALL
   marks or ANY mark (including `D' and `*'),
   referred to #3 as "mark".

Could Emacs have spoken differently?
Yes, here's a possibility (not taken by Emacs):

1. Refer ONLY to #1 (`*') as "mark".

2. Refer to #2 as "flag `D'", "flag for deletion".

3. Refer to #3 as "marks and flags" and "mark
   or flag", and point out specifically that `C',
   `D', etc. are "flags", whereas `*' is the only
   "mark".

Either of those approaches, the one Emacs has
used or the other, is doable, reasonable.

But what you've done is instead inconsistent.
In a single doc string you've changed the
terminology, to refer to `C' as a "flag".  No
such change for other non-`*' marks.

That means that doc for #3 is not only wrong
but self-contradictory, as it still talks about
the existence of multiple kinds of "mark" -
different characters.

You say you've reconsidered.  I'd ask that you
reconsider again.  And please elaborate on your
"'Flag' is just a word" response to my question:

  Can you point to any other occurrence of
  referring to some mark other than `D' as a
  "flag" - anywhere in the Dired doc or code?  

That's not a rhetorical question.  I know of
no such occurrence.  Do you?  I think what I've
said above is correct, regarding #1, #2, #3.

Words matter.  I gave a reason why I think
Emacs chose to use "flag" for `D' - and only
for `D': to flag something is to draw special
attention to it.

Your change works against that.  If `C' is now
referred to as a "flag" then `D' isn't special
in that regard. Users can conclude that all
marks except `*' are now "flags".

Note, BTW, that mark `R' is handled the way
mark `C' is handled.  It comes from rename
operations.  Likewise, `H' (new hard links)
and `Y' (new soft links).

And each of those cases (copy, rename, hard
link, soft link) has a user option that you
can set to `t' to cause the target to be
marked not with the default mark (`C' etc.)
but with whatever mark the source file had.

And the doc for each of those options talks
about "marks" and "marking", not "flags" and
"flagging".  The doc for `dired-del-marker',
on the other hand, says "flag", exceptionally.