Function: ediff-redraw-directory-group-buffer

ediff-redraw-directory-group-buffer is a byte-compiled function defined in ediff-mult.el.gz.

Signature

(ediff-redraw-directory-group-buffer META-LIST)

Source Code

;; Defined in /usr/src/emacs/lisp/vc/ediff-mult.el.gz
;; this is a setup function for ediff-directories
;; must return meta-buffer
(defun ediff-redraw-directory-group-buffer (meta-list)
  ;; extract directories
  (let ((meta-buf (ediff-get-group-buffer meta-list))
	(empty t)
	(sessionNum 0)
	regexp elt merge-autostore-dir
	point tmp-list buffer-read-only)
    (ediff-with-current-buffer meta-buf
      (setq point (point))
      (erase-buffer)
      ;; delete phony overlays that used to represent sessions before the buff
      ;; was redrawn
      (mapc #'delete-overlay (overlays-in 1 1))

      (setq regexp (ediff-get-group-regexp meta-list)
	    merge-autostore-dir
	    (ediff-get-group-merge-autostore-dir meta-list))

      (if ediff-verbose-help-enabled
	  (progn
	    (insert (format ediff-meta-buffer-verbose-message
			    (ediff-abbrev-jobname ediff-metajob-name)))

	    (cond ((ediff-collect-diffs-metajob)
		   (insert
		    "     P:\tcollect custom diffs of all marked sessions\n"))
		  ((ediff-patch-metajob)
		   (insert
		    "     P:\tshow patch appropriately for the context (session or group)\n")))
	    (insert
	     "     ^:\tshow parent session group\n")
	    (or (ediff-one-filegroup-metajob)
		(insert
		 "     D:\tshow differences among directories\n"
		 "    ==:\tfor each session, show which files are identical\n"
		 "    =h:\tlike ==, but also marks sessions for hiding\n"
		 "    =m:\tlike ==, but also marks sessions for operation\n\n")))
	(insert (format ediff-meta-buffer-brief-message
			(ediff-abbrev-jobname ediff-metajob-name))))

      (insert "\n")
      (if (and (stringp regexp) (> (length regexp) 0))
	  (insert
	   (format "*** Filter-through regular expression: %s\n" regexp)))
      (ediff-insert-dirs-in-meta-buffer meta-list)
      (if (and ediff-autostore-merges (ediff-merge-metajob)
	       (ediff-nonempty-string-p merge-autostore-dir))
	  (insert (format
		   "\nMerge results are automatically stored in:\n\t%s\n"
		   merge-autostore-dir)))
      (insert "\n
        Size   Last modified           Name
    ----------------------------------------------

")

      ;; discard info on directories and regexp
      (setq meta-list (cdr meta-list)
	    tmp-list meta-list)
      (while (and tmp-list empty)
	(if (and (car tmp-list)
		 (not (eq (ediff-get-session-status (car tmp-list)) ?I)))
	    (setq empty nil))
	(setq tmp-list (cdr tmp-list)))

      (if empty
	  (insert
	   "     ******   ******   This session group has no members\n"))

      ;; now organize file names like this:
      ;;     use-mark sizeA dateA  sizeB dateB  filename
      ;; make sure directories are displayed with a trailing slash.
      (while meta-list
	(setq elt (car meta-list)
	      meta-list (cdr meta-list)
	      sessionNum (1+ sessionNum))
	(if (eq (ediff-get-session-status elt) ?I)
	    ()
	  (ediff-insert-session-info-in-meta-buffer elt sessionNum)))
      (set-buffer-modified-p nil)
      (goto-char point)
      meta-buf)))