Adapt ediff window handling to multi-tty.

* vc/ediff-init.el: Always define ediff-pixel-width/height.

* vc/ediff-wind.el (ediff-setup-windows-default): New function.
(ediff-window-setup-function): Use it as the default, to set up
windows based on whether the current frame is graphical.
(ediff-choose-window-setup-function-automatically): Make obsolete.

Fixes: debbugs:2138
This commit is contained in:
Chong Yidong 2012-04-26 11:04:36 +08:00
parent 823ad1d7e8
commit f08ae1c9b5
3 changed files with 41 additions and 24 deletions

View file

@ -1,3 +1,12 @@
2012-04-26 Chong Yidong <cyd@gnu.org>
* vc/ediff-wind.el (ediff-setup-windows-default): New function.
(ediff-window-setup-function): Use it as the default, to set up
windows based on whether the current frame is graphical (Bug#2138).
(ediff-choose-window-setup-function-automatically): Make obsolete.
* vc/ediff-init.el: Always define ediff-pixel-width/height.
2012-04-25 Stefan Monnier <monnier@iro.umontreal.ca>
* ffap.el: Remove old code for obsolete package.

View file

@ -786,19 +786,12 @@ TYPE-OF-EMACS is either 'xemacs or 'emacs."
"")
(if (ediff-window-display-p)
(if (featurep 'xemacs)
(progn
(defalias 'ediff-display-pixel-width 'device-pixel-width)
(defalias 'ediff-display-pixel-height 'device-pixel-height))
(defalias 'ediff-display-pixel-width
(if (fboundp 'display-pixel-width)
'display-pixel-width
'x-display-pixel-width))
(defalias 'ediff-display-pixel-height
(if (fboundp 'display-pixel-height)
'display-pixel-height
'x-display-pixel-height))))
(if (featurep 'xemacs)
(progn
(defalias 'ediff-display-pixel-width 'device-pixel-width)
(defalias 'ediff-display-pixel-height 'device-pixel-height))
(defalias 'ediff-display-pixel-width 'display-pixel-width)
(defalias 'ediff-display-pixel-height 'display-pixel-height))
;; A-list of current-diff-overlay symbols associated with buf types
(defconst ediff-current-diff-overlay-alist

View file

@ -67,16 +67,23 @@
'ediff-setup-windows-multiframe
'ediff-setup-windows-plain))
(defcustom ediff-window-setup-function (ediff-choose-window-setup-function-automatically)
(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 two functions: `ediff-setup-windows-plain', for
doing everything in one frame and `ediff-setup-windows-multiframe', which sets
the control panel in a separate frame. By default, the appropriate function is
chosen automatically depending on the current window system.
However, `ediff-toggle-multiframe' can be used to toggle between the multiframe
display and the single frame display.
If the multiframe function detects that one of the buffers A/B is seen in some
other frame, it will try to keep that buffer in that frame.
Ediff provides a choice of three functions:
(1) `ediff-setup-windows-multiframe', which sets the control panel
in a separate frame.
(2) `ediff-setup-windows-plain', which does everything in one frame
(3) `ediff-setup-windows-default' (the default), which does (1)
on a graphical display and (2) on a text terminal.
The command \\[ediff-toggle-multiframe] can be used to toggle
between the multiframe display and the single frame display. If
the multiframe function detects that one of the buffers A/B is
seen in some other frame, it will try to keep that buffer in that
frame.
If you don't like any of the two provided functions, write your own one.
The basic guidelines:
@ -90,10 +97,12 @@ The basic guidelines:
Buffer C may not be used in jobs that compare only two buffers.
If you plan to do something fancy, take a close look at how the two
provided functions are written."
:type '(choice (const :tag "Multi Frame" ediff-setup-windows-multiframe)
:type '(choice (const :tag "Choose Automatically" ediff-setup-windows-default)
(const :tag "Multi Frame" ediff-setup-windows-multiframe)
(const :tag "Single Frame" ediff-setup-windows-plain)
(function :tag "Other function"))
:group 'ediff-window)
:group 'ediff-window
:version "24.2")
;; indicates if we are in a multiframe setup
(ediff-defvar-local ediff-multiframe nil "")
@ -333,6 +342,12 @@ into icons, regardless of the window manager."
buffer-A buffer-B buffer-C control-buffer))
(run-hooks 'ediff-after-setup-windows-hook))
(defun ediff-setup-windows-default (buffer-A buffer-B buffer-C control-buffer)
(funcall (if (display-graphic-p)
'ediff-setup-windows-multiframe
'ediff-setup-windows-plain)
buffer-A buffer-B buffer-C control-buffer))
;; Just set up 3 windows.
;; Usually used without windowing systems
;; With windowing, we want to use dedicated frames.