1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-01 08:17:38 +00:00

* lisp/vc/vc-bzr.el (vc-bzr-after-dir-status): Handle bzr 2.3.0. (Bug#8170)

This commit is contained in:
Glenn Morris 2011-03-04 09:24:02 -08:00
parent 38c179c925
commit 85a55d3871
2 changed files with 38 additions and 32 deletions

View File

@ -1,3 +1,7 @@
2011-03-04 Glenn Morris <rgm@gnu.org>
* vc/vc-bzr.el (vc-bzr-after-dir-status): Handle bzr 2.3.0. (Bug#8170)
2011-03-04 Tom Tromey <tromey@redhat.com>
* progmodes/gud.el (gdb-script-mode): Derive from prog-mode.

View File

@ -879,38 +879,40 @@ stream. Standard error output is discarded."
(result nil))
(goto-char (point-min))
(while (not (eobp))
(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.
(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[ M] \\(.*\\) => \\(.*\\)$" (line-end-position) t)
(let ((new-name (file-relative-name (match-string 2) relative-dir))
(old-name (file-relative-name (match-string 1) relative-dir)))
(push (list new-name 'edited
(vc-bzr-create-extra-fileinfo old-name)) result)))
;; do nothing for non existent files
((eq translated 'not-found))
(t
(push (list (file-relative-name
(buffer-substring-no-properties
(+ (point) 4)
(line-end-position)) relative-dir)
translated) result)))
(forward-line))
;; Bzr 2.3.0 added this if there are shelves. (Bug#8170)
(unless (looking-at "[1-9]+ shel\\(f\\|ves\\) exists?\\.")
(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.
(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[ M] \\(.*\\) => \\(.*\\)$" (line-end-position) t)
(let ((new-name (file-relative-name (match-string 2) relative-dir))
(old-name (file-relative-name (match-string 1) relative-dir)))
(push (list new-name 'edited
(vc-bzr-create-extra-fileinfo old-name)) result)))
;; do nothing for non existent files
((eq translated 'not-found))
(t
(push (list (file-relative-name
(buffer-substring-no-properties
(+ (point) 4)
(line-end-position)) relative-dir)
translated) result))))
(forward-line))
(funcall update-function result)))
(defun vc-bzr-dir-status (dir update-function)