Function: ediff-operate-on-marked-sessions

ediff-operate-on-marked-sessions is a byte-compiled function defined in ediff-mult.el.gz.

Signature

(ediff-operate-on-marked-sessions OPERATION)

Source Code

;; Defined in /usr/src/emacs/lisp/vc/ediff-mult.el.gz
;; Apply OPERATION to marked sessions.  Operation expects one argument of type
;; meta-list member (not the first one), i.e., a regular session description.
;; Returns number of marked sessions on which operation was performed
(defun ediff-operate-on-marked-sessions (operation)
  (let ((grp-buf (ediff-get-group-buffer ediff-meta-list))
	(meta-list (cdr ediff-meta-list))
	(marksym ?*)
	(numMarked 0)
	(sessionNum 0)
	(diff-buffer ediff-meta-diff-buffer)
	session-buf elt)
    (while meta-list
      (setq elt (car meta-list)
	    meta-list (cdr meta-list)
	    sessionNum (1+ sessionNum))
      (cond ((eq (ediff-get-session-status elt) marksym)
	     (save-excursion
	       (setq numMarked (1+ numMarked))
	       (funcall operation elt sessionNum)))
	    ;; The following goes into a session represented by a subdirectory
	    ;; and applies operation to marked sessions there
	    ((and  (ediff-meta-session-p elt)
		   (ediff-buffer-live-p
		    (setq session-buf (ediff-get-session-buffer elt))))
	     (setq numMarked
		   (+ numMarked
		      (ediff-with-current-buffer session-buf
			;; pass meta-diff along
			(setq ediff-meta-diff-buffer diff-buffer)
			;; collect diffs in child group
			(ediff-operate-on-marked-sessions operation)))))))
    (ediff-update-meta-buffer grp-buf 'must-redraw) ; just in case
    numMarked
    ))