branch: elpa/vc-fossil commit 1319569a50f8da5dfb3257ab6a8cad39621a3caf Author: fifr <fifr> Commit: fifr <fifr>
Show unregistered files in dir stat. The directory status should list untracked files. This is implemented by a call to "fossil extras". Also implements `vc-fossil-dir-status-files`. --- vc/el/vc-fossil.el | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/vc/el/vc-fossil.el b/vc/el/vc-fossil.el index f53d5e6..db27336 100644 --- a/vc/el/vc-fossil.el +++ b/vc/el/vc-fossil.el @@ -123,24 +123,37 @@ (defun vc-fossil-dir-status (dir update-function) - "Get Fossil status for all files in a directory" - (insert (vc-fossil--run "update" "-n" "-v" "current" dir)) + "Get fossil status for all files in a directory" + (vc-fossil-dir-status-files dir nil nil update-function)) + +(defun vc-fossil-dir-status-files (dir files default-state update-function) + "Get fossil status for all specified files in a directory. +If `files` is nil return the status for all files." + (insert (apply 'vc-fossil--run "update" "-n" "-v" "current" + (or files (list dir)))) (let ((result '()) (root (vc-fossil-root dir))) (goto-char (point-min)) (while (not (eobp)) - (let* ((line (buffer-substring-no-properties - (point) - (progn - (forward-line) - (point)))) + (let* ((line (buffer-substring-no-properties (point) (line-end-position))) (status-word (car (split-string line)))) (if (string-match "-----" status-word) (goto-char (point-max)) (let ((file (substring line (+ (length status-word) 1)))) (setq file (expand-file-name file root)) (setq file (file-relative-name file dir)) - (push (list file (vc-fossil-state-code status-word)) result))))) + (push (list file (vc-fossil-state-code status-word)) result))) + (forward-line))) + ;; now collect untracked files + (delete-region (point-min) (point-max)) + (insert (apply 'vc-fossil--run "extras" "--dotfiles" (or files (list dir)))) + (goto-char (point-min)) + (while (not (eobp)) + (let ((file (buffer-substring-no-properties (point) (line-end-position)))) + (setq file (expand-file-name file dir)) + (setq file (file-relative-name file dir)) + (push (list file (vc-fossil-state-code nil)) result) + (forward-line))) (funcall update-function result nil))) (defun vc-fossil-checkout-model (files) 'implicit)