Mercurial > emacs
comparison lisp/emerge.el @ 5796:b53b2df1351d
Add defvars for many vars already being used.
(emerge-options-menu, emerge-merge-menu, emerge-move-menu): New vars.
(emerge-setup-fixed-keymaps): Set up emerge-move-menu,
emerge-merge-menu and emerge-options-menu. Put them into
emerge-fast-keymap.
(emerge-set-keys): Put them into the emerge-edit-keymap.
(emerge-minor-modes-list): Add defvar.
(emerge-before-flag, emerge-after-flag): Move defvars up.
(emerge-files-remote, emerge-files-with-ancestor-remote):
(emerge-remote-exit): Var exit-func renamed to emerge-exit-func.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sun, 06 Feb 1994 02:07:44 +0000 |
parents | 106e0040381f |
children | c75960d5f2ca |
comparison
equal
deleted
inserted
replaced
5795:fc0dab7df72e | 5796:b53b2df1351d |
---|---|
43 (defvar (, var) (, value) (, doc)) | 43 (defvar (, var) (, value) (, doc)) |
44 (make-variable-buffer-local '(, var)) | 44 (make-variable-buffer-local '(, var)) |
45 (put '(, var) 'preserved t)))) | 45 (put '(, var) 'preserved t)))) |
46 | 46 |
47 ;; Add entries to minor-mode-alist so that emerge modes show correctly | 47 ;; Add entries to minor-mode-alist so that emerge modes show correctly |
48 (setq emerge-minor-modes-list '((emerge-mode " Emerge") | 48 (defvar emerge-minor-modes-list |
49 (emerge-fast-mode " F") | 49 '((emerge-mode " Emerge") |
50 (emerge-edit-mode " E") | 50 (emerge-fast-mode " F") |
51 (emerge-auto-advance " A") | 51 (emerge-edit-mode " E") |
52 (emerge-skip-prefers " S"))) | 52 (emerge-auto-advance " A") |
53 (emerge-skip-prefers " S"))) | |
53 (if (not (assq 'emerge-mode minor-mode-alist)) | 54 (if (not (assq 'emerge-mode minor-mode-alist)) |
54 (setq minor-mode-alist (append emerge-minor-modes-list | 55 (setq minor-mode-alist (append emerge-minor-modes-list |
55 minor-mode-alist))) | 56 minor-mode-alist))) |
56 | 57 |
57 ;; We need to define this function so describe-mode can describe Emerge mode. | 58 ;; We need to define this function so describe-mode can describe Emerge mode. |
130 It concludes that an input version has been deleted when an ancestor entry | 131 It concludes that an input version has been deleted when an ancestor entry |
131 is present, only one A or B entry is present, and an output entry is present. | 132 is present, only one A or B entry is present, and an output entry is present. |
132 If nil: In such circumstances, the A or B file that is present will be | 133 If nil: In such circumstances, the A or B file that is present will be |
133 copied to the designated output file.") | 134 copied to the designated output file.") |
134 | 135 |
136 (defvar emerge-before-flag "vvvvvvvvvvvvvvvvvvvv\n" | |
137 "*Flag placed above the highlighted block of code. Must end with newline. | |
138 Must be set before Emerge is loaded, or emerge-new-flags must be run | |
139 after setting.") | |
140 (defvar emerge-after-flag "^^^^^^^^^^^^^^^^^^^^\n" | |
141 "*Flag placed below the highlighted block of code. Must end with newline. | |
142 Must be set before Emerge is loaded, or emerge-new-flags must be run | |
143 after setting.") | |
144 | |
135 ;; Hook variables | 145 ;; Hook variables |
136 | 146 |
137 (defvar emerge-startup-hook nil | 147 (defvar emerge-startup-hook nil |
138 "*Hook to run in the merge buffer after the merge has been set up.") | 148 "*Hook to run in the merge buffer after the merge has been set up.") |
139 (defvar emerge-select-hook nil | 149 (defvar emerge-select-hook nil |
164 (defvar emerge-last-revision-B nil | 174 (defvar emerge-last-revision-B nil |
165 "Last RCS revision used for second file of an `emerge-revisions...' command.") | 175 "Last RCS revision used for second file of an `emerge-revisions...' command.") |
166 (defvar emerge-last-revision-ancestor nil | 176 (defvar emerge-last-revision-ancestor nil |
167 "Last RCS revision used for ancestor file of an `emerge-revisions...' command.") | 177 "Last RCS revision used for ancestor file of an `emerge-revisions...' command.") |
168 | 178 |
179 (defvar emerge-before-flag-length) | |
180 (defvar emerge-before-flag-lines) | |
181 (defvar emerge-before-flag-match) | |
182 (defvar emerge-after-flag-length) | |
183 (defvar emerge-after-flag-lines) | |
184 (defvar emerge-after-flag-match) | |
185 (defvar emerge-diff-buffer) | |
186 (defvar emerge-diff-error-buffer) | |
187 (defvar emerge-prefix-argument) | |
188 (defvar emerge-file-out) | |
189 (defvar emerge-exit-func) | |
190 (defvar emerge-globalized-difference-list) | |
191 (defvar emerge-globalized-number-of-differences) | |
192 | |
169 ;; The flags used to mark differences in the buffers. | 193 ;; The flags used to mark differences in the buffers. |
170 | 194 |
171 ;; These function definitions need to be up here, because they are used | 195 ;; These function definitions need to be up here, because they are used |
172 ;; during loading. | 196 ;; during loading. |
173 (defun emerge-new-flags () | 197 (defun emerge-new-flags () |
190 (while (string-match regexp string i) | 214 (while (string-match regexp string i) |
191 (setq count (1+ count)) | 215 (setq count (1+ count)) |
192 (setq i (match-end 0))) | 216 (setq i (match-end 0))) |
193 count)) | 217 count)) |
194 | 218 |
195 (defvar emerge-before-flag "vvvvvvvvvvvvvvvvvvvv\n" | |
196 "*Flag placed above the highlighted block of code. Must end with newline. | |
197 Must be set before Emerge is loaded, or emerge-new-flags must be run | |
198 after setting.") | |
199 (defvar emerge-after-flag "^^^^^^^^^^^^^^^^^^^^\n" | |
200 "*Flag placed below the highlighted block of code. Must end with newline. | |
201 Must be set before Emerge is loaded, or emerge-new-flags must be run | |
202 after setting.") | |
203 | |
204 ;; Calculate dependent variables | 219 ;; Calculate dependent variables |
205 (emerge-new-flags) | 220 (emerge-new-flags) |
206 | 221 |
207 (defvar emerge-min-visible-lines 3 | 222 (defvar emerge-min-visible-lines 3 |
208 "*Number of lines that we want to show above and below the flags when we are | 223 "*Number of lines that we want to show above and below the flags when we are |
242 must be prefixed by \\<emerge-fast-keymap>\\[emerge-basic-keymap] in `edit' mode.") | 257 must be prefixed by \\<emerge-fast-keymap>\\[emerge-basic-keymap] in `edit' mode.") |
243 | 258 |
244 (defvar emerge-fast-keymap nil | 259 (defvar emerge-fast-keymap nil |
245 "Local keymap used in Emerge `fast' mode. | 260 "Local keymap used in Emerge `fast' mode. |
246 Makes Emerge commands directly available.") | 261 Makes Emerge commands directly available.") |
262 | |
263 (defvar emerge-options-menu | |
264 (make-sparse-keymap "Options")) | |
265 | |
266 (defvar emerge-merge-menu | |
267 (make-sparse-keymap "Merge")) | |
268 | |
269 (defvar emerge-move-menu | |
270 (make-sparse-keymap "Move")) | |
247 | 271 |
248 (defvar emerge-command-prefix "\C-c\C-c" | 272 (defvar emerge-command-prefix "\C-c\C-c" |
249 "*Command prefix for Emerge commands in `edit' mode. | 273 "*Command prefix for Emerge commands in `edit' mode. |
250 Must be set before Emerge is loaded.") | 274 Must be set before Emerge is loaded.") |
251 | 275 |
306 (fset 'emerge-fast-keymap emerge-fast-keymap) | 330 (fset 'emerge-fast-keymap emerge-fast-keymap) |
307 ;; Suppress write-file and save-buffer | 331 ;; Suppress write-file and save-buffer |
308 (substitute-key-definition 'write-file 'emerge-query-write-file | 332 (substitute-key-definition 'write-file 'emerge-query-write-file |
309 emerge-fast-keymap (current-global-map)) | 333 emerge-fast-keymap (current-global-map)) |
310 (substitute-key-definition 'save-buffer 'emerge-query-save-buffer | 334 (substitute-key-definition 'save-buffer 'emerge-query-save-buffer |
311 emerge-fast-keymap (current-global-map))) | 335 emerge-fast-keymap (current-global-map)) |
336 | |
337 (define-key emerge-basic-keymap [menu-bar] (make-sparse-keymap)) | |
338 | |
339 (define-key emerge-fast-keymap [menu-bar options] | |
340 (cons "Options" emerge-options-menu)) | |
341 (define-key emerge-fast-keymap [menu-bar merge] | |
342 (cons "Merge" emerge-merge-menu)) | |
343 (define-key emerge-fast-keymap [menu-bar move] | |
344 (cons "Move" emerge-move-menu)) | |
345 | |
346 (define-key emerge-move-menu [emerge-scroll-reset] | |
347 '("Scroll Reset" . emerge-scroll-reset)) | |
348 (define-key emerge-move-menu [emerge-scroll-right] | |
349 '("Scroll Right" . emerge-scroll-right)) | |
350 (define-key emerge-move-menu [emerge-scroll-left] | |
351 '("Scroll Left" . emerge-scroll-left)) | |
352 (define-key emerge-move-menu [emerge-scroll-down] | |
353 '("Scroll Down" . emerge-scroll-down)) | |
354 (define-key emerge-move-menu [emerge-scroll-up] | |
355 '("Scroll Up" . emerge-scroll-up)) | |
356 (define-key emerge-move-menu [emerge-recenter] | |
357 '("Recenter" . emerge-recenter)) | |
358 (define-key emerge-move-menu [emerge-mark-difference] | |
359 '("Mark Difference" . emerge-mark-difference)) | |
360 (define-key emerge-move-menu [emerge-jump-to-difference] | |
361 '("Jump To Difference" . emerge-jump-to-difference)) | |
362 (define-key emerge-move-menu [emerge-find-difference] | |
363 '("Find Difference" . emerge-find-difference)) | |
364 (define-key emerge-move-menu [emerge-previous-difference] | |
365 '("Previous Difference" . emerge-previous-difference)) | |
366 (define-key emerge-move-menu [emerge-next-difference] | |
367 '("Next Difference" . emerge-next-difference)) | |
368 | |
369 | |
370 (define-key emerge-options-menu [emerge-one-line-window] | |
371 '("One Line Window" . emerge-one-line-window)) | |
372 (define-key emerge-options-menu [emerge-set-merge-mode] | |
373 '("Set Merge Mode" . emerge-set-merge-mode)) | |
374 (define-key emerge-options-menu [emerge-set-combine-template] | |
375 '("Set Combine Template..." . emerge-set-combine-template)) | |
376 (define-key emerge-options-menu [emerge-default-B] | |
377 '("Default B" . emerge-default-B)) | |
378 (define-key emerge-options-menu [emerge-default-A] | |
379 '("Default A" . emerge-default-A)) | |
380 (define-key emerge-options-menu [emerge-skip-prefers] | |
381 '("Skip Prefers" . emerge-skip-prefers)) | |
382 (define-key emerge-options-menu [emerge-auto-advance] | |
383 '("Auto Advance" . emerge-auto-advance)) | |
384 (define-key emerge-options-menu [emerge-edit-mode] | |
385 '("Edit Mode" . emerge-edit-mode)) | |
386 (define-key emerge-options-menu [emerge-fast-mode] | |
387 '("Fast Mode" . emerge-fast-mode)) | |
388 | |
389 (define-key emerge-merge-menu [emerge-abort] '("Abort" . emerge-abort)) | |
390 (define-key emerge-merge-menu [emerge-quit] '("Quit" . emerge-quit)) | |
391 (define-key emerge-merge-menu [emerge-split-difference] | |
392 '("Split Difference" . emerge-split-difference)) | |
393 (define-key emerge-merge-menu [emerge-join-differences] | |
394 '("Join Differences" . emerge-join-differences)) | |
395 (define-key emerge-merge-menu [emerge-trim-difference] | |
396 '("Trim Difference" . emerge-trim-difference)) | |
397 (define-key emerge-merge-menu [emerge-combine-versions] | |
398 '("Combine Versions" . emerge-combine-versions)) | |
399 (define-key emerge-merge-menu [emerge-copy-as-kill-B] | |
400 '("Copy B as Kill" . emerge-copy-as-kill-B)) | |
401 (define-key emerge-merge-menu [emerge-copy-as-kill-A] | |
402 '("Copy A as Kill" . emerge-copy-as-kill-A)) | |
403 (define-key emerge-merge-menu [emerge-insert-B] | |
404 '("Insert B" . emerge-insert-B)) | |
405 (define-key emerge-merge-menu [emerge-insert-A] | |
406 '("Insert A" . emerge-insert-A)) | |
407 (define-key emerge-merge-menu [emerge-select-B] | |
408 '("Select B" . emerge-select-B)) | |
409 (define-key emerge-merge-menu [emerge-select-A] | |
410 '("Select A" . emerge-select-A))) | |
411 | |
312 | 412 |
313 ;; Variables which control each merge. They are local to the merge buffer. | 413 ;; Variables which control each merge. They are local to the merge buffer. |
314 | 414 |
315 ;; Mode variables | 415 ;; Mode variables |
316 (emerge-defvar-local emerge-mode nil | 416 (emerge-defvar-local emerge-mode nil |
865 ;;;###autoload | 965 ;;;###autoload |
866 (defun emerge-files-remote (file-a file-b file-out) | 966 (defun emerge-files-remote (file-a file-b file-out) |
867 (setq emerge-file-out file-out) | 967 (setq emerge-file-out file-out) |
868 (emerge-files-internal | 968 (emerge-files-internal |
869 file-a file-b nil | 969 file-a file-b nil |
870 (list (` (lambda () (emerge-remote-exit (, file-out) '(, exit-func))))) | 970 (list (` (lambda () (emerge-remote-exit (, file-out) '(, emerge-exit-func))))) |
871 file-out) | 971 file-out) |
872 (throw 'client-wait nil)) | 972 (throw 'client-wait nil)) |
873 | 973 |
874 ;;;###autoload | 974 ;;;###autoload |
875 (defun emerge-files-with-ancestor-remote (file-a file-b file-anc file-out) | 975 (defun emerge-files-with-ancestor-remote (file-a file-b file-anc file-out) |
876 (setq emerge-file-out file-out) | 976 (setq emerge-file-out file-out) |
877 (emerge-files-with-ancestor-internal | 977 (emerge-files-with-ancestor-internal |
878 file-a file-b file-anc nil | 978 file-a file-b file-anc nil |
879 (list (` (lambda () (emerge-remote-exit (, file-out) '(, exit-func))))) | 979 (list (` (lambda () (emerge-remote-exit (, file-out) '(, emerge-exit-func))))) |
880 file-out) | 980 file-out) |
881 (throw 'client-wait nil)) | 981 (throw 'client-wait nil)) |
882 | 982 |
883 (defun emerge-remote-exit (file-out exit-func) | 983 (defun emerge-remote-exit (file-out emerge-exit-func) |
884 (emerge-write-and-delete file-out) | 984 (emerge-write-and-delete file-out) |
885 (kill-buffer emerge-merge-buffer) | 985 (kill-buffer emerge-merge-buffer) |
886 (funcall exit-func (if emerge-prefix-argument 1 0))) | 986 (funcall emerge-exit-func (if emerge-prefix-argument 1 0))) |
887 | 987 |
888 ;;; Functions to start Emerge on RCS versions | 988 ;;; Functions to start Emerge on RCS versions |
889 | 989 |
890 (defun emerge-revisions (arg file revision-A revision-B | 990 (defun emerge-revisions (arg file revision-A revision-B |
891 &optional startup-hooks quit-hooks) | 991 &optional startup-hooks quit-hooks) |
1239 (copy-keymap emerge-old-keymap) | 1339 (copy-keymap emerge-old-keymap) |
1240 (make-sparse-keymap))) | 1340 (make-sparse-keymap))) |
1241 ;; Install the Emerge commands | 1341 ;; Install the Emerge commands |
1242 (emerge-force-define-key emerge-edit-keymap emerge-command-prefix | 1342 (emerge-force-define-key emerge-edit-keymap emerge-command-prefix |
1243 'emerge-basic-keymap) | 1343 'emerge-basic-keymap) |
1344 (define-key emerge-edit-keymap [menu-bar] (make-sparse-keymap)) | |
1345 | |
1346 ;; Create the additional menu bar items. | |
1347 (define-key emerge-edit-keymap [menu-bar options] | |
1348 (cons "Options" emerge-options-menu)) | |
1349 (define-key emerge-edit-keymap [menu-bar merge] | |
1350 (cons "Merge" emerge-merge-menu)) | |
1351 (define-key emerge-edit-keymap [menu-bar move] | |
1352 (cons "Move" emerge-move-menu)) | |
1353 | |
1244 ;; Suppress write-file and save-buffer | 1354 ;; Suppress write-file and save-buffer |
1245 (substitute-key-definition 'write-file | 1355 (substitute-key-definition 'write-file |
1246 'emerge-query-write-file | 1356 'emerge-query-write-file |
1247 emerge-edit-keymap) | 1357 emerge-edit-keymap) |
1248 (substitute-key-definition 'save-buffer | 1358 (substitute-key-definition 'save-buffer |
1799 (aset diff-vector 6 'default-A)))) | 1909 (aset diff-vector 6 'default-A)))) |
1800 (setq n (1+ n)) | 1910 (setq n (1+ n)) |
1801 (if (zerop (% n 10)) | 1911 (if (zerop (% n 10)) |
1802 (message "Setting default to A...%d" n))) | 1912 (message "Setting default to A...%d" n))) |
1803 (emerge-unselect-and-select-difference selected-difference))) | 1913 (emerge-unselect-and-select-difference selected-difference))) |
1804 (message "Default A set")) | 1914 (message "Default choice is now A")) |
1805 | 1915 |
1806 (defun emerge-default-B () | 1916 (defun emerge-default-B () |
1807 "Make the B variant the default from here down. | 1917 "Make the B variant the default from here down. |
1808 This selects the B variant for all differences from here down in the buffer | 1918 This selects the B variant for all differences from here down in the buffer |
1809 which are still defaulted, i.e., which the user has not selected and for | 1919 which are still defaulted, i.e., which the user has not selected and for |
1821 (aset diff-vector 6 'default-B)))) | 1931 (aset diff-vector 6 'default-B)))) |
1822 (setq n (1+ n)) | 1932 (setq n (1+ n)) |
1823 (if (zerop (% n 10)) | 1933 (if (zerop (% n 10)) |
1824 (message "Setting default to B...%d" n))) | 1934 (message "Setting default to B...%d" n))) |
1825 (emerge-unselect-and-select-difference selected-difference))) | 1935 (emerge-unselect-and-select-difference selected-difference))) |
1826 (message "Default B set")) | 1936 (message "Default choice is now B")) |
1827 | 1937 |
1828 (defun emerge-fast-mode () | 1938 (defun emerge-fast-mode () |
1829 "Set fast mode, for Emerge. | 1939 "Set fast mode, for Emerge. |
1830 In this mode ordinary Emacs commands are disabled, and Emerge commands | 1940 In this mode ordinary Emacs commands are disabled, and Emerge commands |
1831 need not be prefixed with \\<emerge-fast-keymap>\\[emerge-basic-keymap]." | 1941 need not be prefixed with \\<emerge-fast-keymap>\\[emerge-basic-keymap]." |
2324 (setq temp (- temp emerge-before-flag-lines))) | 2434 (setq temp (- temp emerge-before-flag-lines))) |
2325 (if (> (point) (aref diff end-marker)) | 2435 (if (> (point) (aref diff end-marker)) |
2326 (setq temp (- temp emerge-after-flag-lines))))) | 2436 (setq temp (- temp emerge-after-flag-lines))))) |
2327 temp)) | 2437 temp)) |
2328 | 2438 |
2439 (defun emerge-set-combine-template (string &optional localize) | |
2440 "Set `emerge-combine-versions-template' to STRING. | |
2441 This value controls how `emerge-combine-versions' combines the two versions. | |
2442 With prefix argument, `emerge-combine-versions-template' is made local to this | |
2443 merge buffer. Localization is permanent for any particular merge buffer." | |
2444 (interactive "s\nP") | |
2445 (if localize | |
2446 (make-local-variable 'emerge-combine-versions-template)) | |
2447 (setq emerge-combine-versions-template string) | |
2448 (message | |
2449 (if (assq 'emerge-combine-versions-template (buffer-local-variables)) | |
2450 "emerge-set-combine-versions-template set locally" | |
2451 "emerge-set-combine-versions-template set"))) | |
2452 | |
2329 (defun emerge-set-combine-versions-template (start end &optional localize) | 2453 (defun emerge-set-combine-versions-template (start end &optional localize) |
2330 "Copy region into `emerge-combine-versions-template'. | 2454 "Copy region into `emerge-combine-versions-template'. |
2331 This controls how `emerge-combine-versions' will combine the two versions. | 2455 This controls how `emerge-combine-versions' will combine the two versions. |
2332 With prefix argument, `emerge-combine-versions' is made local to this | 2456 With prefix argument, `emerge-combine-versions-template' is made local to this |
2333 merge buffer. Localization is permanent for any particular merge buffer." | 2457 merge buffer. Localization is permanent for any particular merge buffer." |
2334 (interactive "r\nP") | 2458 (interactive "r\nP") |
2335 (if localize | 2459 (if localize |
2336 (make-local-variable 'emerge-combine-versions-template)) | 2460 (make-local-variable 'emerge-combine-versions-template)) |
2337 (setq emerge-combine-versions-template (buffer-substring start end)) | 2461 (setq emerge-combine-versions-template (buffer-substring start end)) |