aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKarl Heuer1995-06-09 14:38:56 +0000
committerKarl Heuer1995-06-09 14:38:56 +0000
commit13340e24bdaf072b6d2232ed08dd956f1a7a3525 (patch)
tree75e42a61c93e0fe5123801610ca063c8944b31bc
parent77af52939e8f187f77a9eb4b58965d045c5a57e9 (diff)
downloademacs-13340e24bdaf072b6d2232ed08dd956f1a7a3525.tar.gz
emacs-13340e24bdaf072b6d2232ed08dd956f1a7a3525.zip
Converted xemacs *screen* nomenclature to *frame*.
Incorporated overlay strings. Ediff no longer runs under emacs 19.28 and earlier and XEmacs 19.11 and earlier.
-rw-r--r--lisp/ediff-merg.el71
1 files changed, 37 insertions, 34 deletions
diff --git a/lisp/ediff-merg.el b/lisp/ediff-merg.el
index c4530af58a7..3c6681d3fb7 100644
--- a/lisp/ediff-merg.el
+++ b/lisp/ediff-merg.el
@@ -22,7 +22,6 @@
22 22
23(require 'ediff-init) 23(require 'ediff-init)
24 24
25
26(defvar ediff-default-variant 'default-A 25(defvar ediff-default-variant 'default-A
27 "*The variant to be used as a default for buffer C in merging. 26 "*The variant to be used as a default for buffer C in merging.
28Valid values are the symbols `default-A', `default-B', and `combined'.") 27Valid values are the symbols `default-A', `default-B', and `combined'.")
@@ -62,7 +61,11 @@ skiped over. Nil means show all regions.")
62 (let ((regA (ediff-get-region-contents n 'A ctl-buf)) 61 (let ((regA (ediff-get-region-contents n 'A ctl-buf))
63 (regB (ediff-get-region-contents n 'B ctl-buf)) 62 (regB (ediff-get-region-contents n 'B ctl-buf))
64 (regC (ediff-get-region-contents n 'C ctl-buf))) 63 (regC (ediff-get-region-contents n 'C ctl-buf)))
65 (cond ((string= regA regB) 64 (cond ((and (string= regA regB) (string= regA regC))
65 (ediff-set-state-of-diff n 'A "=diff(B)")
66 (ediff-set-state-of-diff n 'B "=diff(C)")
67 (ediff-set-state-of-diff n 'C "=diff(A)"))
68 ((string= regA regB)
66 (ediff-set-state-of-diff n 'A "=diff(B)") 69 (ediff-set-state-of-diff n 'A "=diff(B)")
67 (ediff-set-state-of-diff n 'B "=diff(A)") 70 (ediff-set-state-of-diff n 'B "=diff(A)")
68 (ediff-set-state-of-diff n 'C nil)) 71 (ediff-set-state-of-diff n 'C nil))
@@ -82,6 +85,11 @@ skiped over. Nil means show all regions.")
82 (ediff-set-state-of-diff n 'B nil) 85 (ediff-set-state-of-diff n 'B nil)
83 (ediff-set-state-of-diff n 'C nil))) 86 (ediff-set-state-of-diff n 'C nil)))
84 )) 87 ))
88
89(defun ediff-set-merge-mode ()
90 ;; by Stig@hackvan.com
91 (normal-mode t)
92 (remove-hook 'local-write-file-hooks 'ediff-set-merge-mode))
85 93
86;; Go over all diffs starting with DIFF-NUM and copy regions into buffer C 94;; Go over all diffs starting with DIFF-NUM and copy regions into buffer C
87;; according to the state of the difference. 95;; according to the state of the difference.
@@ -90,19 +98,14 @@ skiped over. Nil means show all regions.")
90;; 98;;
91;; If re-merging, change state of merge in all diffs starting with 99;; If re-merging, change state of merge in all diffs starting with
92;; DIFF-NUM, except those where the state is prefer-* or where it is 100;; DIFF-NUM, except those where the state is prefer-* or where it is
93;; default-* but the region appears to be modified with respect to its 101;; `default-*' or `combined' but the buf C region appears to be modified
94;; original form. 102;; since last set by default.
95;; Also, prevent copying when there is a danger of overriding a modified
96;; region in buffer C.
97(defun ediff-do-merge (diff-num &optional remerging) 103(defun ediff-do-merge (diff-num &optional remerging)
98 (if (< diff-num 0) (setq diff-num 0)) 104 (if (< diff-num 0) (setq diff-num 0))
99 (let ((n diff-num) 105 (let ((n diff-num)
100 (default-state-of-merge (format "%S" ediff-default-variant)) 106 (default-state-of-merge (format "%S" ediff-default-variant))
101 do-not-copy 107 do-not-copy state-of-merge)
102 state-of-merge)
103
104 (while (< n ediff-number-of-differences) 108 (while (< n ediff-number-of-differences)
105
106 (if (= (mod n 10) 0) 109 (if (= (mod n 10) 0)
107 (message "%s buffers A & B into C ... region %d of %d" 110 (message "%s buffers A & B into C ... region %d of %d"
108 (if remerging "Re-merging" "Merging") 111 (if remerging "Re-merging" "Merging")
@@ -117,28 +120,29 @@ skiped over. Nil means show all regions.")
117 (reg-B (ediff-get-region-contents n 'B ediff-control-buffer)) 120 (reg-B (ediff-get-region-contents n 'B ediff-control-buffer))
118 (reg-C (ediff-get-region-contents n 'C ediff-control-buffer))) 121 (reg-C (ediff-get-region-contents n 'C ediff-control-buffer)))
119 122
120 (if (or 123 ;;; was edited since first set by default
121 ;; has been edited since it was first set by default 124 (if (or (and (string= state-of-merge "default-A")
122 (and (string= state-of-merge "default-A")
123 (not (string= reg-A reg-C))) 125 (not (string= reg-A reg-C)))
124 ;; has been edited since first set by default 126 ;; was edited since first set by default
125 (and (string= state-of-merge "default-B") 127 (and (string= state-of-merge "default-B")
126 (not (string= reg-B reg-C))) 128 (not (string= reg-B reg-C)))
127 ;; was prefered--ignore 129 ;; was edited since first set by default
128 (string-match "prefer" state-of-merge) 130 (and (string= state-of-merge "combined")
129 ;; was combined--ignore 131 (not (string=
130 (string= state-of-merge "combined")) 132 (ediff-make-combined-diff reg-A reg-B) reg-C)))
131 133 ;; was prefered--ignore
134 (string-match "prefer" state-of-merge))
132 (setq do-not-copy t)) 135 (setq do-not-copy t))
133 136
134 ;; change state of merge for this diff, if necessary 137 ;; change state of merge for this diff, if necessary
135 (if (and (string-match "default" state-of-merge) (not do-not-copy)) 138 (if (and (string-match "\\(default\\|combined\\)" state-of-merge)
139 (not do-not-copy))
136 (ediff-set-state-of-merge 140 (ediff-set-state-of-merge
137 n (format "%S" ediff-default-variant))) 141 n (format "%S" ediff-default-variant)))
138 )) 142 ))
139 143
140 ;; state-of-merge may have changed via ediff-set-state-of-merge, so 144 ;; state-of-merge may have changed via ediff-set-state-of-merge, so
141 ;; check it out again 145 ;; check it once again
142 (setq state-of-merge (ediff-get-state-of-merge n)) 146 (setq state-of-merge (ediff-get-state-of-merge n))
143 147
144 (or do-not-copy 148 (or do-not-copy
@@ -146,10 +150,8 @@ skiped over. Nil means show all regions.")
146 ;; use n+1 because ediff-combine-diffs works via user numbering 150 ;; use n+1 because ediff-combine-diffs works via user numbering
147 ;; of diffs, which is 1+ to what ediff uses internally 151 ;; of diffs, which is 1+ to what ediff uses internally
148 (ediff-combine-diffs (1+ n) 'batch) 152 (ediff-combine-diffs (1+ n) 'batch)
149 (ediff-copy-diff n 153 (ediff-copy-diff
150 (if (string-match "-A" state-of-merge) 'A 'B) 154 n (if (string-match "-A" state-of-merge) 'A 'B) 'C 'batch)))
151 'C
152 'batch)))
153 (setq n (1+ n))) 155 (setq n (1+ n)))
154 (message "Merging buffers A & B into C ... Done") 156 (message "Merging buffers A & B into C ... Done")
155 )) 157 ))
@@ -209,16 +211,17 @@ Combining is done using the list in variable `ediff-combination-pattern'."
209 (setq regA (ediff-get-region-contents n 'A ediff-control-buffer) 211 (setq regA (ediff-get-region-contents n 'A ediff-control-buffer)
210 regB (ediff-get-region-contents n 'B ediff-control-buffer)) 212 regB (ediff-get-region-contents n 'B ediff-control-buffer))
211 213
212 (setq reg-combined (concat (nth 0 ediff-combination-pattern) "\n" 214 (setq reg-combined (ediff-make-combined-diff regA regB))
213 regA
214 (nth 1 ediff-combination-pattern) "\n"
215 regB
216 (nth 2 ediff-combination-pattern) "\n"))
217 215
218 (ediff-copy-diff n nil 'C batch-invocation reg-combined)) 216 (ediff-copy-diff n nil 'C batch-invocation reg-combined))
217 (or batch-invocation (ediff-recenter)))
219 218
220 (or batch-invocation 219(defsubst ediff-make-combined-diff (regA regB)
221 (ediff-recenter 'no-rehighlight))) 220 (concat (nth 0 ediff-combination-pattern) "\n"
221 regA
222 (nth 1 ediff-combination-pattern) "\n"
223 regB
224 (nth 2 ediff-combination-pattern) "\n"))
222 225
223 226
224;; Checks if the region in buff C looks like a combination of the regions 227;; Checks if the region in buff C looks like a combination of the regions