diff options
| author | Stefan Monnier | 2002-10-10 17:30:20 +0000 |
|---|---|---|
| committer | Stefan Monnier | 2002-10-10 17:30:20 +0000 |
| commit | a48402c999f3600e8a6ba63c6fa246e223db138c (patch) | |
| tree | 9fa5b397d33f4c6c9aa61a49511eb5023246b8d7 | |
| parent | 7884cd32d0eace418d11f5b478f5dda2bd04be99 (diff) | |
| download | emacs-a48402c999f3600e8a6ba63c6fa246e223db138c.tar.gz emacs-a48402c999f3600e8a6ba63c6fa246e223db138c.zip | |
(smerge-ediff): Autoload.
(smerge-match-conflict): Don't assume as much about smerge-begin-re.
(smerge-resolve-function): New var.
(smerge-resolve): New command.
(smerge-basic-map): Bind it.
| -rw-r--r-- | lisp/smerge-mode.el | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/lisp/smerge-mode.el b/lisp/smerge-mode.el index 4c68293cf40..b8fad744afb 100644 --- a/lisp/smerge-mode.el +++ b/lisp/smerge-mode.el | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | 4 | ||
| 5 | ;; Author: Stefan Monnier <monnier@cs.yale.edu> | 5 | ;; Author: Stefan Monnier <monnier@cs.yale.edu> |
| 6 | ;; Keywords: merge diff3 cvs conflict | 6 | ;; Keywords: merge diff3 cvs conflict |
| 7 | ;; Revision: $Id: smerge-mode.el,v 1.18 2002/10/04 15:25:22 monnier Exp $ | 7 | ;; Revision: $Id: smerge-mode.el,v 1.19 2002/10/10 13:01:14 monnier Exp $ |
| 8 | 8 | ||
| 9 | ;; This file is part of GNU Emacs. | 9 | ;; This file is part of GNU Emacs. |
| 10 | 10 | ||
| @@ -115,6 +115,7 @@ Used in `smerge-diff-base-mine' and related functions." | |||
| 115 | (easy-mmode-defmap smerge-basic-map | 115 | (easy-mmode-defmap smerge-basic-map |
| 116 | `(("n" . smerge-next) | 116 | `(("n" . smerge-next) |
| 117 | ("p" . smerge-prev) | 117 | ("p" . smerge-prev) |
| 118 | ("r" . smerge-resolve) | ||
| 118 | ("a" . smerge-keep-all) | 119 | ("a" . smerge-keep-all) |
| 119 | ("b" . smerge-keep-base) | 120 | ("b" . smerge-keep-base) |
| 120 | ("o" . smerge-keep-other) | 121 | ("o" . smerge-keep-other) |
| @@ -248,6 +249,21 @@ Convenient for the kind of conflicts that can arise in ChangeLog files." | |||
| 248 | (dolist (m match-data) (if m (move-marker m nil))) | 249 | (dolist (m match-data) (if m (move-marker m nil))) |
| 249 | (mapc (lambda (m) (if m (move-marker m nil))) ends))))) | 250 | (mapc (lambda (m) (if m (move-marker m nil))) ends))))) |
| 250 | 251 | ||
| 252 | (defvar smerge-resolve-function | ||
| 253 | (lambda () (error "Don't know how to resolve")) | ||
| 254 | "Mode-specific merge function. | ||
| 255 | The function is called with no argument and with the match data set | ||
| 256 | according to `smerge-match-conflict'.") | ||
| 257 | |||
| 258 | (defun smerge-resolve () | ||
| 259 | "Resolve the conflict at point intelligently. | ||
| 260 | This relies on mode-specific knowledge and thus only works in | ||
| 261 | some major modes. Uses `smerge-resolve-function' to do the actual work." | ||
| 262 | (interactive) | ||
| 263 | (smerge-match-conflict) | ||
| 264 | (funcall smerge-resolve-function) | ||
| 265 | (smerge-auto-leave)) | ||
| 266 | |||
| 251 | (defun smerge-keep-base () | 267 | (defun smerge-keep-base () |
| 252 | "Revert to the base version." | 268 | "Revert to the base version." |
| 253 | (interactive) | 269 | (interactive) |
| @@ -317,7 +333,7 @@ An error is raised if not inside a conflict." | |||
| 317 | 333 | ||
| 318 | (start (match-beginning 0)) | 334 | (start (match-beginning 0)) |
| 319 | (mine-start (match-end 0)) | 335 | (mine-start (match-end 0)) |
| 320 | (filename (match-string 1)) | 336 | (filename (or (match-string 1) "")) |
| 321 | 337 | ||
| 322 | (_ (re-search-forward smerge-end-re)) | 338 | (_ (re-search-forward smerge-end-re)) |
| 323 | (_ (assert (< orig-point (match-end 0)))) | 339 | (_ (assert (< orig-point (match-end 0)))) |