aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Ingebrigtsen2019-10-05 16:48:44 +0200
committerLars Ingebrigtsen2019-10-05 16:48:51 +0200
commit3c1635ebf2038d43c3400908e7e070d54192801a (patch)
tree75c844c476392525c142824ba511aa0d700542ef
parent9cf8454463ab0249c3b680f892507743b3be972e (diff)
downloademacs-3c1635ebf2038d43c3400908e7e070d54192801a.tar.gz
emacs-3c1635ebf2038d43c3400908e7e070d54192801a.zip
Remove most of the XEmacs compat code from ediff*.el
* lisp/vc/ediff-diff.el (ediff-word-1): Remove XEmacs compat code and declare compatibility functions for obsolete. Adjust all callers. * lisp/vc/ediff-help.el (ediff-set-help-overlays): * lisp/vc/ediff-hook.el: (menu-bar-ediff-misc-menu, menu-bar-ediff-merge-menu) (menu-bar-ediff-menu, menu-bar-ediff-merge-menu) (menu-bar-epatch-menu, menu-bar-ediff-misc-menu): * lisp/vc/ediff-init.el (ediff-device-type) (ediff-window-display-p, ediff-has-face-support-p) (ediff-has-toolbar-support-p, ediff-has-gutter-support-p) (ediff-BAD-INFO, ediff-coding-system-for-write) (ediff-read-event, ediff-overlayp, ediff-make-overlay) (ediff-delete-overlay, ediff-color-display-p) (ediff-display-pixel-width, ediff-display-pixel-height) (ediff-region-help-echo, ediff-set-face-pixmap) (ediff-paint-background-regions-in-one-buffer) (ediff-clear-fine-diff-vector, ediff-mouse-event-p) (ediff-key-press-event-p, ediff-event-point, ) (ediff-event-buffer, ediff-event-key, ediff-last-command-char) (ediff-frame-iconified-p, ediff-frame-char-width) (ediff-reset-mouse, ediff-frame-char-height) (ediff-overlay-start, ediff-overlay-end, ediff-overlay-buffer) (ediff-overlay-get, ediff-move-overlay, ediff-overlay-put) (ediff-abbreviate-file-name): * lisp/vc/ediff-mult.el (ediff-next-meta-item) (ediff-previous-meta-item) (ediff-replace-session-activity-marker-in-meta-buffer) (ediff-replace-session-status-in-meta-buffer) (ediff-redraw-directory-group-buffer) (ediff-update-markers-in-dir-meta-buffer) (ediff-update-session-marker-in-dir-meta-buffer) (ediff-redraw-registry-buffer, ediff-set-meta-overlay) (ediff-update-meta-buffer, ediff-get-meta-info) (ediff-get-meta-overlay-at-pos, ) (ediff-get-session-number-at-pos, ) (ediff-next-meta-overlay-start) (ediff-previous-meta-overlay-start, ) (ediff-meta-mark-equal-files): * lisp/vc/ediff-util.el: (ediff-setup, ediff-setup-control-buffer, ediff-recenter) (ediff-recenter-one-window, ediff-toggle-read-only) (ediff-file-checked-out-p, ediff-file-checked-in-p) (ediff-toggle-wide-display, ediff-toggle-multiframe) (ediff-toggle-use-toolbar, ediff-kill-bottom-toolbar) (ediff-visible-region, ediff-scroll-vertically) (ediff-scroll-horizontally, ediff-jump-to-difference-at-point) (ediff-diff-to-diff, ediff-restore-diff) (ediff-toggle-regexp-match, ediff-really-quit) (ediff-cleanup-mess, ediff-highlight-diff-in-one-buffer) (ediff-unhighlight-diffs-totally-in-one-buffer) (ediff-save-buffer, ediff-make-cloned-buffer) (ediff-make-indirect-buffer, ediff-remove-flags-from-buffer) (ediff-place-flags-in-buffer1, ediff-get-diff-posn) (ediff-clear-diff-vector, ediff-make-bullet-proof-overlay) (ediff-submit-report, ediff-deactivate-mark) (ediff-activate-mark, ediff-profile, ediff-print-diff-vector): * lisp/vc/ediff-wind.el (ediff-control-frame-parameters) (ediff-get-window-by-clicking, ediff-select-lowest-window) (ediff-setup-windows-plain-merge) (ediff-setup-windows-plain-compare, ediff-setup-control-frame) (ediff-destroy-control-frame, ediff-make-frame-position) (ediff-make-wide-display, ediff-get-visible-buffer-window): * lisp/vc/ediff.el (ediff-version, ediff-documentation):
-rw-r--r--lisp/vc/ediff-diff.el3
-rw-r--r--lisp/vc/ediff-help.el2
-rw-r--r--lisp/vc/ediff-hook.el351
-rw-r--r--lisp/vc/ediff-init.el212
-rw-r--r--lisp/vc/ediff-mult.el157
-rw-r--r--lisp/vc/ediff-util.el197
-rw-r--r--lisp/vc/ediff-wind.el117
-rw-r--r--lisp/vc/ediff.el6
8 files changed, 346 insertions, 699 deletions
diff --git a/lisp/vc/ediff-diff.el b/lisp/vc/ediff-diff.el
index 0c8c89610fb..dded160c577 100644
--- a/lisp/vc/ediff-diff.el
+++ b/lisp/vc/ediff-diff.el
@@ -1231,8 +1231,7 @@ Used for splitting difference regions into individual words.")
1231These characters are ignored when differing regions are split into words.") 1231These characters are ignored when differing regions are split into words.")
1232(make-variable-buffer-local 'ediff-whitespace) 1232(make-variable-buffer-local 'ediff-whitespace)
1233 1233
1234(defvar ediff-word-1 1234(defvar ediff-word-1 "-[:word:]_"
1235 (if (featurep 'xemacs) "a-zA-Z---_" "-[:word:]_")
1236 "Characters that constitute words of type 1. 1235 "Characters that constitute words of type 1.
1237More precisely, [ediff-word-1] is a regexp that matches type 1 words. 1236More precisely, [ediff-word-1] is a regexp that matches type 1 words.
1238See `ediff-forward-word' for more details.") 1237See `ediff-forward-word' for more details.")
diff --git a/lisp/vc/ediff-help.el b/lisp/vc/ediff-help.el
index 0b127564743..f291d40bc24 100644
--- a/lisp/vc/ediff-help.el
+++ b/lisp/vc/ediff-help.el
@@ -166,7 +166,7 @@ the value of this variable and the variables `ediff-help-message-*' in
166 (setq beg (match-beginning 1) 166 (setq beg (match-beginning 1)
167 end (match-end 0) 167 end (match-end 0)
168 cmd (buffer-substring (match-beginning 1) (match-end 1))) 168 cmd (buffer-substring (match-beginning 1) (match-end 1)))
169 (setq overl (ediff-make-overlay beg end)) 169 (setq overl (make-overlay beg end))
170 (ediff-overlay-put overl 'mouse-face 'highlight) 170 (ediff-overlay-put overl 'mouse-face 'highlight)
171 (ediff-overlay-put overl 'ediff-help-info cmd)))) 171 (ediff-overlay-put overl 'ediff-help-info cmd))))
172 172
diff --git a/lisp/vc/ediff-hook.el b/lisp/vc/ediff-hook.el
index 7a04249fc85..2aa03cc930b 100644
--- a/lisp/vc/ediff-hook.el
+++ b/lisp/vc/ediff-hook.el
@@ -44,222 +44,141 @@
44 44
45;; allow menus to be set up without ediff-wind.el being loaded 45;; allow menus to be set up without ediff-wind.el being loaded
46 46
47;; This autoload is useless in Emacs because ediff-hook.el is dumped with 47;; Emacs
48;; emacs, but it is needed in XEmacs 48;; initialize menu bar keymaps
49;;;###autoload 49(defvar menu-bar-ediff-misc-menu
50(if (featurep 'xemacs) 50 (make-sparse-keymap "Ediff Miscellanea"))
51 (progn 51(fset 'menu-bar-ediff-misc-menu
52 (defun ediff-xemacs-init-menus () 52 menu-bar-ediff-misc-menu)
53 (when (featurep 'menubar) 53(defvar menu-bar-epatch-menu (make-sparse-keymap "Apply Patch"))
54 (add-submenu 54(fset 'menu-bar-epatch-menu menu-bar-epatch-menu)
55 '("Tools") ediff-menu "OO-Browser...") 55(defvar menu-bar-ediff-merge-menu (make-sparse-keymap "Merge"))
56 (add-submenu 56(fset 'menu-bar-ediff-merge-menu
57 '("Tools") ediff-merge-menu "OO-Browser...") 57 menu-bar-ediff-merge-menu)
58 (add-submenu 58(defvar menu-bar-ediff-menu (make-sparse-keymap "Compare"))
59 '("Tools") epatch-menu "OO-Browser...") 59(fset 'menu-bar-ediff-menu menu-bar-ediff-menu)
60 (add-submenu 60
61 '("Tools") ediff-misc-menu "OO-Browser...") 61;; define ediff compare menu
62 (add-menu-button 62(define-key menu-bar-ediff-menu [ediff-misc]
63 '("Tools") "-------" "OO-Browser...") 63 `(menu-item ,(purecopy "Ediff Miscellanea") menu-bar-ediff-misc-menu))
64 )) 64(define-key menu-bar-ediff-menu [separator-ediff-misc] menu-bar-separator)
65 (defvar ediff-menu 65(define-key menu-bar-ediff-menu [window]
66 '("Compare" 66 `(menu-item ,(purecopy "This Window and Next Window") compare-windows
67 ["Two Files..." ediff-files t] 67 :help ,(purecopy "Compare the current window and the next window")))
68 ["Two Buffers..." ediff-buffers t] 68(define-key menu-bar-ediff-menu [ediff-windows-linewise]
69 ["Three Files..." ediff-files3 t] 69 `(menu-item ,(purecopy "Windows Line-by-line...") ediff-windows-linewise
70 ["Three Buffers..." ediff-buffers3 t] 70 :help ,(purecopy "Compare windows line-wise")))
71 "---" 71(define-key menu-bar-ediff-menu [ediff-windows-wordwise]
72 ["Two Directories..." ediff-directories t] 72 `(menu-item ,(purecopy "Windows Word-by-word...") ediff-windows-wordwise
73 ["Three Directories..." ediff-directories3 t] 73 :help ,(purecopy "Compare windows word-wise")))
74 "---" 74(define-key menu-bar-ediff-menu [separator-ediff-windows] menu-bar-separator)
75 ["File with Revision..." ediff-revision t] 75(define-key menu-bar-ediff-menu [ediff-regions-linewise]
76 ["Directory Revisions..." ediff-directory-revisions t] 76 `(menu-item ,(purecopy "Regions Line-by-line...") ediff-regions-linewise
77 "---" 77 :help ,(purecopy "Compare regions line-wise")))
78 ["Windows Word-by-word..." ediff-windows-wordwise t] 78(define-key menu-bar-ediff-menu [ediff-regions-wordwise]
79 ["Windows Line-by-line..." ediff-windows-linewise t] 79 `(menu-item ,(purecopy "Regions Word-by-word...") ediff-regions-wordwise
80 "---" 80 :help ,(purecopy "Compare regions word-wise")))
81 ["Regions Word-by-word..." ediff-regions-wordwise t] 81(define-key menu-bar-ediff-menu [separator-ediff-regions] menu-bar-separator)
82 ["Regions Line-by-line..." ediff-regions-linewise t] 82(define-key menu-bar-ediff-menu [ediff-dir-revision]
83 )) 83 `(menu-item ,(purecopy "Directory Revisions...") ediff-directory-revisions
84 (defvar ediff-merge-menu 84 :help ,(purecopy "Compare directory files with their older versions")))
85 '("Merge" 85(define-key menu-bar-ediff-menu [ediff-revision]
86 ["Files..." ediff-merge-files t] 86 `(menu-item ,(purecopy "File with Revision...") ediff-revision
87 ["Files with Ancestor..." ediff-merge-files-with-ancestor t] 87 :help ,(purecopy "Compare file with its older versions")))
88 ["Buffers..." ediff-merge-buffers t] 88(define-key menu-bar-ediff-menu [separator-ediff-directories] menu-bar-separator)
89 ["Buffers with Ancestor..." 89(define-key menu-bar-ediff-menu [ediff-directories3]
90 ediff-merge-buffers-with-ancestor t] 90 `(menu-item ,(purecopy "Three Directories...") ediff-directories3
91 "---" 91 :help ,(purecopy "Compare files common to three directories simultaneously")))
92 ["Directories..." ediff-merge-directories t] 92(define-key menu-bar-ediff-menu [ediff-directories]
93 ["Directories with Ancestor..." 93 `(menu-item ,(purecopy "Two Directories...") ediff-directories
94 ediff-merge-directories-with-ancestor t] 94 :help ,(purecopy "Compare files common to two directories simultaneously")))
95 "---" 95(define-key menu-bar-ediff-menu [separator-ediff-files] menu-bar-separator)
96 ["Revisions..." ediff-merge-revisions t] 96(define-key menu-bar-ediff-menu [ediff-buffers3]
97 ["Revisions with Ancestor..." 97 `(menu-item ,(purecopy "Three Buffers...") ediff-buffers3
98 ediff-merge-revisions-with-ancestor t] 98 :help ,(purecopy "Compare three buffers simultaneously")))
99 ["Directory Revisions..." ediff-merge-directory-revisions t] 99(define-key menu-bar-ediff-menu [ediff-files3]
100 ["Directory Revisions with Ancestor..." 100 `(menu-item ,(purecopy "Three Files...") ediff-files3
101 ediff-merge-directory-revisions-with-ancestor t] 101 :help ,(purecopy "Compare three files simultaneously")))
102 )) 102(define-key menu-bar-ediff-menu [ediff-buffers]
103 (defvar epatch-menu 103 `(menu-item ,(purecopy "Two Buffers...") ediff-buffers
104 '("Apply Patch" 104 :help ,(purecopy "Compare two buffers simultaneously")))
105 ["To a file..." ediff-patch-file t] 105(define-key menu-bar-ediff-menu [ediff-files]
106 ["To a buffer..." ediff-patch-buffer t] 106 `(menu-item ,(purecopy "Two Files...") ediff-files
107 )) 107 :help ,(purecopy "Compare two files simultaneously")))
108 (defvar ediff-misc-menu 108
109 '("Ediff Miscellanea" 109;; define ediff merge menu
110 ["Ediff Manual" ediff-documentation t] 110(define-key
111 ["Customize Ediff" ediff-customize t] 111 menu-bar-ediff-merge-menu [ediff-merge-dir-revisions-with-ancestor]
112 ["List Ediff Sessions" ediff-show-registry t] 112 `(menu-item ,(purecopy "Directory Revisions with Ancestor...")
113 ["Use separate frame for Ediff control buffer" 113 ediff-merge-directory-revisions-with-ancestor
114 ediff-toggle-multiframe 114 :help ,(purecopy "Merge versions of the files in the same directory by comparing the files with common ancestors")))
115 :style toggle 115(define-key
116 :selected (eq (bound-and-true-p ediff-window-setup-function) 116 menu-bar-ediff-merge-menu [ediff-merge-dir-revisions]
117 #'ediff-setup-windows-multiframe)] 117 `(menu-item ,(purecopy "Directory Revisions...") ediff-merge-directory-revisions
118 ["Use a toolbar with Ediff control buffer" 118 :help ,(purecopy "Merge versions of the files in the same directory (without using ancestor information)")))
119 ediff-toggle-use-toolbar 119(define-key
120 :style toggle 120 menu-bar-ediff-merge-menu [ediff-merge-revisions-with-ancestor]
121 :selected (if (featurep 'ediff-tbar) 121 `(menu-item ,(purecopy "Revisions with Ancestor...")
122 (ediff-use-toolbar-p))])) 122 ediff-merge-revisions-with-ancestor
123 123 :help ,(purecopy "Merge versions of the same file by comparing them with a common ancestor")))
124 ;; put these menus before Object-Oriented-Browser in Tools menu 124(define-key menu-bar-ediff-merge-menu [ediff-merge-revisions]
125 (if (and (featurep 'menubar) (not (featurep 'infodock)) 125 `(menu-item ,(purecopy "Revisions...") ediff-merge-revisions
126 (not (featurep 'ediff-hook))) 126 :help ,(purecopy "Merge versions of the same file (without using ancestor information)")))
127 (ediff-xemacs-init-menus))) 127(define-key menu-bar-ediff-merge-menu [separator-ediff-merge] menu-bar-separator)
128 ;; Emacs 128(define-key
129 ;; initialize menu bar keymaps 129 menu-bar-ediff-merge-menu [ediff-merge-directories-with-ancestor]
130 (defvar menu-bar-ediff-misc-menu 130 `(menu-item ,(purecopy "Directories with Ancestor...")
131 (make-sparse-keymap "Ediff Miscellanea")) 131 ediff-merge-directories-with-ancestor
132 (fset 'menu-bar-ediff-misc-menu 132 :help ,(purecopy "Merge files common to a pair of directories by comparing the files with common ancestors")))
133 menu-bar-ediff-misc-menu) 133(define-key menu-bar-ediff-merge-menu [ediff-merge-directories]
134 (defvar menu-bar-epatch-menu (make-sparse-keymap "Apply Patch")) 134 `(menu-item ,(purecopy "Directories...") ediff-merge-directories
135 (fset 'menu-bar-epatch-menu menu-bar-epatch-menu) 135 :help ,(purecopy "Merge files common to a pair of directories")))
136 (defvar menu-bar-ediff-merge-menu (make-sparse-keymap "Merge")) 136(define-key
137 (fset 'menu-bar-ediff-merge-menu 137 menu-bar-ediff-merge-menu [separator-ediff-merge-dirs] menu-bar-separator)
138 menu-bar-ediff-merge-menu) 138(define-key
139 (defvar menu-bar-ediff-menu (make-sparse-keymap "Compare")) 139 menu-bar-ediff-merge-menu [ediff-merge-buffers-with-ancestor]
140 (fset 'menu-bar-ediff-menu menu-bar-ediff-menu) 140 `(menu-item ,(purecopy "Buffers with Ancestor...") ediff-merge-buffers-with-ancestor
141 141 :help ,(purecopy "Merge buffers by comparing their contents with a common ancestor")))
142 ;; define ediff compare menu 142(define-key menu-bar-ediff-merge-menu [ediff-merge-buffers]
143 (define-key menu-bar-ediff-menu [ediff-misc] 143 `(menu-item ,(purecopy "Buffers...") ediff-merge-buffers
144 `(menu-item ,(purecopy "Ediff Miscellanea") menu-bar-ediff-misc-menu)) 144 :help ,(purecopy "Merge buffers (without using ancestor information)")))
145 (define-key menu-bar-ediff-menu [separator-ediff-misc] menu-bar-separator) 145(define-key menu-bar-ediff-merge-menu [ediff-merge-files-with-ancestor]
146 (define-key menu-bar-ediff-menu [window] 146 `(menu-item ,(purecopy "Files with Ancestor...") ediff-merge-files-with-ancestor
147 `(menu-item ,(purecopy "This Window and Next Window") compare-windows 147 :help ,(purecopy "Merge files by comparing them with a common ancestor")))
148 :help ,(purecopy "Compare the current window and the next window"))) 148(define-key menu-bar-ediff-merge-menu [ediff-merge-files]
149 (define-key menu-bar-ediff-menu [ediff-windows-linewise] 149 `(menu-item ,(purecopy "Files...") ediff-merge-files
150 `(menu-item ,(purecopy "Windows Line-by-line...") ediff-windows-linewise 150 :help ,(purecopy "Merge files (without using ancestor information)")))
151 :help ,(purecopy "Compare windows line-wise"))) 151
152 (define-key menu-bar-ediff-menu [ediff-windows-wordwise] 152;; define epatch menu
153 `(menu-item ,(purecopy "Windows Word-by-word...") ediff-windows-wordwise 153(define-key menu-bar-epatch-menu [ediff-patch-buffer]
154 :help ,(purecopy "Compare windows word-wise"))) 154 `(menu-item ,(purecopy "To a Buffer...") ediff-patch-buffer
155 (define-key menu-bar-ediff-menu [separator-ediff-windows] menu-bar-separator) 155 :help ,(purecopy "Apply a patch to the contents of a buffer")))
156 (define-key menu-bar-ediff-menu [ediff-regions-linewise] 156(define-key menu-bar-epatch-menu [ediff-patch-file]
157 `(menu-item ,(purecopy "Regions Line-by-line...") ediff-regions-linewise 157 `(menu-item ,(purecopy "To a File...") ediff-patch-file
158 :help ,(purecopy "Compare regions line-wise"))) 158 :help ,(purecopy "Apply a patch to a file")))
159 (define-key menu-bar-ediff-menu [ediff-regions-wordwise] 159
160 `(menu-item ,(purecopy "Regions Word-by-word...") ediff-regions-wordwise 160;; define ediff miscellanea
161 :help ,(purecopy "Compare regions word-wise"))) 161(define-key menu-bar-ediff-misc-menu [emultiframe]
162 (define-key menu-bar-ediff-menu [separator-ediff-regions] menu-bar-separator) 162 `(menu-item ,(purecopy "Use separate control buffer frame")
163 (define-key menu-bar-ediff-menu [ediff-dir-revision] 163 ediff-toggle-multiframe
164 `(menu-item ,(purecopy "Directory Revisions...") ediff-directory-revisions 164 :help ,(purecopy "Switch between the single-frame presentation mode and the multi-frame mode")
165 :help ,(purecopy "Compare directory files with their older versions"))) 165 :button (:toggle . (eq (bound-and-true-p ediff-window-setup-function)
166 (define-key menu-bar-ediff-menu [ediff-revision] 166 #'ediff-setup-windows-multiframe))))
167 `(menu-item ,(purecopy "File with Revision...") ediff-revision 167;; FIXME: Port XEmacs's toolbar support!
168 :help ,(purecopy "Compare file with its older versions"))) 168;; ["Use a toolbar with Ediff control buffer"
169 (define-key menu-bar-ediff-menu [separator-ediff-directories] menu-bar-separator) 169;; ediff-toggle-use-toolbar
170 (define-key menu-bar-ediff-menu [ediff-directories3] 170;; :style toggle
171 `(menu-item ,(purecopy "Three Directories...") ediff-directories3 171;; :selected (if (featurep 'ediff-tbar)
172 :help ,(purecopy "Compare files common to three directories simultaneously"))) 172;; (ediff-use-toolbar-p))]
173 (define-key menu-bar-ediff-menu [ediff-directories] 173(define-key menu-bar-ediff-misc-menu [eregistry]
174 `(menu-item ,(purecopy "Two Directories...") ediff-directories 174 `(menu-item ,(purecopy "List Ediff Sessions") ediff-show-registry
175 :help ,(purecopy "Compare files common to two directories simultaneously"))) 175 :help ,(purecopy "List all active Ediff sessions; it is a convenient way to find and resume such a session")))
176 (define-key menu-bar-ediff-menu [separator-ediff-files] menu-bar-separator) 176(define-key menu-bar-ediff-misc-menu [ediff-cust]
177 (define-key menu-bar-ediff-menu [ediff-buffers3] 177 `(menu-item ,(purecopy "Customize Ediff") ediff-customize
178 `(menu-item ,(purecopy "Three Buffers...") ediff-buffers3 178 :help ,(purecopy "Change some of the parameters that govern the behavior of Ediff")))
179 :help ,(purecopy "Compare three buffers simultaneously"))) 179(define-key menu-bar-ediff-misc-menu [ediff-doc]
180 (define-key menu-bar-ediff-menu [ediff-files3] 180 `(menu-item ,(purecopy "Ediff Manual") ediff-documentation
181 `(menu-item ,(purecopy "Three Files...") ediff-files3 181 :help ,(purecopy "Bring up the Ediff manual")))
182 :help ,(purecopy "Compare three files simultaneously")))
183 (define-key menu-bar-ediff-menu [ediff-buffers]
184 `(menu-item ,(purecopy "Two Buffers...") ediff-buffers
185 :help ,(purecopy "Compare two buffers simultaneously")))
186 (define-key menu-bar-ediff-menu [ediff-files]
187 `(menu-item ,(purecopy "Two Files...") ediff-files
188 :help ,(purecopy "Compare two files simultaneously")))
189
190 ;; define ediff merge menu
191 (define-key
192 menu-bar-ediff-merge-menu [ediff-merge-dir-revisions-with-ancestor]
193 `(menu-item ,(purecopy "Directory Revisions with Ancestor...")
194 ediff-merge-directory-revisions-with-ancestor
195 :help ,(purecopy "Merge versions of the files in the same directory by comparing the files with common ancestors")))
196 (define-key
197 menu-bar-ediff-merge-menu [ediff-merge-dir-revisions]
198 `(menu-item ,(purecopy "Directory Revisions...") ediff-merge-directory-revisions
199 :help ,(purecopy "Merge versions of the files in the same directory (without using ancestor information)")))
200 (define-key
201 menu-bar-ediff-merge-menu [ediff-merge-revisions-with-ancestor]
202 `(menu-item ,(purecopy "Revisions with Ancestor...")
203 ediff-merge-revisions-with-ancestor
204 :help ,(purecopy "Merge versions of the same file by comparing them with a common ancestor")))
205 (define-key menu-bar-ediff-merge-menu [ediff-merge-revisions]
206 `(menu-item ,(purecopy "Revisions...") ediff-merge-revisions
207 :help ,(purecopy "Merge versions of the same file (without using ancestor information)")))
208 (define-key menu-bar-ediff-merge-menu [separator-ediff-merge] menu-bar-separator)
209 (define-key
210 menu-bar-ediff-merge-menu [ediff-merge-directories-with-ancestor]
211 `(menu-item ,(purecopy "Directories with Ancestor...")
212 ediff-merge-directories-with-ancestor
213 :help ,(purecopy "Merge files common to a pair of directories by comparing the files with common ancestors")))
214 (define-key menu-bar-ediff-merge-menu [ediff-merge-directories]
215 `(menu-item ,(purecopy "Directories...") ediff-merge-directories
216 :help ,(purecopy "Merge files common to a pair of directories")))
217 (define-key
218 menu-bar-ediff-merge-menu [separator-ediff-merge-dirs] menu-bar-separator)
219 (define-key
220 menu-bar-ediff-merge-menu [ediff-merge-buffers-with-ancestor]
221 `(menu-item ,(purecopy "Buffers with Ancestor...") ediff-merge-buffers-with-ancestor
222 :help ,(purecopy "Merge buffers by comparing their contents with a common ancestor")))
223 (define-key menu-bar-ediff-merge-menu [ediff-merge-buffers]
224 `(menu-item ,(purecopy "Buffers...") ediff-merge-buffers
225 :help ,(purecopy "Merge buffers (without using ancestor information)")))
226 (define-key menu-bar-ediff-merge-menu [ediff-merge-files-with-ancestor]
227 `(menu-item ,(purecopy "Files with Ancestor...") ediff-merge-files-with-ancestor
228 :help ,(purecopy "Merge files by comparing them with a common ancestor")))
229 (define-key menu-bar-ediff-merge-menu [ediff-merge-files]
230 `(menu-item ,(purecopy "Files...") ediff-merge-files
231 :help ,(purecopy "Merge files (without using ancestor information)")))
232
233 ;; define epatch menu
234 (define-key menu-bar-epatch-menu [ediff-patch-buffer]
235 `(menu-item ,(purecopy "To a Buffer...") ediff-patch-buffer
236 :help ,(purecopy "Apply a patch to the contents of a buffer")))
237 (define-key menu-bar-epatch-menu [ediff-patch-file]
238 `(menu-item ,(purecopy "To a File...") ediff-patch-file
239 :help ,(purecopy "Apply a patch to a file")))
240
241 ;; define ediff miscellanea
242 (define-key menu-bar-ediff-misc-menu [emultiframe]
243 `(menu-item ,(purecopy "Use separate control buffer frame")
244 ediff-toggle-multiframe
245 :help ,(purecopy "Switch between the single-frame presentation mode and the multi-frame mode")
246 :button (:toggle . (eq (bound-and-true-p ediff-window-setup-function)
247 #'ediff-setup-windows-multiframe))))
248 ;; FIXME: Port XEmacs's toolbar support!
249 ;; ["Use a toolbar with Ediff control buffer"
250 ;; ediff-toggle-use-toolbar
251 ;; :style toggle
252 ;; :selected (if (featurep 'ediff-tbar)
253 ;; (ediff-use-toolbar-p))]
254 (define-key menu-bar-ediff-misc-menu [eregistry]
255 `(menu-item ,(purecopy "List Ediff Sessions") ediff-show-registry
256 :help ,(purecopy "List all active Ediff sessions; it is a convenient way to find and resume such a session")))
257 (define-key menu-bar-ediff-misc-menu [ediff-cust]
258 `(menu-item ,(purecopy "Customize Ediff") ediff-customize
259 :help ,(purecopy "Change some of the parameters that govern the behavior of Ediff")))
260 (define-key menu-bar-ediff-misc-menu [ediff-doc]
261 `(menu-item ,(purecopy "Ediff Manual") ediff-documentation
262 :help ,(purecopy "Bring up the Ediff manual"))))
263 182
264(provide 'ediff-hook) 183(provide 'ediff-hook)
265;;; ediff-hook.el ends here 184;;; ediff-hook.el ends here
diff --git a/lisp/vc/ediff-init.el b/lisp/vc/ediff-init.el
index c007d934483..9e4d08d70c8 100644
--- a/lisp/vc/ediff-init.el
+++ b/lisp/vc/ediff-init.el
@@ -45,30 +45,29 @@ that Ediff doesn't know about.")
45 45
46;; Are we running as a window application or on a TTY? 46;; Are we running as a window application or on a TTY?
47(defsubst ediff-device-type () 47(defsubst ediff-device-type ()
48 (if (featurep 'xemacs) 48 (declare (obsolete nil "27.1"))
49 (device-type (selected-device)) 49 window-system)
50 window-system))
51 50
52;; in XEmacs: device-type is tty on tty and stream in batch. 51;; in XEmacs: device-type is tty on tty and stream in batch.
53(defun ediff-window-display-p () 52(defun ediff-window-display-p ()
54 (and (ediff-device-type) (not (memq (ediff-device-type) '(tty pc stream))))) 53 (and window-system
54 (not (memq window-system '(tty pc stream)))))
55 55
56;; test if supports faces 56;; test if supports faces
57(defun ediff-has-face-support-p () 57(defun ediff-has-face-support-p ()
58 (cond ((ediff-window-display-p)) 58 (cond ((ediff-window-display-p))
59 (ediff-force-faces) 59 (ediff-force-faces)
60 ((ediff-color-display-p)) 60 ((display-color-p))
61 (t (memq (ediff-device-type) '(pc))))) 61 (t (memq window-system '(pc)))))
62 62
63;; toolbar support for emacs hasn't been implemented in ediff 63;; toolbar support for emacs hasn't been implemented in ediff
64(defun ediff-has-toolbar-support-p () 64(defun ediff-has-toolbar-support-p ()
65 (if (featurep 'xemacs) 65 nil)
66 (if (featurep 'toolbar) (console-on-window-system-p))))
67 66
68 67
69(defun ediff-has-gutter-support-p () 68(defun ediff-has-gutter-support-p ()
70 (if (featurep 'xemacs) 69 (declare (obsolete nil "27.1"))
71 (if (featurep 'gutter) (console-on-window-system-p)))) 70 nil)
72 71
73(defun ediff-use-toolbar-p () 72(defun ediff-use-toolbar-p ()
74 (and (ediff-has-toolbar-support-p) ;Can it do it ? 73 (and (ediff-has-toolbar-support-p) ;Can it do it ?
@@ -493,10 +492,9 @@ set local variables that determine how the display looks like."
493 "%S: Bad diff region number, %d. Valid numbers are 1 to %d") 492 "%S: Bad diff region number, %d. Valid numbers are 1 to %d")
494(defconst ediff-BAD-INFO (format " 493(defconst ediff-BAD-INFO (format "
495*** The Info file for Ediff, a part of the standard distribution 494*** The Info file for Ediff, a part of the standard distribution
496*** of %sEmacs, does not seem to be properly installed. 495*** of Emacs, does not seem to be properly installed.
497*** 496***
498*** Please contact your system administrator. " 497*** Please contact your system administrator. "))
499 (if (featurep 'xemacs) "X" "")))
500 498
501;; Selective browsing 499;; Selective browsing
502 500
@@ -553,24 +551,24 @@ See the documentation string of `ediff-focus-on-regexp-matches' for details.")
553 551
554 552
555;; Highlighting 553;; Highlighting
556(defcustom ediff-before-flag-bol (if (featurep 'xemacs) (make-glyph "->>") "->>") 554(defcustom ediff-before-flag-bol "->>"
557 "Flag placed before a highlighted block of differences, if block starts at beginning of a line." 555 "Flag placed before a highlighted block of differences, if block starts at beginning of a line."
558 :type 'string 556 :type 'string
559 :tag "Region before-flag at beginning of line" 557 :tag "Region before-flag at beginning of line"
560 :group 'ediff) 558 :group 'ediff)
561 559
562(defcustom ediff-after-flag-eol (if (featurep 'xemacs) (make-glyph "<<-") "<<-") 560(defcustom ediff-after-flag-eol "<<-"
563 "Flag placed after a highlighted block of differences, if block ends at end of a line." 561 "Flag placed after a highlighted block of differences, if block ends at end of a line."
564 :type 'string 562 :type 'string
565 :tag "Region after-flag at end of line" 563 :tag "Region after-flag at end of line"
566 :group 'ediff) 564 :group 'ediff)
567 565
568(defcustom ediff-before-flag-mol (if (featurep 'xemacs) (make-glyph "->>") "->>") 566(defcustom ediff-before-flag-mol "->>"
569 "Flag placed before a highlighted block of differences, if block starts in mid-line." 567 "Flag placed before a highlighted block of differences, if block starts in mid-line."
570 :type 'string 568 :type 'string
571 :tag "Region before-flag in the middle of line" 569 :tag "Region before-flag in the middle of line"
572 :group 'ediff) 570 :group 'ediff)
573(defcustom ediff-after-flag-mol (if (featurep 'xemacs) (make-glyph "<<-") "<<-") 571(defcustom ediff-after-flag-mol "<<-"
574 "Flag placed after a highlighted block of differences, if block ends in mid-line." 572 "Flag placed after a highlighted block of differences, if block ends in mid-line."
575 :type 'string 573 :type 'string
576 :tag "Region after-flag in the middle of line" 574 :tag "Region after-flag in the middle of line"
@@ -717,33 +715,22 @@ work."
717 :type 'symbol 715 :type 'symbol
718 :group 'ediff) 716 :group 'ediff)
719 717
720(defcustom ediff-coding-system-for-write (if (featurep 'xemacs) 718(defcustom ediff-coding-system-for-write 'emacs-internal
721 'escape-quoted
722 'emacs-internal)
723 "The coding system for write to use when writing out difference regions 719 "The coding system for write to use when writing out difference regions
724to temp files in buffer jobs and when Ediff needs to find fine differences." 720to temp files in buffer jobs and when Ediff needs to find fine differences."
725 :type 'symbol 721 :type 'symbol
726 :group 'ediff) 722 :group 'ediff)
727 723
728 724
729(defalias 'ediff-read-event 725(define-obsolete-function-alias 'ediff-read-event #'read-event "27.1")
730 (if (featurep 'xemacs) 'next-command-event 'read-event))
731 726
732(defalias 'ediff-overlayp 727(define-obsolete-function-alias 'ediff-overlayp #'overlayp "27.1")
733 (if (featurep 'xemacs) 'extentp 'overlayp))
734 728
735(defalias 'ediff-make-overlay 729(define-obsolete-function-alias 'ediff-make-overlay #'make-overlay "27.1")
736 (if (featurep 'xemacs) 'make-extent 'make-overlay))
737 730
738(defalias 'ediff-delete-overlay 731(define-obsolete-function-alias 'ediff-delete-overlay #'delete-overlay "27.1")
739 (if (featurep 'xemacs) 'delete-extent 'delete-overlay))
740 732
741(defun ediff-color-display-p () 733(define-obsolete-function-alias 'ediff-color-display-p #'display-color-p "27.1")
742 (condition-case nil
743 (if (featurep 'xemacs)
744 (eq (device-class (selected-device)) 'color) ; xemacs form
745 (display-color-p)) ; emacs form
746 (error nil)))
747 734
748 735
749;; A var local to each control panel buffer. Indicates highlighting style 736;; A var local to each control panel buffer. Indicates highlighting style
@@ -754,12 +741,10 @@ to temp files in buffer jobs and when Ediff needs to find fine differences."
754 "") 741 "")
755 742
756 743
757(if (featurep 'xemacs) 744(define-obsolete-function-alias 'ediff-display-pixel-width
758 (progn 745 #'display-pixel-width "27.1")
759 (defalias 'ediff-display-pixel-width 'device-pixel-width) 746(define-obsolete-function-alias 'ediff-display-pixel-height
760 (defalias 'ediff-display-pixel-height 'device-pixel-height)) 747 #'display-pixel-height "27.1")
761 (defalias 'ediff-display-pixel-width 'display-pixel-width)
762 (defalias 'ediff-display-pixel-height 'display-pixel-height))
763 748
764;; A-list of current-diff-overlay symbols associated with buf types 749;; A-list of current-diff-overlay symbols associated with buf types
765(defconst ediff-current-diff-overlay-alist 750(defconst ediff-current-diff-overlay-alist
@@ -783,9 +768,9 @@ to temp files in buffer jobs and when Ediff needs to find fine differences."
783(defun ediff-region-help-echo (extent-or-window &optional overlay _point) 768(defun ediff-region-help-echo (extent-or-window &optional overlay _point)
784 (unless overlay 769 (unless overlay
785 (setq overlay extent-or-window)) 770 (setq overlay extent-or-window))
786 (let ((is-current (ediff-overlay-get overlay 'ediff)) 771 (let ((is-current (overlay-get overlay 'ediff))
787 (face (ediff-overlay-get overlay 'face)) 772 (face (overlay-get overlay 'face))
788 (diff-num (ediff-overlay-get overlay 'ediff-diff-num)) 773 (diff-num (overlay-get overlay 'ediff-diff-num))
789 face-help) 774 face-help)
790 775
791 ;; This happens only for refinement overlays 776 ;; This happens only for refinement overlays
@@ -804,7 +789,7 @@ to temp files in buffer jobs and when Ediff needs to find fine differences."
804 789
805(defun ediff-set-face-pixmap (face pixmap) 790(defun ediff-set-face-pixmap (face pixmap)
806 "Set face pixmap on a monochrome display." 791 "Set face pixmap on a monochrome display."
807 (if (and (ediff-window-display-p) (not (ediff-color-display-p))) 792 (if (and (ediff-window-display-p) (not (display-color-p)))
808 (condition-case nil 793 (condition-case nil
809 (set-face-background-pixmap face pixmap) 794 (set-face-background-pixmap face pixmap)
810 (error 795 (error
@@ -839,14 +824,6 @@ DO NOT CHANGE this variable. Instead, use the customization
839widget to customize the actual face object `ediff-current-diff-A' 824widget to customize the actual face object `ediff-current-diff-A'
840this variable represents.") 825this variable represents.")
841(ediff-hide-face ediff-current-diff-face-A) 826(ediff-hide-face ediff-current-diff-face-A)
842;; Until custom.el for XEmacs starts supporting :inverse-video we do this.
843;; This means that some user customization may be trashed.
844(and (featurep 'xemacs)
845 (ediff-has-face-support-p)
846 (not (ediff-color-display-p))
847 (copy-face 'modeline ediff-current-diff-face-A))
848
849
850 827
851(defface ediff-current-diff-B 828(defface ediff-current-diff-B
852 '((((class color) (min-colors 88) (background light)) 829 '((((class color) (min-colors 88) (background light))
@@ -869,13 +846,6 @@ this variable represents.")
869widget to customize the actual face `ediff-current-diff-B' 846widget to customize the actual face `ediff-current-diff-B'
870this variable represents.") 847this variable represents.")
871(ediff-hide-face ediff-current-diff-face-B) 848(ediff-hide-face ediff-current-diff-face-B)
872;; Until custom.el for XEmacs starts supporting :inverse-video we do this.
873;; This means that some user customization may be trashed.
874(and (featurep 'xemacs)
875 (ediff-has-face-support-p)
876 (not (ediff-color-display-p))
877 (copy-face 'modeline ediff-current-diff-face-B))
878
879 849
880(defface ediff-current-diff-C 850(defface ediff-current-diff-C
881 '((((class color) (min-colors 88) (background light)) 851 '((((class color) (min-colors 88) (background light))
@@ -897,13 +867,6 @@ DO NOT CHANGE this variable. Instead, use the customization
897widget to customize the actual face object `ediff-current-diff-C' 867widget to customize the actual face object `ediff-current-diff-C'
898this variable represents.") 868this variable represents.")
899(ediff-hide-face ediff-current-diff-face-C) 869(ediff-hide-face ediff-current-diff-face-C)
900;; Until custom.el for XEmacs starts supporting :inverse-video we do this.
901;; This means that some user customization may be trashed.
902(and (featurep 'xemacs)
903 (ediff-has-face-support-p)
904 (not (ediff-color-display-p))
905 (copy-face 'modeline ediff-current-diff-face-C))
906
907 870
908(defface ediff-current-diff-Ancestor 871(defface ediff-current-diff-Ancestor
909 '((((class color) (min-colors 88) (background light)) 872 '((((class color) (min-colors 88) (background light))
@@ -927,13 +890,6 @@ DO NOT CHANGE this variable. Instead, use the customization
927widget to customize the actual face object `ediff-current-diff-Ancestor' 890widget to customize the actual face object `ediff-current-diff-Ancestor'
928this variable represents.") 891this variable represents.")
929(ediff-hide-face ediff-current-diff-face-Ancestor) 892(ediff-hide-face ediff-current-diff-face-Ancestor)
930;; Until custom.el for XEmacs starts supporting :inverse-video we do this.
931;; This means that some user customization may be trashed.
932(and (featurep 'xemacs)
933 (ediff-has-face-support-p)
934 (not (ediff-color-display-p))
935 (copy-face 'modeline ediff-current-diff-face-Ancestor))
936
937 893
938(defface ediff-fine-diff-A 894(defface ediff-fine-diff-A
939 '((((class color) (min-colors 88) (background light)) 895 '((((class color) (min-colors 88) (background light))
@@ -1383,8 +1339,8 @@ This default should work without changes."
1383 overl diff-num) 1339 overl diff-num)
1384 (mapcar (lambda (rec) 1340 (mapcar (lambda (rec)
1385 (setq overl (ediff-get-diff-overlay-from-diff-record rec) 1341 (setq overl (ediff-get-diff-overlay-from-diff-record rec)
1386 diff-num (ediff-overlay-get overl 'ediff-diff-num)) 1342 diff-num (overlay-get overl 'ediff-diff-num))
1387 (if (ediff-overlay-buffer overl) 1343 (if (overlay-buffer overl)
1388 ;; only if overlay is alive 1344 ;; only if overlay is alive
1389 (ediff-set-overlay-face 1345 (ediff-set-overlay-face
1390 overl 1346 overl
@@ -1410,8 +1366,8 @@ This default should work without changes."
1410;; this record is itself a vector 1366;; this record is itself a vector
1411(defsubst ediff-clear-fine-diff-vector (diff-record) 1367(defsubst ediff-clear-fine-diff-vector (diff-record)
1412 (if diff-record 1368 (if diff-record
1413 (mapc #'ediff-delete-overlay 1369 (mapc #'delete-overlay
1414 (ediff-get-fine-diff-vector-from-diff-record diff-record)))) 1370 (ediff-get-fine-diff-vector-from-diff-record diff-record))))
1415 1371
1416(defsubst ediff-clear-fine-differences-in-one-buffer (n buf-type) 1372(defsubst ediff-clear-fine-differences-in-one-buffer (n buf-type)
1417 (ediff-clear-fine-diff-vector (ediff-get-difference n buf-type)) 1373 (ediff-clear-fine-diff-vector (ediff-get-difference n buf-type))
@@ -1425,49 +1381,37 @@ This default should work without changes."
1425 1381
1426 1382
1427(defsubst ediff-mouse-event-p (event) 1383(defsubst ediff-mouse-event-p (event)
1428 (if (featurep 'xemacs) 1384 (string-match "mouse" (format "%S" (event-basic-type event))))
1429 (button-event-p event)
1430 (string-match "mouse" (format "%S" (event-basic-type event)))))
1431 1385
1432 1386
1433(defsubst ediff-key-press-event-p (event) 1387(defsubst ediff-key-press-event-p (event)
1434 (if (featurep 'xemacs) 1388 (or (char-or-string-p event) (symbolp event)))
1435 (key-press-event-p event)
1436 (or (char-or-string-p event) (symbolp event))))
1437 1389
1438(defun ediff-event-point (event) 1390(defun ediff-event-point (event)
1439 (cond ((ediff-mouse-event-p event) 1391 (cond ((ediff-mouse-event-p event)
1440 (if (featurep 'xemacs) 1392 (posn-point (event-start event)))
1441 (event-point event)
1442 (posn-point (event-start event))))
1443 ((ediff-key-press-event-p event) 1393 ((ediff-key-press-event-p event)
1444 (point)) 1394 (point))
1445 (t (error "Error")))) 1395 (t (error "Error"))))
1446 1396
1447(defun ediff-event-buffer (event) 1397(defun ediff-event-buffer (event)
1448 (cond ((ediff-mouse-event-p event) 1398 (cond ((ediff-mouse-event-p event)
1449 (if (featurep 'xemacs) 1399 (window-buffer (posn-window (event-start event))))
1450 (event-buffer event)
1451 (window-buffer (posn-window (event-start event)))))
1452 ((ediff-key-press-event-p event) 1400 ((ediff-key-press-event-p event)
1453 (current-buffer)) 1401 (current-buffer))
1454 (t (error "Error")))) 1402 (t (error "Error"))))
1455 1403
1456(defun ediff-event-key (event-or-key) 1404(define-obsolete-function-alias 'ediff-event-key #'identity "27.1")
1457 (if (featurep 'xemacs)
1458 ;;(if (eventp event-or-key) (event-key event-or-key) event-or-key)
1459 (if (eventp event-or-key) (event-to-character event-or-key t t) event-or-key)
1460 event-or-key))
1461 1405
1462(defun ediff-last-command-char () 1406(defun ediff-last-command-char ()
1463 (ediff-event-key last-command-event)) 1407 (declare (obsolete nil "27.1"))
1408 last-command-event)
1464 1409
1465 1410
1466(defsubst ediff-frame-iconified-p (frame) 1411(defsubst ediff-frame-iconified-p (frame)
1467 (and (ediff-window-display-p) (frame-live-p frame) 1412 (and (ediff-window-display-p)
1468 (if (featurep 'xemacs) 1413 (frame-live-p frame)
1469 (frame-iconified-p frame) 1414 (eq (frame-visible-p frame) 'icon)))
1470 (eq (frame-visible-p frame) 'icon))))
1471 1415
1472(defsubst ediff-window-visible-p (wind) 1416(defsubst ediff-window-visible-p (wind)
1473 ;; under TTY, window-live-p also means window is visible 1417 ;; under TTY, window-live-p also means window is visible
@@ -1476,17 +1420,13 @@ This default should work without changes."
1476 (frame-visible-p (window-frame wind))))) 1420 (frame-visible-p (window-frame wind)))))
1477 1421
1478 1422
1479(defsubst ediff-frame-char-width (frame) 1423(define-obsolete-function-alias 'ediff-frame-char-width
1480 (if (featurep 'xemacs) 1424 #'frame-char-width "27.1")
1481 (/ (frame-pixel-width frame) (frame-width frame))
1482 (frame-char-width frame)))
1483 1425
1484(defun ediff-reset-mouse (&optional frame do-not-grab-mouse) 1426(defun ediff-reset-mouse (&optional frame do-not-grab-mouse)
1485 (or frame (setq frame (selected-frame))) 1427 (or frame (setq frame (selected-frame)))
1486 (if (ediff-window-display-p) 1428 (if (ediff-window-display-p)
1487 (let ((frame-or-wind frame)) 1429 (let ((frame-or-wind frame))
1488 (if (featurep 'xemacs)
1489 (setq frame-or-wind (frame-selected-window frame)))
1490 (or do-not-grab-mouse 1430 (or do-not-grab-mouse
1491 ;; don't set mouse if the user said to never do this 1431 ;; don't set mouse if the user said to never do this
1492 (not ediff-grab-mouse) 1432 (not ediff-grab-mouse)
@@ -1523,65 +1463,42 @@ This default should work without changes."
1523 ediff-mouse-pixel-threshold)))) 1463 ediff-mouse-pixel-threshold))))
1524 (t nil)))) 1464 (t nil))))
1525 1465
1526(defsubst ediff-frame-char-height (frame) 1466(define-obsolete-function-alias 'ediff-frame-char-height
1527 (if (featurep 'xemacs) 1467 #'frame-char-height "27.1")
1528 (glyph-height ediff-H-glyph (frame-selected-window frame))
1529 (frame-char-height frame)))
1530 1468
1531;; Some overlay functions 1469;; Some overlay functions
1532 1470
1533(defsubst ediff-overlay-start (overl) 1471(defsubst ediff-overlay-start (overl)
1534 (if (ediff-overlayp overl) 1472 (if (overlayp overl)
1535 (if (featurep 'xemacs) 1473 (overlay-start overl)))
1536 (extent-start-position overl)
1537 (overlay-start overl))))
1538 1474
1539(defsubst ediff-overlay-end (overl) 1475(defsubst ediff-overlay-end (overl)
1540 (if (ediff-overlayp overl) 1476 (if (overlayp overl)
1541 (if (featurep 'xemacs) 1477 (overlay-end overl)))
1542 (extent-end-position overl)
1543 (overlay-end overl))))
1544 1478
1545(defsubst ediff-empty-overlay-p (overl) 1479(defsubst ediff-empty-overlay-p (overl)
1546 (= (ediff-overlay-start overl) (ediff-overlay-end overl))) 1480 (= (ediff-overlay-start overl) (ediff-overlay-end overl)))
1547 1481
1548;; like overlay-buffer in Emacs. In XEmacs, returns nil if the extent is 1482(define-obsolete-function-alias 'ediff-overlay-buffer
1549;; dead. Otherwise, works like extent-buffer 1483 #'overlay-buffer "27.1")
1550(defun ediff-overlay-buffer (overl)
1551 (if (featurep 'xemacs)
1552 (and (extent-live-p overl) (extent-object overl))
1553 (overlay-buffer overl)))
1554 1484
1555;; like overlay-get in Emacs. In XEmacs, returns nil if the extent is 1485(define-obsolete-function-alias 'ediff-overlay-get #'overlay-get "27.1")
1556;; dead. Otherwise, like extent-property
1557(defun ediff-overlay-get (overl property)
1558 (if (featurep 'xemacs)
1559 (and (extent-live-p overl) (extent-property overl property))
1560 (overlay-get overl property)))
1561 1486
1562 1487
1563;; These two functions are here because XEmacs refuses to
1564;; handle overlays whose buffers were deleted.
1565(defun ediff-move-overlay (overlay beg end &optional buffer) 1488(defun ediff-move-overlay (overlay beg end &optional buffer)
1566 "Calls `move-overlay' in Emacs and `set-extent-endpoints' in Lemacs. 1489 "If OVERLAY's buffer exists, call `move-overlay'."
1567Checks if overlay's buffer exists before actually doing the move." 1490 (let ((buf (and overlay (overlay-buffer overlay))))
1568 (let ((buf (and overlay (ediff-overlay-buffer overlay))))
1569 (if (ediff-buffer-live-p buf) 1491 (if (ediff-buffer-live-p buf)
1570 (if (featurep 'xemacs) 1492 (move-overlay overlay beg end buffer)
1571 (set-extent-endpoints overlay beg end)
1572 (move-overlay overlay beg end buffer))
1573 ;; buffer's dead 1493 ;; buffer's dead
1574 (if overlay 1494 (if overlay
1575 (ediff-delete-overlay overlay))))) 1495 (delete-overlay overlay)))))
1576 1496
1577(defun ediff-overlay-put (overlay prop value) 1497(defun ediff-overlay-put (overlay prop value)
1578 "Calls `overlay-put' or `set-extent-property' depending on Emacs version. 1498 "Calls `overlay-put', but checks if overlay's buffer exists."
1579Checks if overlay's buffer exists." 1499 (if (ediff-buffer-live-p (overlay-buffer overlay))
1580 (if (ediff-buffer-live-p (ediff-overlay-buffer overlay)) 1500 (overlay-put overlay prop value)
1581 (if (featurep 'xemacs) 1501 (delete-overlay overlay)))
1582 (set-extent-property overlay prop value)
1583 (overlay-put overlay prop value))
1584 (ediff-delete-overlay overlay)))
1585 1502
1586;; temporarily uses DIR to abbreviate file name 1503;; temporarily uses DIR to abbreviate file name
1587;; if DIR is nil, use default-directory 1504;; if DIR is nil, use default-directory
@@ -1590,10 +1507,7 @@ Checks if overlay's buffer exists."
1590 (let ((directory-abbrev-alist (list (cons dir "")))) 1507 (let ((directory-abbrev-alist (list (cons dir ""))))
1591 (abbreviate-file-name file))) 1508 (abbreviate-file-name file)))
1592 (t 1509 (t
1593 (if (featurep 'xemacs) 1510 (abbreviate-file-name file))))
1594 ;; XEmacs requires addl argument
1595 (abbreviate-file-name file t)
1596 (abbreviate-file-name file)))))
1597 1511
1598;; Takes a directory and returns the parent directory. 1512;; Takes a directory and returns the parent directory.
1599;; does nothing to `/'. If the ARG is a regular file, 1513;; does nothing to `/'. If the ARG is a regular file,
diff --git a/lisp/vc/ediff-mult.el b/lisp/vc/ediff-mult.el
index 3a869bff3e4..4dc0485e7e5 100644
--- a/lisp/vc/ediff-mult.el
+++ b/lisp/vc/ediff-mult.el
@@ -471,7 +471,7 @@ Moves in circular fashion. With numeric prefix arg, skip this many items."
471 (ediff-next-meta-item1) 471 (ediff-next-meta-item1)
472 (setq overl (ediff-get-meta-overlay-at-pos (point))) 472 (setq overl (ediff-get-meta-overlay-at-pos (point)))
473 ;; skip invisible ones 473 ;; skip invisible ones
474 (while (and overl (ediff-overlay-get overl 'invisible)) 474 (while (and overl (overlay-get overl 'invisible))
475 (ediff-next-meta-item1) 475 (ediff-next-meta-item1)
476 (setq overl (ediff-get-meta-overlay-at-pos (point))))))) 476 (setq overl (ediff-get-meta-overlay-at-pos (point)))))))
477 477
@@ -499,7 +499,7 @@ Moves in circular fashion. With numeric prefix arg, skip this many items."
499 (ediff-previous-meta-item1) 499 (ediff-previous-meta-item1)
500 (setq overl (ediff-get-meta-overlay-at-pos (point))) 500 (setq overl (ediff-get-meta-overlay-at-pos (point)))
501 ;; skip invisible ones 501 ;; skip invisible ones
502 (while (and overl (ediff-overlay-get overl 'invisible)) 502 (while (and overl (overlay-get overl 'invisible))
503 (ediff-previous-meta-item1) 503 (ediff-previous-meta-item1)
504 (setq overl (ediff-get-meta-overlay-at-pos (point))))))) 504 (setq overl (ediff-get-meta-overlay-at-pos (point)))))))
505 505
@@ -929,7 +929,7 @@ behavior."
929;; in the meta buffer. If nil, use SPC 929;; in the meta buffer. If nil, use SPC
930(defun ediff-replace-session-activity-marker-in-meta-buffer (point new-marker) 930(defun ediff-replace-session-activity-marker-in-meta-buffer (point new-marker)
931 (let* ((overl (ediff-get-meta-overlay-at-pos point)) 931 (let* ((overl (ediff-get-meta-overlay-at-pos point))
932 (session-info (ediff-overlay-get overl 'ediff-meta-info)) 932 (session-info (overlay-get overl 'ediff-meta-info))
933 (activity-marker (ediff-get-session-activity-marker session-info)) 933 (activity-marker (ediff-get-session-activity-marker session-info))
934 buffer-read-only) 934 buffer-read-only)
935 (or new-marker activity-marker (setq new-marker ?\s)) 935 (or new-marker activity-marker (setq new-marker ?\s))
@@ -944,7 +944,7 @@ behavior."
944;; the meta buffer. If nil, use SPC 944;; the meta buffer. If nil, use SPC
945(defun ediff-replace-session-status-in-meta-buffer (point new-status) 945(defun ediff-replace-session-status-in-meta-buffer (point new-status)
946 (let* ((overl (ediff-get-meta-overlay-at-pos point)) 946 (let* ((overl (ediff-get-meta-overlay-at-pos point))
947 (session-info (ediff-overlay-get overl 'ediff-meta-info)) 947 (session-info (overlay-get overl 'ediff-meta-info))
948 (status (ediff-get-session-status session-info)) 948 (status (ediff-get-session-status session-info))
949 buffer-read-only) 949 buffer-read-only)
950 (setq new-status (or new-status status ?\s)) 950 (setq new-status (or new-status status ?\s))
@@ -988,9 +988,7 @@ behavior."
988 (erase-buffer) 988 (erase-buffer)
989 ;; delete phony overlays that used to represent sessions before the buff 989 ;; delete phony overlays that used to represent sessions before the buff
990 ;; was redrawn 990 ;; was redrawn
991 (if (featurep 'xemacs) 991 (mapc #'delete-overlay (overlays-in 1 1))
992 (map-extents 'delete-extent)
993 (mapc #'delete-overlay (overlays-in 1 1)))
994 992
995 (setq regexp (ediff-get-group-regexp meta-list) 993 (setq regexp (ediff-get-group-regexp meta-list)
996 merge-autostore-dir 994 merge-autostore-dir
@@ -1077,7 +1075,7 @@ behavior."
1077 ;; Do hiding 1075 ;; Do hiding
1078 (if overl (ediff-overlay-put overl 'invisible t))) 1076 (if overl (ediff-overlay-put overl 'invisible t)))
1079 ((and (eq (ediff-get-session-status session-info) ?H) 1077 ((and (eq (ediff-get-session-status session-info) ?H)
1080 overl (ediff-overlay-get overl 'invisible)) 1078 overl (overlay-get overl 'invisible))
1081 ;; Do unhiding 1079 ;; Do unhiding
1082 (ediff-overlay-put overl 'invisible nil)) 1080 (ediff-overlay-put overl 'invisible nil))
1083 (t (ediff-replace-session-activity-marker-in-meta-buffer 1081 (t (ediff-replace-session-activity-marker-in-meta-buffer
@@ -1094,36 +1092,26 @@ behavior."
1094 1092
1095(defun ediff-update-session-marker-in-dir-meta-buffer (session-num) 1093(defun ediff-update-session-marker-in-dir-meta-buffer (session-num)
1096 (let (buffer-meta-overlays session-info overl buffer-read-only) 1094 (let (buffer-meta-overlays session-info overl buffer-read-only)
1097 (setq overl 1095 ;; Splice overlay lists to get all buffer overlays
1098 (if (featurep 'xemacs) 1096 (setq buffer-meta-overlays (overlay-lists)
1099 (map-extents 1097 buffer-meta-overlays (append (car buffer-meta-overlays)
1100 (lambda (ext _maparg) 1098 (cdr buffer-meta-overlays)))
1101 (if (and 1099 (setq overl (car
1102 (ediff-overlay-get ext 'ediff-meta-info) 1100 (delq nil
1103 (eq (ediff-overlay-get ext 'ediff-meta-session-number) 1101 (mapcar
1104 session-num)) 1102 (lambda (overl)
1105 ext))) 1103 (if (and
1106 ;; Emacs doesn't have map-extents, so try harder 1104 (overlay-get overl 'ediff-meta-info)
1107 ;; Splice overlay lists to get all buffer overlays 1105 (eq (overlay-get
1108 (setq buffer-meta-overlays (overlay-lists) 1106 overl 'ediff-meta-session-number)
1109 buffer-meta-overlays (append (car buffer-meta-overlays) 1107 session-num))
1110 (cdr buffer-meta-overlays))) 1108 overl))
1111 (car 1109 buffer-meta-overlays))))
1112 (delq nil
1113 (mapcar
1114 (lambda (overl)
1115 (if (and
1116 (ediff-overlay-get overl 'ediff-meta-info)
1117 (eq (ediff-overlay-get
1118 overl 'ediff-meta-session-number)
1119 session-num))
1120 overl))
1121 buffer-meta-overlays)))))
1122 (or overl 1110 (or overl
1123 (error 1111 (error
1124 "Bug in ediff-update-session-marker-in-dir-meta-buffer: no overlay with given number %S" 1112 "Bug in ediff-update-session-marker-in-dir-meta-buffer: no overlay with given number %S"
1125 session-num)) 1113 session-num))
1126 (setq session-info (ediff-overlay-get overl 'ediff-meta-info)) 1114 (setq session-info (overlay-get overl 'ediff-meta-info))
1127 (goto-char (ediff-overlay-start overl)) 1115 (goto-char (ediff-overlay-start overl))
1128 (ediff-replace-session-activity-marker-in-meta-buffer 1116 (ediff-replace-session-activity-marker-in-meta-buffer
1129 (point) 1117 (point)
@@ -1434,9 +1422,7 @@ Useful commands:
1434 (erase-buffer) 1422 (erase-buffer)
1435 ;; delete phony overlays that used to represent sessions before the buff 1423 ;; delete phony overlays that used to represent sessions before the buff
1436 ;; was redrawn 1424 ;; was redrawn
1437 (if (featurep 'xemacs) 1425 (mapc #'delete-overlay (overlays-in 1 1))
1438 (map-extents 'delete-extent)
1439 (mapc #'delete-overlay (overlays-in 1 1)))
1440 1426
1441 (insert (substitute-command-keys "\ 1427 (insert (substitute-command-keys "\
1442This is a registry of all active Ediff sessions. 1428This is a registry of all active Ediff sessions.
@@ -1538,7 +1524,7 @@ Useful commands:
1538;; (SESSION-CTL-BUFFER STATUS OBJA OBJB OBJC) 1524;; (SESSION-CTL-BUFFER STATUS OBJA OBJB OBJC)
1539(defun ediff-set-meta-overlay (b e prop &optional session-number hidden) 1525(defun ediff-set-meta-overlay (b e prop &optional session-number hidden)
1540 (let (overl) 1526 (let (overl)
1541 (setq overl (ediff-make-overlay b e)) 1527 (setq overl (make-overlay b e))
1542 (ediff-overlay-put overl 'mouse-face 'highlight) 1528 (ediff-overlay-put overl 'mouse-face 'highlight)
1543 (ediff-overlay-put overl 'ediff-meta-info prop) 1529 (ediff-overlay-put overl 'ediff-meta-info prop)
1544 (ediff-overlay-put overl 'invisible hidden) 1530 (ediff-overlay-put overl 'invisible hidden)
@@ -2167,7 +2153,7 @@ all marked sessions must be active."
2167 (ediff-update-markers-in-dir-meta-buffer ediff-meta-list))) 2153 (ediff-update-markers-in-dir-meta-buffer ediff-meta-list)))
2168 (setq overl (ediff-get-meta-overlay-at-pos (point))) 2154 (setq overl (ediff-get-meta-overlay-at-pos (point)))
2169 ;; skip the invisible sessions 2155 ;; skip the invisible sessions
2170 (while (and overl (ediff-overlay-get overl 'invisible)) 2156 (while (and overl (overlay-get overl 'invisible))
2171 (ediff-next-meta-item1) 2157 (ediff-next-meta-item1)
2172 (setq overl (ediff-get-meta-overlay-at-pos (point)))) 2158 (setq overl (ediff-get-meta-overlay-at-pos (point))))
2173 )))) 2159 ))))
@@ -2259,21 +2245,17 @@ If this is a session registry buffer then just bury it."
2259;; If optional NOERROR arg is given, don't report error and return nil if no 2245;; If optional NOERROR arg is given, don't report error and return nil if no
2260;; meta info is found on line. 2246;; meta info is found on line.
2261(defun ediff-get-meta-info (buf point &optional noerror) 2247(defun ediff-get-meta-info (buf point &optional noerror)
2262 (let (result olist tmp) 2248 (let (result olist)
2263 (if (and point (ediff-buffer-live-p buf)) 2249 (if (and point (ediff-buffer-live-p buf))
2264 (ediff-with-current-buffer buf 2250 (ediff-with-current-buffer buf
2265 (if (featurep 'xemacs) 2251 (setq olist
2266 (setq result 2252 (mapcar (lambda (elt)
2267 (if (setq tmp (extent-at point buf 'ediff-meta-info)) 2253 (unless (overlay-get elt 'invisible)
2268 (ediff-overlay-get tmp 'ediff-meta-info))) 2254 (overlay-get elt 'ediff-meta-info)))
2269 (setq olist 2255 (overlays-at point)))
2270 (mapcar (lambda (elt) 2256 (while (and olist (null (car olist)))
2271 (unless (overlay-get elt 'invisible) 2257 (setq olist (cdr olist)))
2272 (overlay-get elt 'ediff-meta-info))) 2258 (setq result (car olist))))
2273 (overlays-at point)))
2274 (while (and olist (null (car olist)))
2275 (setq olist (cdr olist)))
2276 (setq result (car olist)))))
2277 (or result 2259 (or result
2278 (unless noerror 2260 (unless noerror
2279 (ediff-update-registry) 2261 (ediff-update-registry)
@@ -2281,21 +2263,19 @@ If this is a session registry buffer then just bury it."
2281 2263
2282 2264
2283(defun ediff-get-meta-overlay-at-pos (point) 2265(defun ediff-get-meta-overlay-at-pos (point)
2284 (if (featurep 'xemacs) 2266 (let* ((overl-list (overlays-at point))
2285 (extent-at point (current-buffer) 'ediff-meta-info) 2267 (overl (car overl-list)))
2286 (let* ((overl-list (overlays-at point)) 2268 (while (and overl (null (overlay-get overl 'ediff-meta-info)))
2287 (overl (car overl-list))) 2269 (setq overl-list (cdr overl-list)
2288 (while (and overl (null (overlay-get overl 'ediff-meta-info))) 2270 overl (car overl-list)))
2289 (setq overl-list (cdr overl-list) 2271 overl))
2290 overl (car overl-list)))
2291 overl)))
2292 2272
2293(defun ediff-get-session-number-at-pos (point &optional meta-buffer) 2273(defun ediff-get-session-number-at-pos (point &optional meta-buffer)
2294 (setq meta-buffer (if (ediff-buffer-live-p meta-buffer) 2274 (setq meta-buffer (if (ediff-buffer-live-p meta-buffer)
2295 meta-buffer 2275 meta-buffer
2296 (current-buffer))) 2276 (current-buffer)))
2297 (ediff-with-current-buffer meta-buffer 2277 (ediff-with-current-buffer meta-buffer
2298 (ediff-overlay-get 2278 (overlay-get
2299 (ediff-get-meta-overlay-at-pos point) 'ediff-meta-session-number))) 2279 (ediff-get-meta-overlay-at-pos point) 'ediff-meta-session-number)))
2300 2280
2301 2281
@@ -2304,46 +2284,29 @@ If this is a session registry buffer then just bury it."
2304 (if (eobp) 2284 (if (eobp)
2305 (goto-char (point-min)) 2285 (goto-char (point-min))
2306 (let ((overl (ediff-get-meta-overlay-at-pos point))) 2286 (let ((overl (ediff-get-meta-overlay-at-pos point)))
2307 (if (featurep 'xemacs) 2287 (if overl
2308 (progn ; xemacs 2288 ;; note: end of current overlay is the beginning of the next one
2309 (if overl 2289 (overlay-end overl)
2310 (setq overl (next-extent overl)) 2290 (next-overlay-change point)))))
2311 (setq overl (next-extent (current-buffer))))
2312 (if overl
2313 (extent-start-position overl)
2314 (point-max)))
2315 ;; emacs
2316 (if overl
2317 ;; note: end of current overlay is the beginning of the next one
2318 (overlay-end overl)
2319 (next-overlay-change point))))))
2320 2291
2321 2292
2322(defun ediff-previous-meta-overlay-start (point) 2293(defun ediff-previous-meta-overlay-start (point)
2323 (if (bobp) 2294 (if (bobp)
2324 (goto-char (point-max)) 2295 (goto-char (point-max))
2325 (let ((overl (ediff-get-meta-overlay-at-pos point))) 2296 (let ((overl (ediff-get-meta-overlay-at-pos point)))
2326 (if (featurep 'xemacs) 2297 (if overl (setq point (overlay-start overl)))
2327 (progn 2298 ;; to get to the beginning of prev overlay
2328 (if overl 2299 (if (not (bobp))
2329 (setq overl (previous-extent overl)) 2300 ;; trick to overcome an emacs bug--doesn't always find previous
2330 (setq overl (previous-extent (current-buffer)))) 2301 ;; overlay change correctly
2331 (if overl 2302 (setq point (1- point)))
2332 (extent-start-position overl) 2303 (setq point (previous-overlay-change point))
2333 (point-min))) 2304 ;; If we are not over an overlay after subtracting 1, it means we are
2334 (if overl (setq point (overlay-start overl))) 2305 ;; in the description area preceding session records. In this case,
2335 ;; to get to the beginning of prev overlay 2306 ;; goto the top of the registry buffer.
2336 (if (not (bobp)) 2307 (or (car (overlays-at point))
2337 ;; trick to overcome an emacs bug--doesn't always find previous 2308 (setq point (point-min)))
2338 ;; overlay change correctly 2309 point)))
2339 (setq point (1- point)))
2340 (setq point (previous-overlay-change point))
2341 ;; If we are not over an overlay after subtracting 1, it means we are
2342 ;; in the description area preceding session records. In this case,
2343 ;; goto the top of the registry buffer.
2344 (or (car (overlays-at point))
2345 (setq point (point-min)))
2346 point))))
2347 2310
2348(autoload 'ediff-patch-file-internal "ediff-ptch") 2311(autoload 'ediff-patch-file-internal "ediff-ptch")
2349 2312
@@ -2403,10 +2366,10 @@ If this is a session registry buffer then just bury it."
2403This is used only for sessions that involve 2 or 3 files at the same time. 2366This is used only for sessions that involve 2 or 3 files at the same time.
2404ACTION is an optional argument that can be ?h, ?m, ?=, to mark for hiding, mark 2367ACTION is an optional argument that can be ?h, ?m, ?=, to mark for hiding, mark
2405for operation, or simply indicate which are equal files. If it is nil, then 2368for operation, or simply indicate which are equal files. If it is nil, then
2406`(ediff-last-command-char)' is used to decide which action to take." 2369`last-command-event' is used to decide which action to take."
2407 (interactive) 2370 (interactive)
2408 (if (null action) 2371 (if (null action)
2409 (setq action (ediff-last-command-char))) 2372 (setq action last-command-event))
2410 (let ((list (cdr ediff-meta-list)) 2373 (let ((list (cdr ediff-meta-list))
2411 marked1 marked2 marked3 2374 marked1 marked2 marked3
2412 fileinfo1 fileinfo2 fileinfo3 elt) 2375 fileinfo1 fileinfo2 fileinfo3 elt)
diff --git a/lisp/vc/ediff-util.el b/lisp/vc/ediff-util.el
index 6b2f023a222..52a765482e0 100644
--- a/lisp/vc/ediff-util.el
+++ b/lisp/vc/ediff-util.el
@@ -48,9 +48,6 @@
48(require 'ediff-wind) 48(require 'ediff-wind)
49(require 'ediff-diff) 49(require 'ediff-diff)
50(require 'ediff-merg) 50(require 'ediff-merg)
51;; for compatibility with current stable version of xemacs
52(if (featurep 'xemacs)
53 (require 'ediff-tbar))
54 51
55 52
56;;; Functions 53;;; Functions
@@ -284,9 +281,6 @@ to invocation.")
284 (make-local-variable 'window-min-height) 281 (make-local-variable 'window-min-height)
285 (setq window-min-height 2) 282 (setq window-min-height 2)
286 283
287 (if (featurep 'xemacs)
288 (make-local-hook 'ediff-after-quit-hook-internal))
289
290 ;; unwrap set up parameters passed as argument 284 ;; unwrap set up parameters passed as argument
291 (while setup-parameters 285 (while setup-parameters
292 (set (car (car setup-parameters)) (cdr (car setup-parameters))) 286 (set (car (car setup-parameters)) (cdr (car setup-parameters)))
@@ -308,9 +302,6 @@ to invocation.")
308 (if (string-match "buffer" (symbol-name ediff-job-name)) 302 (if (string-match "buffer" (symbol-name ediff-job-name))
309 (setq ediff-keep-variants t)) 303 (setq ediff-keep-variants t))
310 304
311 (if (featurep 'xemacs)
312 (make-local-hook 'pre-command-hook))
313
314 (if (ediff-window-display-p) 305 (if (ediff-window-display-p)
315 (add-hook 'pre-command-hook 'ediff-spy-after-mouse nil 'local)) 306 (add-hook 'pre-command-hook 'ediff-spy-after-mouse nil 'local))
316 (setq ediff-mouse-pixel-position (mouse-pixel-position)) 307 (setq ediff-mouse-pixel-position (mouse-pixel-position))
@@ -417,7 +408,6 @@ to invocation.")
417 ;; since these vars are local to control-buffer 408 ;; since these vars are local to control-buffer
418 ;; These won't run if there are errors in diff 409 ;; These won't run if there are errors in diff
419 (ediff-with-current-buffer ediff-buffer-A 410 (ediff-with-current-buffer ediff-buffer-A
420 (ediff-nuke-selective-display)
421 (run-hooks 'ediff-prepare-buffer-hook) 411 (run-hooks 'ediff-prepare-buffer-hook)
422 (if (ediff-with-current-buffer control-buffer ediff-merge-job) 412 (if (ediff-with-current-buffer control-buffer ediff-merge-job)
423 (setq buffer-read-only t)) 413 (setq buffer-read-only t))
@@ -431,7 +421,6 @@ to invocation.")
431 ) 421 )
432 422
433 (ediff-with-current-buffer ediff-buffer-B 423 (ediff-with-current-buffer ediff-buffer-B
434 (ediff-nuke-selective-display)
435 (run-hooks 'ediff-prepare-buffer-hook) 424 (run-hooks 'ediff-prepare-buffer-hook)
436 (if (ediff-with-current-buffer control-buffer ediff-merge-job) 425 (if (ediff-with-current-buffer control-buffer ediff-merge-job)
437 (setq buffer-read-only t)) 426 (setq buffer-read-only t))
@@ -445,7 +434,6 @@ to invocation.")
445 434
446 (if ediff-3way-job 435 (if ediff-3way-job
447 (ediff-with-current-buffer ediff-buffer-C 436 (ediff-with-current-buffer ediff-buffer-C
448 (ediff-nuke-selective-display)
449 ;; the merge buffer should never be narrowed 437 ;; the merge buffer should never be narrowed
450 ;; (it can happen if it is on rmail-mode or similar) 438 ;; (it can happen if it is on rmail-mode or similar)
451 (if (ediff-with-current-buffer control-buffer ediff-merge-job) 439 (if (ediff-with-current-buffer control-buffer ediff-merge-job)
@@ -463,7 +451,6 @@ to invocation.")
463 451
464 (if (ediff-buffer-live-p ediff-ancestor-buffer) 452 (if (ediff-buffer-live-p ediff-ancestor-buffer)
465 (ediff-with-current-buffer ediff-ancestor-buffer 453 (ediff-with-current-buffer ediff-ancestor-buffer
466 (ediff-nuke-selective-display)
467 (setq buffer-read-only t) 454 (setq buffer-read-only t)
468 (run-hooks 'ediff-prepare-buffer-hook) 455 (run-hooks 'ediff-prepare-buffer-hook)
469 (or (memq control-buffer ediff-this-buffer-ediff-sessions) 456 (or (memq control-buffer ediff-this-buffer-ediff-sessions)
@@ -560,9 +547,6 @@ to invocation.")
560 ediff-wide-display-p)) 547 ediff-wide-display-p))
561 548
562 (set-window-dedicated-p (selected-window) t) 549 (set-window-dedicated-p (selected-window) t)
563 ;; In multiframe, toolbar is set in ediff-setup-control-frame
564 (if (not (ediff-multiframe-setup-p))
565 (ediff-make-bottom-toolbar)) ; this checks if toolbar is requested
566 (goto-char (point-min)) 550 (goto-char (point-min))
567 (skip-chars-forward ediff-whitespace))) 551 (skip-chars-forward ediff-whitespace)))
568 552
@@ -773,9 +757,7 @@ Reestablish the default window display."
773 (if (fboundp 'select-frame-set-input-focus) 757 (if (fboundp 'select-frame-set-input-focus)
774 (select-frame-set-input-focus ediff-control-frame) 758 (select-frame-set-input-focus ediff-control-frame)
775 (raise-frame ediff-control-frame) 759 (raise-frame ediff-control-frame)
776 (select-frame ediff-control-frame) 760 (select-frame ediff-control-frame)))
777 (and (featurep 'xemacs) (fboundp 'focus-frame)
778 (focus-frame ediff-control-frame))))
779 761
780 ;; Redisplay whatever buffers are showing, if there is a selected difference 762 ;; Redisplay whatever buffers are showing, if there is a selected difference
781 (let ((control-frame ediff-control-frame) 763 (let ((control-frame ediff-control-frame)
@@ -831,7 +813,7 @@ Reestablish the default window display."
831 (if window 813 (if window
832 (progn 814 (progn
833 (select-window window) 815 (select-window window)
834 (ediff-deactivate-mark) 816 (deactivate-mark)
835 (ediff-position-region 817 (ediff-position-region
836 (ediff-get-diff-posn buf-type 'beg nil control-buf) 818 (ediff-get-diff-posn buf-type 'beg nil control-buf)
837 (ediff-get-diff-posn buf-type 'end nil control-buf) 819 (ediff-get-diff-posn buf-type 'end nil control-buf)
@@ -1026,7 +1008,7 @@ of the current buffer."
1026 (interactive) 1008 (interactive)
1027 (ediff-barf-if-not-control-buffer) 1009 (ediff-barf-if-not-control-buffer)
1028 (let ((ctl-buf (if (null buf) (current-buffer))) 1010 (let ((ctl-buf (if (null buf) (current-buffer)))
1029 (buf-type (ediff-char-to-buftype (ediff-last-command-char)))) 1011 (buf-type (ediff-char-to-buftype last-command-event)))
1030 (or buf (ediff-recenter)) 1012 (or buf (ediff-recenter))
1031 (or buf 1013 (or buf
1032 (setq buf (ediff-get-buffer buf-type))) 1014 (setq buf (ediff-get-buffer buf-type)))
@@ -1134,10 +1116,7 @@ of the current buffer."
1134 (and (vc-backend file) 1116 (and (vc-backend file)
1135 (if (fboundp 'vc-state) 1117 (if (fboundp 'vc-state)
1136 (or (memq (vc-state file) '(edited needs-merge)) 1118 (or (memq (vc-state file) '(edited needs-merge))
1137 (stringp (vc-state file))) 1119 (stringp (vc-state file)))))))
1138 ;; XEmacs has no vc-state
1139 (when (featurep 'xemacs) (vc-locking-user file)))
1140 )))
1141 1120
1142(defun ediff-file-checked-in-p (file) 1121(defun ediff-file-checked-in-p (file)
1143 (and (featurep 'vc-hooks) 1122 (and (featurep 'vc-hooks)
@@ -1146,10 +1125,7 @@ of the current buffer."
1146 (if (fboundp 'vc-state) 1125 (if (fboundp 'vc-state)
1147 (and 1126 (and
1148 (not (memq (vc-state file) '(edited needs-merge))) 1127 (not (memq (vc-state file) '(edited needs-merge)))
1149 (not (stringp (vc-state file)))) 1128 (not (stringp (vc-state file)))))))
1150 ;; XEmacs has no vc-state
1151 (when (featurep 'xemacs) (not (vc-locking-user file))))
1152 ))
1153 1129
1154(defun ediff-file-compressed-p (file) 1130(defun ediff-file-compressed-p (file)
1155 (require 'jka-compr) 1131 (require 'jka-compr)
@@ -1274,7 +1250,6 @@ This is especially useful when comparing buffers side-by-side."
1274 (ediff-with-current-buffer ctl-buf 1250 (ediff-with-current-buffer ctl-buf
1275 (modify-frame-parameters 1251 (modify-frame-parameters
1276 ediff-wide-display-frame ediff-wide-display-orig-parameters) 1252 ediff-wide-display-frame ediff-wide-display-orig-parameters)
1277 ;;(sit-for (if (featurep 'xemacs) 0.4 0))
1278 ;; restore control buf, since ctl window may have been deleted 1253 ;; restore control buf, since ctl window may have been deleted
1279 ;; during resizing 1254 ;; during resizing
1280 (set-buffer ctl-buf) 1255 (set-buffer ctl-buf)
@@ -1282,7 +1257,6 @@ This is especially useful when comparing buffers side-by-side."
1282 ediff-window-B nil) ; force update of window config 1257 ediff-window-B nil) ; force update of window config
1283 (ediff-recenter 'no-rehighlight)) 1258 (ediff-recenter 'no-rehighlight))
1284 (funcall ediff-make-wide-display-function) 1259 (funcall ediff-make-wide-display-function)
1285 ;;(sit-for (if (featurep 'xemacs) 0.4 0))
1286 (ediff-with-current-buffer ctl-buf 1260 (ediff-with-current-buffer ctl-buf
1287 (setq ediff-window-B nil) ; force update of window config 1261 (setq ediff-window-B nil) ; force update of window config
1288 (ediff-recenter 'no-rehighlight))))) 1262 (ediff-recenter 'no-rehighlight)))))
@@ -1302,8 +1276,6 @@ which see."
1302 (setq window-setup-func #'ediff-setup-windows-plain) 1276 (setq window-setup-func #'ediff-setup-windows-plain)
1303 (message "ediff is now in 'plain' mode")) 1277 (message "ediff is now in 'plain' mode"))
1304 ((eq ediff-window-setup-function #'ediff-setup-windows-plain) 1278 ((eq ediff-window-setup-function #'ediff-setup-windows-plain)
1305 (if (ediff-in-control-buffer-p)
1306 (ediff-kill-bottom-toolbar))
1307 (if (and (ediff-buffer-live-p ediff-control-buffer) 1279 (if (and (ediff-buffer-live-p ediff-control-buffer)
1308 (window-live-p ediff-control-window)) 1280 (window-live-p ediff-control-window))
1309 (set-window-dedicated-p ediff-control-window nil)) 1281 (set-window-dedicated-p ediff-control-window nil))
@@ -1342,8 +1314,6 @@ To change the default, set the variable `ediff-use-toolbar-p', which see."
1342 (progn 1314 (progn
1343 (or (ediff-window-display-p) 1315 (or (ediff-window-display-p)
1344 (user-error "Emacs is not running as a window application")) 1316 (user-error "Emacs is not running as a window application"))
1345 (if (ediff-use-toolbar-p)
1346 (ediff-kill-bottom-toolbar))
1347 ;; do this only after killing the toolbar 1317 ;; do this only after killing the toolbar
1348 (setq ediff-use-toolbar-p (not ediff-use-toolbar-p)) 1318 (setq ediff-use-toolbar-p (not ediff-use-toolbar-p))
1349 1319
@@ -1357,36 +1327,8 @@ To change the default, set the variable `ediff-use-toolbar-p', which see."
1357 (ediff-recenter 'no-rehighlight))))) 1327 (ediff-recenter 'no-rehighlight)))))
1358 1328
1359 1329
1360;; if was using toolbar, kill it 1330(define-obsolete-function-alias 'ediff-kill-bottom-toolbar #'ignore "27.1")
1361(defun ediff-kill-bottom-toolbar () 1331(define-obsolete-function-alias 'ediff-make-bottom-toolbar #'ignore "27.1")
1362 ;; Using ctl-buffer or ediff-control-window for LOCALE does not
1363 ;; work properly in XEmacs 19.14: we have to use
1364 ;;(selected-frame).
1365 ;; The problem with this is that any previous bottom-toolbar
1366 ;; will not re-appear after our cleanup here. Is there a way
1367 ;; to do "push" and "pop" toolbars ? --marcpa
1368 (if (featurep 'xemacs)
1369 (when (ediff-use-toolbar-p)
1370 (set-specifier bottom-toolbar (list (selected-frame) nil))
1371 (set-specifier bottom-toolbar-visible-p (list (selected-frame) nil)))))
1372
1373;; If wants to use toolbar, make it.
1374;; If not, zero the toolbar for XEmacs.
1375;; Do nothing for Emacs.
1376(defun ediff-make-bottom-toolbar (&optional frame)
1377 (when (ediff-window-display-p)
1378 (setq frame (or frame (selected-frame)))
1379 (if (featurep 'xemacs)
1380 (cond ((ediff-use-toolbar-p) ; this checks for XEmacs
1381 (set-specifier
1382 bottom-toolbar
1383 (list frame (if (ediff-3way-comparison-job)
1384 ediff-toolbar-3way ediff-toolbar)))
1385 (set-specifier bottom-toolbar-visible-p (list frame t))
1386 (set-specifier bottom-toolbar-height
1387 (list frame ediff-toolbar-height)))
1388 ((ediff-has-toolbar-support-p)
1389 (set-specifier bottom-toolbar-height (list frame 0)))))))
1390 1332
1391;; Merging 1333;; Merging
1392 1334
@@ -1449,15 +1391,15 @@ Used in ediff-windows/regions only."
1449 'C ediff-visible-bounds)) 1391 'C ediff-visible-bounds))
1450 ) 1392 )
1451 (ediff-with-current-buffer ediff-buffer-A 1393 (ediff-with-current-buffer ediff-buffer-A
1452 (if (ediff-overlay-buffer overl-A) 1394 (if (overlay-buffer overl-A)
1453 (narrow-to-region 1395 (narrow-to-region
1454 (ediff-overlay-start overl-A) (ediff-overlay-end overl-A)))) 1396 (ediff-overlay-start overl-A) (ediff-overlay-end overl-A))))
1455 (ediff-with-current-buffer ediff-buffer-B 1397 (ediff-with-current-buffer ediff-buffer-B
1456 (if (ediff-overlay-buffer overl-B) 1398 (if (overlay-buffer overl-B)
1457 (narrow-to-region 1399 (narrow-to-region
1458 (ediff-overlay-start overl-B) (ediff-overlay-end overl-B)))) 1400 (ediff-overlay-start overl-B) (ediff-overlay-end overl-B))))
1459 1401
1460 (if (and ediff-3way-job (ediff-overlay-buffer overl-C)) 1402 (if (and ediff-3way-job (overlay-buffer overl-C))
1461 (ediff-with-current-buffer ediff-buffer-C 1403 (ediff-with-current-buffer ediff-buffer-C
1462 (narrow-to-region 1404 (narrow-to-region
1463 (ediff-overlay-start overl-C) (ediff-overlay-end overl-C)))) 1405 (ediff-overlay-start overl-C) (ediff-overlay-end overl-C))))
@@ -1540,7 +1482,7 @@ the one half of the height of window-A."
1540 (error ediff-KILLED-VITAL-BUFFER)) 1482 (error ediff-KILLED-VITAL-BUFFER))
1541 1483
1542 (ediff-operate-on-windows 1484 (ediff-operate-on-windows
1543 (if (memq (ediff-last-command-char) '(?v ?\C-v)) 1485 (if (memq last-command-event '(?v ?\C-v))
1544 #'scroll-up 1486 #'scroll-up
1545 #'scroll-down) 1487 #'scroll-down)
1546 ;; calculate argument to scroll-up/down 1488 ;; calculate argument to scroll-up/down
@@ -1595,7 +1537,7 @@ the width of the A/B/C windows."
1595 ;; interactively so that they set the window's min_hscroll. 1537 ;; interactively so that they set the window's min_hscroll.
1596 ;; Otherwise, automatic hscrolling will undo the effect of 1538 ;; Otherwise, automatic hscrolling will undo the effect of
1597 ;; hscrolling. 1539 ;; hscrolling.
1598 (if (= (ediff-last-command-char) ?<) 1540 (if (= last-command-event ?<)
1599 (lambda (arg) 1541 (lambda (arg)
1600 (let ((prefix-arg arg)) 1542 (let ((prefix-arg arg))
1601 (call-interactively #'scroll-left))) 1543 (call-interactively #'scroll-left)))
@@ -1867,7 +1809,7 @@ With a prefix argument, synchronize all files around the current point position
1867in the specified buffer." 1809in the specified buffer."
1868 (interactive "P") 1810 (interactive "P")
1869 (ediff-barf-if-not-control-buffer) 1811 (ediff-barf-if-not-control-buffer)
1870 (let* ((buf-type (ediff-char-to-buftype (ediff-last-command-char))) 1812 (let* ((buf-type (ediff-char-to-buftype last-command-event))
1871 (buffer (ediff-get-buffer buf-type)) 1813 (buffer (ediff-get-buffer buf-type))
1872 (pt (ediff-with-current-buffer buffer (point))) 1814 (pt (ediff-with-current-buffer buffer (point)))
1873 (diff-no (ediff-diff-at-point buf-type nil (if arg 'after))) 1815 (diff-no (ediff-diff-at-point buf-type nil (if arg 'after)))
@@ -1975,10 +1917,8 @@ determine the source and the target buffers instead of the command keys."
1975 (if (eq arg '-) (setq arg -1)) ; translate neg arg to -1 1917 (if (eq arg '-) (setq arg -1)) ; translate neg arg to -1
1976 (if (numberp arg) (ediff-jump-to-difference arg)) 1918 (if (numberp arg) (ediff-jump-to-difference arg))
1977 1919
1978 (let* ((key1 (aref keys 0)) 1920 (let* ((char1 (aref keys 0))
1979 (key2 (aref keys 1)) 1921 (char2 (aref keys 1))
1980 (char1 (ediff-event-key key1))
1981 (char2 (ediff-event-key key2))
1982 ediff-verbose-p) 1922 ediff-verbose-p)
1983 (ediff-copy-diff ediff-current-difference 1923 (ediff-copy-diff ediff-current-difference
1984 (ediff-char-to-buftype char1) 1924 (ediff-char-to-buftype char1)
@@ -2209,7 +2149,7 @@ determine the target buffer instead of `ediff-last-command-char'."
2209 (if (numberp arg) 2149 (if (numberp arg)
2210 (ediff-jump-to-difference arg)) 2150 (ediff-jump-to-difference arg))
2211 (ediff-pop-diff ediff-current-difference 2151 (ediff-pop-diff ediff-current-difference
2212 (ediff-char-to-buftype (or key (ediff-last-command-char)))) 2152 (ediff-char-to-buftype (or key last-command-event)))
2213 ;; recenter with rehighlighting, but no messages 2153 ;; recenter with rehighlighting, but no messages
2214 (let (ediff-verbose-p) 2154 (let (ediff-verbose-p)
2215 (ediff-recenter))) 2155 (ediff-recenter)))
@@ -2233,13 +2173,13 @@ a regular expression typed in by the user."
2233 (cond 2173 (cond
2234 ((or (and (eq ediff-skip-diff-region-function 2174 ((or (and (eq ediff-skip-diff-region-function
2235 ediff-focus-on-regexp-matches-function) 2175 ediff-focus-on-regexp-matches-function)
2236 (eq (ediff-last-command-char) ?f)) 2176 (eq last-command-event ?f))
2237 (and (eq ediff-skip-diff-region-function 2177 (and (eq ediff-skip-diff-region-function
2238 ediff-hide-regexp-matches-function) 2178 ediff-hide-regexp-matches-function)
2239 (eq (ediff-last-command-char) ?h))) 2179 (eq last-command-event ?h)))
2240 (message "Selective browsing by regexp turned off") 2180 (message "Selective browsing by regexp turned off")
2241 (setq ediff-skip-diff-region-function #'ediff-show-all-diffs)) 2181 (setq ediff-skip-diff-region-function #'ediff-show-all-diffs))
2242 ((eq (ediff-last-command-char) ?h) 2182 ((eq last-command-event ?h)
2243 (setq ediff-skip-diff-region-function ediff-hide-regexp-matches-function 2183 (setq ediff-skip-diff-region-function ediff-hide-regexp-matches-function
2244 regexp-A 2184 regexp-A
2245 (read-string 2185 (read-string
@@ -2277,7 +2217,7 @@ a regular expression typed in by the user."
2277 (or (string= regexp-B "") (setq ediff-regexp-hide-B regexp-B)) 2217 (or (string= regexp-B "") (setq ediff-regexp-hide-B regexp-B))
2278 (or (string= regexp-C "") (setq ediff-regexp-hide-C regexp-C))) 2218 (or (string= regexp-C "") (setq ediff-regexp-hide-C regexp-C)))
2279 2219
2280 ((eq (ediff-last-command-char) ?f) 2220 ((eq last-command-event ?f)
2281 (setq ediff-skip-diff-region-function 2221 (setq ediff-skip-diff-region-function
2282 ediff-focus-on-regexp-matches-function 2222 ediff-focus-on-regexp-matches-function
2283 regexp-A 2223 regexp-A
@@ -2467,12 +2407,12 @@ temporarily reverses the meaning of this variable."
2467 ;; Apply selective display to narrow or widen 2407 ;; Apply selective display to narrow or widen
2468 (ediff-visible-region) 2408 (ediff-visible-region)
2469 (mapc (lambda (overl) 2409 (mapc (lambda (overl)
2470 (if (ediff-overlayp overl) 2410 (if (overlayp overl)
2471 (ediff-delete-overlay overl))) 2411 (delete-overlay overl)))
2472 ediff-wide-bounds) 2412 ediff-wide-bounds)
2473 (mapc (lambda (overl) 2413 (mapc (lambda (overl)
2474 (if (ediff-overlayp overl) 2414 (if (overlayp overl)
2475 (ediff-delete-overlay overl))) 2415 (delete-overlay overl)))
2476 ediff-narrow-bounds) 2416 ediff-narrow-bounds)
2477 2417
2478 ;; restore buffer mode line id's in buffer-A/B/C 2418 ;; restore buffer mode line id's in buffer-A/B/C
@@ -2619,10 +2559,6 @@ temporarily reverses the meaning of this variable."
2619 ((window-live-p ctl-wind) 2559 ((window-live-p ctl-wind)
2620 (delete-window ctl-wind))) 2560 (delete-window ctl-wind)))
2621 2561
2622 ;; Hide bottom toolbar. --marcpa
2623 (if (not (ediff-multiframe-setup-p))
2624 (ediff-kill-bottom-toolbar))
2625
2626 (ediff-kill-buffer-carefully ctl-buf) 2562 (ediff-kill-buffer-carefully ctl-buf)
2627 2563
2628 (if (frame-live-p main-frame) 2564 (if (frame-live-p main-frame)
@@ -3060,9 +2996,7 @@ Hit \\[ediff-recenter] to reset the windows afterward."
3060 (ediff-get-symbol-from-alist 2996 (ediff-get-symbol-from-alist
3061 buf-type ediff-current-diff-overlay-alist)))) 2997 buf-type ediff-current-diff-overlay-alist))))
3062 2998
3063 (if (featurep 'xemacs) 2999 (ediff-move-overlay current-diff-overlay begin end-hilit buff)
3064 (ediff-move-overlay current-diff-overlay begin end-hilit)
3065 (ediff-move-overlay current-diff-overlay begin end-hilit buff))
3066 (ediff-overlay-put current-diff-overlay 'ediff-diff-num n) 3000 (ediff-overlay-put current-diff-overlay 'ediff-diff-num n)
3067 3001
3068 ;; unhighlight the background overlay for diff n so it won't 3002 ;; unhighlight the background overlay for diff n so it won't
@@ -3101,8 +3035,8 @@ Hit \\[ediff-recenter] to reset the windows afterward."
3101 buf-type ediff-current-diff-overlay-alist)) 3035 buf-type ediff-current-diff-overlay-alist))
3102 (current-diff-overlay (symbol-value current-diff-overlay-var))) 3036 (current-diff-overlay (symbol-value current-diff-overlay-var)))
3103 (ediff-paint-background-regions 'unhighlight) 3037 (ediff-paint-background-regions 'unhighlight)
3104 (if (ediff-overlayp current-diff-overlay) 3038 (if (overlayp current-diff-overlay)
3105 (ediff-delete-overlay current-diff-overlay)) 3039 (delete-overlay current-diff-overlay))
3106 (set current-diff-overlay-var nil) 3040 (set current-diff-overlay-var nil)
3107 ))) 3041 )))
3108 3042
@@ -3351,10 +3285,10 @@ Without an argument, it saves customized diff argument, if available
3351 (ediff-barf-if-not-control-buffer) 3285 (ediff-barf-if-not-control-buffer)
3352 (ediff-compute-custom-diffs-maybe) 3286 (ediff-compute-custom-diffs-maybe)
3353 (ediff-with-current-buffer 3287 (ediff-with-current-buffer
3354 (cond ((memq (ediff-last-command-char) '(?a ?b ?c)) 3288 (cond ((memq last-command-event '(?a ?b ?c))
3355 (ediff-get-buffer 3289 (ediff-get-buffer
3356 (ediff-char-to-buftype (ediff-last-command-char)))) 3290 (ediff-char-to-buftype last-command-event)))
3357 ((eq (ediff-last-command-char) ?d) 3291 ((eq last-command-event ?d)
3358 (message "Saving diff output ...") 3292 (message "Saving diff output ...")
3359 (sit-for 1) ; let the user see the message 3293 (sit-for 1) ; let the user see the message
3360 (cond ((and arg (ediff-buffer-live-p ediff-diff-buffer)) 3294 (cond ((and arg (ediff-buffer-live-p ediff-diff-buffer))
@@ -3440,15 +3374,14 @@ Without an argument, it saves customized diff argument, if available
3440 3374
3441 3375
3442(defun ediff-make-cloned-buffer (buff region-name) 3376(defun ediff-make-cloned-buffer (buff region-name)
3443 (ediff-make-indirect-buffer 3377 (make-indirect-buffer
3444 buff (generate-new-buffer-name 3378 buff (generate-new-buffer-name
3445 (concat (if (stringp buff) buff (buffer-name buff)) region-name)))) 3379 (concat (if (stringp buff) buff (buffer-name buff)) region-name))
3446 3380 'clone))
3447 3381
3448(defun ediff-make-indirect-buffer (base-buf indirect-buf-name) 3382(defun ediff-make-indirect-buffer (base-buf indirect-buf-name)
3449 (if (featurep 'xemacs) 3383 (declare (obsolete make-indirect-buffer "27.1"))
3450 (make-indirect-buffer base-buf indirect-buf-name) 3384 (make-indirect-buffer base-buf indirect-buf-name 'clone))
3451 (make-indirect-buffer base-buf indirect-buf-name 'clone)))
3452 3385
3453 3386
3454;; This function operates only from an ediff control buffer 3387;; This function operates only from an ediff control buffer
@@ -3647,14 +3580,8 @@ Ediff Control Panel to restore highlighting."
3647(defun ediff-remove-flags-from-buffer (buffer overlay) 3580(defun ediff-remove-flags-from-buffer (buffer overlay)
3648 (ediff-with-current-buffer buffer 3581 (ediff-with-current-buffer buffer
3649 (let ((inhibit-read-only t)) 3582 (let ((inhibit-read-only t))
3650 (if (featurep 'xemacs) 3583 (ediff-overlay-put overlay 'before-string nil)
3651 (ediff-overlay-put overlay 'begin-glyph nil) 3584 (ediff-overlay-put overlay 'after-string nil))))
3652 (ediff-overlay-put overlay 'before-string nil))
3653
3654 (if (featurep 'xemacs)
3655 (ediff-overlay-put overlay 'end-glyph nil)
3656 (ediff-overlay-put overlay 'after-string nil))
3657 )))
3658 3585
3659 3586
3660 3587
@@ -3679,9 +3606,7 @@ Ediff Control Panel to restore highlighting."
3679 ediff-before-flag-bol ediff-before-flag-mol)))) 3606 ediff-before-flag-bol ediff-before-flag-mol))))
3680 3607
3681 ;; insert the flag itself 3608 ;; insert the flag itself
3682 (if (featurep 'xemacs) 3609 (ediff-overlay-put curr-overl 'before-string flag)
3683 (ediff-overlay-put curr-overl 'begin-glyph flag)
3684 (ediff-overlay-put curr-overl 'before-string flag))
3685 3610
3686 ;; insert the flag after the difference 3611 ;; insert the flag after the difference
3687 ;; `after' must be set here, after the before-flag was inserted 3612 ;; `after' must be set here, after the before-flag was inserted
@@ -3695,10 +3620,7 @@ Ediff Control Panel to restore highlighting."
3695 ediff-after-flag-eol ediff-after-flag-mol)))) 3620 ediff-after-flag-eol ediff-after-flag-mol))))
3696 3621
3697 ;; insert the flag itself 3622 ;; insert the flag itself
3698 (if (featurep 'xemacs) 3623 (ediff-overlay-put curr-overl 'after-string flag)))
3699 (ediff-overlay-put curr-overl 'end-glyph flag)
3700 (ediff-overlay-put curr-overl 'after-string flag))
3701 ))
3702 3624
3703 3625
3704;;; Some diff region tests 3626;;; Some diff region tests
@@ -3758,7 +3680,7 @@ Ediff Control Panel to restore highlighting."
3758 this-command (1+ n) ediff-number-of-differences) 3680 this-command (1+ n) ediff-number-of-differences)
3759 (error ediff-NO-DIFFERENCES))) 3681 (error ediff-NO-DIFFERENCES)))
3760 (setq diff-overlay (ediff-get-diff-overlay n buf-type))) 3682 (setq diff-overlay (ediff-get-diff-overlay n buf-type)))
3761 (if (not (ediff-buffer-live-p (ediff-overlay-buffer diff-overlay))) 3683 (if (not (ediff-buffer-live-p (overlay-buffer diff-overlay)))
3762 (error ediff-KILLED-VITAL-BUFFER)) 3684 (error ediff-KILLED-VITAL-BUFFER))
3763 (if (eq pos 'beg) 3685 (if (eq pos 'beg)
3764 (ediff-overlay-start diff-overlay) 3686 (ediff-overlay-start diff-overlay)
@@ -3784,8 +3706,7 @@ Ediff Control Panel to restore highlighting."
3784(defun ediff-clear-diff-vector (vec-var &optional fine-diffs-also) 3706(defun ediff-clear-diff-vector (vec-var &optional fine-diffs-also)
3785 (if (vectorp (symbol-value vec-var)) 3707 (if (vectorp (symbol-value vec-var))
3786 (mapc (lambda (elt) 3708 (mapc (lambda (elt)
3787 (ediff-delete-overlay 3709 (delete-overlay (ediff-get-diff-overlay-from-diff-record elt))
3788 (ediff-get-diff-overlay-from-diff-record elt))
3789 (if fine-diffs-also 3710 (if fine-diffs-also
3790 (ediff-clear-fine-diff-vector elt)) 3711 (ediff-clear-fine-diff-vector elt))
3791 ) 3712 )
@@ -3813,19 +3734,11 @@ Ediff Control Panel to restore highlighting."
3813 (setq beg (eval beg))) 3734 (setq beg (eval beg)))
3814 (or (number-or-marker-p end) 3735 (or (number-or-marker-p end)
3815 (setq end (eval end))) 3736 (setq end (eval end)))
3816 (setq overl 3737 ;; advance front and rear of the overlay
3817 (if (featurep 'xemacs) 3738 (setq overl (make-overlay beg end buff nil 'rear-advance))
3818 (make-extent beg end buff)
3819 ;; advance front and rear of the overlay
3820 (make-overlay beg end buff nil 'rear-advance)))
3821 3739
3822 ;; never detach 3740 ;; never detach
3823 (ediff-overlay-put overl 'evaporate nil) 3741 (ediff-overlay-put overl 'evaporate nil)
3824 ;; make overlay open-ended
3825 ;; In emacs, it is made open ended at creation time
3826 (when (featurep 'xemacs)
3827 (ediff-overlay-put overl 'start-open nil)
3828 (ediff-overlay-put overl 'end-open nil))
3829 (ediff-overlay-put overl 'ediff-diff-num 0) 3742 (ediff-overlay-put overl 'ediff-diff-num 0)
3830 overl)))) 3743 overl))))
3831 3744
@@ -3983,7 +3896,7 @@ Ediff Control Panel to restore highlighting."
3983 (defvar ediff-buffer-name) 3896 (defvar ediff-buffer-name)
3984 (let ((reporter-prompt-for-summary-p t) 3897 (let ((reporter-prompt-for-summary-p t)
3985 (ctl-buf ediff-control-buffer) 3898 (ctl-buf ediff-control-buffer)
3986 (ediff-device-type (ediff-device-type)) 3899 (ediff-device-type window-system)
3987 varlist salutation ediff-buffer-name) 3900 varlist salutation ediff-buffer-name)
3988 (setq varlist '(ediff-diff-program ediff-diff-options 3901 (setq varlist '(ediff-diff-program ediff-diff-options
3989 ediff-diff3-program ediff-diff3-options 3902 ediff-diff3-program ediff-diff3-options
@@ -4091,22 +4004,13 @@ Mail anyway? (y or n) ")
4091 ) 4004 )
4092 4005
4093 4006
4094(defun ediff-deactivate-mark () 4007(define-obsolete-function-alias 'ediff-deactivate-mark #'deactivate-mark "27.1")
4095 (if (featurep 'xemacs)
4096 (zmacs-deactivate-region)
4097 (deactivate-mark)))
4098 4008
4099(defun ediff-activate-mark () 4009(defun ediff-activate-mark ()
4100 (if (featurep 'xemacs) 4010 (make-local-variable 'transient-mark-mode)
4101 (zmacs-activate-region) 4011 (setq mark-active 'ediff-util transient-mark-mode t))
4102 (make-local-variable 'transient-mark-mode)
4103 (setq mark-active 'ediff-util transient-mark-mode t)))
4104
4105(defun ediff-nuke-selective-display ()
4106 (if (featurep 'xemacs)
4107 (nuke-selective-display)
4108 ))
4109 4012
4013(define-obsolete-function-alias 'ediff-nuke-selective-display #'ignore "27.1")
4110 4014
4111;; The next two are modified versions from emerge.el. 4015;; The next two are modified versions from emerge.el.
4112;; VARS must be a list of symbols 4016;; VARS must be a list of symbols
@@ -4189,9 +4093,6 @@ Mail anyway? (y or n) ")
4189 (interactive) 4093 (interactive)
4190 (ediff-barf-if-not-control-buffer) 4094 (ediff-barf-if-not-control-buffer)
4191 4095
4192 (if (featurep 'xemacs)
4193 (make-local-hook 'post-command-hook))
4194
4195 (let ((pre-hook 'pre-command-hook) 4096 (let ((pre-hook 'pre-command-hook)
4196 (post-hook 'post-command-hook)) 4097 (post-hook 'post-command-hook))
4197 (if (not (equal ediff-command-begin-time '(0 0 0))) 4098 (if (not (equal ediff-command-begin-time '(0 0 0)))
@@ -4214,7 +4115,7 @@ Mail anyway? (y or n) ")
4214\t\tState-of-diff:\t %S 4115\t\tState-of-diff:\t %S
4215\t\tState-of-merge:\t %S 4116\t\tState-of-merge:\t %S
4216" 4117"
4217 (1+ (ediff-overlay-get (aref overl-vec 0) 'ediff-diff-num)) 4118 (1+ (overlay-get (aref overl-vec 0) 'ediff-diff-num))
4218 (aref overl-vec 0) 4119 (aref overl-vec 0)
4219 ;; fine-diff-vector 4120 ;; fine-diff-vector
4220 (if (= (length (aref overl-vec 1)) 0) 4121 (if (= (length (aref overl-vec 1)) 0)
diff --git a/lisp/vc/ediff-wind.el b/lisp/vc/ediff-wind.el
index 7ca3941a375..028995a4e58 100644
--- a/lisp/vc/ediff-wind.el
+++ b/lisp/vc/ediff-wind.el
@@ -151,10 +151,6 @@ In this case, Ediff will use those frames to display these buffers."
151 (const :tag "Split horizontally" split-window-horizontally) 151 (const :tag "Split horizontally" split-window-horizontally)
152 function)) 152 function))
153 153
154;; Definitions hidden from the compiler by compat wrappers.
155(declare-function ediff-display-pixel-width "ediff-init")
156(declare-function ediff-display-pixel-height "ediff-init")
157
158(defconst ediff-control-frame-parameters 154(defconst ediff-control-frame-parameters
159 (list 155 (list
160 '(name . "Ediff") 156 '(name . "Ediff")
@@ -179,11 +175,11 @@ In this case, Ediff will use those frames to display these buffers."
179 ;; this blocks queries from window manager as to where to put 175 ;; this blocks queries from window manager as to where to put
180 ;; ediff's control frame. we put the frame outside the display, 176 ;; ediff's control frame. we put the frame outside the display,
181 ;; so the initial frame won't jump all over the screen 177 ;; so the initial frame won't jump all over the screen
182 (cons 'top (if (fboundp 'ediff-display-pixel-height) 178 (cons 'top (if (fboundp 'display-pixel-height)
183 (1+ (ediff-display-pixel-height)) 179 (1+ (display-pixel-height))
184 3000)) 180 3000))
185 (cons 'left (if (fboundp 'ediff-display-pixel-width) 181 (cons 'left (if (fboundp 'display-pixel-width)
186 (1+ (ediff-display-pixel-width)) 182 (1+ (display-pixel-width))
187 3000)) 183 3000))
188 ) 184 )
189 "Frame parameters for displaying Ediff Control Panel. 185 "Frame parameters for displaying Ediff Control Panel.
@@ -219,7 +215,7 @@ This is used by the default control frame positioning function,
219customization of the default control frame positioning." 215customization of the default control frame positioning."
220 :type 'integer) 216 :type 'integer)
221 217
222(defcustom ediff-narrow-control-frame-leftward-shift (if (featurep 'xemacs) 7 3) 218(defcustom ediff-narrow-control-frame-leftward-shift 3
223 "The leftward shift of control frame from the right edge of buf A's frame. 219 "The leftward shift of control frame from the right edge of buf A's frame.
224Measured in characters. 220Measured in characters.
225This is used by the default control frame positioning function, 221This is used by the default control frame positioning function,
@@ -276,36 +272,32 @@ into icons, regardless of the window manager."
276 (let (event) 272 (let (event)
277 (message 273 (message
278 "Select windows by clicking. Please click on Window %d " wind-number) 274 "Select windows by clicking. Please click on Window %d " wind-number)
279 (while (not (ediff-mouse-event-p (setq event (ediff-read-event)))) 275 (while (not (ediff-mouse-event-p (setq event (read-event))))
280 (if (sit-for 1) ; if sequence of events, wait till the final word 276 (if (sit-for 1) ; if sequence of events, wait till the final word
281 (beep 1)) 277 (beep 1))
282 (message "Please click on Window %d " wind-number)) 278 (message "Please click on Window %d " wind-number))
283 (ediff-read-event) ; discard event 279 (read-event) ; discard event
284 (if (featurep 'xemacs) 280 (posn-window (event-start event))))
285 (event-window event)
286 (posn-window (event-start event)))))
287 281
288 282
289;; Select the lowest window on the frame. 283;; Select the lowest window on the frame.
290(defun ediff-select-lowest-window () 284(defun ediff-select-lowest-window ()
291 (if (featurep 'xemacs) 285 (let* ((lowest-window (selected-window))
292 (select-window (frame-lowest-window)) 286 (bottom-edge (car (cdr (cdr (cdr (window-edges))))))
293 (let* ((lowest-window (selected-window)) 287 (last-window (save-excursion
294 (bottom-edge (car (cdr (cdr (cdr (window-edges)))))) 288 (other-window -1) (selected-window)))
295 (last-window (save-excursion 289 (window-search t))
296 (other-window -1) (selected-window))) 290 (while window-search
297 (window-search t)) 291 (let* ((this-window (next-window))
298 (while window-search 292 (next-bottom-edge
299 (let* ((this-window (next-window)) 293 (car (cdr (cdr (cdr (window-edges this-window)))))))
300 (next-bottom-edge 294 (if (< bottom-edge next-bottom-edge)
301 (car (cdr (cdr (cdr (window-edges this-window))))))) 295 (setq bottom-edge next-bottom-edge
302 (if (< bottom-edge next-bottom-edge) 296 lowest-window this-window))
303 (setq bottom-edge next-bottom-edge 297 (select-window this-window)
304 lowest-window this-window)) 298 (when (eq last-window this-window)
305 (select-window this-window) 299 (select-window lowest-window)
306 (when (eq last-window this-window) 300 (setq window-search nil))))))
307 (select-window lowest-window)
308 (setq window-search nil)))))))
309 301
310 302
311;;; Common window setup routines 303;;; Common window setup routines
@@ -379,11 +371,6 @@ into icons, regardless of the window manager."
379 (switch-to-buffer buf-A) 371 (switch-to-buffer buf-A)
380 (setq wind-A (selected-window)) 372 (setq wind-A (selected-window))
381 373
382 ;; XEmacs used to have a lot of trouble with display
383 ;; It did't set things right unless we tell it to sit still
384 ;; 19.12 seems ok.
385 ;;(if (featurep 'xemacs) (sit-for 0))
386
387 (split-window-vertically (max 2 (- (window-height) merge-window-lines))) 374 (split-window-vertically (max 2 (- (window-height) merge-window-lines)))
388 (if (eq (selected-window) wind-A) 375 (if (eq (selected-window) wind-A)
389 (other-window 1)) 376 (other-window 1))
@@ -456,11 +443,6 @@ into icons, regardless of the window manager."
456 (window-width wind-A)) 443 (window-width wind-A))
457 3))) 444 3)))
458 445
459 ;; XEmacs used to have a lot of trouble with display
460 ;; It did't set things right unless we told it to sit still
461 ;; 19.12 seems ok.
462 ;;(if (featurep 'xemacs) (sit-for 0))
463
464 (funcall split-window-function wind-width-or-height) 446 (funcall split-window-function wind-width-or-height)
465 447
466 (if (eq (selected-window) wind-A) 448 (if (eq (selected-window) wind-A)
@@ -935,8 +917,6 @@ create a new splittable frame if none is found."
935 (not (ediff-frame-has-dedicated-windows (window-frame wind))) 917 (not (ediff-frame-has-dedicated-windows (window-frame wind)))
936 ))) 918 )))
937 919
938(declare-function ediff-make-bottom-toolbar "ediff-util" (&optional frame))
939
940;; Prepare or refresh control frame 920;; Prepare or refresh control frame
941(defun ediff-setup-control-frame (ctl-buffer designated-minibuffer-frame) 921(defun ediff-setup-control-frame (ctl-buffer designated-minibuffer-frame)
942 (let ((window-min-height 1) 922 (let ((window-min-height 1)
@@ -946,8 +926,6 @@ create a new splittable frame if none is found."
946 fheight fwidth adjusted-parameters) 926 fheight fwidth adjusted-parameters)
947 927
948 (with-current-buffer ctl-buffer 928 (with-current-buffer ctl-buffer
949 (if (and (featurep 'xemacs) (featurep 'menubar))
950 (set-buffer-menubar nil))
951 ;;(setq user-grabbed-mouse (ediff-user-grabbed-mouse)) 929 ;;(setq user-grabbed-mouse (ediff-user-grabbed-mouse))
952 (run-hooks 'ediff-before-setup-control-frame-hook)) 930 (run-hooks 'ediff-before-setup-control-frame-hook))
953 931
@@ -1007,18 +985,6 @@ create a new splittable frame if none is found."
1007 '(auto-raise . t)) 985 '(auto-raise . t))
1008 adjusted-parameters)) 986 adjusted-parameters))
1009 987
1010 ;; In XEmacs, buffer menubar needs to be killed before frame parameters
1011 ;; are changed.
1012 (if (ediff-has-toolbar-support-p)
1013 (when (featurep 'xemacs)
1014 (if (ediff-has-gutter-support-p)
1015 (set-specifier top-gutter (list ctl-frame nil)))
1016 (sit-for 0)
1017 (set-specifier top-toolbar-height (list ctl-frame 0))
1018 ;;(set-specifier bottom-toolbar-height (list ctl-frame 0))
1019 (set-specifier left-toolbar-width (list ctl-frame 0))
1020 (set-specifier right-toolbar-width (list ctl-frame 0))))
1021
1022 ;; As a precaution, we call modify frame parameters twice, in 988 ;; As a precaution, we call modify frame parameters twice, in
1023 ;; order to make sure that at least once we do it for 989 ;; order to make sure that at least once we do it for
1024 ;; a non-iconified frame. (It appears that in the Windows port of 990 ;; a non-iconified frame. (It appears that in the Windows port of
@@ -1026,9 +992,6 @@ create a new splittable frame if none is found."
1026 (if (eq system-type 'windows-nt) 992 (if (eq system-type 'windows-nt)
1027 (modify-frame-parameters ctl-frame adjusted-parameters)) 993 (modify-frame-parameters ctl-frame adjusted-parameters))
1028 994
1029 ;; make or zap toolbar (if not requested)
1030 (ediff-make-bottom-toolbar ctl-frame)
1031
1032 (goto-char (point-min)) 995 (goto-char (point-min))
1033 996
1034 (modify-frame-parameters ctl-frame adjusted-parameters) 997 (modify-frame-parameters ctl-frame adjusted-parameters)
@@ -1070,12 +1033,6 @@ create a new splittable frame if none is found."
1070 (or (eq this-command 'ediff-quit) 1033 (or (eq this-command 'ediff-quit)
1071 (not (eq ediff-grab-mouse t))))) 1034 (not (eq ediff-grab-mouse t)))))
1072 1035
1073 (when (featurep 'xemacs)
1074 (with-current-buffer ctl-buffer
1075 (make-local-hook 'select-frame-hook)
1076 (add-hook 'select-frame-hook
1077 #'ediff-xemacs-select-frame-hook nil 'local)))
1078
1079 (with-current-buffer ctl-buffer 1036 (with-current-buffer ctl-buffer
1080 (run-hooks 'ediff-after-setup-control-frame-hook)))) 1037 (run-hooks 'ediff-after-setup-control-frame-hook))))
1081 1038
@@ -1084,8 +1041,6 @@ create a new splittable frame if none is found."
1084 (ediff-with-current-buffer ctl-buffer 1041 (ediff-with-current-buffer ctl-buffer
1085 (if (and (ediff-window-display-p) (frame-live-p ediff-control-frame)) 1042 (if (and (ediff-window-display-p) (frame-live-p ediff-control-frame))
1086 (let ((ctl-frame ediff-control-frame)) 1043 (let ((ctl-frame ediff-control-frame))
1087 (if (and (featurep 'xemacs) (featurep 'menubar))
1088 (set-buffer-menubar default-menubar))
1089 (setq ediff-control-frame nil) 1044 (setq ediff-control-frame nil)
1090 (delete-frame ctl-frame)))) 1045 (delete-frame ctl-frame))))
1091 (if ediff-multiframe 1046 (if ediff-multiframe
@@ -1117,23 +1072,23 @@ create a new splittable frame if none is found."
1117 ctl-frame-left 1072 ctl-frame-left
1118 (+ frame-A-left 1073 (+ frame-A-left
1119 (if ediff-use-long-help-message 1074 (if ediff-use-long-help-message
1120 (* (ediff-frame-char-width ctl-frame) 1075 (* (frame-char-width ctl-frame)
1121 (+ ediff-wide-control-frame-rightward-shift 1076 (+ ediff-wide-control-frame-rightward-shift
1122 horizontal-adjustment)) 1077 horizontal-adjustment))
1123 (- (* frame-A-width (ediff-frame-char-width frame-A)) 1078 (- (* frame-A-width (frame-char-width frame-A))
1124 (* (ediff-frame-char-width ctl-frame) 1079 (* (frame-char-width ctl-frame)
1125 (+ ctl-frame-width 1080 (+ ctl-frame-width
1126 ediff-narrow-control-frame-leftward-shift 1081 ediff-narrow-control-frame-leftward-shift
1127 horizontal-adjustment)))))) 1082 horizontal-adjustment))))))
1128 (setq ctl-frame-top 1083 (setq ctl-frame-top
1129 (min ctl-frame-top 1084 (min ctl-frame-top
1130 (- (ediff-display-pixel-height) 1085 (- (display-pixel-height)
1131 (* 2 ctl-frame-height 1086 (* 2 ctl-frame-height
1132 (ediff-frame-char-height ctl-frame)))) 1087 (frame-char-height ctl-frame))))
1133 ctl-frame-left 1088 ctl-frame-left
1134 (min ctl-frame-left 1089 (min ctl-frame-left
1135 (- (ediff-display-pixel-width) 1090 (- (display-pixel-width)
1136 (* ctl-frame-width (ediff-frame-char-width ctl-frame))))) 1091 (* ctl-frame-width (frame-char-width ctl-frame)))))
1137 ;; keep ctl frame within the visible bounds 1092 ;; keep ctl frame within the visible bounds
1138 (setq ctl-frame-top (max ctl-frame-top 1) 1093 (setq ctl-frame-top (max ctl-frame-top 1)
1139 ctl-frame-left (max ctl-frame-left 1)) 1094 ctl-frame-left (max ctl-frame-left 1))
@@ -1153,12 +1108,12 @@ Saves the old frame parameters in `ediff-wide-display-orig-parameters'.
1153The frame to be resized is kept in `ediff-wide-display-frame'. 1108The frame to be resized is kept in `ediff-wide-display-frame'.
1154This function modifies only the left margin and the width of the display. 1109This function modifies only the left margin and the width of the display.
1155It assumes that it is called from within the control buffer." 1110It assumes that it is called from within the control buffer."
1156 (if (not (fboundp 'ediff-display-pixel-width)) 1111 (if (not (fboundp 'display-pixel-width))
1157 (user-error "Can't determine display width")) 1112 (user-error "Can't determine display width"))
1158 (let* ((frame-A (window-frame ediff-window-A)) 1113 (let* ((frame-A (window-frame ediff-window-A))
1159 (frame-A-params (frame-parameters frame-A)) 1114 (frame-A-params (frame-parameters frame-A))
1160 (cw (ediff-frame-char-width frame-A)) 1115 (cw (frame-char-width frame-A))
1161 (wd (- (/ (ediff-display-pixel-width) cw) 5))) 1116 (wd (- (/ (display-pixel-width) cw) 5)))
1162 (setq ediff-wide-display-orig-parameters 1117 (setq ediff-wide-display-orig-parameters
1163 (list (cons 'left (max 0 (eval (cdr (assoc 'left frame-A-params))))) 1118 (list (cons 'left (max 0 (eval (cdr (assoc 'left frame-A-params)))))
1164 (cons 'width (cdr (assoc 'width frame-A-params)))) 1119 (cons 'width (cdr (assoc 'width frame-A-params))))
@@ -1300,9 +1255,7 @@ It assumes that it is called from within the control buffer."
1300;; If buff is not live, return nil 1255;; If buff is not live, return nil
1301(defun ediff-get-visible-buffer-window (buff) 1256(defun ediff-get-visible-buffer-window (buff)
1302 (if (ediff-buffer-live-p buff) 1257 (if (ediff-buffer-live-p buff)
1303 (if (featurep 'xemacs) 1258 (get-buffer-window buff 'visible)))
1304 (get-buffer-window buff t)
1305 (get-buffer-window buff 'visible))))
1306 1259
1307 1260
1308;;; Functions to decide when to redraw windows 1261;;; Functions to decide when to redraw windows
diff --git a/lisp/vc/ediff.el b/lisp/vc/ediff.el
index 20e27003dac..fae694d5221 100644
--- a/lisp/vc/ediff.el
+++ b/lisp/vc/ediff.el
@@ -1541,9 +1541,7 @@ arguments after setting up the Ediff buffers."
1541 "Return string describing the version of Ediff. 1541 "Return string describing the version of Ediff.
1542When called interactively, displays the version." 1542When called interactively, displays the version."
1543 (interactive) 1543 (interactive)
1544 (if (if (featurep 'xemacs) 1544 (if (called-interactively-p 'interactive)
1545 (interactive-p)
1546 (called-interactively-p 'interactive))
1547 (message "%s" (ediff-version)) 1545 (message "%s" (ediff-version))
1548 (format "Ediff %s" ediff-version))) 1546 (format "Ediff %s" ediff-version)))
1549 1547
@@ -1562,7 +1560,7 @@ With optional NODE, goes to that node."
1562 (condition-case nil 1560 (condition-case nil
1563 (progn 1561 (progn
1564 (pop-to-buffer (get-buffer-create "*info*")) 1562 (pop-to-buffer (get-buffer-create "*info*"))
1565 (info (if (featurep 'xemacs) "ediff.info" "ediff")) 1563 (info "ediff")
1566 (if node 1564 (if node
1567 (Info-goto-node node) 1565 (Info-goto-node node)
1568 (message "Type `i' to search for a specific topic")) 1566 (message "Type `i' to search for a specific topic"))