Subject: Re: bug#70004: 30.0.50; vc-dir-mark-all-files doesn't work in *vc-dir* buffer

From: Eli Zaretskii <[email-masked]>
Date: Sun, 31 Mar 2024 12:17:29 +0300

> From: Bartosz Kaczyński <[email-masked]>
> Cc: [email-masked]
> Date: Fri, 29 Mar 2024 11:57:24 +0000
> 
> Eli Zaretskii <[email-masked]> writes:
> 
> > So can you try figuring out why it doesn't work correctly in that
> > repository?  What is different about that repository?
> 
> Ok, I found the dependency why it sometimes works and sometimes
> doesn't. It's about the point position when changes affect files in
> different directories. If the point is located in a different place than
> the line where the files are, for example, a line that points to a
> directory - then marking all files with the <M> key doesn't include all
> files.
> 
> --8<---------------cut here---------------start------------->8---
> VC backend : Git
> Working dir: ~/.emacs.d/
> Branch     : main
> Tracking   : origin/main
> Remote     : [email-masked]
> Stash      : Nothing stashed
> 
>                          ./
>      edited              init.el
>                          lisp/
>      edited              lisp/init-org.el
> --8<---------------cut here---------------end--------------->8---

Thanks, but I still don't think I understand (or if I do, cannot
reproduce).  The command bound to 'M' is documented thus:

  Mark all files with the same state as the current one.
  With prefix argument ARG, mark all files (not directories).
  If the current entry is a directory, mark all child files.

So if point is on a directory, the files under that directory should
be marked.  In your case, if point is on the line which says "lisp/",
the file lisp/init-org.el should be marked.  Does that not happen?

Or what doesn't happen in the example you show (please also tell where
point is when you press 'M')?