diff options
Diffstat (limited to 'lisp/ediff-merg.el')
-rw-r--r-- | lisp/ediff-merg.el | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/lisp/ediff-merg.el b/lisp/ediff-merg.el index 8bb1aa0814f..e7f6de3e861 100644 --- a/lisp/ediff-merg.el +++ b/lisp/ediff-merg.el @@ -58,10 +58,10 @@ Valid values are the symbols `default-A', `default-B', and `combined'." :type '(radio (const default-A) (const default-B) (const combined)) :group 'ediff-merge) -(defcustom ediff-combination-pattern +(defcustom ediff-combination-pattern '("<<<<<<< variant A" A ">>>>>>> variant B" B "####### Ancestor" Ancestor "======= end") "*Pattern to be used for combining difference regions in buffers A and B. -The value must be a list of the form +The value must be a list of the form (STRING1 bufspec1 STRING2 bufspec2 STRING3 bufspec3 STRING4) where bufspec is the symbol A, B, or Ancestor. For instance, if the value is '(STRING1 A STRING2 Ancestor STRING3 B STRING4) then the @@ -93,7 +93,7 @@ skipped over. nil means show all regions." A region is considered to have been changed if it is different from the current default (`default-A', `default-B', `combined') and it hasn't been marked as `prefer-A' or `prefer-B'. -A region is considered to have been changed also when it is marked as +A region is considered to have been changed also when it is marked as as `prefer-A', but is different from the corresponding difference region in Buffer A or if it is marked as `prefer-B' and is different from the region in Buffer B." @@ -111,7 +111,7 @@ Buffer B." ;; If ediff-skip-changed-regions, check if the merge region differs from ;; the current default. If a region is different from the default, it means ;; that the user has made determination as to how to merge for this particular -;; region. +;; region. (defsubst ediff-skip-merge-region-if-changed-from-default-p (n) (and ediff-skip-merge-regions-that-differ-from-default (ediff-merge-changed-from-default-p n 'prefers-too))) @@ -137,7 +137,7 @@ Buffer B." (setq combo-region (concat combo-region region-delim "\n" - (ediff-get-region-contents + (ediff-get-region-contents n region-spec ediff-control-buffer))) (error "")) (setq pattern-list (cdr (cdr pattern-list))) @@ -161,7 +161,7 @@ Buffer B." (while (< n ediff-number-of-differences) (ediff-set-state-of-diff-in-all-buffers n ctl-buf) (setq n (1+ n))))) - + (defun ediff-set-state-of-diff-in-all-buffers (n ctl-buf) (let ((regA (ediff-get-region-contents n 'A ctl-buf)) (regB (ediff-get-region-contents n 'B ctl-buf)) @@ -190,12 +190,12 @@ Buffer B." (ediff-set-state-of-diff n 'B nil) (ediff-set-state-of-diff n 'C nil))) )) - + (defun ediff-set-merge-mode () (normal-mode t) (remove-hook 'local-write-file-hooks 'ediff-set-merge-mode)) - + ;; Go over all diffs starting with DIFF-NUM and copy regions into buffer C ;; according to the state of the difference. ;; Since ediff-copy-diff refuses to copy identical diff regions, there is @@ -217,7 +217,7 @@ Buffer B." (if remerging "Re-merging" "Merging") n ediff-number-of-differences)) - + (setq state-of-merge (ediff-get-state-of-merge n)) (if remerging @@ -225,36 +225,36 @@ Buffer B." ;; (reg-B (ediff-get-region-contents n 'B ediff-control-buffer)) ;; (reg-C (ediff-get-region-contents n 'C ediff-control-buffer))) (let () - + ;; if region was edited since it was first set by default (if (or (ediff-merge-changed-from-default-p n) ;; was preferred (string-match "prefer" state-of-merge)) ;; then ignore (setq do-not-copy t)) - + ;; change state of merge for this diff, if necessary (if (and (string-match "\\(default\\|combined\\)" state-of-merge) (not do-not-copy)) (ediff-set-state-of-merge n (format "%S" ediff-default-variant))) )) - + ;; state-of-merge may have changed via ediff-set-state-of-merge, so ;; check it once again (setq state-of-merge (ediff-get-state-of-merge n)) - + (or do-not-copy (if (string= state-of-merge "combined") ;; use n+1 because ediff-combine-diffs works via user numbering ;; of diffs, which is 1+ to what ediff uses internally (ediff-combine-diffs (1+ n) 'batch) - (ediff-copy-diff + (ediff-copy-diff n (if (string-match "-A" state-of-merge) 'A 'B) 'C 'batch))) (setq n (1+ n))) (message "Merging buffers A & B into C ... Done") )) - + (defun ediff-re-merge () "Remerge unmodified diff regions using a new default. Start with the current region." @@ -266,14 +266,14 @@ Buffer B." default-variant-alist))) (setq ediff-default-variant (intern - (completing-read + (completing-read (format "Current merge default is `%S'. New default: " ediff-default-variant) actual-alist nil 'must-match))) (ediff-do-merge ediff-current-difference 'remerge) (ediff-recenter) )) - + (defun ediff-shrink-window-C (arg) "Shrink window C to just one line. With a prefix argument, returns window C to its normal size. @@ -307,16 +307,16 @@ Combining is done according to the specifications in variable `ediff-combination-pattern'." (interactive "P") (setq n (if (numberp n) (1- n) ediff-current-difference)) - + (let (reg-combined) ;;(setq regA (ediff-get-region-contents n 'A ediff-control-buffer) ;; regB (ediff-get-region-contents n 'B ediff-control-buffer)) ;;(setq reg-combined (ediff-make-combined-diff regA regB)) (setq reg-combined (ediff-get-combined-region n)) - + (ediff-copy-diff n nil 'C batch-invocation reg-combined)) (or batch-invocation (ediff-jump-to-difference (1+ n)))) - + ;; Checks if the region in buff C looks like a combination of the regions ;; in buffers A and B. Return a list (reg-a-beg reg-a-end reg-b-beg reg-b-end) @@ -331,7 +331,7 @@ Combining is done according to the specifications in variable (mrgreg-end (ediff-get-diff-posn 'C 'end region-num)) (pattern-list ediff-combination-pattern) delim reg-beg reg-end delim-regs-list) - + (if combined (ediff-with-current-buffer ediff-buffer-C (while pattern-list @@ -364,7 +364,7 @@ Combining is done according to the specifications in variable (reg-C (ediff-get-region-contents diff-num 'C ediff-control-buffer))) (setq state-of-merge (ediff-get-state-of-merge diff-num)) - + ;; if region was edited since it was first set by default (or (and (string= state-of-merge "default-A") (not (string= reg-A reg-C))) @@ -380,7 +380,7 @@ Combining is done according to the specifications in variable (string= state-of-merge "prefer-B") (not (string= reg-B reg-C))) ))) - + ;;; Local Variables: ;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun) |