diff options
| author | Stefan Monnier | 2008-01-15 21:40:09 +0000 |
|---|---|---|
| committer | Stefan Monnier | 2008-01-15 21:40:09 +0000 |
| commit | 30e68410fec9e2d3f0d06c6b9e60a77b7feb4c2a (patch) | |
| tree | 72aab8063990bea84c0b215c61011b3f3a0c2831 | |
| parent | 2507310c84e569a0dcb981d497b8a067dfaffccd (diff) | |
| download | emacs-30e68410fec9e2d3f0d06c6b9e60a77b7feb4c2a.tar.gz emacs-30e68410fec9e2d3f0d06c6b9e60a77b7feb4c2a.zip | |
(smerge-refine): Also work on "same change conflicts".
(smerge-makeup-conflict): New command.
| -rw-r--r-- | lisp/ChangeLog | 5 | ||||
| -rw-r--r-- | lisp/smerge-mode.el | 36 |
2 files changed, 37 insertions, 4 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index a8c91301933..efd472826c1 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2008-01-15 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 2 | |||
| 3 | * smerge-mode.el (smerge-refine): Also work on "same change conflicts". | ||
| 4 | (smerge-makeup-conflict): New command. | ||
| 5 | |||
| 1 | 2008-01-15 Thien-Thi Nguyen <ttn@gnuvola.org> | 6 | 2008-01-15 Thien-Thi Nguyen <ttn@gnuvola.org> |
| 2 | 7 | ||
| 3 | * log-edit.el (log-edit): Doc fix. | 8 | * log-edit.el (log-edit): Doc fix. |
diff --git a/lisp/smerge-mode.el b/lisp/smerge-mode.el index fe7d06e537b..e7352c4479e 100644 --- a/lisp/smerge-mode.el +++ b/lisp/smerge-mode.el | |||
| @@ -851,10 +851,12 @@ replace chars to try and eliminate some spurious differences." | |||
| 851 | (remove-overlays (match-beginning 0) (match-end 0) 'smerge 'refine) | 851 | (remove-overlays (match-beginning 0) (match-end 0) 'smerge 'refine) |
| 852 | (smerge-ensure-match 1) | 852 | (smerge-ensure-match 1) |
| 853 | (smerge-ensure-match 3) | 853 | (smerge-ensure-match 3) |
| 854 | (smerge-refine-subst (match-beginning 1) (match-end 1) | 854 | ;; Match 1 and 3 may be one and the same in case of trivial diff3 -A conflict. |
| 855 | (match-beginning 3) (match-end 3) | 855 | (let ((n1 (if (eq (match-end 1) (match-end 3)) 2 1))) |
| 856 | '((smerge . refine) | 856 | (smerge-refine-subst (match-beginning n1) (match-end n1) |
| 857 | (face . smerge-refined-change)))) | 857 | (match-beginning 3) (match-end 3) |
| 858 | '((smerge . refine) | ||
| 859 | (face . smerge-refined-change))))) | ||
| 858 | 860 | ||
| 859 | (defun smerge-diff (n1 n2) | 861 | (defun smerge-diff (n1 n2) |
| 860 | (smerge-match-conflict) | 862 | (smerge-match-conflict) |
| @@ -992,6 +994,32 @@ buffer names." | |||
| 992 | (message "Conflict resolution finished; you may save the buffer"))))) | 994 | (message "Conflict resolution finished; you may save the buffer"))))) |
| 993 | (message "Please resolve conflicts now; exit ediff when done"))) | 995 | (message "Please resolve conflicts now; exit ediff when done"))) |
| 994 | 996 | ||
| 997 | (defun smerge-makeup-conflict (pt1 pt2 pt3 &optional pt4) | ||
| 998 | "Insert diff3 markers to make a new conflict. | ||
| 999 | Uses point and mark for 2 of the relevant positions and previous marks | ||
| 1000 | for the other ones. | ||
| 1001 | By default, makes up a 2-way conflict, | ||
| 1002 | with a \\[universal-argument] prefix, makes up a 3-way conflict." | ||
| 1003 | (interactive | ||
| 1004 | (list (point) | ||
| 1005 | (mark) | ||
| 1006 | (progn (pop-mark) (mark)) | ||
| 1007 | (when current-prefix-arg (pop-mark) (mark)))) | ||
| 1008 | ;; Start from the end so as to avoid problems with pos-changes. | ||
| 1009 | (destructuring-bind (pt1 pt2 pt3 &optional pt4) | ||
| 1010 | (sort (list* pt1 pt2 pt3 (if pt4 (list pt4))) '>=) | ||
| 1011 | (goto-char pt1) (beginning-of-line) | ||
| 1012 | (insert ">>>>>>> OTHER\n") | ||
| 1013 | (goto-char pt2) (beginning-of-line) | ||
| 1014 | (insert "=======\n") | ||
| 1015 | (goto-char pt3) (beginning-of-line) | ||
| 1016 | (when pt4 | ||
| 1017 | (insert "||||||| BASE\n") | ||
| 1018 | (goto-char pt4) (beginning-of-line)) | ||
| 1019 | (insert "<<<<<<< MINE\n")) | ||
| 1020 | (if smerge-mode nil (smerge-mode 1)) | ||
| 1021 | (smerge-refine)) | ||
| 1022 | |||
| 995 | 1023 | ||
| 996 | (defconst smerge-parsep-re | 1024 | (defconst smerge-parsep-re |
| 997 | (concat smerge-begin-re "\\|" smerge-end-re "\\|" | 1025 | (concat smerge-begin-re "\\|" smerge-end-re "\\|" |