Function: package-report-bug

package-report-bug is an autoloaded, interactive and byte-compiled function defined in package.el.gz.

Signature

(package-report-bug DESC)

Documentation

Prepare a message to send to the maintainers of a package.

DESC must be a package-desc object.

View in manual

Probably introduced at or before Emacs version 29.1.

Key Bindings

Source Code

;; Defined in /usr/src/emacs/lisp/emacs-lisp/package.el.gz
;;;###autoload
(defun package-report-bug (desc)
  "Prepare a message to send to the maintainers of a package.
DESC must be a `package-desc' object."
  (interactive (list (package--query-desc)))
  (let* ((maint (package-maintainers desc 'no-error))
         (pkgdir (package-desc-dir desc))
         (main-maint (if (eq pkgdir 'builtin)
                         "bug-gnu-emacs@gnu.org"
                       "UNKNOWN-PACKAGE-MAINTAINER"))
         (hook (let* ((addr (and maint (ietf-drums-parse-addresses maint)))
                      (devel (cl-find "emacs-devel@gnu.org" addr
                                      :test #'string-equal-ignore-case
                                      :key #'car)))
                 (lambda ()
                   (and-let* ((main (or devel (car addr)))
                              (others (prog1 (if (not devel)
                                                 (cdr addr)
                                               ;; We want to have bug reports for
                                               ;; Emacs packages sent to the bug
                                               ;; tracker, and not the emacs-devel.
                                               (setcar devel "bug-gnu-emacs@gnu.org")
                                               (delq devel addr))
                                        (setq main-maint (car main)))))

                     (save-excursion
                       (mail-position-on-field (if devel "X-Debbugs-CC" "CC"))
                       (insert
                        (mapconcat (lambda (e)
                                     (ietf-drums-make-address (cdr e) (car e)))
                                   others ", "))))
                   (when devel
                     (save-excursion
                       ;; Ensure an empty X-Debbugs-CC header if
                       ;; addressing the Emacs developers.
                       (mail-position-on-field "X-Debbugs-CC"))))))
         (name (symbol-name (package-desc-name desc)))
         vars)
    (when pkgdir
      (dolist-with-progress-reporter (group custom-current-group-alist)
          "Scanning for modified user options..."
        (when (and (car group) (not (eq pkgdir 'builtin))
                   (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 main-maint name vars hook))))