;;; ediff-wind.el --- window manipulation utilities
-;; Copyright (C) 1994-1997, 2000-2012 Free Software Foundation, Inc.
+;; Copyright (C) 1994-1997, 2000-2016 Free Software Foundation, Inc.
;; Author: Michael Kifer <kifer@cs.stonybrook.edu>
;; Package: ediff
;; declare-function does not exist in XEmacs
(eval-and-compile
- (unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
+ (unless (fboundp 'declare-function) (defmacro declare-function (&rest _r))))
-(eval-when-compile
- (require 'ediff-util)
- (require 'ediff-help))
+(require 'ediff-init)
+(require 'ediff-help)
;; end pacifier
-(require 'ediff-init)
;; be careful with ediff-tbar
-(if (featurep 'xemacs)
- (require 'ediff-tbar)
- (defun ediff-compute-toolbar-width () 0))
+(eval-and-compile
+ (if (featurep 'xemacs)
+ (require 'ediff-tbar)
+ (defun ediff-compute-toolbar-width () 0)))
(defgroup ediff-window nil
"Ediff window manipulation."
;; Determine which window setup function to use based on current window system.
(defun ediff-choose-window-setup-function-automatically ()
+ (declare (obsolete ediff-setup-windows-default "24.3"))
(if (ediff-window-display-p)
'ediff-setup-windows-multiframe
'ediff-setup-windows-plain))
-(make-obsolete 'ediff-choose-window-setup-function-automatically
- 'ediff-setup-windows-default "24.2")
-
(defcustom ediff-window-setup-function 'ediff-setup-windows-default
"Function called to set up windows.
Ediff provides a choice of three functions:
(const :tag "Single Frame" ediff-setup-windows-plain)
(function :tag "Other function"))
:group 'ediff-window
- :version "24.2")
+ :version "24.3")
;; indicates if we are in a multiframe setup
(ediff-defvar-local ediff-multiframe nil "")
(defcustom ediff-grab-mouse t
"If t, Ediff will always grab the mouse and put it in the control frame.
-If 'maybe, Ediff will do it sometimes, but not after operations that require
+If `maybe', Ediff will do it sometimes, but not after operations that require
relatively long time. If nil, the mouse will be entirely user's
responsibility."
:type 'boolean
"Function to call to determine the desired location for the control panel.
Expects three parameters: the control buffer, the desired width and height
of the control frame. It returns an association list
-of the form \(\(top . <position>\) \(left . <position>\)\)"
+of the form \((top . <position>) \(left . <position>))"
:type 'function
:group 'ediff-window)
;;; Functions
-(defun ediff-get-window-by-clicking (wind prev-wind wind-number)
+(defun ediff-get-window-by-clicking (_wind _prev-wind wind-number)
(let (event)
(message
"Select windows by clicking. Please click on Window %d " wind-number)
(beep 1))
(message "Please click on Window %d " wind-number))
(ediff-read-event) ; discard event
- (setq wind (if (featurep 'xemacs)
- (event-window event)
- (posn-window (event-start event))))))
+ (if (featurep 'xemacs)
+ (event-window event)
+ (posn-window (event-start event)))))
;; Select the lowest window on the frame.
(ediff-setup-windows-plain-compare
buffer-A buffer-B buffer-C control-buffer)))
+(autoload 'ediff-setup-control-buffer "ediff-util")
+
(defun ediff-setup-windows-plain-merge (buf-A buf-B buf-C control-buffer)
;; skip dedicated and unsplittable frames
(ediff-destroy-control-frame control-buffer)
three-way-comparison ediff-3way-comparison-job))
;; if in minibuffer go somewhere else
(if (save-match-data
- (string-match "\*Minibuf-" (buffer-name (window-buffer))))
+ (string-match "\\*Minibuf-" (buffer-name (window-buffer))))
(select-window (next-window nil 'ignore-minibuf)))
(delete-other-windows)
(set-window-dedicated-p (selected-window) nil)
;; create a new splittable frame if none is found
(defun ediff-skip-unsuitable-frames (&optional ok-unsplittable)
(if (ediff-window-display-p)
- (let ((wind-frame (window-frame (selected-window)))
+ (let ((wind-frame (window-frame))
seen-windows)
(while (and (not (memq (selected-window) seen-windows))
(or
(setq seen-windows (cons (selected-window) seen-windows))
;; try new window
(other-window 1 t)
- (setq wind-frame (window-frame (selected-window)))
+ (setq wind-frame (window-frame))
)
(if (memq (selected-window) seen-windows)
;; fed up, no appropriate frames
(not (ediff-frame-has-dedicated-windows (window-frame wind)))
)))
+(declare-function ediff-make-bottom-toolbar "ediff-util" (&optional frame))
+
;; Prepare or refresh control frame
(defun ediff-setup-control-frame (ctl-buffer designated-minibuffer-frame)
(let ((window-min-height 1)
(setq ctl-frame-iconified-p (ediff-frame-iconified-p ctl-frame))
(select-frame ctl-frame)
- (if (window-dedicated-p (selected-window))
+ (if (window-dedicated-p)
()
(delete-other-windows)
(switch-to-buffer ctl-buffer))