* gnus-topic.el (gnus-topic-display-missing-topic): Bind entry.
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Sun, 29 Dec 2002 18:33:35 +0000 (18:33 +0000)
committerLars Magne Ingebrigtsen <larsi@gnus.org>
Sun, 29 Dec 2002 18:33:35 +0000 (18:33 +0000)
* message.el (message-with-reply-buffer): New macro.
(message-fetch-reply-field): Use it.
(message-insert-wide-reply): New command and keystroke.
(message-carefully-insert-headers): New function.
(message-insert-to): Use new function.

lisp/ChangeLog
lisp/gnus-topic.el
lisp/message.el

index 48d6d58..fcb5061 100644 (file)
@@ -1,5 +1,13 @@
 2002-12-29  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
+       * gnus-topic.el (gnus-topic-display-missing-topic): Bind entry. 
+
+       * message.el (message-with-reply-buffer): New macro.
+       (message-fetch-reply-field): Use it.
+       (message-insert-wide-reply): New command and keystroke.
+       (message-carefully-insert-headers): New function.
+       (message-insert-to): Use new function.
+
        * gnus-topic.el (gnus-topic-display-missing-topic): New function.
        (gnus-topic-goto-missing-group): Use it.
 
index 544d48b..338afb5 100644 (file)
@@ -725,7 +725,8 @@ articles in the topic and its subtopics."
         (unread 0)
         (entries (gnus-topic-find-groups
                   (car type) (car gnus-group-list-mode)
-                  (cdr gnus-group-list-mode))))
+                  (cdr gnus-group-list-mode)))
+       entry)
     (while children
       (incf unread (gnus-topic-unread (caar (pop children)))))
     (while (setq entry (pop entries))
index b53c6f1..d1f341a 100644 (file)
@@ -1483,14 +1483,21 @@ is used by default."
            (insert (car headers) ?\n)))))
     (setq headers (cdr headers))))
 
+(defmacro message-with-reply-buffer (&rest forms)
+  "Evaluate FORMS in the reply buffer, if it exists."
+  `(when (and message-reply-buffer
+             (buffer-name message-reply-buffer))
+     (save-excursion
+       (set-buffer message-reply-buffer)
+       ,@forms)))
+
+(put 'message-with-reply-buffer 'lisp-indent-function 0)
+(put 'message-with-reply-buffer 'edebug-form-spec '(body))
 
 (defun message-fetch-reply-field (header)
   "Fetch field HEADER from the message we're replying to."
-  (when (and message-reply-buffer
-            (buffer-name message-reply-buffer))
-    (save-excursion
-      (set-buffer message-reply-buffer)
-      (message-fetch-field header))))
+  (message-with-reply-buffer
+    (message-fetch-field header)))
 
 (defun message-set-work-buffer ()
   (if (get-buffer " *message work*")
@@ -1973,6 +1980,7 @@ Point is left at the beginning of the narrowed-to region."
   (define-key message-mode-map "\C-c\C-i" 'message-goto-signature)
 
   (define-key message-mode-map "\C-c\C-t" 'message-insert-to)
+  (define-key message-mode-map "\C-c\C-p" 'message-insert-wide-reply)
   (define-key message-mode-map "\C-c\C-n" 'message-insert-newsgroups)
   (define-key message-mode-map "\C-c\C-l" 'message-to-list-only)
 
@@ -2416,13 +2424,29 @@ With the prefix argument FORCE, insert the header anyway."
               (or (equal (downcase co) "never")
                   (equal (downcase co) "nobody")))
       (error "The user has requested not to have copies sent via mail")))
-  (when (and (message-position-on-field "To")
-            (mail-fetch-field "to")
-            (not (string-match "\\` *\\'" (mail-fetch-field "to"))))
-    (insert ", "))
-  (insert (or (message-fetch-reply-field "mail-reply-to")
-             (message-fetch-reply-field "reply-to")
-             (message-fetch-reply-field "from") "")))
+  (message-carefully-insert-headers
+   (list (cons 'To
+              (or (message-fetch-reply-field "mail-reply-to")
+                  (message-fetch-reply-field "reply-to")
+                  (message-fetch-reply-field "from")
+                  "")))))
+
+(defun message-insert-wide-reply ()
+  "Insert To and Cc headers as if you were doing a wide reply."
+  (interactive)
+  (let ((headers (message-with-reply-buffer
+                  (message-get-reply-headers t))))
+    (message-carefully-insert-headers headers)))
+
+(defun message-carefully-insert-headers (headers)
+  (dolist (header headers)
+    (let ((header-name (symbol-name (car header))))
+      (when (and (message-position-on-field header-name)
+                (mail-fetch-field header-name)
+                (not (string-match "\\` *\\'"
+                                   (mail-fetch-field header-name))))
+       (insert ", "))
+      (insert (cdr header)))))
 
 (defun message-widen-reply ()
   "Widen the reply to include maximum recipients."