Mercurial > emacs
comparison lisp/ediff-wind.el @ 42602:633233bf2bbf
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.
author | Michael Kifer <kifer@cs.stonybrook.edu> |
---|---|
date | Tue, 08 Jan 2002 04:36:01 +0000 |
parents | 3ce98f3e0608 |
children | 69c91aaa067a |
comparison
equal
deleted
inserted
replaced
42601:ddd4802ff361 | 42602:633233bf2bbf |
---|---|
1 ;;; ediff-wind.el --- window manipulation utilities | 1 ;;; ediff-wind.el --- window manipulation utilities |
2 | 2 |
3 ;; Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. | 3 ;; Copyright (C) 1994, 95, 96, 97, 2000, 01, 02 Free Software Foundation, Inc. |
4 | 4 |
5 ;; Author: Michael Kifer <kifer@cs.sunysb.edu> | 5 ;; Author: Michael Kifer <kifer@cs.stonybrook.edu> |
6 | 6 |
7 ;; This file is part of GNU Emacs. | 7 ;; This file is part of GNU Emacs. |
8 | 8 |
9 ;; GNU Emacs is free software; you can redistribute it and/or modify | 9 ;; GNU Emacs is free software; you can redistribute it and/or modify |
10 ;; it under the terms of the GNU General Public License as published by | 10 ;; it under the terms of the GNU General Public License as published by |
34 (defvar left-toolbar-height) | 34 (defvar left-toolbar-height) |
35 (defvar right-toolbar-height) | 35 (defvar right-toolbar-height) |
36 (defvar left-toolbar-width) | 36 (defvar left-toolbar-width) |
37 (defvar right-toolbar-width) | 37 (defvar right-toolbar-width) |
38 (defvar default-menubar) | 38 (defvar default-menubar) |
39 (defvar top-gutter) | |
39 (defvar frame-icon-title-format) | 40 (defvar frame-icon-title-format) |
40 (defvar ediff-diff-status) | 41 (defvar ediff-diff-status) |
41 (defvar ediff-emacs-p) | 42 (defvar ediff-emacs-p) |
42 | 43 |
43 (eval-when-compile | 44 (eval-when-compile |
269 (while (not (ediff-mouse-event-p (setq event (ediff-read-event)))) | 270 (while (not (ediff-mouse-event-p (setq event (ediff-read-event)))) |
270 (if (sit-for 1) ; if sequence of events, wait till the final word | 271 (if (sit-for 1) ; if sequence of events, wait till the final word |
271 (beep 1)) | 272 (beep 1)) |
272 (message "Please click on Window %d " wind-number)) | 273 (message "Please click on Window %d " wind-number)) |
273 (ediff-read-event) ; discard event | 274 (ediff-read-event) ; discard event |
274 (setq wind (if ediff-xemacs-p | 275 (setq wind (ediff-cond-compile-for-xemacs-or-emacs |
275 (event-window event) | 276 (event-window event) ; xemacs |
276 (posn-window (event-start event)))) | 277 (posn-window (event-start event)) ; emacs |
278 ) | |
279 ) | |
277 )) | 280 )) |
278 | 281 |
279 | 282 |
280 ;; Select the lowest window on the frame. | 283 ;; Select the lowest window on the frame. |
281 (defun ediff-select-lowest-window () | 284 (defun ediff-select-lowest-window () |
282 (if ediff-xemacs-p | 285 (ediff-cond-compile-for-xemacs-or-emacs |
283 (select-window (frame-lowest-window)) | 286 (select-window (frame-lowest-window)) ; xemacs |
284 (let* ((lowest-window (selected-window)) | 287 ;; emacs |
285 (bottom-edge (car (cdr (cdr (cdr (window-edges)))))) | 288 (let* ((lowest-window (selected-window)) |
286 (last-window (save-excursion | 289 (bottom-edge (car (cdr (cdr (cdr (window-edges)))))) |
287 (other-window -1) (selected-window))) | 290 (last-window (save-excursion |
288 (window-search t)) | 291 (other-window -1) (selected-window))) |
289 (while window-search | 292 (window-search t)) |
290 (let* ((this-window (next-window)) | 293 (while window-search |
291 (next-bottom-edge | 294 (let* ((this-window (next-window)) |
292 (car (cdr (cdr (cdr (window-edges this-window))))))) | 295 (next-bottom-edge |
293 (if (< bottom-edge next-bottom-edge) | 296 (car (cdr (cdr (cdr (window-edges this-window))))))) |
294 (progn | 297 (if (< bottom-edge next-bottom-edge) |
295 (setq bottom-edge next-bottom-edge) | 298 (progn |
296 (setq lowest-window this-window))) | 299 (setq bottom-edge next-bottom-edge) |
297 | 300 (setq lowest-window this-window))) |
298 (select-window this-window) | 301 |
299 (if (eq last-window this-window) | 302 (select-window this-window) |
300 (progn | 303 (if (eq last-window this-window) |
301 (select-window lowest-window) | 304 (progn |
302 (setq window-search nil)))))))) | 305 (select-window lowest-window) |
306 (setq window-search nil)))))) | |
307 )) | |
303 | 308 |
304 | 309 |
305 ;;; Common window setup routines | 310 ;;; Common window setup routines |
306 | 311 |
307 ;; Set up the window configuration. If POS is given, set the points to | 312 ;; Set up the window configuration. If POS is given, set the points to |
843 (while (and (not (memq (selected-window) seen-windows)) | 848 (while (and (not (memq (selected-window) seen-windows)) |
844 (or | 849 (or |
845 (ediff-frame-has-dedicated-windows (selected-frame)) | 850 (ediff-frame-has-dedicated-windows (selected-frame)) |
846 (ediff-frame-iconified-p (selected-frame)) | 851 (ediff-frame-iconified-p (selected-frame)) |
847 ;; skip small windows | 852 ;; skip small windows |
848 (< (window-height (selected-window)) | 853 (< (frame-height (selected-frame)) |
849 (* 3 window-min-height)) | 854 (* 3 window-min-height)) |
850 (if ok-unsplittable | 855 (if ok-unsplittable |
851 nil | 856 nil |
852 (ediff-frame-unsplittable-p (selected-frame))))) | 857 (ediff-frame-unsplittable-p (selected-frame))))) |
853 ;; remember where started | 858 ;; remember where started |
894 ctl-frame old-ctl-frame lines | 899 ctl-frame old-ctl-frame lines |
895 ;; user-grabbed-mouse | 900 ;; user-grabbed-mouse |
896 fheight fwidth adjusted-parameters) | 901 fheight fwidth adjusted-parameters) |
897 | 902 |
898 (ediff-with-current-buffer ctl-buffer | 903 (ediff-with-current-buffer ctl-buffer |
899 (if ediff-xemacs-p (set-buffer-menubar nil)) | 904 (ediff-cond-compile-for-xemacs-or-emacs |
905 (set-buffer-menubar nil) ; xemacs | |
906 nil ; emacs | |
907 ) | |
900 ;;(setq user-grabbed-mouse (ediff-user-grabbed-mouse)) | 908 ;;(setq user-grabbed-mouse (ediff-user-grabbed-mouse)) |
901 (run-hooks 'ediff-before-setup-control-frame-hook)) | 909 (run-hooks 'ediff-before-setup-control-frame-hook)) |
902 | 910 |
903 (setq old-ctl-frame (ediff-with-current-buffer ctl-buffer ediff-control-frame)) | 911 (setq old-ctl-frame (ediff-with-current-buffer ctl-buffer ediff-control-frame)) |
904 (ediff-with-current-buffer ctl-buffer | 912 (ediff-with-current-buffer ctl-buffer |
906 old-ctl-frame | 914 old-ctl-frame |
907 (make-frame ediff-control-frame-parameters)) | 915 (make-frame ediff-control-frame-parameters)) |
908 ediff-control-frame ctl-frame) | 916 ediff-control-frame ctl-frame) |
909 ;; protect against undefined face-attribute | 917 ;; protect against undefined face-attribute |
910 (condition-case nil | 918 (condition-case nil |
911 (when (and ediff-emacs-p (face-attribute 'mode-line :box)) | 919 (ediff-cond-compile-for-xemacs-or-emacs |
912 (set-face-attribute 'mode-line ctl-frame :box nil)) | 920 nil ; xemacs |
921 (when (face-attribute 'mode-line :box) | |
922 (set-face-attribute 'mode-line ctl-frame :box nil)) | |
923 ) | |
913 (error)) | 924 (error)) |
914 ) | 925 ) |
915 | 926 |
916 (setq ctl-frame-iconified-p (ediff-frame-iconified-p ctl-frame)) | 927 (setq ctl-frame-iconified-p (ediff-frame-iconified-p ctl-frame)) |
917 (select-frame ctl-frame) | 928 (select-frame ctl-frame) |
953 (cons '(auto-raise . nil) adjusted-parameters))) | 964 (cons '(auto-raise . nil) adjusted-parameters))) |
954 | 965 |
955 ;; In XEmacs, buffer menubar needs to be killed before frame parameters | 966 ;; In XEmacs, buffer menubar needs to be killed before frame parameters |
956 ;; are changed. | 967 ;; are changed. |
957 (if (ediff-has-toolbar-support-p) | 968 (if (ediff-has-toolbar-support-p) |
958 (progn | 969 (ediff-cond-compile-for-xemacs-or-emacs |
959 (set-specifier top-toolbar-height (list ctl-frame 2)) | 970 (progn ; xemacs |
960 (sit-for 0) | 971 (set-specifier top-toolbar-height (list ctl-frame 2)) |
961 (set-specifier top-toolbar-height (list ctl-frame 0)) | 972 (set-specifier top-gutter (list ctl-frame nil)) |
962 ;;(set-specifier bottom-toolbar-height (list ctl-frame 0)) | 973 (sit-for 0) |
963 (set-specifier left-toolbar-width (list ctl-frame 0)) | 974 (set-specifier top-toolbar-height (list ctl-frame 0)) |
964 (set-specifier right-toolbar-width (list ctl-frame 0)) | 975 ;;(set-specifier bottom-toolbar-height (list ctl-frame 0)) |
965 )) | 976 (set-specifier left-toolbar-width (list ctl-frame 0)) |
977 (set-specifier right-toolbar-width (list ctl-frame 0)) | |
978 ) | |
979 nil ; emacs | |
980 ) | |
981 ) | |
966 | 982 |
967 ;; Under OS/2 (emx) we have to call modify frame parameters twice, in order | 983 ;; Under OS/2 (emx) we have to call modify frame parameters twice, in order |
968 ;; to make sure that at least once we do it for non-iconified frame. If | 984 ;; to make sure that at least once we do it for non-iconified frame. If |
969 ;; appears that in the OS/2 port of Emacs, one can't modify frame | 985 ;; appears that in the OS/2 port of Emacs, one can't modify frame |
970 ;; parameters of iconified frames. As a precaution, we do likewise for | 986 ;; parameters of iconified frames. As a precaution, we do likewise for |
1016 (or (eq this-command 'ediff-quit) | 1032 (or (eq this-command 'ediff-quit) |
1017 (not (eq ediff-grab-mouse t))))) | 1033 (not (eq ediff-grab-mouse t))))) |
1018 | 1034 |
1019 (if ediff-xemacs-p | 1035 (if ediff-xemacs-p |
1020 (ediff-with-current-buffer ctl-buffer | 1036 (ediff-with-current-buffer ctl-buffer |
1021 (if ediff-xemacs-p | 1037 (ediff-cond-compile-for-xemacs-or-emacs |
1022 (make-local-hook 'select-frame-hook)) | 1038 (make-local-hook 'select-frame-hook) ; xemacs |
1039 nil ; emacs | |
1040 ) | |
1023 (add-hook | 1041 (add-hook |
1024 'select-frame-hook 'ediff-xemacs-select-frame-hook nil 'local) | 1042 'select-frame-hook 'ediff-xemacs-select-frame-hook nil 'local) |
1025 )) | 1043 )) |
1026 | 1044 |
1027 (ediff-with-current-buffer ctl-buffer | 1045 (ediff-with-current-buffer ctl-buffer |
1031 | 1049 |
1032 (defun ediff-destroy-control-frame (ctl-buffer) | 1050 (defun ediff-destroy-control-frame (ctl-buffer) |
1033 (ediff-with-current-buffer ctl-buffer | 1051 (ediff-with-current-buffer ctl-buffer |
1034 (if (and (ediff-window-display-p) (frame-live-p ediff-control-frame)) | 1052 (if (and (ediff-window-display-p) (frame-live-p ediff-control-frame)) |
1035 (let ((ctl-frame ediff-control-frame)) | 1053 (let ((ctl-frame ediff-control-frame)) |
1036 (if ediff-xemacs-p | 1054 (ediff-cond-compile-for-xemacs-or-emacs |
1037 (set-buffer-menubar default-menubar)) | 1055 (set-buffer-menubar default-menubar) ; xemacs |
1056 nil ; emacs | |
1057 ) | |
1038 (setq ediff-control-frame nil) | 1058 (setq ediff-control-frame nil) |
1039 (delete-frame ctl-frame) | 1059 (delete-frame ctl-frame) |
1040 ))) | 1060 ))) |
1041 (ediff-skip-unsuitable-frames) | 1061 (ediff-skip-unsuitable-frames) |
1042 ;;(ediff-reset-mouse nil) | 1062 ;;(ediff-reset-mouse nil) |