From b4e833b2f8fa6962b66eddff420b366b07c48cf0 Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Sun, 16 Oct 2022 17:18:06 +0200 Subject: [PATCH] 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. --- lisp/emacs-lisp/package-vc.el | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) 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 @@ return it finally return "0")) +(defun package-vc-main-file (pkg-desc) + "Return the main file of the package PKG-DESC. +If no file can be found that appends \".el\" to the end of the +package name, the file with the closest file name is chosen." + (let* ((default-directory (package-desc-dir pkg-desc)) + (best (format "%s.el" (package-desc-name pkg-desc))) + (distance most-positive-fixnum) next-best) + (if (file-exists-p best) + (expand-file-name best) + (dolist (file (directory-files default-directory nil "\\.el\\'")) + (let ((distance* (string-distance best file))) + (when (< distance* distance) + (setq distance distance* next-best file)))) + next-best))) + (defun package-vc-generate-description-file (pkg-desc pkg-file) "Generate a package description file for PKG-DESC. The output is written out into PKG-FILE." - (let* ((name (package-desc-name pkg-desc))) + (let ((name (package-desc-name pkg-desc))) + ;; Infer the subject if missing. + (unless (package-desc-summary pkg-desc) + (setf (package-desc-summary pkg-desc) + (or (and-let* ((pkg (cadr (assq name package-archive-contents)))) + (package-desc-summary pkg)) + (lm-summary (package-vc-main-file pkg-desc)) + package--default-summary))) (let ((print-level nil) (print-quoted t) (print-length nil)) -- 2.39.5