Commit fe1d8b33 authored by Kenichi Handa's avatar Kenichi Handa
Browse files

(report-emacs-bug-run-tersely): New variable

(report-emacs-bug): Insert warnings for novice usres in *mail* buffer.
Set enable-multibyte-characters to nil.
(report-emacs-bug-hook): Check non-English letters.  Confirm about
sending a report to FSF.
parent 8881c1ab
...@@ -46,6 +46,10 @@ ...@@ -46,6 +46,10 @@
(defvar report-emacs-bug-orig-text nil (defvar report-emacs-bug-orig-text nil
"The automatically-created initial text of bug report.") "The automatically-created initial text of bug report.")
;;;###autoload
(defvar report-emacs-bug-run-tersely nil
"*If non-nil, suppress confirmations for novice users.")
;;;###autoload ;;;###autoload
(defun report-emacs-bug (topic &optional recent-keys) (defun report-emacs-bug (topic &optional recent-keys)
"Report a bug in GNU Emacs. "Report a bug in GNU Emacs.
...@@ -68,6 +72,17 @@ Prompts for bug subject. Leaves you in a mail buffer." ...@@ -68,6 +72,17 @@ Prompts for bug subject. Leaves you in a mail buffer."
;; if the user was asked to confirm and said no. ;; if the user was asked to confirm and said no.
(goto-char (point-min)) (goto-char (point-min))
(re-search-forward (concat "^" (regexp-quote mail-header-separator) "\n")) (re-search-forward (concat "^" (regexp-quote mail-header-separator) "\n"))
;; Insert warnings for novice users.
(insert "This mail is sent to Free Software Foundation, ")
(let ((pos (point)))
(insert "NOT TO YOUR SITE MANAGERS!!")
(put-text-property pos (point) 'face 'highlight))
(insert "\nPlease write in ")
(let ((pos (point)))
(insert "ENGLISH ONLY")
(put-text-property pos (point) 'face 'highlight))
(insert ", recipients are not yet fully multilingualized.\n\n")
(insert "In " (emacs-version) "\n") (insert "In " (emacs-version) "\n")
(if (and system-configuration-options (if (and system-configuration-options
(not (equal system-configuration-options ""))) (not (equal system-configuration-options "")))
...@@ -123,6 +138,8 @@ Type SPC to scroll through this section and its subsections."))) ...@@ -123,6 +138,8 @@ Type SPC to scroll through this section and its subsections.")))
;; Make it less likely people will send empty messages. ;; Make it less likely people will send empty messages.
(make-local-variable 'mail-send-hook) (make-local-variable 'mail-send-hook)
(add-hook 'mail-send-hook 'report-emacs-bug-hook) (add-hook 'mail-send-hook 'report-emacs-bug-hook)
;; Discourage users to write non-English text.
(setq enable-multibyte-characters nil)
(save-excursion (save-excursion
(goto-char (point-max)) (goto-char (point-max))
(skip-chars-backward " \t\n") (skip-chars-backward " \t\n")
...@@ -147,7 +164,47 @@ Type SPC to scroll through this section and its subsections."))) ...@@ -147,7 +164,47 @@ Type SPC to scroll through this section and its subsections.")))
(length report-emacs-bug-orig-text)) (length report-emacs-bug-orig-text))
(equal (buffer-substring (point-min) (point)) (equal (buffer-substring (point-min) (point))
report-emacs-bug-orig-text)) report-emacs-bug-orig-text))
(error "No text entered in bug report")))) (error "No text entered in bug report"))
;; Check the buffer contents and reject non-English letters.
(let ((charsets (delq 'ascii
(find-charset-region (point-min) (point-max)))))
(if charsets
(if (or report-emacs-bug-run-tersely
(y-or-n-p "Convert Non-English letters to hexadecimal? "))
(save-excursion
(goto-char (point-min))
(let ((enable-multibyte-characters nil)
(pattern (format "[%c-%c]" 128 255))
ch)
(while (re-search-forward pattern nil t)
(setq ch (preceding-char))
(delete-char -1)
(insert (format "=%02x" ch)))))
(error "Please delete non-English chars by yourself"))))
;; The last warning for novice users.
(if (or report-emacs-bug-run-tersely
(yes-or-no-p
"Do you surely send this mail to Free Software Foundation? "))
;; Just send the current mail.
nil
(goto-char (point-min))
(if (search-forward "To: ")
(let ((pos (point)))
(end-of-line)
(delete-region pos (point))))
(kill-local-variable 'mail-send-hook)
(with-output-to-temp-buffer "*Bug Help*"
(princ (substitute-command-keys "\
You invoked the command report-emacs-bug (\\[report-emacs-bug]),
but refused to send an e-mail report to Free Software Foundation.
If you want to send the mail to someone else,
please insert the actual e-mail address after \"To: \",
and send the mail again by \\[mail-send-and-exit].")))
(error "Report-emacs-bug was cancelled, please read *Bug Help* buffer"))
))
(provide 'emacsbug) (provide 'emacsbug)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment