Function: ediff-show-meta-buffer

ediff-show-meta-buffer is an interactive and byte-compiled function defined in ediff-mult.el.gz.

Signature

(ediff-show-meta-buffer &optional META-BUF SESSION-NUMBER)

Documentation

Show the session group buffer.

Key Bindings

Source Code

;; Defined in /usr/src/emacs/lisp/vc/ediff-mult.el.gz
;; If session number is t, means don't update meta buffer
(defun ediff-show-meta-buffer (&optional meta-buf session-number)
  "Show the session group buffer."
  (interactive)
  (run-hooks 'ediff-before-directory-setup-hooks)
  (let (wind frame silent)
    (if meta-buf (setq silent t))

    (setq meta-buf (or meta-buf ediff-meta-buffer))
    (cond ((not (bufferp meta-buf))
	   (user-error "This Ediff session is not part of a session group"))
	  ((not (ediff-buffer-live-p meta-buf))
	   (error
	    "Can't find this session's group panel -- session itself is ok")))

    (cond ((numberp session-number)
	   (ediff-update-meta-buffer meta-buf nil session-number))
	  ;; if session-number is t, don't update
	  (session-number)
	  (t (ediff-cleanup-meta-buffer meta-buf)))

    (ediff-with-current-buffer meta-buf
      (save-excursion
	(cond ((setq wind (ediff-get-visible-buffer-window meta-buf))
	       (or silent
		   (message
		    "Already showing the group panel for this session"))
	       (set-window-buffer wind meta-buf)
	       (select-window wind))
	      ((window-live-p (setq wind ediff-window-C)) ;in merge--merge buf
	       (set-window-buffer ediff-window-C meta-buf)
	       (select-window wind))
	      ((window-live-p (setq wind ediff-window-A))
	       (set-window-buffer ediff-window-A meta-buf)
	       (select-window wind))
	      ((window-live-p (setq wind ediff-window-B))
	       (set-window-buffer ediff-window-B meta-buf)
	       (select-window wind))
	      ((and
		(setq wind
		      (ediff-get-visible-buffer-window ediff-registry-buffer))
		(ediff-window-display-p))
	       (select-window wind)
	       (other-window 1)
	       (set-window-buffer (selected-window) meta-buf))
	      (t (ediff-skip-unsuitable-frames 'ok-unsplittable)
		 (set-window-buffer (selected-window) meta-buf)))
	))
    (if (and (ediff-window-display-p)
	     (window-live-p
	      (setq wind (ediff-get-visible-buffer-window meta-buf))))
	(progn
	  (setq frame (window-frame wind))
	  (raise-frame frame)
	  (ediff-reset-mouse frame)))
    (sit-for 0) ; sometimes needed to synch the display and ensure that the
		; point ends up after the just completed session
    (run-hooks 'ediff-show-session-group-hook)
    ))