Mercurial > emacs
comparison lisp/gnus/nndraft.el @ 56927:55fd4f77387a after-merge-gnus-5_10
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Merge from emacs--gnus--5.10, gnus--rel--5.10
Patches applied:
* miles@gnu.org--gnu-2004/emacs--gnus--5.10--base-0
tag of miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-464
* miles@gnu.org--gnu-2004/emacs--gnus--5.10--patch-1
Import from CVS branch gnus-5_10-branch
* miles@gnu.org--gnu-2004/emacs--gnus--5.10--patch-2
Merge from lorentey@elte.hu--2004/emacs--multi-tty--0, emacs--cvs-trunk--0
* miles@gnu.org--gnu-2004/emacs--gnus--5.10--patch-3
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2004/emacs--gnus--5.10--patch-4
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-18
Update from CVS
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-19
Remove autoconf-generated files from archive
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-20
Update from CVS
author | Miles Bader <miles@gnu.org> |
---|---|
date | Sat, 04 Sep 2004 13:13:48 +0000 |
parents | 695cf19ef79e |
children | 88db2adda4b7 cce1c0ee76ee |
comparison
equal
deleted
inserted
replaced
56926:f8e248e9a717 | 56927:55fd4f77387a |
---|---|
1 ;;; nndraft.el --- draft article access for Gnus | 1 ;;; nndraft.el --- draft article access for Gnus |
2 ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 | 2 |
3 ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003 | |
3 ;; Free Software Foundation, Inc. | 4 ;; Free Software Foundation, Inc. |
4 | 5 |
5 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org> | 6 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org> |
6 ;; Keywords: news | 7 ;; Keywords: news |
7 | 8 |
30 (require 'nnmail) | 31 (require 'nnmail) |
31 (require 'gnus-start) | 32 (require 'gnus-start) |
32 (require 'nnmh) | 33 (require 'nnmh) |
33 (require 'nnoo) | 34 (require 'nnoo) |
34 (require 'mm-util) | 35 (require 'mm-util) |
35 (eval-when-compile | 36 (eval-when-compile (require 'cl)) |
36 (require 'cl) | |
37 ;; This is just to shut up the byte-compiler. | |
38 (fset 'nndraft-request-group 'ignore)) | |
39 | 37 |
40 (nnoo-declare nndraft | 38 (nnoo-declare nndraft |
41 nnmh) | 39 nnmh) |
42 | 40 |
43 (defvoo nndraft-directory (nnheader-concat gnus-directory "drafts/") | 41 (defvoo nndraft-directory (nnheader-concat gnus-directory "drafts/") |
111 (newest (if (file-newer-than-file-p file auto) file auto)) | 109 (newest (if (file-newer-than-file-p file auto) file auto)) |
112 (nntp-server-buffer (or buffer nntp-server-buffer))) | 110 (nntp-server-buffer (or buffer nntp-server-buffer))) |
113 (when (and (file-exists-p newest) | 111 (when (and (file-exists-p newest) |
114 (let ((nnmail-file-coding-system | 112 (let ((nnmail-file-coding-system |
115 (if (file-newer-than-file-p file auto) | 113 (if (file-newer-than-file-p file auto) |
116 (if (equal group "drafts") | 114 (if (member group '("drafts" "delayed")) |
117 message-draft-coding-system | 115 message-draft-coding-system |
118 mm-text-coding-system) | 116 mm-text-coding-system) |
119 mm-auto-save-coding-system))) | 117 mm-auto-save-coding-system))) |
120 (nnmail-find-file newest))) | 118 (nnmail-find-file newest))) |
121 (save-excursion | 119 (save-excursion |
122 (set-buffer nntp-server-buffer) | 120 (set-buffer nntp-server-buffer) |
123 (goto-char (point-min)) | 121 (goto-char (point-min)) |
124 ;; If there's a mail header separator in this file, | 122 ;; If there's a mail header separator in this file, |
125 ;; we remove it. | 123 ;; we remove it. |
126 (when (re-search-forward | 124 (when (re-search-forward |
127 (concat "^" mail-header-separator "$") nil t) | 125 (concat "^" (regexp-quote mail-header-separator) "$") nil t) |
128 (replace-match "" t t))) | 126 (replace-match "" t t))) |
129 t)))) | 127 t)))) |
130 | 128 |
131 (deffoo nndraft-request-restore-buffer (article &optional group server) | 129 (deffoo nndraft-request-restore-buffer (article &optional group server) |
132 "Request a new buffer that is restored to the state of ARTICLE." | 130 "Request a new buffer that is restored to the state of ARTICLE." |
133 (nndraft-possibly-change-group group) | 131 (nndraft-possibly-change-group group) |
134 (when (nndraft-request-article article group server (current-buffer)) | 132 (when (nndraft-request-article article group server (current-buffer)) |
135 (message-remove-header "xref") | 133 (message-remove-header "xref") |
136 (message-remove-header "lines") | 134 (message-remove-header "lines") |
135 ;; Articles in nndraft:queue are considered as sent messages. The | |
136 ;; Date field should be the time when they are sent. | |
137 ;;(message-remove-header "date") | |
137 t)) | 138 t)) |
138 | 139 |
139 (deffoo nndraft-request-update-info (group info &optional server) | 140 (deffoo nndraft-request-update-info (group info &optional server) |
140 (nndraft-possibly-change-group group) | 141 (nndraft-possibly-change-group group) |
141 (gnus-info-set-read | 142 (gnus-info-set-read |
149 (if (assq 'unsend marks) | 150 (if (assq 'unsend marks) |
150 (list (assq 'unsend marks)) | 151 (list (assq 'unsend marks)) |
151 nil)))) | 152 nil)))) |
152 t) | 153 t) |
153 | 154 |
155 (defun nndraft-generate-headers () | |
156 (save-excursion | |
157 (message-generate-headers | |
158 (message-headers-to-generate | |
159 message-required-headers message-draft-headers nil)))) | |
160 | |
154 (deffoo nndraft-request-associate-buffer (group) | 161 (deffoo nndraft-request-associate-buffer (group) |
155 "Associate the current buffer with some article in the draft group." | 162 "Associate the current buffer with some article in the draft group." |
156 (nndraft-open-server "") | 163 (nndraft-open-server "") |
157 (nndraft-request-group group) | 164 (nndraft-request-group group) |
158 (nndraft-possibly-change-group group) | 165 (nndraft-possibly-change-group group) |
165 group (nnoo-current-server 'nndraft) t 'noinsert) | 172 group (nnoo-current-server 'nndraft) t 'noinsert) |
166 file (nndraft-article-filename article))) | 173 file (nndraft-article-filename article))) |
167 (setq buffer-file-name (expand-file-name file) | 174 (setq buffer-file-name (expand-file-name file) |
168 buffer-auto-save-file-name (make-auto-save-file-name)) | 175 buffer-auto-save-file-name (make-auto-save-file-name)) |
169 (clear-visited-file-modtime) | 176 (clear-visited-file-modtime) |
177 (make-local-variable 'write-contents-hooks) | |
178 (push 'nndraft-generate-headers write-contents-hooks) | |
170 article)) | 179 article)) |
180 | |
181 (deffoo nndraft-request-group (group &optional server dont-check) | |
182 (nndraft-possibly-change-group group) | |
183 (unless dont-check | |
184 (let* ((pathname (nnmail-group-pathname group nndraft-directory)) | |
185 (file-name-coding-system nnmail-pathname-coding-system) | |
186 dir file) | |
187 (nnheader-re-read-dir pathname) | |
188 (setq dir (mapcar (lambda (name) (string-to-int (substring name 1))) | |
189 (ignore-errors (directory-files | |
190 pathname nil "^#[0-9]+#$" t)))) | |
191 (dolist (n dir) | |
192 (unless (file-exists-p | |
193 (setq file (expand-file-name (int-to-string n) pathname))) | |
194 (rename-file (nndraft-auto-save-file-name file) file))))) | |
195 (nnoo-parent-function 'nndraft | |
196 'nnmh-request-group | |
197 (list group server dont-check))) | |
198 | |
199 (deffoo nndraft-request-move-article (article group server | |
200 accept-form &optional last) | |
201 (nndraft-possibly-change-group group) | |
202 (let ((buf (get-buffer-create " *nndraft move*")) | |
203 result) | |
204 (and | |
205 (nndraft-request-article article group server) | |
206 (save-excursion | |
207 (set-buffer buf) | |
208 (erase-buffer) | |
209 (insert-buffer-substring nntp-server-buffer) | |
210 (setq result (eval accept-form)) | |
211 (kill-buffer (current-buffer)) | |
212 result) | |
213 (null (nndraft-request-expire-articles (list article) group server 'force)) | |
214 result))) | |
171 | 215 |
172 (deffoo nndraft-request-expire-articles (articles group &optional server force) | 216 (deffoo nndraft-request-expire-articles (articles group &optional server force) |
173 (nndraft-possibly-change-group group) | 217 (nndraft-possibly-change-group group) |
174 (let* ((nnmh-allow-delete-final t) | 218 (let* ((nnmh-allow-delete-final t) |
175 (res (nnoo-parent-function 'nndraft | 219 (res (nnoo-parent-function 'nndraft |
199 (list group server last noinsert)))) | 243 (list group server last noinsert)))) |
200 | 244 |
201 (deffoo nndraft-request-replace-article (article group buffer) | 245 (deffoo nndraft-request-replace-article (article group buffer) |
202 (nndraft-possibly-change-group group) | 246 (nndraft-possibly-change-group group) |
203 (let ((nnmail-file-coding-system | 247 (let ((nnmail-file-coding-system |
204 (if (equal group "drafts") | 248 (if (member group '("drafts" "delayed")) |
205 mm-auto-save-coding-system | 249 message-draft-coding-system |
206 mm-text-coding-system))) | 250 mm-text-coding-system))) |
207 (nnoo-parent-function 'nndraft 'nnmh-request-replace-article | 251 (nnoo-parent-function 'nndraft 'nnmh-request-replace-article |
208 (list article group buffer)))) | 252 (list article group buffer)))) |
209 | 253 |
210 (deffoo nndraft-request-create-group (group &optional server args) | 254 (deffoo nndraft-request-create-group (group &optional server args) |
257 (nnmh | 301 (nnmh |
258 nnmh-retrieve-headers | 302 nnmh-retrieve-headers |
259 nnmh-request-group | 303 nnmh-request-group |
260 nnmh-close-group | 304 nnmh-close-group |
261 nnmh-request-list | 305 nnmh-request-list |
262 nnmh-request-newsgroups | 306 nnmh-request-newsgroups)) |
263 nnmh-request-move-article)) | |
264 | 307 |
265 (provide 'nndraft) | 308 (provide 'nndraft) |
266 | 309 |
267 ;;; arch-tag: 3ce26ca0-41cb-48b1-8703-4dad35e188aa | 310 ;;; arch-tag: 3ce26ca0-41cb-48b1-8703-4dad35e188aa |
268 ;;; nndraft.el ends here | 311 ;;; nndraft.el ends here |