GNU bug report logs -
#41821
28.0.50; read-directory-name in vc commands should provide defaults from projects
Previous Next
Reported by: Juri Linkov <juri <at> linkov.net>
Date: Thu, 11 Jun 2020 23:39:02 UTC
Severity: wishlist
Tags: fixed
Fixed in version 28.0.50
Done: Juri Linkov <juri <at> linkov.net>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
On 19.06.2020 02:28, Juri Linkov wrote:
> Maybe something like:
Not too bad.
Though I'd rather not extend the public contract of project.el with a
function that special-cases VC projects.
So maybe something like this instead:
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index 9b12d44978..19a4c7f60d 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -2508,6 +2508,19 @@ vc-print-log
)
(vc-print-log-internal backend files working-revision nil limit)))
+;; Or use project-try-vc after all. But this should be faster in the
+;; event when there actually are non-VC based projects in the list.
+(defun vc--known-vc-roots ()
+ (require 'project)
+ (defvar project--list)
+ (project--ensure-read-project-list)
+ (seq-filter (lambda (dir)
+ (let ((backend (vc-responsible-backend dir)))
+ (if backend
+ (condition-case nil
+ (vc-call-backend backend 'root dir)
+ (vc-not-supported
+ nil)))))
+ (mapcar #'car project--list)))
+
;;;###autoload
(defun vc-print-root-log (&optional limit revision)
"List the revision history for the current VC controlled tree in a
window.
@@ -2547,7 +2560,9 @@ vc-print-root-log
rootdir)
(if backend
(setq rootdir (vc-call-backend backend 'root default-directory))
- (setq rootdir (read-directory-name "Directory for VC revision
log: "))
+ (setq rootdir (read-directory-name "Directory for VC revision log: "
+ nil
+ (vc--known-vc-roots)))
(setq backend (vc-responsible-backend rootdir))
(unless backend
(error "Directory is not version controlled")))
Personally, though, when I want behavior like this, I would probably
just type 'C-x p v'.
The directory name reading with completion performed by
project-prompt-project-dir is more quick and handy (though I'll confess
to using Ivy as the completion UI for this and one other function;
vertical completion fits these long string values best).
It also puts the selected project on the top of the list, which
vc--known-vc-roots (or your function) don't do.
This bug report was last modified 4 years and 319 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.