aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Kastrup2013-11-25 10:40:31 -0500
committerStefan Monnier2013-11-25 10:40:31 -0500
commit5f5b128d48afce520ddb675849224977ea253294 (patch)
tree63159e98cc0a3721cac6e2104a93d195004c9b73
parent623891e5c6643587e7a61dea25aacdc470a4d866 (diff)
downloademacs-5f5b128d48afce520ddb675849224977ea253294.tar.gz
emacs-5f5b128d48afce520ddb675849224977ea253294.zip
* lisp/vc/smerge-mode.el (smerge-ediff): Choose default buffer names based
on the conflict markers when available. (smerge--get-marker): New function. (smerge-end-re, smerge-base-re): Add subgroup.
-rw-r--r--lisp/ChangeLog7
-rw-r--r--lisp/vc/smerge-mode.el29
2 files changed, 30 insertions, 6 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index f52ca143ba7..7975d6eecbb 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,10 @@
12013-11-23 David Kastrup <dak@gnu.org>
2
3 * vc/smerge-mode.el (smerge-ediff): Choose default buffer names based
4 on the conflict markers when available.
5 (smerge--get-marker): New function.
6 (smerge-end-re, smerge-base-re): Add subgroup.
7
12013-11-25 Stefan Monnier <monnier@iro.umontreal.ca> 82013-11-25 Stefan Monnier <monnier@iro.umontreal.ca>
2 9
3 * frame.el (handle-focus-in, handle-focus-out): Add missing 10 * frame.el (handle-focus-in, handle-focus-out): Add missing
diff --git a/lisp/vc/smerge-mode.el b/lisp/vc/smerge-mode.el
index 87336b6a357..25e9f82345d 100644
--- a/lisp/vc/smerge-mode.el
+++ b/lisp/vc/smerge-mode.el
@@ -243,8 +243,8 @@ Used in `smerge-diff-base-mine' and related functions."
243 "Font lock patterns for `smerge-mode'.") 243 "Font lock patterns for `smerge-mode'.")
244 244
245(defconst smerge-begin-re "^<<<<<<< \\(.*\\)\n") 245(defconst smerge-begin-re "^<<<<<<< \\(.*\\)\n")
246(defconst smerge-end-re "^>>>>>>> .*\n") 246(defconst smerge-end-re "^>>>>>>> \\(.*\\)\n")
247(defconst smerge-base-re "^||||||| .*\n") 247(defconst smerge-base-re "^||||||| \\(.*\\)\n")
248(defconst smerge-other-re "^=======\n") 248(defconst smerge-other-re "^=======\n")
249 249
250(defvar smerge-conflict-style nil 250(defvar smerge-conflict-style nil
@@ -1182,6 +1182,14 @@ repeating the command will highlight other two parts."
1182(defvar ediff-quit-hook) 1182(defvar ediff-quit-hook)
1183(declare-function ediff-cleanup-mess "ediff-util" nil) 1183(declare-function ediff-cleanup-mess "ediff-util" nil)
1184 1184
1185(defun smerge--get-marker (regexp default)
1186 (save-excursion
1187 (goto-char (point-min))
1188 (if (and (search-forward-regexp regexp nil t)
1189 (> (match-end 1) (match-beginning 1)))
1190 (concat default "=" (match-string-no-properties 1))
1191 default)))
1192
1185;;;###autoload 1193;;;###autoload
1186(defun smerge-ediff (&optional name-mine name-other name-base) 1194(defun smerge-ediff (&optional name-mine name-other name-base)
1187 "Invoke ediff to resolve the conflicts. 1195 "Invoke ediff to resolve the conflicts.
@@ -1192,11 +1200,17 @@ buffer names."
1192 (mode major-mode) 1200 (mode major-mode)
1193 ;;(ediff-default-variant 'default-B) 1201 ;;(ediff-default-variant 'default-B)
1194 (config (current-window-configuration)) 1202 (config (current-window-configuration))
1195 (filename (file-name-nondirectory buffer-file-name)) 1203 (filename (file-name-nondirectory (or buffer-file-name "-")))
1196 (mine (generate-new-buffer 1204 (mine (generate-new-buffer
1197 (or name-mine (concat "*" filename " MINE*")))) 1205 (or name-mine
1206 (concat "*" filename " "
1207 (smerge--get-marker smerge-begin-re "MINE")
1208 "*"))))
1198 (other (generate-new-buffer 1209 (other (generate-new-buffer
1199 (or name-other (concat "*" filename " OTHER*")))) 1210 (or name-other
1211 (concat "*" filename " "
1212 (smerge--get-marker smerge-end-re "OTHER")
1213 "*"))))
1200 base) 1214 base)
1201 (with-current-buffer mine 1215 (with-current-buffer mine
1202 (buffer-disable-undo) 1216 (buffer-disable-undo)
@@ -1221,7 +1235,10 @@ buffer names."
1221 1235
1222 (when base 1236 (when base
1223 (setq base (generate-new-buffer 1237 (setq base (generate-new-buffer
1224 (or name-base (concat "*" filename " BASE*")))) 1238 (or name-base
1239 (concat "*" filename " "
1240 (smerge--get-marker smerge-base-re "BASE")
1241 "*"))))
1225 (with-current-buffer base 1242 (with-current-buffer base
1226 (buffer-disable-undo) 1243 (buffer-disable-undo)
1227 (insert-buffer-substring buf) 1244 (insert-buffer-substring buf)