mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-27 07:37:33 +00:00
(vc-bzr-extra-fileinfo): New defstruct.
(vc-bzr-status-printer): New function. (vc-bzr-after-dir-status): Deal with renamed files.
This commit is contained in:
parent
bed27b2468
commit
a0c38937bb
@ -1,3 +1,9 @@
|
||||
2008-09-07 Dan Nicolaescu <dann@ics.uci.edu>
|
||||
|
||||
* vc-bzr.el (vc-bzr-extra-fileinfo): New defstruct.
|
||||
(vc-bzr-status-printer): New function.
|
||||
(vc-bzr-after-dir-status): Deal with renamed files.
|
||||
|
||||
2008-09-07 Johan Euphrosine <proppy@aminche.com> (tiny change)
|
||||
|
||||
* ibuf-ext.el (ibuffer-diff-buffer-with-file-1): Shell quote
|
||||
|
@ -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 discarded."
|
||||
;; 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 discarded."
|
||||
;; 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 discarded."
|
||||
(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)))
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user