* 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 bug#908: Displaying renamed files in vc-dir for bzr is incorrect 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 14:22 bug#908: Displaying renamed files in vc-dir for bzr is incorrect Chong Yidong
2008-09-07 17:30 ` Dan Nicolaescu
-- strict thread matches above, loose matches on Subject: below --
2008-09-07 10:46 Dan Nicolaescu
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.