emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/ediff-merg.el


From: Miles Bader
Subject: [Emacs-diffs] Changes to emacs/lisp/ediff-merg.el
Date: Fri, 04 Apr 2003 01:21:53 -0500

Index: emacs/lisp/ediff-merg.el
diff -c emacs/lisp/ediff-merg.el:1.22 emacs/lisp/ediff-merg.el:1.23
*** emacs/lisp/ediff-merg.el:1.22       Mon Jan  7 23:36:01 2002
--- emacs/lisp/ediff-merg.el    Tue Feb  4 06:13:36 2003
***************
*** 58,67 ****
    :type '(radio (const default-A) (const default-B) (const combined))
    :group 'ediff-merge)
  
! (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 
  (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
--- 58,67 ----
    :type '(radio (const default-A) (const default-B) (const combined))
    :group 'ediff-merge)
  
! (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
  (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,99 ****
  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 
  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."
--- 93,99 ----
  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
  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,117 ****
  ;; 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. 
  (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)))
--- 111,117 ----
  ;; 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.
  (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,143 ****
          (setq combo-region
                (concat combo-region
                        region-delim "\n"
!                       (ediff-get-region-contents 
                         n region-spec ediff-control-buffer)))
        (error ""))
        (setq pattern-list (cdr (cdr pattern-list)))
--- 137,143 ----
          (setq combo-region
                (concat combo-region
                        region-delim "\n"
!                       (ediff-get-region-contents
                         n region-spec ediff-control-buffer)))
        (error ""))
        (setq pattern-list (cdr (cdr pattern-list)))
***************
*** 161,167 ****
      (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))
--- 161,167 ----
      (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,201 ****
             (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
--- 190,201 ----
             (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,223 ****
                   (if remerging "Re-merging" "Merging")
                   n
                   ediff-number-of-differences))
!            
        (setq state-of-merge (ediff-get-state-of-merge n))
  
        (if remerging
--- 217,223 ----
                   (if remerging "Re-merging" "Merging")
                   n
                   ediff-number-of-differences))
! 
        (setq state-of-merge (ediff-get-state-of-merge n))
  
        (if remerging
***************
*** 225,260 ****
          ;;    (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 
             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."
--- 225,260 ----
          ;;    (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
             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,279 ****
                  default-variant-alist)))
      (setq ediff-default-variant
          (intern
!          (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.
--- 266,279 ----
                  default-variant-alist)))
      (setq ediff-default-variant
          (intern
!          (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,322 ****
  `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)
--- 307,322 ----
  `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,337 ****
            (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
--- 331,337 ----
            (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,370 ****
        (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)))
--- 364,370 ----
        (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,386 ****
             (string= state-of-merge "prefer-B")
             (not (string= reg-B reg-C)))
        )))
!   
  
  ;;; Local Variables:
  ;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
--- 380,386 ----
             (string= state-of-merge "prefer-B")
             (not (string= reg-B reg-C)))
        )))
! 
  
  ;;; Local Variables:
  ;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]