From: Philip Kaludercic <philipk@posteo.net> Date: Sun, 16 Oct 2022 15:18:06 +0000 (+0200) Subject: Attempt to infer the package subject if missing X-Git-Tag: emacs-29.0.90~1616^2~307^2~54 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=b4e833b2f8fa6962b66eddff420b366b07c48cf0;p=emacs.git 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. --- 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))