[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
emacs-29 9ab98cd42a 1/2: Add heuristic to locate lisp code in source pac
From: |
Philip Kaludercic |
Subject: |
emacs-29 9ab98cd42a 1/2: Add heuristic to locate lisp code in source packages |
Date: |
Sun, 25 Dec 2022 05:21:13 -0500 (EST) |
branch: emacs-29
commit 9ab98cd42aa7ee7f23f05138beee1f69e7ce5fcc
Author: Philip Kaludercic <philipk@posteo.net>
Commit: Philip Kaludercic <philipk@posteo.net>
Add heuristic to locate lisp code in source packages
* lisp/emacs-lisp/package-vc.el (package-vc--unpack): Check if a
"lisp" directory exists and use that instead of PKG-DIR.
(Bug#60155)
---
lisp/emacs-lisp/package-vc.el | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/lisp/emacs-lisp/package-vc.el b/lisp/emacs-lisp/package-vc.el
index bf6c822a2b..549b6e95cd 100644
--- a/lisp/emacs-lisp/package-vc.el
+++ b/lisp/emacs-lisp/package-vc.el
@@ -609,6 +609,20 @@ checkout. This overrides the `:branch' attribute in
PKG-SPEC."
(error "There already exists a checkout for %s" name)))
(package-vc--clone pkg-desc pkg-spec pkg-dir rev)
+ ;; When nothing is specified about a `lisp-dir', then should
+ ;; heuristically check if there is a sub-directory with lisp
+ ;; files. These are conventionally just called "lisp". If this
+ ;; directory exists and contains non-zero number of lisp files, we
+ ;; will use that instead of `pkg-dir'.
+ (when-let* (((null lisp-dir))
+ (dir (expand-file-name "lisp" pkg-dir))
+ ((file-directory-p dir))
+ ((directory-files dir nil "\\`[^.].+\\.el\\'" t 1)))
+ ;; We won't use `dir', since dir is an absolute path and we
+ ;; don't want `lisp-dir' to depend on the current location of
+ ;; the package installation, ie. to break if moved around the
+ ;; file system or between installations.
+ (setq lisp-dir "lisp"))
(when lisp-dir
(push (cons :lisp-dir lisp-dir)
(package-desc-extras pkg-desc)))