unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#908: Displaying renamed files in vc-dir for bzr is incorrect
@ 2008-09-07 10:46 Dan Nicolaescu
  0 siblings, 0 replies; 3+ messages in thread
From: Dan Nicolaescu @ 2008-09-07 10:46 UTC (permalink / raw)
  To: bug-gnu-emacs


When using Bzr, renamed files for are shown like this in vc-dir:

           nil     OLD_NAME => NEW_NAME

where `nil' is supposed to be the VC state and `OLD_NAME => NEW_NAME' is
believed to be a file name...

The patch below fixes this.  Not sure if this is appropriate to check in
now given the feature freeze, as the patch needs to add a feature in
order to fix the bug.  So record the fix here so that it does not get
lost.

         * vc-bzr.el (vc-bzr-extra-fileinfo): New defstruct.
	(vc-bzr-status-printer): New function.
	(vc-bzr-after-dir-status): Deal with renamed files.

Index: vc-bzr.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/vc-bzr.el,v
retrieving revision 1.65
diff -u -3 -p -u -p -r1.65 vc-bzr.el
--- vc-bzr.el	10 Aug 2008 19:48:57 -0000	1.65
+++ vc-bzr.el	7 Sep 2008 10:36:07 -0000
@@ -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 @@ stream.  Standard error output is discar
     ;; 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 @@ stream.  Standard error output is discar
                        ;; 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,23 +618,31 @@ stream.  Standard error output is discar
 	(setq status-str
 	      (buffer-substring-no-properties (point) (+ (point) 3)))
 	(setq translated (cdr (assoc status-str translation)))
-	;; 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)
-	    (let* ((file
-		    (buffer-substring-no-properties
-		     ;;For files with conflicts the format is:
-		     ;;C   Text conflict in FILENAME
-		     ;; Bah.
-		     (+ (point) 21) (line-end-position)))
-		   (entry (assoc file result)))
-	      (when entry
-		(setf (nth 1 entry) 'conflict)))
+	(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.
+	  (let* ((file
+		  (buffer-substring-no-properties
+		   ;;For files with conflicts the format is:
+		   ;;C   Text conflict in FILENAME
+		   ;; Bah.
+		   (+ (point) 21) (line-end-position)))
+		 (entry (assoc file result)))
+	    (when entry
+	      (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)))
 








^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#908: Displaying renamed files in vc-dir for bzr is incorrect
@ 2008-09-07 14:22 Chong Yidong
  2008-09-07 17:30 ` Dan Nicolaescu
  0 siblings, 1 reply; 3+ messages in thread
From: Chong Yidong @ 2008-09-07 14:22 UTC (permalink / raw)
  To: Dan Nicolaescu; +Cc: 908

> When using Bzr, renamed files for are shown like this in vc-dir:
>
>            nil     OLD_NAME => NEW_NAME
>
> where `nil' is supposed to be the VC state and `OLD_NAME => NEW_NAME' is
> believed to be a file name...
>
> The patch below fixes this.  Not sure if this is appropriate to check in
> now given the feature freeze, as the patch needs to add a feature in
> order to fix the bug.  So record the fix here so that it does not get
> lost.

Please do check in your patch, since it fixes a bug.






^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#908: Displaying renamed files in vc-dir for bzr is incorrect
  2008-09-07 14:22 Chong Yidong
@ 2008-09-07 17:30 ` Dan Nicolaescu
  0 siblings, 0 replies; 3+ messages in thread
From: Dan Nicolaescu @ 2008-09-07 17:30 UTC (permalink / raw)
  To: Chong Yidong; +Cc: 908

Chong Yidong <cyd@stupidchicken.com> writes:

  > > When using Bzr, renamed files for are shown like this in vc-dir:
  > >
  > >            nil     OLD_NAME => NEW_NAME
  > >
  > > where `nil' is supposed to be the VC state and `OLD_NAME => NEW_NAME' is
  > > believed to be a file name...
  > >
  > > The patch below fixes this.  Not sure if this is appropriate to check in
  > > now given the feature freeze, as the patch needs to add a feature in
  > > order to fix the bug.  So record the fix here so that it does not get
  > > lost.
  > 
  > Please do check in your patch, since it fixes a bug.

Done.  Thanks!






^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2008-09-07 17:30 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-09-07 10:46 bug#908: Displaying renamed files in vc-dir for bzr is incorrect Dan Nicolaescu
  -- strict thread matches above, loose matches on Subject: below --
2008-09-07 14:22 Chong Yidong
2008-09-07 17:30 ` Dan Nicolaescu

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).