Function: ibuffer-map-lines
ibuffer-map-lines is a byte-compiled function defined in
ibuffer.el.gz.
Signature
(ibuffer-map-lines FUNCTION &optional NOMODIFY GROUP)
Documentation
Call FUNCTION for each buffer.
Set the ibuffer modification flag unless NOMODIFY is non-nil.
If optional argument GROUP is non-nil, then only call FUNCTION on buffers in filtering group GROUP.
FUNCTION is called with two arguments: the buffer object itself and the current mark symbol.
Source Code
;; Defined in /usr/src/emacs/lisp/ibuffer.el.gz
(defun ibuffer-map-lines (function &optional nomodify group)
"Call FUNCTION for each buffer.
Set the ibuffer modification flag unless NOMODIFY is non-nil.
If optional argument GROUP is non-nil, then only call FUNCTION on
buffers in filtering group GROUP.
FUNCTION is called with two arguments:
the buffer object itself and the current mark symbol."
(ibuffer-assert-ibuffer-mode)
(ibuffer-forward-line 0)
(let* ((orig-target-line (1+ (count-lines (save-excursion
(goto-char (point-min))
(ibuffer-forward-line 0)
(point))
(point))))
(target-line-offset orig-target-line)
(ibuffer-map-lines-total 0)
(ibuffer-map-lines-count 0))
(unwind-protect
(progn
(setq buffer-read-only nil)
(goto-char (point-min))
(ibuffer-forward-line 0 t)
(while (and (not (eobp))
(not (get-text-property (point) 'ibuffer-summary))
(progn
(ibuffer-forward-line 0 t)
(and (not (eobp))
(not (get-text-property (point) 'ibuffer-summary)))))
(let ((result
(if (buffer-live-p (ibuffer-current-buffer))
(when (or (null group)
(ibuffer-aif (get-text-property (point) 'ibuffer-filter-group)
(equal group it)))
(save-excursion
(funcall function
(ibuffer-current-buffer)
(ibuffer-current-mark))))
;; Kill the line if the buffer is dead
'kill)))
;; A given mapping function should return:
;; nil if it chose not to affect the buffer
;; `kill' means the remove line from the buffer list
;; t otherwise
(cl-incf ibuffer-map-lines-total)
(cond ((null result)
(forward-line 1))
((eq result 'kill)
(delete-region (line-beginning-position)
(1+ (line-end-position)))
(cl-incf ibuffer-map-lines-count)
(when (< ibuffer-map-lines-total
orig-target-line)
(cl-decf target-line-offset)))
(t
(cl-incf ibuffer-map-lines-count)
(forward-line 1)))))
ibuffer-map-lines-count)
(progn
(setq buffer-read-only t)
(unless nomodify
(set-buffer-modified-p nil))
(goto-char (point-min))
(ibuffer-forward-line 0)
(ibuffer-forward-line (1- target-line-offset))))))