diff options
author | Michael Kifer <kifer@cs.stonybrook.edu> | 2002-01-08 04:36:01 +0000 |
---|---|---|
committer | Michael Kifer <kifer@cs.stonybrook.edu> | 2002-01-08 04:36:01 +0000 |
commit | 50a07e18565cc4dd7162908197ac71e85c1781d7 (patch) | |
tree | 6f0a68647e226b1c14cf00b75444e9c9d54ad847 /lisp/ediff-wind.el | |
parent | fbb70ad9e6e00f3f146b50d3bf433a6ec6ce26c9 (diff) | |
download | emacs-50a07e18565cc4dd7162908197ac71e85c1781d7.tar.gz |
2002-01-07 Michael Kifer <kifer@cs.stonybrook.edu>
* viper-init.el (viper-cond-compile-for-xemacs-or-emacs):
new macro that replaces viper-emacs-p and viper-xemacs-p in many
cases. Used to reduce the number of warnings.
* viper-cmd.el: use viper-cond-compile-for-xemacs-or-emacs.
(viper-standard-value): moved here from viper.el.
(viper-set-unread-command-events): moved to viper-util.el
(viper-check-minibuffer-overlay): make sure
viper-minibuffer-overlay is moved to cover the entire input field.
* viper-util.el: use viper-cond-compile-for-xemacs-or-emacs.
(viper-read-key-sequence, viper-set-unread-command-events,
viper-char-symbol-sequence-p, viper-char-array-p): moved here.
* viper-ex.el: use viper-cond-compile-for-xemacs-or-emacs.
* viper-keym.el: use viper-cond-compile-for-xemacs-or-emacs.
* viper-mous.el: use viper-cond-compile-for-xemacs-or-emacs.
* viper-macs.el (viper-char-array-p, viper-char-symbol-sequence-p,
viper-event-vector-p): moved to viper-util.el
* viper.el (viper-standard-value): moved to viper-cmd.el.
Use viper-cond-compile-for-xemacs-or-emacs.
* ediff-help.el: use ediff-cond-compile-for-xemacs-or-emacs.
* ediff-hook.el: use ediff-cond-compile-for-xemacs-or-emacs.
* ediff-init.el (ediff-cond-compile-for-xemacs-or-emacs): new
macro designed to be used in many places where ediff-emacs-p or
ediff-xemacs-p was previously used. Reduces the number of
warnings.
Use ediff-cond-compile-for-xemacs-or-emacs in many places in lieue
of ediff-xemacs-p.
(ediff-make-current-diff-overlay, ediff-highlight-diff-in-one-buffer,
ediff-convert-fine-diffs-to-overlays, ediff-empty-diff-region-p,
ediff-whitespace-diff-region-p, ediff-get-region-contents):
moved to ediff-util.el.
(ediff-event-key): moved here.
* ediff-merge.el: got rid of unreferenced variables.
* ediff-mult.el: use ediff-cond-compile-for-xemacs-or-emacs.
* ediff-util.el: use ediff-cond-compile-for-xemacs-or-emacs.
(ediff-cleanup-mess): improved the way windows are set up after
quitting ediff.
(ediff-janitor): use ediff-dispose-of-variant-according-to-user.
(ediff-dispose-of-variant-according-to-user): new function
designed to be smarter and also understands indirect buffers.
(ediff-highlight-diff-in-one-buffer,
ediff-unhighlight-diff-in-one-buffer,
ediff-unhighlight-diffs-totally-in-one-buffer,
ediff-highlight-diff, ediff-highlight-diff,
ediff-unhighlight-diff, ediff-unhighlight-diffs-totally,
ediff-empty-diff-region-p, ediff-whitespace-diff-region-p,
ediff-get-region-contents, ediff-make-current-diff-overlay):
moved here.
(ediff-format-bindings-of): new function by Hannu Koivisto
<azure@iki.fi>.
(ediff-setup): make sure the merge buffer is always widened and
modifiable.
(ediff-write-merge-buffer-and-maybe-kill): refuse to write the
result of a merge into a file visited by another buffer.
(ediff-arrange-autosave-in-merge-jobs): check if the merge file
is visited by another buffer and ask to save/delete that buffer.
(ediff-verify-file-merge-buffer): new function to do the above.
* ediff-vers.el: load ediff-init.el at compile time.
* ediff-wind.el: use ediff-cond-compile-for-xemacs-or-emacs.
* ediff.el (ediff-windows, ediff-regions-wordwise,
ediff-regions-linewise): use indirect buffers to improve
robustness and make it possible to compare regions of the same
buffer (even overlapping regions).
(ediff-clone-buffer-for-region-comparison,
ediff-clone-buffer-for-window-comparison): new functions.
(ediff-files-internal): refuse to compare identical files.
(ediff-regions-internal): get rid of the warning about comparing
regions of the same buffer.
* ediff-diff.el (ediff-convert-fine-diffs-to-overlays): moved here.
Plus the following fixes courtesy of Dave Love:
Doc fixes.
(ediff-word-1): Use word class and move - to the
front per regexp documentation.
(ediff-wordify): Bind forward-word-function outside loop.
(ediff-copy-to-buffer): Use insert-buffer-substring rather than
consing buffer contents.
(ediff-goto-word): Move syntax table setting outside loop.
Diffstat (limited to 'lisp/ediff-wind.el')
-rw-r--r-- | lisp/ediff-wind.el | 104 |
1 files changed, 62 insertions, 42 deletions
diff --git a/lisp/ediff-wind.el b/lisp/ediff-wind.el index 4a0928997bd..ede3e569ae0 100644 --- a/lisp/ediff-wind.el +++ b/lisp/ediff-wind.el @@ -1,8 +1,8 @@ ;;; ediff-wind.el --- window manipulation utilities -;; Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. +;; Copyright (C) 1994, 95, 96, 97, 2000, 01, 02 Free Software Foundation, Inc. -;; Author: Michael Kifer <kifer@cs.sunysb.edu> +;; Author: Michael Kifer <kifer@cs.stonybrook.edu> ;; This file is part of GNU Emacs. @@ -36,6 +36,7 @@ (defvar left-toolbar-width) (defvar right-toolbar-width) (defvar default-menubar) +(defvar top-gutter) (defvar frame-icon-title-format) (defvar ediff-diff-status) (defvar ediff-emacs-p) @@ -271,35 +272,39 @@ into icons, regardless of the window manager." (beep 1)) (message "Please click on Window %d " wind-number)) (ediff-read-event) ; discard event - (setq wind (if ediff-xemacs-p - (event-window event) - (posn-window (event-start event)))) + (setq wind (ediff-cond-compile-for-xemacs-or-emacs + (event-window event) ; xemacs + (posn-window (event-start event)) ; emacs + ) + ) )) ;; Select the lowest window on the frame. (defun ediff-select-lowest-window () - (if ediff-xemacs-p - (select-window (frame-lowest-window)) - (let* ((lowest-window (selected-window)) - (bottom-edge (car (cdr (cdr (cdr (window-edges)))))) - (last-window (save-excursion - (other-window -1) (selected-window))) - (window-search t)) - (while window-search - (let* ((this-window (next-window)) - (next-bottom-edge - (car (cdr (cdr (cdr (window-edges this-window))))))) - (if (< bottom-edge next-bottom-edge) - (progn - (setq bottom-edge next-bottom-edge) - (setq lowest-window this-window))) - - (select-window this-window) - (if (eq last-window this-window) - (progn - (select-window lowest-window) - (setq window-search nil)))))))) + (ediff-cond-compile-for-xemacs-or-emacs + (select-window (frame-lowest-window)) ; xemacs + ;; emacs + (let* ((lowest-window (selected-window)) + (bottom-edge (car (cdr (cdr (cdr (window-edges)))))) + (last-window (save-excursion + (other-window -1) (selected-window))) + (window-search t)) + (while window-search + (let* ((this-window (next-window)) + (next-bottom-edge + (car (cdr (cdr (cdr (window-edges this-window))))))) + (if (< bottom-edge next-bottom-edge) + (progn + (setq bottom-edge next-bottom-edge) + (setq lowest-window this-window))) + + (select-window this-window) + (if (eq last-window this-window) + (progn + (select-window lowest-window) + (setq window-search nil)))))) + )) ;;; Common window setup routines @@ -845,7 +850,7 @@ into icons, regardless of the window manager." (ediff-frame-has-dedicated-windows (selected-frame)) (ediff-frame-iconified-p (selected-frame)) ;; skip small windows - (< (window-height (selected-window)) + (< (frame-height (selected-frame)) (* 3 window-min-height)) (if ok-unsplittable nil @@ -896,7 +901,10 @@ into icons, regardless of the window manager." fheight fwidth adjusted-parameters) (ediff-with-current-buffer ctl-buffer - (if ediff-xemacs-p (set-buffer-menubar nil)) + (ediff-cond-compile-for-xemacs-or-emacs + (set-buffer-menubar nil) ; xemacs + nil ; emacs + ) ;;(setq user-grabbed-mouse (ediff-user-grabbed-mouse)) (run-hooks 'ediff-before-setup-control-frame-hook)) @@ -908,8 +916,11 @@ into icons, regardless of the window manager." ediff-control-frame ctl-frame) ;; protect against undefined face-attribute (condition-case nil - (when (and ediff-emacs-p (face-attribute 'mode-line :box)) - (set-face-attribute 'mode-line ctl-frame :box nil)) + (ediff-cond-compile-for-xemacs-or-emacs + nil ; xemacs + (when (face-attribute 'mode-line :box) + (set-face-attribute 'mode-line ctl-frame :box nil)) + ) (error)) ) @@ -955,14 +966,19 @@ into icons, regardless of the window manager." ;; In XEmacs, buffer menubar needs to be killed before frame parameters ;; are changed. (if (ediff-has-toolbar-support-p) - (progn - (set-specifier top-toolbar-height (list ctl-frame 2)) - (sit-for 0) - (set-specifier top-toolbar-height (list ctl-frame 0)) - ;;(set-specifier bottom-toolbar-height (list ctl-frame 0)) - (set-specifier left-toolbar-width (list ctl-frame 0)) - (set-specifier right-toolbar-width (list ctl-frame 0)) - )) + (ediff-cond-compile-for-xemacs-or-emacs + (progn ; xemacs + (set-specifier top-toolbar-height (list ctl-frame 2)) + (set-specifier top-gutter (list ctl-frame nil)) + (sit-for 0) + (set-specifier top-toolbar-height (list ctl-frame 0)) + ;;(set-specifier bottom-toolbar-height (list ctl-frame 0)) + (set-specifier left-toolbar-width (list ctl-frame 0)) + (set-specifier right-toolbar-width (list ctl-frame 0)) + ) + nil ; emacs + ) + ) ;; Under OS/2 (emx) we have to call modify frame parameters twice, in order ;; to make sure that at least once we do it for non-iconified frame. If @@ -1018,8 +1034,10 @@ into icons, regardless of the window manager." (if ediff-xemacs-p (ediff-with-current-buffer ctl-buffer - (if ediff-xemacs-p - (make-local-hook 'select-frame-hook)) + (ediff-cond-compile-for-xemacs-or-emacs + (make-local-hook 'select-frame-hook) ; xemacs + nil ; emacs + ) (add-hook 'select-frame-hook 'ediff-xemacs-select-frame-hook nil 'local) )) @@ -1033,8 +1051,10 @@ into icons, regardless of the window manager." (ediff-with-current-buffer ctl-buffer (if (and (ediff-window-display-p) (frame-live-p ediff-control-frame)) (let ((ctl-frame ediff-control-frame)) - (if ediff-xemacs-p - (set-buffer-menubar default-menubar)) + (ediff-cond-compile-for-xemacs-or-emacs + (set-buffer-menubar default-menubar) ; xemacs + nil ; emacs + ) (setq ediff-control-frame nil) (delete-frame ctl-frame) ))) |