[Top][All Lists]
[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)))
- [Emacs-diffs] Changes to emacs/lisp/vc-bzr.el,v,
Dan Nicolaescu <=