branch: elpa/vc-fossil
commit 34b0ed94e08fa76d82f63e22dd4c2a231dfe8abc
Merge: d03f490 2fd4bf0
Author: pdo <pdo>
Commit: pdo <pdo>
Merged.
---
vc/el/vc-fossil.el | 19 ++++++++++++++-----
1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/vc/el/vc-fossil.el b/vc/el/vc-fossil.el
index 7c92165..60e1231 100644
--- a/vc/el/vc-fossil.el
+++ b/vc/el/vc-fossil.el
@@ -216,9 +216,22 @@ Allow user to edit command in minibuffer if PROMPT is
non-nil."
"Get fossil status for all files in a directory"
(vc-fossil--dir-status-files dir nil update-function))
+(defvar vc-fossil--file-classifications nil
+ "An alist of (filename . classification) pairs.")
+
+(defun vc-fossil--classify-all-files (dir)
+ (setq vc-fossil--file-classifications nil)
+ (let* ((default-directory dir)
+ (lines (split-string (vc-fossil--run "changes" "--classify" "--all")
"[\n\r]+" t)))
+ (dolist (line lines)
+ (string-match "^\\(\\w+\\)\\s-+\\(.+\\)$" line)
+ (let ((pair (cons (match-string 2 line) (match-string 1 line))))
+ (push pair vc-fossil--file-classifications)))))
+
(defun vc-fossil--dir-status-files (dir files update-function)
"Get fossil status for all specified files in a directory.
If `files` is nil return the status for all files."
+ (vc-fossil--classify-all-files dir)
(insert (apply 'vc-fossil--run "update" "-n" "-v" "current"
(or files (list dir))))
(let ((result '())
@@ -235,9 +248,7 @@ If `files` is nil return the status for all files."
(setq file (file-relative-name file dir))
;; if 'fossil update' says file is UNCHANGED check to see if it
has been RENAMED
(when (or (not state) (eql state 'up-to-date))
- (let ((line (vc-fossil--run "changes" "--classify" "--unchanged"
"--renamed"
- (file-truename file))))
- (setq state (and line (vc-fossil-state-code (car (split-string
line)))))))
+ (setq state (vc-fossil-state-code (cdr (assoc file
vc-fossil--file-classifications)))))
(push (list file state) result)))
(forward-line)))
;; now collect untracked files
@@ -264,8 +275,6 @@ If `files` is nil return the status for all files."
(concat (propertize name 'face 'font-lock-type-face)
(propertize value 'face 'font-lock-variable-name-face)))
-(defun vc-fossil-checkout-model (files) 'implicit)
-
(defun vc-fossil-dir-extra-headers (dir)
(let ((info (vc-fossil--run "info"))
(settings (vc-fossil--run "settings"))