emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/vc-bzr.el,v


From: Dan Nicolaescu
Subject: [Emacs-diffs] Changes to emacs/lisp/vc-bzr.el,v
Date: Sun, 07 Sep 2008 17:25:00 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     Dan Nicolaescu <dann>   08/09/07 17:24:59

Index: vc-bzr.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/vc-bzr.el,v
retrieving revision 1.65
retrieving revision 1.66
diff -u -b -r1.65 -r1.66
--- vc-bzr.el   10 Aug 2008 19:48:57 -0000      1.65
+++ vc-bzr.el   7 Sep 2008 17:24:59 -0000       1.66
@@ -52,7 +52,8 @@
 
 (eval-when-compile
   (require 'cl)
-  (require 'vc))                        ; for vc-exec-after
+  (require 'vc)  ;; for vc-exec-after
+  (require 'vc-dir))
 
 ;; Clear up the cache to force vc-call to check again and discover
 ;; new functions when we reload this file.
@@ -576,6 +577,22 @@
     ;; else fall back to default vc.el representation
     (vc-default-prettify-state-info 'Bzr file)))
 
+(defstruct (vc-bzr-extra-fileinfo
+            (:copier nil)
+            (:constructor vc-bzr-create-extra-fileinfo (extra-name))
+            (:conc-name vc-bzr-extra-fileinfo->))
+  extra-name)         ;; original name for rename targets, new name for
+
+(defun vc-bzr-status-printer (info)
+  "Pretty-printer for the vc-dir-fileinfo structure."
+  (let ((extra (vc-dir-fileinfo->extra info)))
+    (vc-default-status-printer 'Bzr info)
+    (when extra
+      (insert (propertize
+              (format "   (renamed from %s)"
+                      (vc-bzr-extra-fileinfo->extra-name extra))
+              'face 'font-lock-comment-face)))))
+
 ;; FIXME: this needs testing, it's probably incomplete.
 (defun vc-bzr-after-dir-status (update-function)
   (let ((status-str nil)
@@ -589,6 +606,9 @@
                        ;; For conflicts, should we list the .THIS/.BASE/.OTHER?
                       ("C  " . conflict)
                       ("?  " . unregistered)
+                      ("?  " . unregistered)
+                      ;; No such state, but we need to distinguish this case.
+                      ("R  " . renamed)
                        ;; Ignore "P " and "P." for pending patches.
                        ))
        (translated nil)
@@ -598,10 +618,11 @@
        (setq status-str
              (buffer-substring-no-properties (point) (+ (point) 3)))
        (setq translated (cdr (assoc status-str translation)))
+       (cond
+        ((eq translated 'conflict)
        ;; For conflicts the file appears twice in the listing: once
-       ;; with the M flag and once with the C flag, so take care not
-       ;; to add it twice to `result'.  Ugly.
-       (if (eq translated 'conflict)
+         ;; with the M flag and once with the C flag, so take care
+         ;; not to add it twice to `result'.  Ugly.
            (let* ((file
                    (buffer-substring-no-properties
                     ;;For files with conflicts the format is:
@@ -610,11 +631,18 @@
                     (+ (point) 21) (line-end-position)))
                   (entry (assoc file result)))
              (when entry
-               (setf (nth 1 entry) 'conflict)))
+             (setf (nth 1 entry) 'conflict))))
+        ((eq translated 'renamed)
+         (re-search-forward "R   \\(.*\\) => \\(.*\\)$" (line-end-position) t)
+         (let ((new-name (match-string 2))
+               (old-name (match-string 1)))
+           (push (list new-name 'edited
+                     (vc-bzr-create-extra-fileinfo old-name)) result)))
+        (t
          (push (list (buffer-substring-no-properties
                       (+ (point) 4)
                       (line-end-position))
-                     translated) result))
+                     translated) result)))
        (forward-line))
       (funcall update-function result)))
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]