aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2002-10-10 17:30:20 +0000
committerStefan Monnier2002-10-10 17:30:20 +0000
commita48402c999f3600e8a6ba63c6fa246e223db138c (patch)
tree9fa5b397d33f4c6c9aa61a49511eb5023246b8d7
parent7884cd32d0eace418d11f5b478f5dda2bd04be99 (diff)
downloademacs-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.el20
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.
255The function is called with no argument and with the match data set
256according to `smerge-match-conflict'.")
257
258(defun smerge-resolve ()
259 "Resolve the conflict at point intelligently.
260This relies on mode-specific knowledge and thus only works in
261some 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))))