]> git.eshelyaron.com Git - emacs.git/commitdiff
Add option to register packages as projects
authorPhilip Kaludercic <philip.kaludercic@fau.de>
Tue, 14 Mar 2023 10:50:31 +0000 (11:50 +0100)
committerPhilip Kaludercic <philipk@posteo.net>
Sun, 26 Mar 2023 22:05:59 +0000 (00:05 +0200)
* lisp/emacs-lisp/package-vc.el (package-vc-register-as-project): Add
new option.
(project-remember-projects-under): Declare function for usage in
'package-vc--clone'.
(package-vc--clone): Respect 'package-vc-register-as-project'.
* etc/NEWS: Document the feature.

etc/NEWS
lisp/emacs-lisp/package-vc.el

index 6c558553c58ef9900ee416cb7ce90d47329293a3..9e45b1d80b2798e6c8900594eb411f9307383ba6 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -245,6 +245,14 @@ following to your init file:
     (add-hook 'help-fns-describe-function-functions
               #'shortdoc-help-fns-examples-function)
 
+** Package
+
+---
+*** New user option 'package-vc-register-as-project'.
+When non-nil, it will automatically register every package as a
+project, that you can quickly select using 'project-switch-project'
+('C-x p p').
+
 \f
 * New Modes and Packages in Emacs 30.1
 
index 253b35f1f1a2c70dc8dc84125779a370d6d0a2a5..ba3a75851cae27225526921adcf8bcb32e7af992 100644 (file)
@@ -115,6 +115,11 @@ the `clone' function."
                            vc-handled-backends))
   :version "29.1")
 
+(defcustom package-vc-register-as-project t
+  "Non-nil means that packages should be registered as projects."
+  :type 'boolean
+  :version "30.1")
+
 (defvar package-vc-selected-packages) ; pacify byte-compiler
 
 ;;;###autoload
@@ -559,6 +564,8 @@ and return nil if it cannot reasonably guess."
   (and url (alist-get url package-vc-heuristic-alist
                       nil nil #'string-match-p)))
 
+(declare-function project-remember-projects-under "project" (dir &optional recursive))
+
 (defun package-vc--clone (pkg-desc pkg-spec dir rev)
   "Clone the package PKG-DESC whose spec is PKG-SPEC into the directory DIR.
 REV specifies a specific revision to checkout.  This overrides the `:branch'
@@ -580,6 +587,11 @@ attribute in PKG-SPEC."
                           (or (and (not (eq rev :last-release)) rev) branch))
           (error "Failed to clone %s from %s" name url))))
 
+    (when package-vc-register-as-project
+      (let ((default-directory dir))
+        (require 'project)
+        (project-remember-projects-under dir)))
+
     ;; Check out the latest release if requested
     (when (eq rev :last-release)
       (if-let ((release-rev (package-vc--release-rev pkg-desc)))