]> git.eshelyaron.com Git - emacs.git/commitdiff
(describe-package-1): Fix bug#68288
authorStefan Monnier <monnier@iro.umontreal.ca>
Sat, 6 Jan 2024 23:50:25 +0000 (18:50 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Sat, 6 Jan 2024 23:50:25 +0000 (18:50 -0500)
Fix support for multiple maintainers in `describe-package` and
in `package-report-bug`.

* lisp/emacs-lisp/package.el (describe-package-1): There's no
`:maintainers:`, instead `:maintainer` can hold a list of maintainers.
(package-maintainers): Adapt to the possibility of having
multiple maintainers.
(package-report-bug): Don't burp if the package is not installed.

lisp/emacs-lisp/package.el

index 8df2088ce43338e2bbd9106e82d2ac24fe7ee399..b21e0f8fc51450fa2fafc9b63bf513fa3bdff556 100644 (file)
@@ -2804,8 +2804,7 @@ Helper function for `describe-package'."
          (status (if desc (package-desc-status desc) "orphan"))
          (incompatible-reason (package--incompatible-p desc))
          (signed (if desc (package-desc-signed desc)))
-         (maintainers (or (cdr (assoc :maintainers extras))
-                          (list (cdr (assoc :maintainer extras)))))
+         (maintainers (cdr (assoc :maintainer extras)))
          (authors (cdr (assoc :authors extras)))
          (news (and-let* (pkg-dir
                           ((not built-in))
@@ -4699,18 +4698,23 @@ will be signaled in that case."
   (let* ((name (package-desc-name pkg-desc))
          (extras (package-desc-extras pkg-desc))
          (maint (alist-get :maintainer extras)))
+    (unless (listp (cdr maint))
+      (setq maint (list maint)))
     (cond
      ((and (null maint) (null no-error))
       (user-error "Package `%s' has no explicit maintainer" name))
      ((and (not (progn
                   (require 'ietf-drums)
-                  (ietf-drums-parse-address (cdr maint))))
+                  (ietf-drums-parse-address (cdar maint))))
            (null no-error))
       (user-error "Package `%s' has no maintainer address" name))
-     ((not (null maint))
+     (t
       (with-temp-buffer
-        (package--print-email-button maint)
-        (string-trim (substring-no-properties (buffer-string))))))))
+        (mapc #'package--print-email-button maint)
+        (replace-regexp-in-string
+         "\n" ", " (string-trim
+                    (buffer-substring-no-properties
+                     (point-min) (point-max)))))))))
 
 ;;;###autoload
 (defun package-report-bug (desc)
@@ -4720,17 +4724,19 @@ DESC must be a `package-desc' object."
                package-menu-mode)
   (let ((maint (package-maintainers desc))
         (name (symbol-name (package-desc-name desc)))
+        (pkgdir (package-desc-dir desc))
         vars)
-    (dolist-with-progress-reporter (group custom-current-group-alist)
-        "Scanning for modified user options..."
-      (when (and (car group)
-                 (file-in-directory-p (car group) (package-desc-dir desc)))
-        (dolist (ent (get (cdr group) 'custom-group))
-          (when (and (custom-variable-p (car ent))
-                     (boundp (car ent))
-                     (not (eq (custom--standard-value (car ent))
-                              (default-toplevel-value (car ent)))))
-            (push (car ent) vars)))))
+    (when pkgdir
+      (dolist-with-progress-reporter (group custom-current-group-alist)
+          "Scanning for modified user options..."
+        (when (and (car group)
+                   (file-in-directory-p (car group) pkgdir))
+          (dolist (ent (get (cdr group) 'custom-group))
+            (when (and (custom-variable-p (car ent))
+                       (boundp (car ent))
+                       (not (eq (custom--standard-value (car ent))
+                                (default-toplevel-value (car ent)))))
+              (push (car ent) vars))))))
     (dlet ((reporter-prompt-for-summary-p t))
       (reporter-submit-bug-report maint name vars))))