*** empty log message ***
[gnus] / lisp / nndraft.el
index 31eaf32..662fb09 100644 (file)
@@ -1,7 +1,7 @@
 ;;; nndraft.el --- draft article access for Gnus
-;; Copyright (C) 1995,96,97 Free Software Foundation, Inc.
+;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc.
 
-;; Author: Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;; Keywords: news
 
 ;; This file is part of GNU Emacs.
 (require 'gnus-start)
 (require 'nnmh)
 (require 'nnoo)
-(eval-when-compile (require 'cl))
+(eval-when-compile
+  (require 'cl)
+  ;; This is just to shut up the byte-compiler.
+  (fset 'nndraft-request-group 'ignore))
 
 (nnoo-declare nndraft
   nnmh)
   (save-excursion
     (set-buffer nntp-server-buffer)
     (erase-buffer)
-    (let* ((buf (get-buffer-create " *draft headers*"))
-          article)
-      (set-buffer buf)
-      (buffer-disable-undo (current-buffer))
-      (erase-buffer)
+    (let* (article)
       ;; We don't support fetching by Message-ID.
       (if (stringp (car articles))
          'headers
        (while articles
-         (set-buffer buf)
+         (narrow-to-region (point) (point))
          (when (nndraft-request-article
                 (setq article (pop articles)) group server (current-buffer))
            (goto-char (point-min))
                (forward-line -1)
              (goto-char (point-max)))
            (delete-region (point) (point-max))
-           (set-buffer nntp-server-buffer)
-           (goto-char (point-max))
+           (goto-char (point-min))
            (insert (format "221 %d Article retrieved.\n" article))
-           (insert-buffer-substring buf)
+           (widen)
+           (goto-char (point-max))
            (insert ".\n")))
 
        (nnheader-fold-continuation-lines)
           (newest (if (file-newer-than-file-p file auto) file auto))
           (nntp-server-buffer (or buffer nntp-server-buffer)))
       (when (and (file-exists-p newest)
-                (nnmail-find-file newest))
+                (let ((nnmail-file-coding-system
+                       message-draft-coding-system))
+                  (nnmail-find-file newest)))
        (save-excursion
          (set-buffer nntp-server-buffer)
          (goto-char (point-min))
   "Request a new buffer that is restored to the state of ARTICLE."
   (nndraft-possibly-change-group group)
   (when (nndraft-request-article article group server (current-buffer))
-    (let ((gnus-verbose-backends nil))
-      (nndraft-request-expire-articles (list article) group server t))
+    (message-remove-header "xref")
+    (message-remove-header "lines")
     t))
 
 (deffoo nndraft-request-update-info (group info &optional server)
 
 (deffoo nndraft-request-associate-buffer (group)
   "Associate the current buffer with some article in the draft group."
+  (nndraft-open-server "")
+  (nndraft-request-group group)
   (nndraft-possibly-change-group group)
   (let ((gnus-verbose-backends nil)
        (buf (current-buffer))
         article file)
-    (nnheader-temp-write nil
-      (insert-buffer buf)
+    (with-temp-buffer
+      (insert-buffer-substring buf)
       (setq article (nndraft-request-accept-article
-                    group (nnoo-current-server 'nndraft) t 'noinsert))
-      (setq file (nndraft-article-filename article)))
-    (setq buffer-file-name file)
-    (setq buffer-auto-save-file-name (make-auto-save-file-name))
+                    group (nnoo-current-server 'nndraft) t 'noinsert)
+           file (nndraft-article-filename article)))
+    (setq buffer-file-name (expand-file-name file)
+         buffer-auto-save-file-name (make-auto-save-file-name))
     (clear-visited-file-modtime)
     article))
 
 (deffoo nndraft-request-expire-articles (articles group &optional server force)
   (nndraft-possibly-change-group group)
   (let* ((nnmh-allow-delete-final t)
-        (res (nndraft-execute-nnmh-command
-              `(nnmh-request-expire-articles
-                ',articles group ,server ,force)))
+        (res (nnoo-parent-function 'nndraft
+                                   'nnmh-request-expire-articles
+                                   (list articles group server force)))
         article)
     ;; Delete all the "state" files of articles that have been expired.
     (while articles
 (deffoo nndraft-request-accept-article (group &optional server last noinsert)
   (nndraft-possibly-change-group group)
   (let ((gnus-verbose-backends nil))
-    (nndraft-execute-nnmh-command
-     `(nnmh-request-accept-article group ,server ,last noinsert))))
+    (nnoo-parent-function 'nndraft 'nnmh-request-accept-article
+                         (list group server last noinsert))))
 
 (deffoo nndraft-request-create-group (group &optional server args)
   (nndraft-possibly-change-group group)
 (defun nndraft-possibly-change-group (group)
   (when (and group
             (not (equal group nndraft-current-group)))
+    (nndraft-open-server "")
     (setq nndraft-current-group group)
     (setq nndraft-current-directory
          (nnheader-concat nndraft-directory group))))
 
-(defun nndraft-execute-nnmh-command (command)
-  (let* ((dir (directory-file-name
-              (expand-file-name nndraft-current-directory)))
-        (group (file-name-nondirectory dir))
-        (nnmh-directory (file-name-directory dir))
-        (nnmail-keep-last-article nil)
-        (nnmh-get-new-mail nil))
-    (eval command)))
-
 (defun nndraft-article-filename (article &rest args)
   (apply 'concat
         (file-name-as-directory nndraft-current-directory)
    nnmh-retrieve-headers
    nnmh-request-group
    nnmh-close-group
-   nnmh-request-list 
+   nnmh-request-list
    nnmh-request-newsgroups
    nnmh-request-move-article
    nnmh-request-replace-article))