1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-24 07:20:37 +00:00

(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.
This commit is contained in:
Richard M. Stallman 1993-06-15 07:59:07 +00:00
parent eebaeadde2
commit cfe89c4fa5

View File

@ -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))
(let ((pos (make-marker)))
(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))
(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