comparison lisp/ediff/ediff-util.el @ 144:318232e2a3f0 r20-2b6

Import from CVS: tag r20-2b6
author cvs
date Mon, 13 Aug 2007 09:34:14 +0200
parents 6a378aca36af
children 43dd3413c7c7
comparison
equal deleted inserted replaced
143:50e7fedfe353 144:318232e2a3f0
241 (run-hooks 'ediff-keymap-setup-hook)) 241 (run-hooks 'ediff-keymap-setup-hook))
242 242
243 243
244 ;;; Setup functions 244 ;;; Setup functions
245 245
246 ;; No longer needed: XEmacs has surrogate minibuffers now. 246 ;; Common startup entry for all Ediff functions It now returns control buffer
247 ;;(or (boundp 'synchronize-minibuffers) 247 ;; so other functions can do post-processing SETUP-PARAMETERS is a list of the
248 ;; (defvar synchronize-minibuffers nil)) 248 ;; form ((param .val) (param . val)...) This serves a similar purpose to
249 249 ;; STARTUP-HOOKS, but these parameters are set in the new control buffer right
250 ;; Common startup entry for all Ediff functions 250 ;; after this buf is created and before any windows are set and such.
251 ;; It now returns control buffer so other functions can do post-processing
252 (defun ediff-setup (buffer-A file-A buffer-B file-B buffer-C file-C 251 (defun ediff-setup (buffer-A file-A buffer-B file-B buffer-C file-C
253 startup-hooks setup-parameters) 252 startup-hooks setup-parameters)
254 ;; ediff-convert-standard-filename puts file names in the form appropriate 253 ;; ediff-convert-standard-filename puts file names in the form appropriate
255 ;; for the OS at hand. 254 ;; for the OS at hand.
256 (setq file-A (ediff-convert-standard-filename (expand-file-name file-A))) 255 (setq file-A (ediff-convert-standard-filename (expand-file-name file-A)))
262 (ediff-unique-buffer-name "*Ediff Control Panel" "*")) 261 (ediff-unique-buffer-name "*Ediff Control Panel" "*"))
263 (control-buffer (ediff-eval-in-buffer buffer-A 262 (control-buffer (ediff-eval-in-buffer buffer-A
264 (get-buffer-create control-buffer-name)))) 263 (get-buffer-create control-buffer-name))))
265 (ediff-eval-in-buffer control-buffer 264 (ediff-eval-in-buffer control-buffer
266 (ediff-mode) 265 (ediff-mode)
267
268 ;; unwrap set up parameters passed as argument
269 (while setup-parameters
270 (set (car (car setup-parameters)) (cdr (car setup-parameters)))
271 (setq setup-parameters (cdr setup-parameters)))
272
273 ;; set variables classifying the current ediff job 266 ;; set variables classifying the current ediff job
274 (setq ediff-3way-comparison-job (ediff-3way-comparison-job) 267 (setq ediff-3way-comparison-job (ediff-3way-comparison-job)
275 ediff-merge-job (ediff-merge-job) 268 ediff-merge-job (ediff-merge-job)
276 ediff-merge-with-ancestor-job (ediff-merge-with-ancestor-job) 269 ediff-merge-with-ancestor-job (ediff-merge-with-ancestor-job)
277 ediff-3way-job (ediff-3way-job) 270 ediff-3way-job (ediff-3way-job)
285 (make-local-variable 'ediff-split-window-function) 278 (make-local-variable 'ediff-split-window-function)
286 (make-local-variable 'ediff-default-variant) 279 (make-local-variable 'ediff-default-variant)
287 (make-local-variable 'ediff-merge-window-share) 280 (make-local-variable 'ediff-merge-window-share)
288 (make-local-variable 'ediff-window-setup-function) 281 (make-local-variable 'ediff-window-setup-function)
289 (make-local-variable 'ediff-keep-variants) 282 (make-local-variable 'ediff-keep-variants)
283
284 ;; unwrap set up parameters passed as argument
285 (while setup-parameters
286 (set (car (car setup-parameters)) (cdr (car setup-parameters)))
287 (setq setup-parameters (cdr setup-parameters)))
288
290 289
291 ;; Don't delete variants in case of ediff-buffer-* jobs without asking. 290 ;; Don't delete variants in case of ediff-buffer-* jobs without asking.
292 ;; This is because u may loose work---dangerous. 291 ;; This is because u may loose work---dangerous.
293 (if (string-match "buffer" (symbol-name ediff-job-name)) 292 (if (string-match "buffer" (symbol-name ediff-job-name))
294 (setq ediff-keep-variants t)) 293 (setq ediff-keep-variants t))
1591 (and ediff-show-clashes-only 1590 (and ediff-show-clashes-only
1592 (string-match "prefer" 1591 (string-match "prefer"
1593 (or (ediff-get-state-of-merge n) ""))) 1592 (or (ediff-get-state-of-merge n) "")))
1594 ;; skip difference regions that differ in white space 1593 ;; skip difference regions that differ in white space
1595 (and ediff-ignore-similar-regions 1594 (and ediff-ignore-similar-regions
1596 (ediff-no-fine-diffs-p n)))) 1595 (eq (ediff-no-fine-diffs-p n) t))))
1597 (setq n (1+ n)) 1596 (setq n (1+ n))
1598 (if (= 0 (mod n 20)) 1597 (if (= 0 (mod n 20))
1599 (message "Skipped over region %d and counting ..." n)) 1598 (message "Skipped over region %d and counting ..." n))
1600 (or (>= n ediff-number-of-differences) 1599 (or (>= n ediff-number-of-differences)
1601 (setq regexp-skip (funcall ediff-skip-diff-region-function n)) 1600 (setq regexp-skip (funcall ediff-skip-diff-region-function n))
1628 (and ediff-show-clashes-only 1627 (and ediff-show-clashes-only
1629 (string-match "prefer" 1628 (string-match "prefer"
1630 (or (ediff-get-state-of-merge n) ""))) 1629 (or (ediff-get-state-of-merge n) "")))
1631 ;; skip difference regions that differ in white space 1630 ;; skip difference regions that differ in white space
1632 (and ediff-ignore-similar-regions 1631 (and ediff-ignore-similar-regions
1633 (ediff-no-fine-diffs-p n)))) 1632 (eq (ediff-no-fine-diffs-p n) t))))
1634 (if (= 0 (mod (1+ n) 20)) 1633 (if (= 0 (mod (1+ n) 20))
1635 (message "Skipped over region %d and counting ..." (1+ n))) 1634 (message "Skipped over region %d and counting ..." (1+ n)))
1636 (setq n (1- n)) 1635 (setq n (1- n))
1637 (or (< n 0) 1636 (or (< n 0)
1638 (setq regexp-skip (funcall ediff-skip-diff-region-function n)) 1637 (setq regexp-skip (funcall ediff-skip-diff-region-function n))
3130 (sit-for 0) 3129 (sit-for 0)
3131 (error "All right. Make up your mind and come back..."))) 3130 (error "All right. Make up your mind and come back...")))
3132 3131
3133 (ediff-regions-internal 3132 (ediff-regions-internal
3134 bufA begA endA bufB begB endB 3133 bufA begA endA bufB begB endB
3135 nil ; startup hook 3134 nil ; setup-hook
3136 'ediff-regions-linewise ; job name 3135 'ediff-regions-linewise ; job name
3137 nil) ; no word mode 3136 nil ; no word mode
3137 ;; setup param to pass to ediff-setup
3138 (list (cons 'ediff-split-window-function ediff-split-window-function)))
3138 )) 3139 ))
3139 3140
3140 3141
3141 3142
3142 (defun ediff-remove-flags-from-buffer (buffer overlay) 3143 (defun ediff-remove-flags-from-buffer (buffer overlay)