commit a2474a45dd5b17500561db24bec5680ec7224737 from: Omar Polo date: Sat Jan 02 13:09:36 2021 UTC improve vc-got-dir-status-files show also missing/deleted files in vc-dir. This isn't perfect yet, because adding a temporary file and removing it will confuse the vc-dir buffer. commit - a5c1731345b9dea42a145200889c8425ce59caaa commit + a2474a45dd5b17500561db24bec5680ec7224737 blob - 0aa37dff5bf2cea6c81f38bc366f8fb112d66990 blob + bbbf7a1a5bfb1694edd73ffbb5c7c878b5b9d31d --- vc-got.el +++ vc-got.el @@ -372,27 +372,21 @@ DIR-OR-FILE." ;; (vc-got-state "/usr/ports/mystuff/non-existant") (defun vc-got-dir-status-files (dir files update-function) - (let* ((files (seq-filter (lambda (file) - (and (not (string= file "..")) - (not (string= file ".")) - (not (string= file ".got")))) - (or files - (directory-files dir)))) - (statuses (vc-got--parse-status - (apply #'vc-got--status dir files))) - (default-directory dir)) - (cl-loop - with result = nil - for file in files - do (setq result - (cons - (if (file-directory-p file) - (list file 'unregistered nil) - (if-let (status (cdr (assoc file statuses #'string=))) - (list file status nil) - (list file 'up-to-date nil))) - result)) - finally (funcall update-function result nil)))) + (let ((fs (seq-filter (lambda (file) + (and (not (string= file "..")) + (not (string= file ".")) + (not (string= file ".got")))) + (or files + (directory-files dir))))) + (cl-loop with result = (mapcar (lambda (x) + (list (car x) (cdr x) nil)) + (vc-got--parse-status + (apply #'vc-got--status dir files))) + for file in fs + do (unless (cadr (assoc file result #'string=)) + (cl-pushnew (list file 'up-to-date nil) + result)) + finally (funcall update-function result nil)))) ;; (let ((dir "/usr/ports/mystuff")) ;; (vc-got-dir-status-files dir nil (lambda (res _t)