Function: ediff-redraw-registry-buffer

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

Signature

(ediff-redraw-registry-buffer &optional IGNORE)

Source Code

;; Defined in /usr/src/emacs/lisp/vc/ediff-mult.el.gz
;; argument is ignored
(defun ediff-redraw-registry-buffer (&optional _ignore)
  (ediff-with-current-buffer ediff-registry-buffer
    (let ((point (point))
	  elt bufAname bufBname bufCname cur-diff total-diffs pt
	  job-name meta-list registry-list buffer-read-only)
      (erase-buffer)
      ;; delete phony overlays that used to represent sessions before the buff
      ;; was redrawn
      (mapc #'delete-overlay (overlays-in 1 1))

      (insert (substitute-command-keys "\
This is a registry of all active Ediff sessions.

Useful commands:
     mouse-2, `v', RET over a session record:  switch to that session
     M over a session record:  display the associated session group
     R in any Ediff session:   display session registry
     n,SPC: next session
     p,DEL: previous session
         E: browse Ediff manual
         q: bury registry


\t\tActive Ediff Sessions:
\t\t----------------------

"))
      ;; purge registry list from dead buffers
      (mapc (lambda (elt)
	      (if (not (ediff-buffer-live-p elt))
		  (setq ediff-session-registry
			(delq elt ediff-session-registry))))
	    ediff-session-registry)

      (if (null ediff-session-registry)
	  (insert "       ******* No active Ediff sessions *******\n"))

      (setq registry-list ediff-session-registry)
      (while registry-list
	(setq elt (car registry-list)
	      registry-list (cdr registry-list))

	(if (ediff-buffer-live-p elt)
	    (if (ediff-with-current-buffer elt
		  (setq job-name ediff-metajob-name
			meta-list ediff-meta-list)
		  (and ediff-metajob-name
		       (not (eq ediff-metajob-name 'ediff-registry))))
		(progn
		  (setq pt (point))
		  (insert (format "  *group*\t%s: %s\n"
				  (buffer-name elt)
				  (ediff-abbrev-jobname job-name)))
		  (insert (format "\t\t   %s   %s   %s\n"
				  (ediff-abbreviate-file-name
				   (ediff-get-group-objA meta-list))
				  (ediff-abbreviate-file-name
				   (if (stringp
					(ediff-get-group-objB meta-list))
				       (ediff-get-group-objB meta-list)
				       ""))
				  (ediff-abbreviate-file-name
				   (if (stringp
					(ediff-get-group-objC meta-list))
				       (ediff-get-group-objC meta-list)
				       ""))))
		  (ediff-set-meta-overlay pt (point) elt))
	      (progn
		(ediff-with-current-buffer elt
		  (setq bufAname (if (ediff-buffer-live-p ediff-buffer-A)
				     (buffer-name ediff-buffer-A)
				   "!!!killed buffer!!!")
			bufBname (if (ediff-buffer-live-p ediff-buffer-B)
				     (buffer-name ediff-buffer-B)
				   "!!!killed buffer!!!")
			bufCname (cond ((not (ediff-3way-job))
					"")
				       ((ediff-buffer-live-p ediff-buffer-C)
					(buffer-name ediff-buffer-C))
				       (t "!!!killed buffer!!!")))
		  (setq total-diffs (format "%-4d" ediff-number-of-differences)
			cur-diff
			(cond ((= ediff-current-difference -1) "   _")
			      ((= ediff-current-difference
				  ediff-number-of-differences)
			       "   $")
			      (t (format
				  "%4d" (1+ ediff-current-difference))))
			job-name ediff-job-name))
		;; back in the meta buf
		(setq pt (point))
		(insert cur-diff "/" total-diffs "\t"
			(buffer-name elt)
			(format ": %s"  (ediff-abbrev-jobname job-name)))
		(insert
		 "\n\t\t   " bufAname "   " bufBname "   " bufCname "\n")
		(ediff-set-meta-overlay pt (point) elt))))
	) ; while
      (set-buffer-modified-p nil)
      (goto-char point)
      )))