diff options
| author | David Kastrup | 2013-11-25 10:40:31 -0500 |
|---|---|---|
| committer | Stefan Monnier | 2013-11-25 10:40:31 -0500 |
| commit | 5f5b128d48afce520ddb675849224977ea253294 (patch) | |
| tree | 63159e98cc0a3721cac6e2104a93d195004c9b73 | |
| parent | 623891e5c6643587e7a61dea25aacdc470a4d866 (diff) | |
| download | emacs-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/ChangeLog | 7 | ||||
| -rw-r--r-- | lisp/vc/smerge-mode.el | 29 |
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 @@ | |||
| 1 | 2013-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 | |||
| 1 | 2013-11-25 Stefan Monnier <monnier@iro.umontreal.ca> | 8 | 2013-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) |