Mercurial > emacs
changeset 21230:a553c7f85238
(reporter-mail): New function.
(reporter-compose-outgoing): Use fboundp, not functionp.
(reporter-bug-hook): Fix error message.
(reporter-beautify-list): Break infloop when reaching the end of the
buffer without crossing an unbalanced paren. Use scan-sexps instead
of forward-sexp for the loop break test.
(reporter-submit-bug-report): Only call
display-buffer if pop-up-windows is non-nil.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Fri, 20 Mar 1998 06:37:09 +0000 |
parents | 38b621cd9169 |
children | 4d63d262b3d5 |
files | lisp/mail/reporter.el |
diffstat | 1 files changed, 43 insertions(+), 35 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/mail/reporter.el Fri Mar 20 06:29:54 1998 +0000 +++ b/lisp/mail/reporter.el Fri Mar 20 06:37:09 1998 +0000 @@ -1,12 +1,12 @@ ;;; reporter.el --- customizable bug reporting of lisp programs -;; Copyright (C) 1993 1994 1995 1996 Free Software Foundation, Inc. +;; Copyright (C) 1993,1994,1995,1996,1997,1998 Free Software Foundation, Inc. -;; Author: 1993-1996 Barry A. Warsaw -;; Maintainer: FSF +;; Author: 1993-1998 Barry A. Warsaw +;; Maintainer: tools-help@python.org ;; Created: 19-Apr-1993 -;; Version: 3.3 -;; Last Modified: 1996/07/02 00:39:09 +;; Version: 3.34 +;; Last Modified: 1998/03/19 17:21:16 ;; Keywords: maint mail tools ;; This file is part of GNU Emacs. @@ -32,18 +32,19 @@ ;; ================== ;; The variable `mail-user-agent' contains a symbol indicating which ;; Emacs mail package end users would like to use to compose outgoing -;; mail. See that variable for details. +;; mail. See that variable for details (it is no longer defined in +;; this file). ;; Lisp Package Authors ;; ==================== -;; Reporter was written primarily for Emacs Lisp package authors so -;; that their users can easily report bugs. When invoked, -;; reporter-submit-bug-report will set up an outgoing mail buffer with -;; the appropriate bug report address, including a lisp expression the -;; maintainer of the package can eval to completely reproduce the -;; environment in which the bug was observed (e.g. by using -;; eval-last-sexp). This package proved especially useful during my -;; development of cc-mode, which is highly dependent on its +;; reporter.el was written primarily for Emacs Lisp package authors so +;; that their users can more easily report bugs. When invoked, +;; `reporter-submit-bug-report' will set up an outgoing mail buffer +;; with the appropriate bug report address, including a lisp +;; expression the maintainer of the package can evaluate to completely +;; reproduce the environment in which the bug was observed (e.g. by +;; using `eval-last-sexp'). This package proved especially useful +;; during my development of CC Mode, which is highly dependent on its ;; configuration variables. ;; ;; Do a "C-h f reporter-submit-bug-report" for more information. @@ -54,6 +55,7 @@ ;;(defun mypkg-submit-bug-report () ;; "Submit via mail a bug report on mypkg" ;; (interactive) +;; (require 'reporter) ;; (reporter-submit-bug-report ;; mypkg-maintainer-address ;; (concat "mypkg.el " mypkg-version) @@ -62,25 +64,18 @@ ;; ;; ... ;; 'mypkg-variable-last))) -;; Mailing List -;; ============ -;; I've set up a Majordomo mailing list to report bugs or suggest -;; enhancements, etc. This list's intended audience is elisp package -;; authors who are using reporter and want to stay current with -;; releases. Here are the relevant addresses: -;; -;; Administrivia: reporter-request@python.org -;; Submissions: reporter@python.org - -;; Packages that currently use reporter are: cc-mode, supercite, elp, +;; Reporter Users +;; ============== +;; Packages that currently use reporter are: CC Mode, supercite, elp, ;; tcl, ediff, crypt++ (crypt), dired-x, rmailgen, mode-line, vm, ;; mh-e, edebug, archie, viper, w3-mode, framepop, hl319, hilit19, -;; pgp, eos, hm--html, efs. +;; pgp, eos, hm--html, efs, webster19. ;; ;; If you know of others, please email me! - + ;;; Code: + ;; vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv ;; Package author interface variables @@ -119,7 +114,7 @@ variables. Current buffer will always be the mail buffer being composed.") -(defconst reporter-version "3.3" +(defconst reporter-version "3.34" "Reporter version number.") (defvar reporter-initial-text nil @@ -145,14 +140,21 @@ (defun reporter-beautify-list (maxwidth compact-p) ;; pretty print a list (reporter-update-status) - (let (linebreak indent-enclosing-p indent-p here) + (let ((move t) + linebreak indent-enclosing-p indent-p here) (condition-case nil ;loop exit (progn (down-list 1) (setq indent-enclosing-p t) - (while t + (while move (setq here (point)) - (forward-sexp 1) + ;; The following line is how we break out of the while + ;; loop, in one of two ways. Either we've hit the end of + ;; the buffer, in which case scan-sexps returns nil, or + ;; we've crossed unbalanced parens and it will raise an + ;; error we're expecting to catch. + (setq move (scan-sexps (point) 1)) + (goto-char move) (if (<= maxwidth (current-column)) (if linebreak (progn @@ -303,6 +305,12 @@ (buffer-substring (match-beginning 0) (match-end 0)))) +;; Serves as an interface to `mail' (sendmail.el), but when the user +;; answers "no" to discarding an unsent message, it gives an error. +(defun reporter-mail (&rest args) + (or (apply 'mail args) + (error "Bug report aborted"))) + (defun reporter-compose-outgoing () ;; compose the outgoing mail buffer, and return the selected ;; paradigm, with the current-buffer tacked onto the beginning of @@ -311,11 +319,11 @@ (compose (get mail-user-agent 'composefunc))) ;; Sanity check. If this fails then we'll try to use the SENDMAIL ;; protocol, otherwise we must signal an error. - (if (not (and compose (functionp compose))) + (if (not (and compose (fboundp compose))) (progn (setq agent 'sendmail-user-agent compose (get agent 'composefunc)) - (if (not (and compose (functionp compose))) + (if (not (and compose (fboundp compose))) (error "Could not find a valid `mail-user-agent'") (ding) (message "`%s' is an invalid `mail-user-agent'; using `sendmail-user-agent'" @@ -360,7 +368,7 @@ (pop-to-buffer mailbuf) ;; Just in case the original buffer is not visible now, bring it ;; back somewhere - (display-buffer reporter-eval-buffer)) + (and pop-up-windows (display-buffer reporter-eval-buffer))) (goto-char (point-min)) ;; different mailers use different separators, some may not even ;; use mail-header-separator, but sendmail.el stuff must have this @@ -430,7 +438,7 @@ (length reporter-initial-text)) (string= (buffer-substring after-sep-pos (point)) reporter-initial-text)) - (error "Bug report was empty--not sent")) + (error "Empty bug report cannot be sent")) )))