Function: ediff-make-frame-position
ediff-make-frame-position is a byte-compiled function defined in
ediff-wind.el.gz.
Signature
(ediff-make-frame-position CTL-BUFFER CTL-FRAME-WIDTH CTL-FRAME-HEIGHT)
Source Code
;; Defined in /usr/src/emacs/lisp/vc/ediff-wind.el.gz
;; finds a good place to clip control frame
(defun ediff-make-frame-position (ctl-buffer ctl-frame-width ctl-frame-height)
(with-current-buffer ctl-buffer
(let* ((frame-A (window-frame ediff-window-A))
(frame-A-parameters (frame-parameters frame-A))
(frame-A-top (eval (cdr (assoc 'top frame-A-parameters)) t))
(frame-A-left (eval (cdr (assoc 'left frame-A-parameters)) t))
(frame-A-width (frame-width frame-A))
(ctl-frame ediff-control-frame)
horizontal-adjustment upward-adjustment
ctl-frame-top ctl-frame-left)
;; Multiple control frames are clipped based on the value of
;; ediff-control-buffer-number. This is done in order not to obscure
;; other active control panels.
(setq horizontal-adjustment (* 2 ediff-control-buffer-number)
upward-adjustment (* -14 ediff-control-buffer-number))
(setq ctl-frame-top
(- frame-A-top upward-adjustment ediff-control-frame-upward-shift)
ctl-frame-left
(+ frame-A-left
(if ediff-use-long-help-message
(* (frame-char-width ctl-frame)
(+ ediff-wide-control-frame-rightward-shift
horizontal-adjustment))
(- (* frame-A-width (frame-char-width frame-A))
(* (frame-char-width ctl-frame)
(+ ctl-frame-width
ediff-narrow-control-frame-leftward-shift
horizontal-adjustment))))))
(setq ctl-frame-top
(min ctl-frame-top
(- (display-pixel-height)
(* 2 ctl-frame-height
(frame-char-height ctl-frame))))
ctl-frame-left
(min ctl-frame-left
(- (display-pixel-width)
(* ctl-frame-width (frame-char-width ctl-frame)))))
;; keep ctl frame within the visible bounds
(setq ctl-frame-top (max ctl-frame-top 1)
ctl-frame-left (max ctl-frame-left 1))
(list (cons 'top ctl-frame-top)
(cons 'left ctl-frame-left))
)))