Go back to grave quoting in source-code docstrings etc.
[gnus] / lisp / gnus-draft.el
index 02d6393..aebf118 100644 (file)
@@ -1,6 +1,6 @@
 ;;; gnus-draft.el --- draft message support for Gnus
 
-;; Copyright (C) 1997-2011 Free Software Foundation, Inc.
+;; Copyright (C) 1997-2015 Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;; Keywords: news
@@ -149,7 +149,7 @@ Obeys the standard process/prefix convention."
                                      gnus-agent-queue-mail))
         (rfc2047-encode-encoded-words nil)
          type method move-to)
-    (gnus-draft-setup article (or group "nndraft:queue"))
+    (gnus-draft-setup article (or group "nndraft:queue") nil 'dont-pop)
     ;; We read the meta-information that says how and where
     ;; this message is to be sent.
     (save-restriction
@@ -244,56 +244,53 @@ Obeys the standard process/prefix convention."
   :version "23.1" ;; No Gnus
   :type 'hook)
 
-;;; Utility functions
 
-;;;!!!If this is byte-compiled, it fails miserably.
-;;;!!!This is because `gnus-setup-message' uses uninterned symbols.
-;;;!!!This has been fixed in recent versions of Emacs and XEmacs,
-;;;!!!but for the time being, we'll just run this tiny function uncompiled.
-
-(progn
-  (defun gnus-draft-setup (narticle group &optional restore)
-    (let (ga)
-      (gnus-setup-message 'forward
-       (let ((article narticle))
-         (message-mail)
-          (let ((inhibit-read-only t))
-            (erase-buffer))
-         (if (not (gnus-request-restore-buffer article group))
-             (error "Couldn't restore the article")
-           (when (and restore
-                      (equal group "nndraft:queue"))
-             (mime-to-mml))
-           ;; Insert the separator.
-           (goto-char (point-min))
-           (search-forward "\n\n")
-           (forward-char -1)
-           (save-restriction
-             (narrow-to-region (point-min) (point))
-             (setq ga
-                   (message-fetch-field gnus-draft-meta-information-header)))
-           (insert mail-header-separator)
-           (forward-line 1)
-           (message-set-auto-save-file-name))))
-      (gnus-backlog-remove-article group narticle)
-      (when (and ga
-                (ignore-errors (setq ga (car (read-from-string ga)))))
-       (setq gnus-newsgroup-name
-             (if (equal (car ga) "") nil (car ga)))
-       (gnus-configure-posting-styles)
-       (setq gnus-message-group-art (cons gnus-newsgroup-name (cadr ga)))
-       (setq message-post-method
-             `(lambda (arg)
-                (gnus-post-method arg ,(car ga))))
-       (unless (equal (cadr ga) "")
-         (dolist (article (cdr ga))
-           (message-add-action
-            `(progn
-               (gnus-add-mark ,(car ga) 'replied ,article)
-               (gnus-request-set-mark ,(car ga) (list (list (list ,article)
-                                                            'add '(reply)))))
-            'send))))
-      (run-hooks 'gnus-draft-setup-hook))))
+(defun gnus-draft-setup (narticle group &optional restore dont-pop)
+  "Setup a mail draft buffer.
+If DONT-POP is nil, display the buffer after setting it up."
+  (let (ga)
+    (gnus-setup-message 'forward
+      (let ((article narticle))
+        (message-mail nil nil nil nil
+                      (if dont-pop
+                          (lambda (buf) (set-buffer (get-buffer-create buf)))))
+        (let ((inhibit-read-only t))
+          (erase-buffer))
+        (if (not (gnus-request-restore-buffer article group))
+            (error "Couldn't restore the article")
+          (when (and restore
+                     (equal group "nndraft:queue"))
+            (mime-to-mml))
+          ;; Insert the separator.
+          (goto-char (point-min))
+          (search-forward "\n\n")
+          (forward-char -1)
+          (save-restriction
+            (narrow-to-region (point-min) (point))
+            (setq ga
+                  (message-fetch-field gnus-draft-meta-information-header)))
+          (insert mail-header-separator)
+          (forward-line 1)
+          (message-set-auto-save-file-name))))
+    (gnus-backlog-remove-article group narticle)
+    (when (and ga
+               (ignore-errors (setq ga (car (read-from-string ga)))))
+      (setq gnus-newsgroup-name
+            (if (equal (car ga) "") nil (car ga)))
+      (gnus-configure-posting-styles)
+      (setq gnus-message-group-art (cons gnus-newsgroup-name (cadr ga)))
+      (setq message-post-method
+            `(lambda (arg)
+               (gnus-post-method arg ,(car ga))))
+      (unless (equal (cadr ga) "")
+        (dolist (article (cdr ga))
+          (message-add-action
+           `(progn
+              (gnus-add-mark ,(car ga) 'replied ,article)
+              (gnus-request-set-mark ,(car ga) (list (list (list ,article)
+                                                           'add '(reply)))))
+           'send))))
+    (run-hooks 'gnus-draft-setup-hook)))
 
 (defun gnus-draft-article-sendable-p (article)
   "Say whether ARTICLE is sendable."
@@ -330,8 +327,7 @@ Obeys the standard process/prefix convention."
 (defun gnus-draft-clear-marks ()
   (setq gnus-newsgroup-reads nil
        gnus-newsgroup-marked nil
-       gnus-newsgroup-unreads
-       (gnus-uncompress-range (gnus-active gnus-newsgroup-name))))
+       gnus-newsgroup-unreads (nndraft-articles)))
 
 (provide 'gnus-draft)