# HG changeset patch # User Dan Nicolaescu # Date 1200296285 0 # Node ID c2a952d12e216c5ae01b3371ebfc76c494971f09 # Parent 25f1614da5853dc50db99dad92a368f2a6fd7741 * smerge-mode.el (smerge-auto): New function. * vc-svn.el (vc-svn-find-file-hook): * vc-arch.el (vc-arch-find-file-hook): * pcvs.el (cvs-revert-if-needed): * vc.el (vc-maybe-resolve-conflicts): Use it instead of vc-mode. (top-level): Add a Todo list. diff -r 25f1614da585 -r c2a952d12e21 lisp/ChangeLog --- a/lisp/ChangeLog Sun Jan 13 22:10:51 2008 +0000 +++ b/lisp/ChangeLog Mon Jan 14 07:38:05 2008 +0000 @@ -1,3 +1,12 @@ +2008-01-14 Dan Nicolaescu + + * smerge-mode.el (smerge-auto): New function. + * vc-svn.el (vc-svn-find-file-hook): + * vc-arch.el (vc-arch-find-file-hook): + * pcvs.el (cvs-revert-if-needed): + * vc.el (vc-maybe-resolve-conflicts): Use it instead of vc-mode. + (top-level): Add a Todo list. + 2008-01-13 Dan Nicolaescu * vc.el (vc-update): Resolve conflicts if necessary instead of diff -r 25f1614da585 -r c2a952d12e21 lisp/pcvs.el --- a/lisp/pcvs.el Sun Jan 13 22:10:51 2008 +0000 +++ b/lisp/pcvs.el Mon Jan 14 07:38:05 2008 +0000 @@ -2311,7 +2311,7 @@ ;; do want to reset the mode for VC, so we do it explicitly. (vc-find-file-hook) (when (eq (cvs-fileinfo->type fileinfo) 'CONFLICT) - (smerge-mode 1)))))))) + (smerge-auto)))))))) (defun cvs-change-cvsroot (newroot) diff -r 25f1614da585 -r c2a952d12e21 lisp/smerge-mode.el --- a/lisp/smerge-mode.el Sun Jan 13 22:10:51 2008 +0000 +++ b/lisp/smerge-mode.el Mon Jan 14 07:38:05 2008 +0000 @@ -1021,6 +1021,14 @@ (unless smerge-mode (smerge-remove-props (point-min) (point-max)))) +;;;###autoload +(defun smerge-auto () + "Turn on `smerge-mode' and move point to first conflict marker. +If no conflict maker is found, turn off `smerge-mode'." + (smerge-mode 1) + (condition-case nil + (smerge-next) + (error (smerge-auto-leave)))) (provide 'smerge-mode) diff -r 25f1614da585 -r c2a952d12e21 lisp/vc-arch.el --- a/lisp/vc-arch.el Sun Jan 13 22:10:51 2008 +0000 +++ b/lisp/vc-arch.el Mon Jan 14 07:38:05 2008 +0000 @@ -360,7 +360,7 @@ (if (not (re-search-forward "^<<<<<<< " nil t)) ;; The .rej file is obsolete. (condition-case nil (delete-file rej) (error nil)) - (smerge-mode 1) + (smerge-auto) (add-hook 'after-save-hook 'vc-arch-delete-rej-if-obsolete nil t) (message "There are unresolved conflicts in this file"))) diff -r 25f1614da585 -r c2a952d12e21 lisp/vc-svn.el --- a/lisp/vc-svn.el Sun Jan 13 22:10:51 2008 +0000 +++ b/lisp/vc-svn.el Mon Jan 14 07:38:05 2008 +0000 @@ -551,7 +551,7 @@ (re-search-forward "^<<<<<<< " nil t)) ;; There are conflict markers. (progn - (smerge-mode 1) + (smerge-auto) (add-hook 'after-save-hook 'vc-svn-resolve-when-done nil t)) ;; There are no conflict markers. This is problematic: maybe it means ;; the conflict has been resolved and we should immediately call "svn diff -r 25f1614da585 -r c2a952d12e21 lisp/vc.el --- a/lisp/vc.el Sun Jan 13 22:10:51 2008 +0000 +++ b/lisp/vc.el Mon Jan 14 07:38:05 2008 +0000 @@ -7,8 +7,6 @@ ;; Maintainer: Andre Spiegel ;; Keywords: tools -;; $Id$ - ;; This file is part of GNU Emacs. ;; GNU Emacs is free software; you can redistribute it and/or modify @@ -522,6 +520,31 @@ ;; to your backend and which does not map to any of the VC generic ;; concepts. +;;; Todo: + +;; - Make vc-checkin avoid reverting the buffer if has not changed +;; after the checkin. Comparing (md5 BUFFER) to (md5 FILE) should +;; be enough. +;; +;; - vc-update/vc-merge should deal with VC systems that don't +;; update/merge on a file basis, but on a whole repository basis. +;; +;; - vc-register should register multiple files at a time. The +;; `register' backend function already supports that. +;; +;; - the *VC-log* buffer needs font-locking. +;; +;; - make it easier to write logs, maybe C-x 4 a should add to the log +;; buffer if there's one instead of the ChangeLog. +;; +;; - deal with push/pull operations. +;; +;; - decide if vc-status should replace vc-dired. +;; +;; - vc-status should be made asynchronous. +;; +;; - vc-status needs a menu, mouse bindings and some color bling. + ;;; Code: (require 'vc-hooks) @@ -2222,7 +2245,7 @@ (defun vc-maybe-resolve-conflicts (file status &optional name-A name-B) (vc-resynch-buffer file t (not (buffer-modified-p))) (if (zerop status) (message "Merge successful") - (smerge-mode 1) + (smerge-auto) (message "File contains conflicts."))) ;;;###autoload