X-Git-Url: http://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Fgnus-draft.el;h=13b3cbb862f48c5a69bbe4d4dd251474dafc97b5;hb=873ba7b51ddfb07246cd874b7de72662308236c9;hp=e397a701da84be49f1ad12b5ab1d55b2b828d896;hpb=322754077c488cd96a9479ae95c7e5cae2b06b7f;p=gnus diff --git a/lisp/gnus-draft.el b/lisp/gnus-draft.el index e397a701d..13b3cbb86 100644 --- a/lisp/gnus-draft.el +++ b/lisp/gnus-draft.el @@ -1,7 +1,6 @@ ;;; gnus-draft.el --- draft message support for Gnus -;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +;; Copyright (C) 1997-2012 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news @@ -69,7 +68,8 @@ (gnus-draft-mode ;; Set up the menu. (when (gnus-visual-p 'draft-menu 'menu) - (gnus-draft-make-menu-bar))))) + (gnus-draft-make-menu-bar)) + (add-hook 'gnus-summary-prepare-exit-hook 'gnus-draft-clear-marks t t)))) ;;; Commands @@ -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 @@ -221,7 +221,8 @@ Obeys the standard process/prefix convention." (let ((message-sending-message (format "Sending message %d of %d..." (- total (length articles)) total))) - (gnus-draft-send article)))))))) + (gnus-draft-send article)))))) + (gnus-group-refresh-group "nndraft:queue"))) ;;;###autoload (defun gnus-draft-reminder () @@ -243,55 +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) - (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." @@ -325,6 +324,11 @@ Obeys the standard process/prefix convention." (pop-to-buffer buff t))) (error "The draft %s is under edit" file))))) +(defun gnus-draft-clear-marks () + (setq gnus-newsgroup-reads nil + gnus-newsgroup-marked nil + gnus-newsgroup-unreads (nndraft-articles))) + (provide 'gnus-draft) ;;; gnus-draft.el ends here