*** empty log message ***
[bpt/emacs.git] / lisp / ediff-hook.el
CommitLineData
fa2eb9ac 1;;; ediff-hook.el --- setup for Ediff's menus and autoloads
b578f267
EN
2
3;; Copyright (C) 1995 Free Software Foundation, Inc.
fa2eb9ac
MK
4
5;; Author: Michael Kifer <kifer@cs.sunysb.edu>
6
7;; This file is part of GNU Emacs.
8
9;; GNU Emacs is free software; you can redistribute it and/or modify
10;; it under the terms of the GNU General Public License as published by
11;; the Free Software Foundation; either version 2, or (at your option)
12;; any later version.
13
14;; GNU Emacs is distributed in the hope that it will be useful,
15;; but WITHOUT ANY WARRANTY; without even the implied warranty of
16;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17;; GNU General Public License for more details.
18
19;; You should have received a copy of the GNU General Public License
b578f267
EN
20;; along with GNU Emacs; see the file COPYING. If not, write to the
21;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
22;; Boston, MA 02111-1307, USA.
fa2eb9ac 23
b578f267 24;;; Code:
fa2eb9ac 25
b578f267 26;; These must be placed in menu-bar.el in Emacs
fa2eb9ac
MK
27;;
28;; (define-key menu-bar-tools-menu [eregistry]
29;; '("List Ediff Sessions" . ediff-show-registry))
30;; (define-key menu-bar-tools-menu [epatch]
31;; '("Apply Patch" . menu-bar-epatch-menu))
32;; (define-key menu-bar-tools-menu [ediff-merge]
33;; '("Merge" . menu-bar-ediff-merge-menu))
34;; (define-key menu-bar-tools-menu [ediff]
35;; '("Compare" . menu-bar-ediff-menu))
36
37
38(defun ediff-xemacs-init-menus ()
39 (if (featurep 'menubar)
40 (progn
41 (add-submenu
42 '("Tools") ediff-menu "OO-Browser...")
43 (add-submenu
44 '("Tools") ediff-merge-menu "OO-Browser...")
45 (add-submenu
46 '("Tools") epatch-menu "OO-Browser...")
47 (add-menu-button
48 '("Tools")
49 ["List Ediff Sessions" ediff-show-registry t] "OO-Browser...")
50 (add-menu-button
51 '("Tools")
52 ["---" nil nil] "OO-Browser...")
53 )))
54
55
56
57;; explicit string-match is needed: ediff-xemacs-p is not defined at build time
58(cond ((string-match "XEmacs" emacs-version)
59 (defvar ediff-menu
60 '("Compare"
190271b9
KH
61 ["Two Files..." ediff-files t]
62 ["Two Buffers..." ediff-buffers t]
63 ["Three Files..." ediff-files3 t]
64 ["Three Buffers..." ediff-buffers3 t]
fa2eb9ac 65 "---"
190271b9
KH
66 ["Two Directories..." ediff-directories t]
67 ["Three Directories..." ediff-directories3 t]
fa2eb9ac 68 "---"
190271b9
KH
69 ["File with Revision..." ediff-revision t]
70 ["Directory Revisions..." ediff-directory-revisions t]
fa2eb9ac 71 "---"
190271b9
KH
72 ["Windows Word-by-word..." ediff-windows-wordwise t]
73 ["Windows Line-by-line..." ediff-windows-linewise t]
fa2eb9ac 74 "---"
190271b9
KH
75 ["Regions Word-by-word..." ediff-regions-wordwise t]
76 ["Regions Line-by-line..." ediff-regions-linewise t]))
fa2eb9ac
MK
77 (defvar ediff-merge-menu
78 '("Merge"
190271b9
KH
79 ["Files..." ediff-merge-files t]
80 ["Files with Ancestor..." ediff-merge-files-with-ancestor t]
81 ["Buffers..." ediff-merge-buffers t]
82 ["Buffers with Ancestor..."
fa2eb9ac
MK
83 ediff-merge-buffers-with-ancestor t]
84 "---"
190271b9
KH
85 ["Directories..." ediff-merge-directories t]
86 ["Directories with Ancestor..."
fa2eb9ac
MK
87 ediff-merge-directories-with-ancestor t]
88 "---"
190271b9
KH
89 ["Revisions..." ediff-merge-revisions t]
90 ["Revisions with Ancestor..."
fa2eb9ac 91 ediff-merge-revisions-with-ancestor t]
190271b9
KH
92 ["Directory Revisions..." ediff-merge-directory-revisions t]
93 ["Directory Revisions with Ancestor..."
fa2eb9ac
MK
94 ediff-merge-directory-revisions-with-ancestor t]))
95 (defvar epatch-menu
96 '("Apply Patch"
190271b9
KH
97 ["To a file..." ediff-patch-file t]
98 ["To a buffer..." ediff-patch-buffer t]))
fa2eb9ac
MK
99
100 ;; put these menus before Object-Oriented-Browser in Tools menu
101 (add-hook 'before-init-hook 'ediff-xemacs-init-menus)
102 ;; this `if' is to be deleted before going into distribution
103 (if (not purify-flag)
104 (ediff-xemacs-init-menus))
105 )
106
107 ;; Emacs--only if menu-bar is loaded
108 ((featurep 'menu-bar)
109 ;; initialize menu bar keymaps
8a10f781 110 (defvar menu-bar-epatch-menu (make-sparse-keymap "Apply Patch"))
fa2eb9ac 111 (fset 'menu-bar-epatch-menu (symbol-value 'menu-bar-epatch-menu))
8a10f781 112 (defvar menu-bar-ediff-merge-menu (make-sparse-keymap "Merge"))
fa2eb9ac
MK
113 (fset 'menu-bar-ediff-merge-menu
114 (symbol-value 'menu-bar-ediff-merge-menu))
8a10f781 115 (defvar menu-bar-ediff-menu (make-sparse-keymap "Compare"))
fa2eb9ac
MK
116 (fset 'menu-bar-ediff-menu (symbol-value 'menu-bar-ediff-menu))
117
118 ;; define ediff-menu
f9b2678c
MK
119 (define-key menu-bar-ediff-menu [window]
120 '("This Window And Next Window" . compare-windows))
fa2eb9ac 121 (define-key menu-bar-ediff-menu [ediff-dir-revision]
190271b9 122 '("Directory Revisions..." . ediff-directory-revisions))
fa2eb9ac 123 (define-key menu-bar-ediff-menu [ediff-revision]
190271b9 124 '("File with Revision..." . ediff-revision))
fa2eb9ac
MK
125 (define-key menu-bar-ediff-menu [separator-ediff-directories] '("--"))
126 (define-key menu-bar-ediff-menu [ediff-directories3]
190271b9 127 '("Three Directories..." . ediff-directories3))
fa2eb9ac 128 (define-key menu-bar-ediff-menu [ediff-directories]
190271b9 129 '("Two Directories..." . ediff-directories))
fa2eb9ac
MK
130 (define-key menu-bar-ediff-menu [separator-ediff-files] '("--"))
131 (define-key menu-bar-ediff-menu [ediff-buffers3]
190271b9 132 '("Three Buffers..." . ediff-buffers3))
fa2eb9ac 133 (define-key menu-bar-ediff-menu [ediff-files3]
190271b9 134 '("Three Files..." . ediff-files3))
fa2eb9ac 135 (define-key menu-bar-ediff-menu [ediff-buffers]
190271b9 136 '("Two Buffers..." . ediff-buffers))
fa2eb9ac 137 (define-key menu-bar-ediff-menu [ediff-files]
190271b9 138 '("Two Files..." . ediff-files))
fa2eb9ac
MK
139 (define-key menu-bar-ediff-menu [separator-ediff-regions] '("--"))
140 (define-key menu-bar-ediff-menu [ediff-regions-linewise]
190271b9 141 '("Regions Line-by-line..." . ediff-regions-linewise))
fa2eb9ac 142 (define-key menu-bar-ediff-menu [ediff-regions-wordwise]
190271b9 143 '("Regions Word-by-word..." . ediff-regions-wordwise))
fa2eb9ac
MK
144 (define-key menu-bar-ediff-menu [separator-ediff-windows] '("--"))
145 (define-key menu-bar-ediff-menu [ediff-windows-linewise]
190271b9 146 '("Windows Line-by-line..." . ediff-windows-linewise))
fa2eb9ac 147 (define-key menu-bar-ediff-menu [ediff-windows-wordwise]
190271b9 148 '("Windows Word-by-word..." . ediff-windows-wordwise))
fa2eb9ac
MK
149
150 ;; define merge menu
151 (define-key
152 menu-bar-ediff-merge-menu [ediff-merge-dir-revisions-with-ancestor]
190271b9 153 '("Directory Revisions with Ancestor..."
fa2eb9ac
MK
154 . ediff-merge-directory-revisions-with-ancestor))
155 (define-key
156 menu-bar-ediff-merge-menu [ediff-merge-dir-revisions]
190271b9 157 '("Directory Revisions..." . ediff-merge-directory-revisions))
fa2eb9ac
MK
158 (define-key
159 menu-bar-ediff-merge-menu [ediff-merge-revisions-with-ancestor]
190271b9 160 '("Revisions with Ancestor..."
fa2eb9ac
MK
161 . ediff-merge-revisions-with-ancestor))
162 (define-key menu-bar-ediff-merge-menu [ediff-merge-revisions]
190271b9 163 '("Revisions..." . ediff-merge-revisions))
fa2eb9ac
MK
164 (define-key menu-bar-ediff-merge-menu [separator-ediff-merge] '("--"))
165 (define-key
166 menu-bar-ediff-merge-menu [ediff-merge-directories-with-ancestor]
190271b9 167 '("Directories with Ancestor..."
fa2eb9ac
MK
168 . ediff-merge-directories-with-ancestor))
169 (define-key menu-bar-ediff-merge-menu [ediff-merge-directories]
190271b9 170 '("Directories..." . ediff-merge-directories))
fa2eb9ac
MK
171 (define-key
172 menu-bar-ediff-merge-menu [separator-ediff-merge-dirs] '("--"))
173 (define-key
174 menu-bar-ediff-merge-menu [ediff-merge-buffers-with-ancestor]
190271b9 175 '("Buffers with Ancestor..." . ediff-merge-buffers-with-ancestor))
fa2eb9ac 176 (define-key menu-bar-ediff-merge-menu [ediff-merge-buffers]
190271b9 177 '("Buffers..." . ediff-merge-buffers))
fa2eb9ac 178 (define-key menu-bar-ediff-merge-menu [ediff-merge-files-with-ancestor]
190271b9 179 '("Files with Ancestor..." . ediff-merge-files-with-ancestor))
fa2eb9ac 180 (define-key menu-bar-ediff-merge-menu [ediff-merge-files]
190271b9 181 '("Files..." . ediff-merge-files))
fa2eb9ac
MK
182
183 ;; define epatch menu
184 (define-key menu-bar-epatch-menu [ediff-patch-buffer]
190271b9 185 '("To a Buffer..." . ediff-patch-buffer))
fa2eb9ac 186 (define-key menu-bar-epatch-menu [ediff-patch-file]
190271b9 187 '("To a File..." . ediff-patch-file)))
fa2eb9ac
MK
188
189 ) ; cond
190
f9b2678c 191;; arrange for autoloads
fa2eb9ac
MK
192(if purify-flag
193 () ; if dumping, autoloads are set up in loaddefs.el
194 ;; if the user decides to load this file, set up autoloads
195 ;; compare files and buffers
196 (autoload 'ediff "ediff" "Compare two files" t)
197 (autoload 'ediff-files "ediff" "Compare two files" t)
198 (autoload 'ediff-buffers "ediff" "Compare two bufers" t)
199 (autoload 'ediff3 "ediff" "Compare three files" t)
200 (autoload 'ediff-files3 "ediff" "Compare three files" t)
201 (autoload 'ediff-buffers3 "ediff" "Compare three bufers" t)
202
203 (autoload 'ediff-revision "ediff" "Compare versions of a file" t)
204
205 ;; compare regions and windows
206 (autoload 'ediff-windows-wordwise
207 "ediff" "Compare two windows word-by-word" t)
208 (autoload 'ediff-regions-wordwise
209 "ediff" "Compare two regions word-by-word" t)
210 (autoload 'ediff-windows-linewise
211 "ediff" "Compare two windows line-by-line" t)
212 (autoload 'ediff-regions-linewise
213 "ediff" "Compare two regions line-by-line" t)
214
215 ;; patch
216 (autoload 'ediff-patch-file "ediff" "Patch a file" t)
217 (autoload 'epatch "ediff" "Patch a file" t)
218 (autoload 'ediff-patch-buffer "ediff" "Patch a buffer")
219 (autoload 'epatch-buffer "ediff" "Patch a buffer" t)
220
221 ;; merge
222 (autoload 'ediff-merge "ediff" "Merge two files" t)
223 (autoload 'ediff-merge-files "ediff" "Merge two files" t)
224 (autoload 'ediff-merge-files-with-ancestor
225 "ediff" "Merge two files using a third file as an ancestor" t)
226 (autoload 'ediff-merge-buffers "ediff" "Merge two buffers" t)
227 (autoload 'ediff-merge-buffers-with-ancestor
228 "ediff" "Merge two buffers using a third buffer as an ancestor" t)
229
230 (autoload 'ediff-merge-revisions "ediff" "Merge two versions of a file" t)
231 (autoload 'ediff-merge-revisions-with-ancestor
232 "ediff" "Merge two versions of a file" t)
233
234 ;; compare directories
235 (autoload 'edirs "ediff" "Compare files in two directories" t)
236 (autoload 'ediff-directories "ediff" "Compare files in two directories" t)
237 (autoload 'edirs3 "ediff" "Compare files in three directories" t)
238 (autoload 'ediff-directories3 "ediff" "Compare files in three directories" t)
239
240 (autoload 'edir-revisions
241 "ediff" "Compare two versions of a file" t)
242 (autoload 'ediff-directory-revisions
243 "ediff" "Compare two versions of a file" t)
244
245 ;; merge directories
246 (autoload 'edirs-merge "ediff" "Merge files in two directories" t)
247 (autoload 'ediff-merge-directories
248 "ediff" "Merge files in two directories" t)
249 (autoload 'edirs-merge-with-ancestor
250 "ediff"
251 "Merge files in two directories using files in a third dir as ancestors" t)
252 (autoload 'ediff-merge-directories-with-ancestor
253 "ediff"
254 "Merge files in two directories using files in a third dir as ancestors" t)
255
256 (autoload 'edir-merge-revisions
257 "ediff" "Merge versions of files in a directory" t)
258 (autoload 'ediff-merge-directory-revisions
259 "ediff" "Merge versions of files in a directory" t)
260 (autoload 'ediff-merge-directory-revisions-with-ancestor
261 "ediff"
262 "Merge versions of files in a directory using other versions as ancestors"
263 t)
264 (autoload 'edir-merge-revisions-with-ancestor
265 "ediff"
266 "Merge versions of files in a directory using other versions as ancestors"
267 t)
f9b2678c
MK
268
269 ;; misc
fa2eb9ac 270 (autoload 'ediff-show-registry
530d2eb6 271 "ediff-mult"
fa2eb9ac
MK
272 "Display the registry of active Ediff sessions"
273 t)
f9b2678c
MK
274 (autoload 'ediff-version
275 "ediff"
276 "Show Ediff's version and last modification date"
277 t)
fa2eb9ac
MK
278 ) ; if purify-flag
279
280
281(provide 'ediff-hook)
282
283
284;;; ediff-hook.el ends here