Function: ediff-directory-revisions-internal

ediff-directory-revisions-internal is a byte-compiled function defined in ediff.el.gz.

Signature

(ediff-directory-revisions-internal DIR1 REGEXP ACTION JOBNAME &optional STARTUP-HOOKS MERGE-AUTOSTORE-DIR)

Source Code

;; Defined in /usr/src/emacs/lisp/vc/ediff.el.gz
;; MERGE-AUTOSTORE-DIR can be given to tell ediff where to store the merged
;; files
(defun ediff-directory-revisions-internal (dir1 regexp action jobname
						&optional startup-hooks
						merge-autostore-dir)
  (setq dir1 (if (file-directory-p dir1) dir1 (file-name-directory dir1)))

  (if merge-autostore-dir
      (or (stringp merge-autostore-dir)
	  (error "%S: Directory for storing merged files must be a string"
		 jobname)))
  (let (file-list meta-buf)
    (if (and ediff-autostore-merges
	     (ediff-merge-metajob jobname)
	     (not merge-autostore-dir))
	(setq merge-autostore-dir
	      (read-directory-name "Save merged files in directory: "
			      (if ediff-use-last-dir
				  ediff-last-merge-autostore-dir
				(ediff-strip-last-dir dir1))
			      nil
			      'must-match)))
    ;; verify merge-autostore-dir != dir1
    (if (and merge-autostore-dir
	     (stringp dir1)
	     (string= merge-autostore-dir dir1))
	(or (y-or-n-p
	     "Directory for saving merged file = directory A.  Sure? ")
	    (user-error "Merge of directory revisions aborted")))

    (setq file-list
	  (ediff-get-directory-files-under-revision
	   jobname regexp dir1 merge-autostore-dir))
    ;; this sets various vars in the meta buffer inside
    ;; ediff-prepare-meta-buffer
    (push (lambda ()
	    ;; tell what to do if the user clicks on a session record
	    (setq ediff-session-action-function action))
	  startup-hooks)
    (setq meta-buf (ediff-prepare-meta-buffer
		    #'ediff-filegroup-action
		    file-list
		    "*Ediff Session Group Panel"
		    #'ediff-redraw-directory-group-buffer
		    jobname
		    startup-hooks))
    (ediff-show-meta-buffer meta-buf)
    ))