diff options
-rw-r--r-- | lisp/dired.el | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/lisp/dired.el b/lisp/dired.el index 90d944c5dd4..17c8ba5f123 100644 --- a/lisp/dired.el +++ b/lisp/dired.el @@ -2888,15 +2888,19 @@ is controlled by `dired-movement-style'." (setq wrapped t)) ;; `bounded': go back to the last non-empty line. (dired-movement-style ; Either 'bounded or anything else non-nil. - (while (and (dired-between-files) (not (zerop arg))) + (while (and (dired-between-files) + (not (dired-get-subdir)) + (not (zerop arg))) (funcall jumpfun (- moving-down)) ;; Point not moving means infinite loop. (if (= old-position (point)) (setq arg 0) (setq old-position (point)))) ;; Encountered a boundary, so let's stop movement. - (setq arg (if (dired-between-files) 0 moving-down))))) - (unless (dired-between-files) + (setq arg (if (and (dired-between-files) + (not (dired-get-subdir))) + 0 moving-down))))) + (unless (and (dired-between-files) (not (dired-get-subdir))) ;; Has moved to a non-empty line. This movement does ;; make sense. (cl-decf arg moving-down)) |