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:
parent
eebaeadde2
commit
cfe89c4fa5
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user