From 3e10ebf76d36b0d9cdd86580525e1154ecaf5287 Mon Sep 17 00:00:00 2001 From: Karl Heuer Date: Thu, 21 Dec 1995 17:40:55 +0000 Subject: (report-emacs-bug): If `mail' asks for confirmation and the user doesn't give it, don't do anything more. Explain a way to cancel the message. Include recent keys and recent *Messages* messages at end. --- lisp/mail/emacsbug.el | 89 +++++++++++++++++++++++++++++++++++---------------- 1 file changed, 62 insertions(+), 27 deletions(-) diff --git a/lisp/mail/emacsbug.el b/lisp/mail/emacsbug.el index c5932eb1a96..fe6b52f7cc0 100644 --- a/lisp/mail/emacsbug.el +++ b/lisp/mail/emacsbug.el @@ -47,36 +47,71 @@ "Report a bug in GNU Emacs. Prompts for bug subject. Leaves you in a mail buffer." (interactive "sBug Subject: ") - (mail nil bug-gnu-emacs topic) - (goto-char (point-min)) - (re-search-forward (concat "^" (regexp-quote mail-header-separator) "\n")) - (insert "In " (emacs-version) "\n") - (if (and system-configuration-options - (not (equal system-configuration-options ""))) - (insert "configured using `configure " - system-configuration-options "'\n")) - (insert "\n") - ;; This is so the user has to type something - ;; in order to send easily. - (use-local-map (nconc (make-sparse-keymap) (current-local-map))) - (define-key (current-local-map) "\C-c\C-i" 'report-emacs-bug-info) - (with-output-to-temp-buffer "*Bug Help*" - (princ (substitute-command-keys - "Type \\[mail-send-and-exit] to send the bug report.\n")) - (terpri) - (princ (substitute-command-keys - "Type \\[report-emacs-bug-info] to visit in Info the Emacs Manual section + (if (mail nil bug-gnu-emacs topic) + (let (user-point) + ;; The rest of this does not execute + ;; if the user was asked to confirm and said no. + (goto-char (point-min)) + (re-search-forward (concat "^" (regexp-quote mail-header-separator) "\n")) + (insert "In " (emacs-version) "\n") + (if (and system-configuration-options + (not (equal system-configuration-options ""))) + (insert "configured using `configure " + system-configuration-options "'\n")) + (insert "\n") + (insert "Please describe exactly what actions triggered the bug\n" + "and the precise symptoms of the bug:\n\n") + (setq user-point (point)) + (insert "\n\n\n" + "Recent input:\n") + (let ((before-keys (point))) + (insert (mapconcat (function (lambda (key) + (if (or (integerp key) + (symbolp key) + (listp key)) + (single-key-description key) + (prin1-to-string key nil)))) + (recent-keys) + " ")) + (goto-char before-keys) + (while (progn (move-to-column 50) (not (eobp))) + (search-forward " " nil t) + (insert "\n"))) + (insert "\n\n") + (insert "Recent messages:\n") + (insert-buffer-substring "*Messages*" + (save-excursion + (set-buffer "*Messages*") + (goto-char (point-max)) + (forward-line -10) + (point)) + (save-excursion + (set-buffer "*Messages*") + (point-max))) + ;; This is so the user has to type something + ;; in order to send easily. + (use-local-map (nconc (make-sparse-keymap) (current-local-map))) + (define-key (current-local-map) "\C-c\C-i" 'report-emacs-bug-info) + (with-output-to-temp-buffer "*Bug Help*" + (princ (substitute-command-keys + "Type \\[mail-send-and-exit] to send the bug report.\n")) + (princ (substitute-command-keys + "Type \\[kill-buffer] RET to cancel (don't send it).\n")) + (terpri) + (princ (substitute-command-keys + "Type \\[report-emacs-bug-info] to visit in Info the Emacs Manual section about when and how to write a bug report, and what information to supply so that the bug can be fixed. Type SPC to scroll through this section and its subsections."))) - ;; Make it less likely people will send empty messages. - (make-local-variable 'mail-send-hook) - (add-hook 'mail-send-hook 'report-emacs-bug-hook) - (save-excursion - (goto-char (point-max)) - (skip-chars-backward " \t\n") - (make-local-variable 'report-emacs-bug-orig-text) - (setq report-emacs-bug-orig-text (buffer-substring (point-min) (point))))) + ;; Make it less likely people will send empty messages. + (make-local-variable 'mail-send-hook) + (add-hook 'mail-send-hook 'report-emacs-bug-hook) + (save-excursion + (goto-char (point-max)) + (skip-chars-backward " \t\n") + (make-local-variable 'report-emacs-bug-orig-text) + (setq report-emacs-bug-orig-text (buffer-substring (point-min) (point)))) + (goto-char user-point)))) (defun report-emacs-bug-info () "Go to the Info node on reporting Emacs bugs." -- cgit v1.2.1