Function: ediff-skip-unsuitable-frames

ediff-skip-unsuitable-frames is a byte-compiled function defined in ediff-wind.el.gz.

Signature

(ediff-skip-unsuitable-frames &optional OK-UNSPLITTABLE)

Documentation

Skip unsplittable frames and frames that have dedicated windows.

Create a new splittable frame if none is found.

Source Code

;; Defined in /usr/src/emacs/lisp/vc/ediff-wind.el.gz
(defun ediff-skip-unsuitable-frames (&optional ok-unsplittable)
  "Skip unsplittable frames and frames that have dedicated windows.
Create a new splittable frame if none is found."
  (if (display-graphic-p)
      (let ((wind-frame (window-frame))
            seen-windows)
	(while (and (not (memq (selected-window) seen-windows))
		    (or
		     (ediff-frame-has-dedicated-windows wind-frame)
		     (ediff-frame-iconified-p wind-frame)
		     ;; skip small windows
		     (< (frame-height wind-frame)
			(* 3 window-min-height))
		     (if ok-unsplittable
                         nil
                       (cdr (assq 'unsplittable (frame-parameters wind-frame))))))
	  ;; remember history
	  (setq seen-windows (cons (selected-window) seen-windows))
	  ;; try new window
	  (other-window 1 t)
	  (setq wind-frame (window-frame))
	  )
	(if (memq (selected-window) seen-windows)
	    ;; fed up, no appropriate frames
	    (setq wind-frame (make-frame '((unsplittable)))))

	(select-frame wind-frame)
	)))