aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilip Kaludercic2022-10-16 17:18:06 +0200
committerPhilip Kaludercic2022-10-16 17:18:06 +0200
commitb4e833b2f8fa6962b66eddff420b366b07c48cf0 (patch)
tree832b96b9dbfaf579c765be06e958fe9e08462b97
parent5134eb02cf5cda16455e1b59b29ec82d491b115e (diff)
downloademacs-b4e833b2f8fa6962b66eddff420b366b07c48cf0.tar.gz
emacs-b4e833b2f8fa6962b66eddff420b366b07c48cf0.zip
Attempt to infer the package subject if missing
* lisp/emacs-lisp/package-vc.el (package-vc-main-file): Add function. (package-vc-generate-description-file): Infer the subject.
-rw-r--r--lisp/emacs-lisp/package-vc.el24
1 files changed, 23 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/package-vc.el b/lisp/emacs-lisp/package-vc.el
index dfa8094e614..e146d89171a 100644
--- a/lisp/emacs-lisp/package-vc.el
+++ b/lisp/emacs-lisp/package-vc.el
@@ -120,10 +120,32 @@
120 return it 120 return it
121 finally return "0")) 121 finally return "0"))
122 122
123(defun package-vc-main-file (pkg-desc)
124 "Return the main file of the package PKG-DESC.
125If no file can be found that appends \".el\" to the end of the
126package name, the file with the closest file name is chosen."
127 (let* ((default-directory (package-desc-dir pkg-desc))
128 (best (format "%s.el" (package-desc-name pkg-desc)))
129 (distance most-positive-fixnum) next-best)
130 (if (file-exists-p best)
131 (expand-file-name best)
132 (dolist (file (directory-files default-directory nil "\\.el\\'"))
133 (let ((distance* (string-distance best file)))
134 (when (< distance* distance)
135 (setq distance distance* next-best file))))
136 next-best)))
137
123(defun package-vc-generate-description-file (pkg-desc pkg-file) 138(defun package-vc-generate-description-file (pkg-desc pkg-file)
124 "Generate a package description file for PKG-DESC. 139 "Generate a package description file for PKG-DESC.
125The output is written out into PKG-FILE." 140The output is written out into PKG-FILE."
126 (let* ((name (package-desc-name pkg-desc))) 141 (let ((name (package-desc-name pkg-desc)))
142 ;; Infer the subject if missing.
143 (unless (package-desc-summary pkg-desc)
144 (setf (package-desc-summary pkg-desc)
145 (or (and-let* ((pkg (cadr (assq name package-archive-contents))))
146 (package-desc-summary pkg))
147 (lm-summary (package-vc-main-file pkg-desc))
148 package--default-summary)))
127 (let ((print-level nil) 149 (let ((print-level nil)
128 (print-quoted t) 150 (print-quoted t)
129 (print-length nil)) 151 (print-length nil))