*** empty log message ***
[bpt/emacs.git] / lisp / smerge-mode.el
index 8349c98..9805286 100644 (file)
@@ -1,10 +1,10 @@
 ;;; smerge-mode.el --- Minor mode to resolve diff3 conflicts
 
-;; Copyright (C) 1999  Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2000  Free Software Foundation, Inc.
 
 ;; Author: Stefan Monnier <monnier@cs.yale.edu>
 ;; Keywords: merge diff3 cvs conflict
-;; Revision: $Id: smerge-mode.el,v 1.2 2000/03/22 00:54:55 monnier Exp $
+;; Revision: $Id: smerge-mode.el,v 1.6 2000/10/05 06:05:51 miles Exp $
 
 ;; This file is part of GNU Emacs.
 
@@ -77,25 +77,37 @@ Used in `smerge-diff-base-mine' and related functions."
   :type 'boolean)
 
 (defface smerge-mine-face
-  '((t (:foreground "blue")))
+  '((((background light))
+     (:foreground "blue"))
+    (((background dark))
+     (:foreground "cyan")))
   "Face for your code."
   :group 'smerge)
 (defvar smerge-mine-face 'smerge-mine-face)
 
 (defface smerge-other-face
-  '((t (:foreground "darkgreen")))
+  '((((background light))
+     (:foreground "darkgreen"))
+    (((background dark))
+     (:foreground "lightgreen")))
   "Face for the other code."
   :group 'smerge)
 (defvar smerge-other-face 'smerge-other-face)
 
 (defface smerge-base-face
-  '((t (:foreground "red")))
+  '((((background light))
+     (:foreground "red"))
+    (((background dark))
+     (:foreground "orange")))
   "Face for the base code."
   :group 'smerge)
 (defvar smerge-base-face 'smerge-base-face)
 
 (defface smerge-markers-face
-  '((t (:background "grey85")))
+  '((((background light))
+     (:background "grey85"))
+    (((background dark))
+     (:background "grey30")))
   "Face for the conflict markers."
   :group 'smerge)
 (defvar smerge-markers-face 'smerge-markers-face)
@@ -126,7 +138,23 @@ Used in `smerge-diff-base-mine' and related functions."
 (easy-menu-define smerge-mode-menu smerge-mode-map
   "Menu for `smerge-mode'."
   '("SMerge"
-    ["Invoke Ediff"            smerge-ediff            t]
+    ["Next" smerge-next :help "Go to next conflict"]
+    ["Previous" smerge-prev :help "Go to previous conflict"]
+    ["Keep All" smerge-keep-all :help "Keep all three versions"]
+    ["Revert to Base" smerge-keep-base :help "Revert to base version"]
+    ["Keep Other" smerge-keep-other :help "Keep `other' version"]
+    ["Keep Yours" smerge-keep-mine :help "Keep your version"]
+    ["Keep Current" smerge-keep-current :help "Use current (at point) version"]
+    "--"
+    ["Diff Base/Mine" smerge-diff-base-mine
+     :help "Diff `base' and `mine' for current conflict"]
+    ["Diff Base/Other" smerge-diff-base-other
+     :help "Diff `base' and `other' for current conflict"]
+    ["Diff Mine/Other" smerge-diff-mine-other
+     :help "Diff `mine' and `other' for current conflict"]
+    "--"
+    ["Invoke Ediff" smerge-ediff
+     :help "Use Ediff to resolve the conflicts"]
     ))
 
 (defconst smerge-font-lock-keywords
@@ -321,16 +349,21 @@ The point is moved to the end of the conflict."
   (let ((name1 (aref smerge-match-names n1))
        (name2 (aref smerge-match-names n2))
        (file1 (make-temp-file "smerge1"))
-       (file2 (make-temp-file "smerge2")))
+       (file2 (make-temp-file "smerge2"))
+       (dir default-directory)
+       (file (file-relative-name buffer-file-name)))
     (write-region (match-beginning n1) (match-end n1) file1)
     (write-region (match-beginning n2) (match-end n2) file2)
     (unwind-protect
        (with-current-buffer (get-buffer-create smerge-diff-buffer-name)
+         (setq default-directory dir)
          (let ((inhibit-read-only t))
            (erase-buffer)
            (apply 'call-process diff-command nil t nil
                   (append smerge-diff-switches
-                          (list "-L" name1 "-L" name2 file1 file2))))
+                          (list "-L" (concat name1 "/" file)
+                                "-L" (concat name2 "/" file)
+                                file1 file2))))
          (goto-char (point-min))
          (diff-mode)
          (display-buffer (current-buffer) t))
@@ -444,6 +477,19 @@ The point is moved to the end of the conflict."
 
 ;;; Change Log:
 ;; $Log: smerge-mode.el,v $
+;; Revision 1.6  2000/10/05 06:05:51  miles
+;; (smerge-mine-face, smerge-other-face, smerge-base-face, smerge-markers-face):
+;;   Add dark-background variants.
+;;
+;; Revision 1.5  2000/08/16 19:51:55  monnier
+;; (smerge-mode-menu): Doc fix.
+;;
+;; Revision 1.4  2000/07/21 13:52:19  fx
+;; (smerge-mode-menu): Fill it out.
+;;
+;; Revision 1.3  2000/05/25 18:08:26  fx
+;; (smerge-diff-switches): Don't use list* in defcustom.
+;;
 ;; Revision 1.2  2000/03/22 00:54:55  monnier
 ;; (smerge-auto-leave): New function and variable.
 ;; (smerge-basic-map): Rename from smerge-basic-keymap.