Function: ediff-update-diffs
ediff-update-diffs is an interactive and byte-compiled function
defined in ediff-util.el.gz.
Signature
(ediff-update-diffs)
Documentation
Recompute difference regions in buffers A, B, and C.
Buffers are not synchronized with their respective files, so changes done to these buffers are not saved at this point---the user can do this later, if necessary.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/vc/ediff-util.el.gz
;;; Commands for working with Ediff
(defun ediff-update-diffs ()
"Recompute difference regions in buffers A, B, and C.
Buffers are not synchronized with their respective files, so changes done
to these buffers are not saved at this point---the user can do this later,
if necessary."
(interactive)
(ediff-barf-if-not-control-buffer)
(let ((point-A (ediff-with-current-buffer ediff-buffer-A (point)))
;;(point-B (ediff-with-current-buffer ediff-buffer-B (point)))
(tmp-buffer (get-buffer-create ediff-tmp-buffer))
(buf-A-file-name (buffer-file-name ediff-buffer-A))
(buf-B-file-name (buffer-file-name ediff-buffer-B))
;; (null ediff-buffer-C) is no problem, as we later check if
;; ediff-buffer-C is alive
(buf-C-file-name (buffer-file-name ediff-buffer-C))
(buf-ancestor-file-name (buffer-file-name ediff-ancestor-buffer))
(overl-A (ediff-get-value-according-to-buffer-type
'A ediff-narrow-bounds))
(overl-B (ediff-get-value-according-to-buffer-type
'B ediff-narrow-bounds))
(overl-C (ediff-get-value-according-to-buffer-type
'C ediff-narrow-bounds))
(overl-Ancestor (ediff-get-value-according-to-buffer-type
'Ancestor ediff-narrow-bounds))
beg-A end-A beg-B end-B beg-C end-C beg-Ancestor end-Ancestor
file-A file-B file-C file-Ancestor)
(if (stringp buf-A-file-name)
(setq buf-A-file-name (file-name-nondirectory buf-A-file-name)))
(if (stringp buf-B-file-name)
(setq buf-B-file-name (file-name-nondirectory buf-B-file-name)))
(if (stringp buf-C-file-name)
(setq buf-C-file-name (file-name-nondirectory buf-C-file-name)))
(if (stringp buf-ancestor-file-name)
(setq buf-ancestor-file-name (file-name-nondirectory buf-ancestor-file-name)))
(ediff-unselect-and-select-difference -1)
(setq beg-A (ediff-overlay-start overl-A)
beg-B (ediff-overlay-start overl-B)
beg-C (ediff-overlay-start overl-C)
beg-Ancestor (ediff-overlay-start overl-Ancestor)
end-A (ediff-overlay-end overl-A)
end-B (ediff-overlay-end overl-B)
end-C (ediff-overlay-end overl-C)
end-Ancestor (ediff-overlay-end overl-Ancestor))
(if ediff-word-mode
(progn
(ediff-wordify beg-A end-A ediff-buffer-A tmp-buffer)
(setq file-A (ediff-make-temp-file tmp-buffer "regA"))
(ediff-wordify beg-B end-B ediff-buffer-B tmp-buffer)
(setq file-B (ediff-make-temp-file tmp-buffer "regB"))
(when ediff-3way-job
(ediff-wordify beg-C end-C ediff-buffer-C tmp-buffer)
(setq file-C (ediff-make-temp-file tmp-buffer "regC")))
(when ediff-merge-with-ancestor-job
(ediff-wordify beg-Ancestor end-Ancestor ediff-ancestor-buffer tmp-buffer)
(setq file-Ancestor (ediff-make-temp-file tmp-buffer "regAncestor")))
)
;; not word-mode
(setq file-A (ediff-make-temp-file ediff-buffer-A buf-A-file-name))
(setq file-B (ediff-make-temp-file ediff-buffer-B buf-B-file-name))
(if ediff-3way-job
(setq file-C (ediff-make-temp-file ediff-buffer-C buf-C-file-name)))
(when ediff-merge-with-ancestor-job
(setq file-Ancestor
(ediff-make-temp-file
ediff-ancestor-buffer
buf-ancestor-file-name)))
)
(ediff-clear-diff-vector 'ediff-difference-vector-A 'fine-diffs-also)
(ediff-clear-diff-vector 'ediff-difference-vector-B 'fine-diffs-also)
(ediff-clear-diff-vector 'ediff-difference-vector-C 'fine-diffs-also)
(ediff-clear-diff-vector
'ediff-difference-vector-Ancestor 'fine-diffs-also)
(setq ediff-killed-diffs-alist nil) ; invalidate saved killed diff regions
(funcall ediff-setup-diff-regions-function file-A file-B
(if ediff-merge-with-ancestor-job file-Ancestor file-C))
(setq ediff-number-of-differences (length ediff-difference-vector-A))
(delete-file file-A)
(delete-file file-B)
(and file-C (delete-file file-C))
(and file-Ancestor (delete-file file-Ancestor))
(if ediff-3way-job
(ediff-set-state-of-all-diffs-in-all-buffers ediff-control-buffer))
(ediff-jump-to-difference (ediff-diff-at-point 'A point-A))
(message "")
))