diff options
author | Richard M. Stallman <rms@gnu.org> | 1993-06-15 07:59:07 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1993-06-15 07:59:07 +0000 |
commit | cfe89c4fa50b7f7e72c0e9d3c699f00ed17025db (patch) | |
tree | c86eb561521b981e65a32ed69233832d0d588526 /lisp/dired.el | |
parent | eebaeadde2e9cd812dd5b3eebf3860164338feb0 (diff) | |
download | emacs-cfe89c4fa50b7f7e72c0e9d3c699f00ed17025db.tar.gz |
(dired-repeat-over-lines): Going fwd, skip new lines
that FUNCTION inserts after the current line.
Going backwd, no need for dired-move-to-filename each time.
Diffstat (limited to 'lisp/dired.el')
-rw-r--r-- | lisp/dired.el | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/lisp/dired.el b/lisp/dired.el index 949eaec83f6..20a3267810d 100644 --- a/lisp/dired.el +++ b/lisp/dired.el @@ -1542,21 +1542,27 @@ Optional argument means return a file name relative to `default-directory'." (defun dired-repeat-over-lines (arg function) ;; This version skips non-file lines. - (beginning-of-line) - (while (and (> arg 0) (not (eobp))) - (setq arg (1- arg)) - (beginning-of-line) - (while (and (not (eobp)) (dired-between-files)) (forward-line 1)) - (save-excursion (funcall function)) - (forward-line 1)) - (while (and (< arg 0) (not (bobp))) - (setq arg (1+ arg)) - (forward-line -1) - (while (and (not (bobp)) (dired-between-files)) (forward-line -1)) + (let ((pos (make-marker))) (beginning-of-line) - (save-excursion (funcall function)) - (dired-move-to-filename)) - (dired-move-to-filename)) + (while (and (> arg 0) (not (eobp))) + (setq arg (1- arg)) + (beginning-of-line) + (while (and (not (eobp)) (dired-between-files)) (forward-line 1)) + (save-excursion + (forward-line 1) + (move-marker pos (1+ (point)))) + (save-excursion (funcall function)) + ;; Advance to the next line--actually, to the line that *was* next. + ;; (If FUNCTION inserted some new lines in between, skip them.) + (goto-char pos)) + (while (and (< arg 0) (not (bobp))) + (setq arg (1+ arg)) + (forward-line -1) + (while (and (not (bobp)) (dired-between-files)) (forward-line -1)) + (beginning-of-line) + (save-excursion (funcall function))) + (move-marker pos nil) + (dired-move-to-filename))) (defun dired-between-files () ;; Point must be at beginning of line |