From 2e955a8b51cf21b6f5383ef77cd32d0d58fcabc1 Mon Sep 17 00:00:00 2001 From: Michael Kifer Date: Sat, 12 Oct 2002 07:13:59 +0000 Subject: [PATCH] 2002-10-12 Michael Kifer * ediff-init.el (ediff-frame-char-height): use frame-selected-window. * ediff-util.el (ediff-file-checked-in-p): changed progn with and * ediff-wind.el (ediff-skip-unsuitable-frames): distinguish selected frame from frame of selected window (ediff-frame-has-dedicated-windows): don't select any frames to avoid changing selected windows (ediff-setup-control-frame): make sure auto-rase is properly set for the control frame --- lisp/ChangeLog | 13 ++++++++++++ lisp/ediff-init.el | 2 +- lisp/ediff-util.el | 6 +++--- lisp/ediff-wind.el | 52 ++++++++++++++++++++++------------------------ 4 files changed, 42 insertions(+), 31 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index f2bf55ad6ed..5bf234e6fa6 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,16 @@ +2002-10-12 Michael Kifer + + * ediff-init.el (ediff-frame-char-height): use frame-selected-window. + + * ediff-util.el (ediff-file-checked-in-p): changed progn with and + + * ediff-wind.el (ediff-skip-unsuitable-frames): distinguish selected + frame from frame of selected window + (ediff-frame-has-dedicated-windows): don't select any frames to avoid + changing selected windows + (ediff-setup-control-frame): make sure auto-rase is properly set for + the control frame + 2002-10-10 Simon Josefsson * browse-url.el (browse-url-mozilla): Doc fix. diff --git a/lisp/ediff-init.el b/lisp/ediff-init.el index 01c9b1e129a..58a37e2566d 100644 --- a/lisp/ediff-init.el +++ b/lisp/ediff-init.el @@ -1550,7 +1550,7 @@ This default should work without changes." (defsubst ediff-frame-char-height (frame) (ediff-cond-compile-for-xemacs-or-emacs - (glyph-height ediff-H-glyph (selected-window frame)) ; xemacs cse + (glyph-height ediff-H-glyph (frame-selected-window frame)) ; xemacs case (frame-char-height frame) ; emacs case ) ) diff --git a/lisp/ediff-util.el b/lisp/ediff-util.el index 64d19c5ee69..865f14a41c5 100644 --- a/lisp/ediff-util.el +++ b/lisp/ediff-util.el @@ -1137,9 +1137,9 @@ of the current buffer." ;; CVS files are considered not checked in (not (memq (vc-backend file) '(nil CVS))) (if (fboundp 'vc-state) - (progn - (not (memq (vc-state file) '(edited needs-merge))) - (not (stringp (vc-state file)))) + (and + (not (memq (vc-state file) '(edited needs-merge))) + (not (stringp (vc-state file)))) ;; XEmacs has no vc-state (not (vc-locking-user file))) )) diff --git a/lisp/ediff-wind.el b/lisp/ediff-wind.el index ae65b1d6f51..723ae577767 100644 --- a/lisp/ediff-wind.el +++ b/lisp/ediff-wind.el @@ -157,7 +157,7 @@ In this case, Ediff will use those frames to display these buffers." '(scrollbar-width . 0) ; XEmacs only '(menu-bar-lines . 0) ; Emacs only '(tool-bar-lines . 0) ; Emacs 21+ only - ;; don't lower and auto-raise + ;; don't lower but auto-raise '(auto-lower . nil) '(auto-raise . t) '(visibility . nil) @@ -821,7 +821,7 @@ into icons, regardless of the window manager." (setq ediff-window-A wind-A ediff-window-B wind-B ediff-window-C wind-C) - + (setq frame-A (window-frame ediff-window-A) designated-minibuffer-frame (window-frame (minibuffer-window frame-A)))) @@ -840,44 +840,38 @@ into icons, regardless of the window manager." ;; create a new splittable frame if none is found (defun ediff-skip-unsuitable-frames (&optional ok-unsplittable) (if (ediff-window-display-p) - ;;(let (last-window) - (let (seen-windows) - ;; (memq ... seen-windows) has quadratic behavior, - ;; but (eq ... last-window) runs into an emacs bug where next-window - ;; gets stuck in a loop if the only frame is the minibuffer. - ;; - ;;(while (and (not (eq (selected-window) last-window)) + (let ((wind-frame (window-frame (selected-window))) + seen-windows) (while (and (not (memq (selected-window) seen-windows)) (or - (ediff-frame-has-dedicated-windows (selected-frame)) - (ediff-frame-iconified-p (selected-frame)) + (ediff-frame-has-dedicated-windows wind-frame) + (ediff-frame-iconified-p wind-frame) ;; skip small windows - (< (frame-height (selected-frame)) + (< (frame-height wind-frame) (* 3 window-min-height)) (if ok-unsplittable nil - (ediff-frame-unsplittable-p (selected-frame))))) - ;; remember where started - ;;(or last-window (setq last-window (selected-window))) + (ediff-frame-unsplittable-p wind-frame)))) + ;; remember history (setq seen-windows (cons (selected-window) seen-windows)) ;; try new window - (other-window 1 t)) - ;;(if (eq (selected-window) last-window) + (other-window 1 t) + (setq wind-frame (window-frame (selected-window))) + ) (if (memq (selected-window) seen-windows) - ;; fed up, no appropriate frame - (progn - (select-frame (make-frame '((unsplittable))))))))) + ;; fed up, no appropriate frames + (setq wind-frame (make-frame '((unsplittable))))) + + (select-frame wind-frame) + ))) (defun ediff-frame-has-dedicated-windows (frame) - (let ((cur-fr (selected-frame)) - ans) - (select-frame frame) + (let (ans) (walk-windows (lambda (wind) (if (window-dedicated-p wind) (setq ans t))) 'ignore-minibuffer frame) - (select-frame cur-fr) ans)) ;; window is ok, if it is only one window on the frame, not counting the @@ -961,9 +955,13 @@ into icons, regardless of the window manager." (cons 'width fwidth) (cons 'height fheight)) ) - (if ediff-use-long-help-message - (setq adjusted-parameters - (cons '(auto-raise . nil) adjusted-parameters))) + + ;; adjust autoraise + (setq adjusted-parameters + (cons (if ediff-use-long-help-message + '(auto-raise . nil) + '(auto-raise . t)) + adjusted-parameters)) ;; In XEmacs, buffer menubar needs to be killed before frame parameters ;; are changed. -- 2.39.2