summaryrefslogtreecommitdiff
path: root/lisp/ediff-wind.el
diff options
context:
space:
mode:
authorKaroly Lorentey <lorentey@elte.hu>2006-03-12 04:12:31 +0000
committerKaroly Lorentey <lorentey@elte.hu>2006-03-12 04:12:31 +0000
commit632210dd8530dc84a40ae9c127a4baf7b19f4a63 (patch)
tree44110d97b10e10fe3b155f4b15d267b03b8fb74a /lisp/ediff-wind.el
parentd2b86d7f40873f053489f386f7ab926bbb226bef (diff)
downloademacs-632210dd8530dc84a40ae9c127a4baf7b19f4a63.tar.gz
Fix ediff problems. (Reported by Dan Nicolaescu.)
* lisp/subr.el (with-selected-frame): Make sure the current buffer is restored as well. * src/xfns.c (Fx_create_frame): Use `store_frame_param' to set `window-system' frame parameter, and make sure it overrides any user-supplied setting. * src/xfns.c (x_icon): Disable redundant call to `x_wm_set_window_state'. (Also applied in CVS.) * lisp/faces.el (x-create-frame-with-faces): Don't make frame visible until we are done setting up all its parameters. * lisp/ediff-wind.el (ediff-setup-windows-automatic): New function. (ediff-window-setup-function): Use it as default. git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-528
Diffstat (limited to 'lisp/ediff-wind.el')
-rw-r--r--lisp/ediff-wind.el25
1 files changed, 16 insertions, 9 deletions
diff --git a/lisp/ediff-wind.el b/lisp/ediff-wind.el
index 28369f9f6bd..5e9381f5dab 100644
--- a/lisp/ediff-wind.el
+++ b/lisp/ediff-wind.el
@@ -72,15 +72,15 @@
:group 'frames)
-(defcustom ediff-window-setup-function (if (ediff-window-display-p)
- 'ediff-setup-windows-multiframe
- 'ediff-setup-windows-plain)
+(defcustom ediff-window-setup-function 'ediff-setup-windows-automatic)
"*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. Also, if the latter
-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: `ediff-setup-windows-plain', for
+doing everything in one frame, `ediff-setup-windows-multiframe', which sets
+the control panel in a separate frame, and
+`ediff-setup-windows-automatic' (the default), which chooses an appropriate
+behaviour based on the current window system. 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 the two functions provided---write your own one.
The basic guidelines:
@@ -94,7 +94,8 @@ 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 "Automatic" ediff-setup-windows-automatic)
+ (const :tag "Multi Frame" ediff-setup-windows-multiframe)
(const :tag "Single Frame" ediff-setup-windows-plain)
(function :tag "Other function"))
:group 'ediff-window)
@@ -333,6 +334,12 @@ into icons, regardless of the window manager."
buffer-A buffer-B buffer-C control-buffer))
(run-hooks 'ediff-after-setup-windows-hook))
+;; Set up windows using the correct method based on the current window system.
+(defun ediff-setup-windows-automatic (buffer-A buffer-B buffer-C control-buffer)
+ (if (ediff-window-display-p)
+ (ediff-setup-windows-multiframe buffer-A buffer-B buffer-C control-buffer)
+ (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.