]> git.eshelyaron.com Git - emacs.git/commitdiff
Add heuristic to locate lisp code in source packages
authorPhilip Kaludercic <philipk@posteo.net>
Sun, 25 Dec 2022 10:18:51 +0000 (11:18 +0100)
committerPhilip Kaludercic <philipk@posteo.net>
Sun, 25 Dec 2022 10:21:01 +0000 (11:21 +0100)
* 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

index bf6c822a2b50d232bb813bc823fcadf2ea9a921c..549b6e95cdb1aedceced2d6ce6eaa3d8e96190c2 100644 (file)
@@ -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)))