Subject: bug#76596: 30.1; dired-movement-style does not honor subdir operations

From: Drew Adams <[email-masked]>
Date: Tue, 4 Mar 2025 19:38:02 +0000

> It is not clear to me the value of having an option to prevent navigating
> to subdirs to reproduce the behavior shipped in 30.1. Why enforce two
> separate commands of navigation based on type? To me, subdir navigation is
> a subset of line navigation where line navigation moves the point to any
> non-blank line, and subdir navigation only applies to subdirs.
> 
> If it is insisted that enforcing separate commands for type navigation
> (file/directory, subdir) be supported, then please do _not_ make this
> option the default for dired-movement-style. I still consider such an
> option to be a user interface mistake.

+1, for not preventing navigation to subdirs.

I even see no particular value in skipping
blank lines!

The only value-added that I can see by the
"movement-style" feature is the `cycle' value
(which is the wrong name, BTW - should be
`wrap', as in "wrap around").

And wrapping around is something I added to 
dired+.el (and suggested for vanilla Emacs)
as an option (`diredp-wrap-around-flag') back
in 2013.  And it defaults to `t', because you
usually do want to wrap around.

And in Dired+ that option also affects other
movements:

* to the (ARGth) next/prev dir line (`>', `<')
* to the (ARGth) next/prev inserted listing
  (`C-M-n', `C-M-p')

Why the option is called "movement style" is
unclear.  And why does the Boolean choice of
skipping blank lines not apply for cycling?

`bounded': skip blank lines and don't wrap
`cycle'  : skip blank lines and wrap
nil      : don't skip blank lines and don't wrap

What's missing is "don't skip but wrap".
And that's maybe the most useful possibility.
(It's the default behavior for Dired+.)

If you really wanted to provide an option to
skip blank lines, that should have been a
Boolean, and separate from another Boolean
option to wrap around (misnomer "cycle").

Please tell me why cycling doesn't logically
apply to `C-M-n', `C-M-p', `>', and `<'.