X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/6eabfb2600e07362acc22f6ffcdc35e1cc758eb0..a5c41f64a15a2c4f029f157f7dac6b2a87e27fbc:/lisp/smerge-mode.el diff --git a/lisp/smerge-mode.el b/lisp/smerge-mode.el index 1b7359d447..5ce9328048 100644 --- a/lisp/smerge-mode.el +++ b/lisp/smerge-mode.el @@ -1,10 +1,10 @@ ;;; smerge-mode.el --- Minor mode to resolve diff3 conflicts -;; Copyright (C) 1999, 2000 Free Software Foundation, Inc. +;; Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Keywords: merge diff3 cvs conflict -;; Revision: $Id: smerge-mode.el,v 1.8 2000/12/22 22:58:57 monnier Exp $ +;; Revision: $Id: smerge-mode.el,v 1.14 2001/07/31 08:28:43 gerd Exp $ ;; This file is part of GNU Emacs. @@ -160,7 +160,7 @@ Used in `smerge-diff-base-mine' and related functions." (defconst smerge-font-lock-keywords '((smerge-find-conflict - (1 smerge-mine-face prepend) + (1 smerge-mine-face prepend t) (2 smerge-base-face prepend t) (3 smerge-other-face prepend t) ;; FIXME: `keep' doesn't work right with syntactic fontification. @@ -181,8 +181,8 @@ Can be nil if the style is undecided, or else: - `diff3-A'") ;; Compiler pacifiers -(defvar font-lock-mode nil) -(defvar font-lock-keywords nil) +(defvar font-lock-mode) +(defvar font-lock-keywords) (eval-when-compile (unless (fboundp 'font-lock-fontify-region) (autoload 'font-lock-fontify-region "font-lock"))) @@ -332,7 +332,7 @@ An error is raised if not inside a conflict." (when base-start (1- base-start)) base-start (1- other-start) other-start)) t) - (error "Point not in conflict region")))) + (search-failed (error "Point not in conflict region"))))) (defun smerge-find-conflict (&optional limit) "Find and match a conflict region. Intended as a font-lock MATCHER. @@ -350,12 +350,18 @@ The point is moved to the end of the conflict." (smerge-ensure-match n2) (let ((name1 (aref smerge-match-names n1)) (name2 (aref smerge-match-names n2)) + ;; Read them before the match-data gets clobbered. + (beg1 (match-beginning n1)) + (end1 (match-end n1)) + (beg2 (match-beginning n2)) + (end2 (match-end n2)) (file1 (make-temp-file "smerge1")) (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) + (file (file-relative-name buffer-file-name)) + (coding-system-for-read buffer-file-coding-system)) + (write-region beg1 end1 file1) + (write-region beg2 end2 file2) (unwind-protect (with-current-buffer (get-buffer-create smerge-diff-buffer-name) (setq default-directory dir) @@ -465,7 +471,8 @@ The point is moved to the end of the conflict." "Minor mode to simplify editing output from the diff3 program. \\{smerge-mode-map}" nil " SMerge" nil - (when font-lock-mode + (when (and (boundp 'font-lock-mode) font-lock-mode) + (set (make-local-variable 'font-lock-multiline) t) (save-excursion (if smerge-mode (font-lock-add-keywords nil smerge-font-lock-keywords 'append) @@ -477,42 +484,4 @@ The point is moved to the end of the conflict." (provide 'smerge-mode) - -;;; Change Log: -;; $Log: smerge-mode.el,v $ -;; Revision 1.8 2000/12/22 22:58:57 monnier -;; (smerge-basic-map): Use `=' rather than `d'. -;; Use minibuffer menu prompt for the `=' prefix. -;; (smerge-command-prefix): Change default to C-^. -;; -;; Revision 1.7 2000/10/06 16:07:31 monnier -;; (smerge-diff): Setup the buffer's default-directory -;; and add filename to the names so that diff-mode can jump to source. -;; -;; 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. -;; Change the bindings for smerge-diff-*. -;; (smerge-*-map): Use easy-mmode-defmap. -;; (smerge-(next|prev)): Use easy-mmode-define-navigation. -;; (smerge-keep-*): Use smerge-auto-leave. -;; -;; Revision 1.1 1999/12/09 13:00:21 monnier -;; New file. Provides a simple minor-mode for files containing -;; diff3-style conflict markers, such as generated by RCS -;; - ;;; smerge-mode.el ends here