;; Vague implementation of needed code to invoke Gnus from reportbug
;; by Tollef Fog Heen
(require 'gnus)
;; Match each component of Gnus' version number.
(string-match "^\\([0-9]+\\)\\.\\([0-9]+\\)\\(?:\\.\\([0-9]+\\)\\)?$"
gnus-version-number)
;; Only load gnus-load if using a separately packaged Gnus (that is,
;; not the Gnus bundled with Emacs).
(if (or
;; Check for a separately packaged release of Gnus
;; (second component of version number even):
(= (% (string-to-number (match-string 2 gnus-version-number)) 2) 0)
;; Check for a separately packaged pre-release of Gnus
;; (first component of version number 0):
(= (string-to-number (match-string 1 gnus-version-number)) 0))
(require 'gnus-load))
(defun tfheen-set-header (header value)
"Insert a string at the beginning of a header."
(message-narrow-to-head)
(goto-char (point-min))
(search-forward (format "%s: " header) (point-max) t)
(insert value)
(widen))
(defun tfheen-reportbug-insert-template (reportbug-template)
(interactive)
(require 'gnus)
(find-file reportbug-template)
(let ((subject (message-fetch-field "Subject"))
(toaddr (or (message-fetch-field "To") "submit@bugs.debian.org")))
(gnus-narrow-to-body)
(let ((body (or (buffer-string) "")))
(gnus-summary-mail-other-window)
(tfheen-set-header "Subject" subject)
(tfheen-set-header "To" toaddr)
(gnus-narrow-to-body)
(insert body)
(goto-char (point-min))
(search-forward "\n\n" nil t)
(widen)))
(kill-buffer (find-buffer-visiting reportbug-template)))
|