Mercurial > emacs
annotate lisp/gnus/gnus-msg.el @ 88256:db2e6586ecf5
(rmail-msgbeg, rmail-msgend): Fix and make obsolete.
(rmail-process-new-messages): Use mail-decode-encoded-word-string
on the subject. Requires mail-parse from Gnus.
(rmail-highlight-headers): Doc.
author | Alex Schroeder <alex@gnu.org> |
---|---|
date | Sat, 21 Jan 2006 15:00:38 +0000 |
parents | d7ddb3e565de |
children |
rev | line source |
---|---|
17493 | 1 ;;; gnus-msg.el --- mail and post interface for Gnus |
88155 | 2 |
3 ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, | |
4 ;; 2004, 2005 Free Software Foundation, Inc. | |
17493 | 5 |
6 ;; Author: Masanobu UMEDA <umerin@flab.flab.fujitsu.junet> | |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
7 ;; Lars Magne Ingebrigtsen <larsi@gnus.org> |
17493 | 8 ;; Keywords: news |
9 | |
10 ;; This file is part of GNU Emacs. | |
11 | |
12 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
13 ;; it under the terms of the GNU General Public License as published by | |
14 ;; the Free Software Foundation; either version 2, or (at your option) | |
15 ;; any later version. | |
16 | |
17 ;; GNU Emacs is distributed in the hope that it will be useful, | |
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
20 ;; GNU General Public License for more details. | |
21 | |
22 ;; You should have received a copy of the GNU General Public License | |
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the | |
88155 | 24 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
25 ;; Boston, MA 02110-1301, USA. | |
17493 | 26 |
27 ;;; Commentary: | |
28 | |
29 ;;; Code: | |
30 | |
19531
f5b98be7c142
Require cl at compile time.
Richard M. Stallman <rms@gnu.org>
parents:
17493
diff
changeset
|
31 (eval-when-compile (require 'cl)) |
f5b98be7c142
Require cl at compile time.
Richard M. Stallman <rms@gnu.org>
parents:
17493
diff
changeset
|
32 |
17493 | 33 (require 'gnus) |
34 (require 'gnus-ems) | |
35 (require 'message) | |
36 (require 'gnus-art) | |
88155 | 37 (require 'gnus-util) |
17493 | 38 |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
39 (defcustom gnus-post-method 'current |
17493 | 40 "*Preferred method for posting USENET news. |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
41 |
43365
bcde2eb5438e
* gnus-msg.el (gnus-post-method): Fix doc.
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40387
diff
changeset
|
42 If this variable is `current' (which is the default), Gnus will use |
bcde2eb5438e
* gnus-msg.el (gnus-post-method): Fix doc.
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40387
diff
changeset
|
43 the \"current\" select method when posting. If it is `native', Gnus |
bcde2eb5438e
* gnus-msg.el (gnus-post-method): Fix doc.
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40387
diff
changeset
|
44 will use the native select method when posting. |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
45 |
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
46 This method will not be used in mail groups and the like, only in |
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
47 \"real\" newsgroups. |
17493 | 48 |
43365
bcde2eb5438e
* gnus-msg.el (gnus-post-method): Fix doc.
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40387
diff
changeset
|
49 If not `native' nor `current', the value must be a valid method as discussed |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
50 in the documentation of `gnus-select-method'. It can also be a list of |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
51 methods. If that is the case, the user will be queried for what select |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
52 method to use when posting." |
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
53 :group 'gnus-group-foreign |
43365
bcde2eb5438e
* gnus-msg.el (gnus-post-method): Fix doc.
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40387
diff
changeset
|
54 :link '(custom-manual "(gnus)Posting Server") |
bcde2eb5438e
* gnus-msg.el (gnus-post-method): Fix doc.
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40387
diff
changeset
|
55 :type `(choice (const native) |
bcde2eb5438e
* gnus-msg.el (gnus-post-method): Fix doc.
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
40387
diff
changeset
|
56 (const current) |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
57 (sexp :tag "Methods" ,gnus-select-method))) |
17493 | 58 |
88155 | 59 (defcustom gnus-outgoing-message-group nil |
17493 | 60 "*All outgoing messages will be put in this group. |
61 If you want to store all your outgoing mail and articles in the group | |
62 \"nnml:archive\", you set this variable to that value. This variable | |
63 can also be a list of group names. | |
64 | |
65 If you want to have greater control over what group to put each | |
66 message in, you can set this variable to a function that checks the | |
67 current newsgroup name and then returns a suitable group name (or list | |
88155 | 68 of names)." |
69 :group 'gnus-message | |
70 :type '(choice (const nil) | |
71 (function) | |
72 (string :tag "Group") | |
73 (repeat :tag "List of groups" (string :tag "Group")))) | |
17493 | 74 |
88155 | 75 (defcustom gnus-mailing-list-groups nil |
76 "*If non-nil a regexp matching groups that are really mailing lists. | |
17493 | 77 This is useful when you're reading a mailing list that has been |
78 gatewayed to a newsgroup, and you want to followup to an article in | |
88155 | 79 the group." |
80 :group 'gnus-message | |
81 :type '(choice (regexp) | |
82 (const nil))) | |
17493 | 83 |
88155 | 84 (defcustom gnus-add-to-list nil |
85 "*If non-nil, add a `to-list' parameter automatically." | |
86 :group 'gnus-message | |
87 :type 'boolean) | |
17493 | 88 |
88155 | 89 (defcustom gnus-crosspost-complaint |
17493 | 90 "Hi, |
91 | |
92 You posted the article below with the following Newsgroups header: | |
93 | |
94 Newsgroups: %s | |
95 | |
96 The %s group, at least, was an inappropriate recipient | |
97 of this message. Please trim your Newsgroups header to exclude this | |
98 group before posting in the future. | |
99 | |
100 Thank you. | |
101 | |
102 " | |
103 "Format string to be inserted when complaining about crossposts. | |
104 The first %s will be replaced by the Newsgroups header; | |
88155 | 105 the second with the current group name." |
106 :group 'gnus-message | |
107 :type 'string) | |
17493 | 108 |
88155 | 109 (defcustom gnus-message-setup-hook nil |
110 "Hook run after setting up a message buffer." | |
111 :group 'gnus-message | |
112 :type 'hook) | |
113 | |
114 (defcustom gnus-bug-create-help-buffer t | |
115 "*Should we create the *Gnus Help Bug* buffer?" | |
116 :group 'gnus-message | |
117 :type 'boolean) | |
17493 | 118 |
88155 | 119 (defcustom gnus-posting-styles nil |
120 "*Alist of styles to use when posting. | |
121 See Info node `(gnus)Posting Styles'." | |
122 :group 'gnus-message | |
123 :link '(custom-manual "(gnus)Posting Styles") | |
124 :type '(repeat (cons (choice (regexp) | |
125 (variable) | |
126 (list (const header) | |
127 (string :tag "Header") | |
128 (regexp :tag "Regexp")) | |
129 (function) | |
130 (sexp)) | |
131 (repeat (list | |
132 (choice (const signature) | |
133 (const signature-file) | |
134 (const organization) | |
135 (const address) | |
136 (const x-face-file) | |
137 (const name) | |
138 (const body) | |
139 (symbol) | |
140 (string :tag "Header")) | |
141 (choice (string) | |
142 (function) | |
143 (variable) | |
144 (sexp))))))) | |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
145 |
88155 | 146 (defcustom gnus-gcc-mark-as-read nil |
147 "If non-nil, automatically mark Gcc articles as read." | |
148 :version "22.1" | |
149 :group 'gnus-message | |
150 :type 'boolean) | |
151 | |
152 (make-obsolete-variable 'gnus-inews-mark-gcc-as-read | |
153 'gnus-gcc-mark-as-read) | |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
154 |
88155 | 155 (defcustom gnus-gcc-externalize-attachments nil |
156 "Should local-file attachments be included as external parts in Gcc copies? | |
157 If it is `all', attach files as external parts; | |
158 if a regexp and matches the Gcc group name, attach files as external parts; | |
159 if nil, attach files as normal parts." | |
160 :version "22.1" | |
161 :group 'gnus-message | |
162 :type '(choice (const nil :tag "None") | |
163 (const all :tag "Any") | |
164 (string :tag "Regexp"))) | |
165 | |
166 (gnus-define-group-parameter | |
167 posting-charset-alist | |
168 :type list | |
169 :function-document | |
170 "Return the permitted unencoded charsets for posting of GROUP." | |
171 :variable gnus-group-posting-charset-alist | |
172 :variable-default | |
34192
57a15e35e75b
* gnus-msg.el (gnus-msg-mail): COMPOSEFUNC should return t if
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
33342
diff
changeset
|
173 '(("^\\(no\\|fr\\)\\.[^,]*\\(,[ \t\n]*\\(no\\|fr\\)\\.[^,]*\\)*$" iso-8859-1 (iso-8859-1)) |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
174 ("^\\(fido7\\|relcom\\)\\.[^,]*\\(,[ \t\n]*\\(fido7\\|relcom\\)\\.[^,]*\\)*$" koi8-r (koi8-r)) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
175 (message-this-is-mail nil nil) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
176 (message-this-is-news nil t)) |
88155 | 177 :variable-document |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
178 "Alist of regexps and permitted unencoded charsets for posting. |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
179 Each element of the alist has the form (TEST HEADER BODY-LIST), where |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
180 TEST is either a regular expression matching the newsgroup header or a |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
181 variable to query, |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
182 HEADER is the charset which may be left unencoded in the header (nil |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
183 means encode all charsets), |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
184 BODY-LIST is a list of charsets which may be encoded using 8bit |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
185 content-transfer encoding in the body, or one of the special values |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
186 nil (always encode using quoted-printable) or t (always use 8bit). |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
187 |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
188 Note that any value other than nil for HEADER infringes some RFCs, so |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
189 use this option with care." |
88155 | 190 :variable-group gnus-charset |
191 :variable-type | |
192 '(repeat (list :tag "Permitted unencoded charsets" | |
193 (choice :tag "Where" | |
194 (regexp :tag "Group") | |
195 (const :tag "Mail message" :value message-this-is-mail) | |
196 (const :tag "News article" :value message-this-is-news)) | |
197 (choice :tag "Header" | |
198 (const :tag "None" nil) | |
199 (symbol :tag "Charset")) | |
200 (choice :tag "Body" | |
201 (const :tag "Any" :value t) | |
202 (const :tag "None" :value nil) | |
203 (repeat :tag "Charsets" | |
204 (symbol :tag "Charset"))))) | |
205 :parameter-type '(choice :tag "Permitted unencoded charsets" | |
206 :value nil | |
207 (repeat (symbol))) | |
208 :parameter-document "\ | |
209 List of charsets that are permitted to be unencoded.") | |
210 | |
211 (defcustom gnus-debug-files | |
212 '("gnus.el" "gnus-sum.el" "gnus-group.el" | |
213 "gnus-art.el" "gnus-start.el" "gnus-async.el" | |
214 "gnus-msg.el" "gnus-score.el" "gnus-win.el" "gnus-topic.el" | |
215 "gnus-agent.el" "gnus-cache.el" "gnus-srvr.el" | |
216 "mm-util.el" "mm-decode.el" "nnmail.el" "message.el") | |
217 "Files whose variables will be reported in `gnus-bug'." | |
218 :version "22.1" | |
219 :group 'gnus-message | |
220 :type '(repeat (string :tag "File"))) | |
221 | |
222 (defcustom gnus-debug-exclude-variables | |
223 '(mm-mime-mule-charset-alist | |
224 nnmail-split-fancy message-minibuffer-local-map) | |
225 "Variables that should not be reported in `gnus-bug'." | |
226 :version "22.1" | |
227 :group 'gnus-message | |
228 :type '(repeat (symbol :tag "Variable"))) | |
229 | |
230 (defcustom gnus-discouraged-post-methods | |
231 '(nndraft nnml nnimap nnmaildir nnmh nnfolder nndir) | |
232 "A list of back ends that are not used in \"real\" newsgroups. | |
233 This variable is used only when `gnus-post-method' is `current'." | |
234 :version "22.1" | |
235 :group 'gnus-group-foreign | |
236 :type '(repeat (symbol :tag "Back end"))) | |
237 | |
238 (defcustom gnus-message-replysign | |
239 nil | |
240 "Automatically sign replies to signed messages. | |
241 See also the `mml-default-sign-method' variable." | |
242 :group 'gnus-message | |
243 :type 'boolean) | |
244 | |
245 (defcustom gnus-message-replyencrypt | |
246 nil | |
247 "Automatically encrypt replies to encrypted messages. | |
248 See also the `mml-default-encrypt-method' variable." | |
249 :group 'gnus-message | |
250 :type 'boolean) | |
251 | |
252 (defcustom gnus-message-replysignencrypted | |
253 t | |
254 "Setting this causes automatically encrypted messages to also be signed." | |
255 :group 'gnus-message | |
256 :type 'boolean) | |
257 | |
258 (defcustom gnus-confirm-mail-reply-to-news nil | |
259 "If non-nil, Gnus requests confirmation when replying to news. | |
260 This is done because new users often reply by mistake when reading | |
261 news. | |
262 This can also be a function receiving the group name as the only | |
263 parameter which should return non-nil iff a confirmation is needed, or | |
264 a regexp, in which case a confirmation is asked for iff the group name | |
265 matches the regexp." | |
266 :version "22.1" | |
267 :group 'gnus-message | |
268 :type '(choice (const :tag "No" nil) | |
269 (const :tag "Yes" t) | |
270 (regexp :tag "Iff group matches regexp") | |
271 (function :tag "Iff function evaluates to non-nil"))) | |
272 | |
273 (defcustom gnus-confirm-treat-mail-like-news | |
274 nil | |
275 "If non-nil, Gnus will treat mail like news with regard to confirmation | |
276 when replying by mail. See the `gnus-confirm-mail-reply-to-news' variable | |
277 for fine-tuning this. | |
278 If nil, Gnus will never ask for confirmation if replying to mail." | |
279 :version "22.1" | |
280 :group 'gnus-message | |
281 :type 'boolean) | |
282 | |
283 (defcustom gnus-summary-resend-default-address t | |
284 "If non-nil, Gnus tries to suggest a default address to resend to. | |
285 If nil, the address field will always be empty after invoking | |
286 `gnus-summary-resend-message'." | |
287 :version "22.1" | |
288 :group 'gnus-message | |
289 :type 'boolean) | |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
290 |
17493 | 291 ;;; Internal variables. |
292 | |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
293 (defvar gnus-inhibit-posting-styles nil |
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
294 "Inhibit the use of posting styles.") |
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
295 |
88155 | 296 (defvar gnus-article-yanked-articles nil) |
17493 | 297 (defvar gnus-message-buffer "*Mail Gnus*") |
298 (defvar gnus-article-copy nil) | |
88155 | 299 (defvar gnus-check-before-posting nil) |
17493 | 300 (defvar gnus-last-posting-server nil) |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
301 (defvar gnus-message-group-art nil) |
17493 | 302 |
88155 | 303 (defvar gnus-msg-force-broken-reply-to nil) |
304 | |
17493 | 305 (defconst gnus-bug-message |
306 "Sending a bug report to the Gnus Towers. | |
307 ======================================== | |
308 | |
309 The buffer below is a mail buffer. When you press `C-c C-c', it will | |
310 be sent to the Gnus Bug Exterminators. | |
311 | |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
312 The thing near the bottom of the buffer is how the environment |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
313 settings will be included in the mail. Please do not delete that. |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
314 They will tell the Bug People what your environment is, so that it |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
315 will be easier to locate the bugs. |
17493 | 316 |
317 If you have found a bug that makes Emacs go \"beep\", set | |
318 debug-on-error to t (`M-x set-variable RET debug-on-error RET t RET') | |
319 and include the backtrace in your bug report. | |
320 | |
321 Please describe the bug in annoying, painstaking detail. | |
322 | |
323 Thank you for your help in stamping out bugs. | |
324 ") | |
325 | |
326 (eval-and-compile | |
327 (autoload 'gnus-uu-post-news "gnus-uu" nil t) | |
88155 | 328 (autoload 'news-setup "rnewspost") |
329 (autoload 'news-reply-mode "rnewspost") | |
17493 | 330 (autoload 'rmail-dont-reply-to "mail-utils") |
331 (autoload 'rmail-output "rmailout")) | |
332 | |
333 | |
334 ;;; | |
335 ;;; Gnus Posting Functions | |
336 ;;; | |
337 | |
338 (gnus-define-keys (gnus-summary-send-map "S" gnus-summary-mode-map) | |
339 "p" gnus-summary-post-news | |
88155 | 340 "i" gnus-summary-news-other-window |
17493 | 341 "f" gnus-summary-followup |
342 "F" gnus-summary-followup-with-original | |
343 "c" gnus-summary-cancel-article | |
344 "s" gnus-summary-supersede-article | |
345 "r" gnus-summary-reply | |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
346 "y" gnus-summary-yank-message |
17493 | 347 "R" gnus-summary-reply-with-original |
348 "w" gnus-summary-wide-reply | |
349 "W" gnus-summary-wide-reply-with-original | |
88155 | 350 "v" gnus-summary-very-wide-reply |
351 "V" gnus-summary-very-wide-reply-with-original | |
17493 | 352 "n" gnus-summary-followup-to-mail |
353 "N" gnus-summary-followup-to-mail-with-original | |
354 "m" gnus-summary-mail-other-window | |
355 "u" gnus-uu-post-news | |
356 "\M-c" gnus-summary-mail-crosspost-complaint | |
88155 | 357 "Br" gnus-summary-reply-broken-reply-to |
358 "BR" gnus-summary-reply-broken-reply-to-with-original | |
17493 | 359 "om" gnus-summary-mail-forward |
360 "op" gnus-summary-post-forward | |
361 "Om" gnus-uu-digest-mail-forward | |
362 "Op" gnus-uu-digest-post-forward) | |
363 | |
364 (gnus-define-keys (gnus-send-bounce-map "D" gnus-summary-send-map) | |
365 "b" gnus-summary-resend-bounced-mail | |
366 ;; "c" gnus-summary-send-draft | |
88155 | 367 "r" gnus-summary-resend-message |
368 "e" gnus-summary-resend-message-edit) | |
17493 | 369 |
370 ;;; Internal functions. | |
371 | |
88155 | 372 (defun gnus-inews-make-draft () |
373 `(lambda () | |
374 (gnus-inews-make-draft-meta-information | |
375 ,gnus-newsgroup-name ',gnus-article-reply))) | |
376 | |
17493 | 377 (defvar gnus-article-reply nil) |
378 (defmacro gnus-setup-message (config &rest forms) | |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
379 (let ((winconf (make-symbol "gnus-setup-message-winconf")) |
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
380 (buffer (make-symbol "gnus-setup-message-buffer")) |
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
381 (article (make-symbol "gnus-setup-message-article")) |
88155 | 382 (yanked (make-symbol "gnus-setup-yanked-articles")) |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
383 (group (make-symbol "gnus-setup-message-group"))) |
17493 | 384 `(let ((,winconf (current-window-configuration)) |
385 (,buffer (buffer-name (current-buffer))) | |
88155 | 386 (,article gnus-article-reply) |
387 (,yanked gnus-article-yanked-articles) | |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
388 (,group gnus-newsgroup-name) |
17493 | 389 (message-header-setup-hook |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
390 (copy-sequence message-header-setup-hook)) |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
391 (mbl mml-buffer-list) |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
392 (message-mode-hook (copy-sequence message-mode-hook))) |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
393 (setq mml-buffer-list nil) |
17493 | 394 (add-hook 'message-header-setup-hook 'gnus-inews-insert-gcc) |
395 (add-hook 'message-header-setup-hook 'gnus-inews-insert-archive-gcc) | |
88155 | 396 ;; #### FIXME: for a reason that I did not manage to identify yet, |
397 ;; the variable `gnus-newsgroup-name' does not honor a dynamically | |
398 ;; scoped or setq'ed value from a caller like `C-u gnus-summary-mail'. | |
399 ;; After evaluation of @forms below, it gets the value we actually want | |
400 ;; to override, and the posting styles are used. For that reason, I've | |
401 ;; added an optional argument to `gnus-configure-posting-styles' to | |
402 ;; make sure that the correct value for the group name is used. -- drv | |
403 (add-hook 'message-mode-hook | |
404 (if (memq ,config '(reply-yank reply)) | |
405 (lambda () | |
406 (gnus-configure-posting-styles ,group)) | |
407 (lambda () | |
408 ;; There may be an old " *gnus article copy*" buffer. | |
409 (let (gnus-article-copy) | |
410 (gnus-configure-posting-styles ,group))))) | |
411 (gnus-pull ',(intern gnus-draft-meta-information-header) | |
412 message-required-headers) | |
413 (when (and ,group | |
414 (not (string= ,group ""))) | |
415 (push (cons | |
416 (intern gnus-draft-meta-information-header) | |
417 (gnus-inews-make-draft)) | |
418 message-required-headers)) | |
17493 | 419 (unwind-protect |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
420 (progn |
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
421 ,@forms) |
88155 | 422 (gnus-inews-add-send-actions ,winconf ,buffer ,article ,config |
423 ,yanked) | |
17493 | 424 (setq gnus-message-buffer (current-buffer)) |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
425 (set (make-local-variable 'gnus-message-group-art) |
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
426 (cons ,group ,article)) |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
427 (set (make-local-variable 'gnus-newsgroup-name) ,group) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
428 (gnus-run-hooks 'gnus-message-setup-hook) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
429 (if (eq major-mode 'message-mode) |
34192
57a15e35e75b
* gnus-msg.el (gnus-msg-mail): COMPOSEFUNC should return t if
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
33342
diff
changeset
|
430 (let ((mbl1 mml-buffer-list)) |
57a15e35e75b
* gnus-msg.el (gnus-msg-mail): COMPOSEFUNC should return t if
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
33342
diff
changeset
|
431 (setq mml-buffer-list mbl) ;; Global value |
57a15e35e75b
* gnus-msg.el (gnus-msg-mail): COMPOSEFUNC should return t if
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
33342
diff
changeset
|
432 (set (make-local-variable 'mml-buffer-list) mbl1);; Local value |
88155 | 433 (gnus-make-local-hook 'kill-buffer-hook) |
434 (gnus-make-local-hook 'change-major-mode-hook) | |
40387
8421000daff7
(gnus-setup-message): Setup reaper for MML buffers.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
34797
diff
changeset
|
435 (add-hook 'change-major-mode-hook 'mml-destroy-buffers nil t) |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
436 (add-hook 'kill-buffer-hook 'mml-destroy-buffers t t)) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
437 (mml-destroy-buffers) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
438 (setq mml-buffer-list mbl))) |
88155 | 439 (message-hide-headers) |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
440 (gnus-add-buffer) |
17493 | 441 (gnus-configure-windows ,config t) |
88155 | 442 (run-hooks 'post-command-hook) |
17493 | 443 (set-buffer-modified-p nil)))) |
444 | |
88155 | 445 (defun gnus-inews-make-draft-meta-information (group article) |
446 (concat "(\"" group "\" " | |
447 (if article (number-to-string | |
448 (if (listp article) | |
449 (car article) | |
450 article)) "\"\"") | |
451 ")")) | |
452 | |
34192
57a15e35e75b
* gnus-msg.el (gnus-msg-mail): COMPOSEFUNC should return t if
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
33342
diff
changeset
|
453 ;;;###autoload |
88155 | 454 (defun gnus-msg-mail (&optional to subject other-headers continue |
455 switch-action yank-action send-actions) | |
34192
57a15e35e75b
* gnus-msg.el (gnus-msg-mail): COMPOSEFUNC should return t if
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
33342
diff
changeset
|
456 "Start editing a mail message to be sent. |
57a15e35e75b
* gnus-msg.el (gnus-msg-mail): COMPOSEFUNC should return t if
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
33342
diff
changeset
|
457 Like `message-mail', but with Gnus paraphernalia, particularly the |
57a15e35e75b
* gnus-msg.el (gnus-msg-mail): COMPOSEFUNC should return t if
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
33342
diff
changeset
|
458 Gcc: header for archiving purposes." |
57a15e35e75b
* gnus-msg.el (gnus-msg-mail): COMPOSEFUNC should return t if
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
33342
diff
changeset
|
459 (interactive) |
88155 | 460 (let ((buf (current-buffer)) |
461 mail-buf) | |
462 (gnus-setup-message 'message | |
463 (message-mail to subject other-headers continue | |
464 nil yank-action send-actions)) | |
465 (when switch-action | |
466 (setq mail-buf (current-buffer)) | |
467 (switch-to-buffer buf) | |
468 (apply switch-action mail-buf nil))) | |
34192
57a15e35e75b
* gnus-msg.el (gnus-msg-mail): COMPOSEFUNC should return t if
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
33342
diff
changeset
|
469 ;; COMPOSEFUNC should return t if succeed. Undocumented ??? |
57a15e35e75b
* gnus-msg.el (gnus-msg-mail): COMPOSEFUNC should return t if
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
33342
diff
changeset
|
470 t) |
57a15e35e75b
* gnus-msg.el (gnus-msg-mail): COMPOSEFUNC should return t if
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
33342
diff
changeset
|
471 |
57a15e35e75b
* gnus-msg.el (gnus-msg-mail): COMPOSEFUNC should return t if
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
33342
diff
changeset
|
472 ;;;###autoload |
88155 | 473 (defun gnus-button-mailto (address) |
474 "Mail to ADDRESS." | |
475 (set-buffer (gnus-copy-article-buffer)) | |
476 (gnus-setup-message 'message | |
477 (message-reply address))) | |
478 | |
479 ;;;###autoload | |
480 (defun gnus-button-reply (&optional to-address wide) | |
481 "Like `message-reply'." | |
482 (interactive) | |
483 (gnus-setup-message 'message | |
484 (message-reply to-address wide))) | |
485 | |
486 ;;;###autoload | |
34192
57a15e35e75b
* gnus-msg.el (gnus-msg-mail): COMPOSEFUNC should return t if
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
33342
diff
changeset
|
487 (define-mail-user-agent 'gnus-user-agent |
88155 | 488 'gnus-msg-mail 'message-send-and-exit |
489 'message-kill-buffer 'message-send-hook) | |
34192
57a15e35e75b
* gnus-msg.el (gnus-msg-mail): COMPOSEFUNC should return t if
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
33342
diff
changeset
|
490 |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
491 (defun gnus-setup-posting-charset (group) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
492 (let ((alist gnus-group-posting-charset-alist) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
493 (group (or group "")) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
494 elem) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
495 (when group |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
496 (catch 'found |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
497 (while (setq elem (pop alist)) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
498 (when (or (and (stringp (car elem)) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
499 (string-match (car elem) group)) |
88155 | 500 (and (functionp (car elem)) |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
501 (funcall (car elem) group)) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
502 (and (symbolp (car elem)) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
503 (symbol-value (car elem)))) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
504 (throw 'found (cons (cadr elem) (caddr elem))))))))) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
505 |
88155 | 506 (defun gnus-inews-add-send-actions (winconf buffer article |
507 &optional config yanked) | |
508 (gnus-make-local-hook 'message-sent-hook) | |
33271
9b3030bf32fc
2000-11-06 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
31785
diff
changeset
|
509 (add-hook 'message-sent-hook (if gnus-agent 'gnus-agent-possibly-do-gcc |
9b3030bf32fc
2000-11-06 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
31785
diff
changeset
|
510 'gnus-inews-do-gcc) nil t) |
9b3030bf32fc
2000-11-06 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
31785
diff
changeset
|
511 (when gnus-agent |
88155 | 512 (gnus-make-local-hook 'message-header-hook) |
33271
9b3030bf32fc
2000-11-06 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
31785
diff
changeset
|
513 (add-hook 'message-header-hook 'gnus-agent-possibly-save-gcc nil t)) |
17493 | 514 (setq message-post-method |
515 `(lambda (arg) | |
516 (gnus-post-method arg ,gnus-newsgroup-name))) | |
517 (setq message-newsreader (setq message-mailer (gnus-extended-version))) | |
518 (message-add-action | |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
519 `(when (gnus-buffer-exists-p ,buffer) |
88155 | 520 (set-window-configuration ,winconf)) |
521 'exit 'postpone 'kill) | |
522 (let ((to-be-marked (cond | |
523 (yanked | |
524 (mapcar | |
525 (lambda (x) (if (listp x) (car x) x)) yanked)) | |
526 (article (if (listp article) article (list article))) | |
527 (t nil)))) | |
528 (message-add-action | |
529 `(when (gnus-buffer-exists-p ,buffer) | |
530 (save-excursion | |
531 (set-buffer ,buffer) | |
532 ,(when to-be-marked | |
533 (if (eq config 'forward) | |
534 `(gnus-summary-mark-article-as-forwarded ',to-be-marked) | |
535 `(gnus-summary-mark-article-as-replied ',to-be-marked))))) | |
536 'send))) | |
17493 | 537 |
538 (put 'gnus-setup-message 'lisp-indent-function 1) | |
539 (put 'gnus-setup-message 'edebug-form-spec '(form body)) | |
540 | |
541 ;;; Post news commands of Gnus group mode and summary mode | |
542 | |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
543 (defun gnus-group-mail (&optional arg) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
544 "Start composing a mail. |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
545 If ARG, use the group under the point to find a posting style. |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
546 If ARG is 1, prompt for a group name to find the posting style." |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
547 (interactive "P") |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
548 ;; We can't `let' gnus-newsgroup-name here, since that leads |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
549 ;; to local variables leaking. |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
550 (let ((group gnus-newsgroup-name) |
88155 | 551 ;; make sure last viewed article doesn't affect posting styles: |
552 (gnus-article-copy) | |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
553 (buffer (current-buffer))) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
554 (unwind-protect |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
555 (progn |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
556 (setq gnus-newsgroup-name |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
557 (if arg |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
558 (if (= 1 (prefix-numeric-value arg)) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
559 (completing-read "Use posting style of group: " |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
560 gnus-active-hashtb nil |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
561 (gnus-read-active-file-p)) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
562 (gnus-group-group-name)) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
563 "")) |
88155 | 564 ;; #### see comment in gnus-setup-message -- drv |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
565 (gnus-setup-message 'message (message-mail))) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
566 (save-excursion |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
567 (set-buffer buffer) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
568 (setq gnus-newsgroup-name group))))) |
17493 | 569 |
88155 | 570 (defun gnus-group-news (&optional arg) |
571 "Start composing a news. | |
572 If ARG, post to group under point. | |
573 If ARG is 1, prompt for group name to post to. | |
574 | |
575 This function prepares a news even when using mail groups. This is useful | |
576 for posting messages to mail groups without actually sending them over the | |
577 network. The corresponding back end must have a 'request-post method." | |
578 (interactive "P") | |
579 ;; We can't `let' gnus-newsgroup-name here, since that leads | |
580 ;; to local variables leaking. | |
581 (let ((group gnus-newsgroup-name) | |
582 ;; make sure last viewed article doesn't affect posting styles: | |
583 (gnus-article-copy) | |
584 (buffer (current-buffer))) | |
585 (unwind-protect | |
586 (progn | |
587 (setq gnus-newsgroup-name | |
588 (if arg | |
589 (if (= 1 (prefix-numeric-value arg)) | |
590 (completing-read "Use group: " | |
591 gnus-active-hashtb nil | |
592 (gnus-read-active-file-p)) | |
593 (gnus-group-group-name)) | |
594 "")) | |
595 ;; #### see comment in gnus-setup-message -- drv | |
596 (gnus-setup-message 'message | |
597 (message-news (gnus-group-real-name gnus-newsgroup-name)))) | |
598 (save-excursion | |
599 (set-buffer buffer) | |
600 (setq gnus-newsgroup-name group))))) | |
601 | |
17493 | 602 (defun gnus-group-post-news (&optional arg) |
88155 | 603 "Start composing a message (a news by default). |
604 If ARG, post to group under point. If ARG is 1, prompt for group name. | |
605 Depending on the selected group, the message might be either a mail or | |
606 a news." | |
17493 | 607 (interactive "P") |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
608 ;; Bind this variable here to make message mode hooks work ok. |
17493 | 609 (let ((gnus-newsgroup-name |
610 (if arg | |
611 (if (= 1 (prefix-numeric-value arg)) | |
612 (completing-read "Newsgroup: " gnus-active-hashtb nil | |
613 (gnus-read-active-file-p)) | |
614 (gnus-group-group-name)) | |
88155 | 615 "")) |
616 ;; make sure last viewed article doesn't affect posting styles: | |
617 (gnus-article-copy)) | |
618 (gnus-post-news 'post gnus-newsgroup-name nil nil nil nil | |
619 (string= gnus-newsgroup-name "")))) | |
620 | |
621 (defun gnus-summary-mail-other-window (&optional arg) | |
622 "Start composing a mail in another window. | |
623 Use the posting of the current group by default. | |
624 If ARG, don't do that. If ARG is 1, prompt for group name to find the | |
625 posting style." | |
626 (interactive "P") | |
627 ;; We can't `let' gnus-newsgroup-name here, since that leads | |
628 ;; to local variables leaking. | |
629 (let ((group gnus-newsgroup-name) | |
630 ;; make sure last viewed article doesn't affect posting styles: | |
631 (gnus-article-copy) | |
632 (buffer (current-buffer))) | |
633 (unwind-protect | |
634 (progn | |
635 (setq gnus-newsgroup-name | |
636 (if arg | |
637 (if (= 1 (prefix-numeric-value arg)) | |
638 (completing-read "Use group: " | |
639 gnus-active-hashtb nil | |
640 (gnus-read-active-file-p)) | |
641 "") | |
642 gnus-newsgroup-name)) | |
643 ;; #### see comment in gnus-setup-message -- drv | |
644 (gnus-setup-message 'message (message-mail))) | |
645 (save-excursion | |
646 (set-buffer buffer) | |
647 (setq gnus-newsgroup-name group))))) | |
648 | |
649 (defun gnus-summary-news-other-window (&optional arg) | |
650 "Start composing a news in another window. | |
651 Post to the current group by default. | |
652 If ARG, don't do that. If ARG is 1, prompt for group name to post to. | |
653 | |
654 This function prepares a news even when using mail groups. This is useful | |
655 for posting messages to mail groups without actually sending them over the | |
656 network. The corresponding back end must have a 'request-post method." | |
657 (interactive "P") | |
658 ;; We can't `let' gnus-newsgroup-name here, since that leads | |
659 ;; to local variables leaking. | |
660 (let ((group gnus-newsgroup-name) | |
661 ;; make sure last viewed article doesn't affect posting styles: | |
662 (gnus-article-copy) | |
663 (buffer (current-buffer))) | |
664 (unwind-protect | |
665 (progn | |
666 (setq gnus-newsgroup-name | |
667 (if arg | |
668 (if (= 1 (prefix-numeric-value arg)) | |
669 (completing-read "Use group: " | |
670 gnus-active-hashtb nil | |
671 (gnus-read-active-file-p)) | |
672 "") | |
673 gnus-newsgroup-name)) | |
674 ;; #### see comment in gnus-setup-message -- drv | |
675 (gnus-setup-message 'message | |
676 (progn | |
677 (message-news (gnus-group-real-name gnus-newsgroup-name)) | |
678 (set (make-local-variable 'gnus-discouraged-post-methods) | |
679 (delq | |
680 (car (gnus-find-method-for-group gnus-newsgroup-name)) | |
681 (copy-sequence gnus-discouraged-post-methods)))))) | |
682 (save-excursion | |
683 (set-buffer buffer) | |
684 (setq gnus-newsgroup-name group))))) | |
685 | |
686 (defun gnus-summary-post-news (&optional arg) | |
687 "Start composing a message. Post to the current group by default. | |
688 If ARG, don't do that. If ARG is 1, prompt for a group name to post to. | |
689 Depending on the selected group, the message might be either a mail or | |
690 a news." | |
691 (interactive "P") | |
692 ;; Bind this variable here to make message mode hooks work ok. | |
693 (let ((gnus-newsgroup-name | |
694 (if arg | |
695 (if (= 1 (prefix-numeric-value arg)) | |
696 (completing-read "Newsgroup: " gnus-active-hashtb nil | |
697 (gnus-read-active-file-p)) | |
698 "") | |
699 gnus-newsgroup-name)) | |
700 ;; make sure last viewed article doesn't affect posting styles: | |
701 (gnus-article-copy)) | |
17493 | 702 (gnus-post-news 'post gnus-newsgroup-name))) |
703 | |
704 | |
705 (defun gnus-summary-followup (yank &optional force-news) | |
706 "Compose a followup to an article. | |
88155 | 707 If prefix argument YANK is non-nil, the original article is yanked |
708 automatically. | |
709 YANK is a list of elements, where the car of each element is the | |
710 article number, and the cdr is the string to be yanked." | |
17493 | 711 (interactive |
712 (list (and current-prefix-arg | |
713 (gnus-summary-work-articles 1)))) | |
714 (when yank | |
88155 | 715 (gnus-summary-goto-subject |
716 (if (listp (car yank)) | |
717 (caar yank) | |
718 (car yank)))) | |
17493 | 719 (save-window-excursion |
720 (gnus-summary-select-article)) | |
721 (let ((headers (gnus-summary-article-header (gnus-summary-article-number))) | |
722 (gnus-newsgroup-name gnus-newsgroup-name)) | |
723 ;; Send a followup. | |
724 (gnus-post-news nil gnus-newsgroup-name | |
725 headers gnus-article-buffer | |
88155 | 726 yank nil force-news) |
727 (gnus-summary-handle-replysign))) | |
17493 | 728 |
729 (defun gnus-summary-followup-with-original (n &optional force-news) | |
88155 | 730 "Compose a followup to an article and include the original article. |
731 The text in the region will be yanked. If the region isn't | |
732 active, the entire article will be yanked." | |
17493 | 733 (interactive "P") |
734 (gnus-summary-followup (gnus-summary-work-articles n) force-news)) | |
735 | |
736 (defun gnus-summary-followup-to-mail (&optional arg) | |
737 "Followup to the current mail message via news." | |
738 (interactive | |
739 (list (and current-prefix-arg | |
740 (gnus-summary-work-articles 1)))) | |
741 (gnus-summary-followup arg t)) | |
742 | |
743 (defun gnus-summary-followup-to-mail-with-original (&optional arg) | |
744 "Followup to the current mail message via news." | |
745 (interactive "P") | |
746 (gnus-summary-followup (gnus-summary-work-articles arg) t)) | |
747 | |
748 (defun gnus-inews-yank-articles (articles) | |
88155 | 749 (let (beg article yank-string) |
17493 | 750 (message-goto-body) |
751 (while (setq article (pop articles)) | |
88155 | 752 (when (listp article) |
753 (setq yank-string (nth 1 article) | |
754 article (nth 0 article))) | |
17493 | 755 (save-window-excursion |
756 (set-buffer gnus-summary-buffer) | |
757 (gnus-summary-select-article nil nil nil article) | |
758 (gnus-summary-remove-process-mark article)) | |
88155 | 759 (gnus-copy-article-buffer nil yank-string) |
17493 | 760 (let ((message-reply-buffer gnus-article-copy) |
88155 | 761 (message-reply-headers |
762 ;; The headers are decoded. | |
763 (with-current-buffer gnus-article-copy | |
764 (save-restriction | |
765 (nnheader-narrow-to-headers) | |
766 (nnheader-parse-naked-head))))) | |
17493 | 767 (message-yank-original) |
768 (setq beg (or beg (mark t)))) | |
769 (when articles | |
770 (insert "\n"))) | |
771 (push-mark) | |
772 (goto-char beg))) | |
773 | |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
774 (defun gnus-summary-cancel-article (&optional n symp) |
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
775 "Cancel an article you posted. |
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
776 Uses the process-prefix convention. If given the symbolic |
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
777 prefix `a', cancel using the standard posting method; if not |
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
778 post using the current select method." |
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
779 (interactive (gnus-interactive "P\ny")) |
17493 | 780 (let ((articles (gnus-summary-work-articles n)) |
781 (message-post-method | |
782 `(lambda (arg) | |
88155 | 783 (gnus-post-method (eq ',symp 'a) ,gnus-newsgroup-name))) |
17493 | 784 article) |
785 (while (setq article (pop articles)) | |
786 (when (gnus-summary-select-article t nil nil article) | |
787 (when (gnus-eval-in-buffer-window gnus-original-article-buffer | |
788 (message-cancel-news)) | |
789 (gnus-summary-mark-as-read article gnus-canceled-mark) | |
790 (gnus-cache-remove-article 1)) | |
791 (gnus-article-hide-headers-if-wanted)) | |
792 (gnus-summary-remove-process-mark article)))) | |
793 | |
794 (defun gnus-summary-supersede-article () | |
795 "Compose an article that will supersede a previous article. | |
796 This is done simply by taking the old article and adding a Supersedes | |
797 header line with the old Message-ID." | |
798 (interactive) | |
799 (let ((article (gnus-summary-article-number))) | |
800 (gnus-setup-message 'reply-yank | |
801 (gnus-summary-select-article t) | |
802 (set-buffer gnus-original-article-buffer) | |
803 (message-supersede) | |
804 (push | |
805 `((lambda () | |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
806 (when (gnus-buffer-exists-p ,gnus-summary-buffer) |
17493 | 807 (save-excursion |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
808 (set-buffer ,gnus-summary-buffer) |
17493 | 809 (gnus-cache-possibly-remove-article ,article nil nil nil t) |
810 (gnus-summary-mark-as-read ,article gnus-canceled-mark))))) | |
811 message-send-actions)))) | |
34192
57a15e35e75b
* gnus-msg.el (gnus-msg-mail): COMPOSEFUNC should return t if
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
33342
diff
changeset
|
812 |
17493 | 813 |
814 | |
88155 | 815 (defun gnus-copy-article-buffer (&optional article-buffer yank-string) |
17493 | 816 ;; make a copy of the article buffer with all text properties removed |
817 ;; this copy is in the buffer gnus-article-copy. | |
818 ;; if ARTICLE-BUFFER is nil, gnus-article-buffer is used | |
819 ;; this buffer should be passed to all mail/news reply/post routines. | |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
820 (setq gnus-article-copy (gnus-get-buffer-create " *gnus article copy*")) |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
821 (save-excursion |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
822 (set-buffer gnus-article-copy) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
823 (mm-enable-multibyte)) |
17493 | 824 (let ((article-buffer (or article-buffer gnus-article-buffer)) |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
825 end beg) |
17493 | 826 (if (not (and (get-buffer article-buffer) |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
827 (gnus-buffer-exists-p article-buffer))) |
17493 | 828 (error "Can't find any article buffer") |
829 (save-excursion | |
830 (set-buffer article-buffer) | |
88155 | 831 (let ((gnus-newsgroup-charset (or gnus-article-charset |
832 gnus-newsgroup-charset)) | |
833 (gnus-newsgroup-ignored-charsets | |
834 (or gnus-article-ignored-charsets | |
835 gnus-newsgroup-ignored-charsets))) | |
836 (save-restriction | |
837 ;; Copy over the (displayed) article buffer, delete | |
838 ;; hidden text and remove text properties. | |
839 (widen) | |
840 (copy-to-buffer gnus-article-copy (point-min) (point-max)) | |
841 (set-buffer gnus-article-copy) | |
842 (when yank-string | |
843 (message-goto-body) | |
844 (delete-region (point) (point-max)) | |
845 (insert yank-string)) | |
846 (gnus-article-delete-text-of-type 'annotation) | |
847 (gnus-article-delete-text-of-type 'multipart) | |
848 (gnus-remove-text-with-property 'gnus-prev) | |
849 (gnus-remove-text-with-property 'gnus-next) | |
850 (gnus-remove-text-with-property 'gnus-decoration) | |
851 (insert | |
852 (prog1 | |
853 (buffer-substring-no-properties (point-min) (point-max)) | |
854 (erase-buffer))) | |
855 ;; Find the original headers. | |
856 (set-buffer gnus-original-article-buffer) | |
857 (goto-char (point-min)) | |
858 (while (looking-at message-unix-mail-delimiter) | |
859 (forward-line 1)) | |
860 (let ((mail-header-separator "")) | |
861 (setq beg (point) | |
862 end (or (message-goto-body) | |
863 ;; There may be just a header. | |
864 (point-max)))) | |
865 ;; Delete the headers from the displayed articles. | |
866 (set-buffer gnus-article-copy) | |
867 (let ((mail-header-separator "")) | |
868 (delete-region (goto-char (point-min)) | |
869 (or (message-goto-body) (point-max)))) | |
870 ;; Insert the original article headers. | |
871 (insert-buffer-substring gnus-original-article-buffer beg end) | |
872 ;; Decode charsets. | |
873 (let ((gnus-article-decode-hook | |
874 (delq 'article-decode-charset | |
875 (copy-sequence gnus-article-decode-hook))) | |
876 (rfc2047-quote-decoded-words-containing-tspecials t)) | |
877 (run-hooks 'gnus-article-decode-hook))))) | |
17493 | 878 gnus-article-copy))) |
879 | |
880 (defun gnus-post-news (post &optional group header article-buffer yank subject | |
881 force-news) | |
882 (when article-buffer | |
883 (gnus-copy-article-buffer)) | |
88155 | 884 (let ((gnus-article-reply (and article-buffer (gnus-summary-article-number))) |
885 (gnus-article-yanked-articles yank) | |
17493 | 886 (add-to-list gnus-add-to-list)) |
887 (gnus-setup-message (cond (yank 'reply-yank) | |
888 (article-buffer 'reply) | |
889 (t 'message)) | |
890 (let* ((group (or group gnus-newsgroup-name)) | |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
891 (charset (gnus-group-name-charset nil group)) |
17493 | 892 (pgroup group) |
893 to-address to-group mailing-list to-list | |
894 newsgroup-p) | |
895 (when group | |
88155 | 896 (setq to-address (gnus-parameter-to-address group) |
17493 | 897 to-group (gnus-group-find-parameter group 'to-group) |
88155 | 898 to-list (gnus-parameter-to-list group) |
17493 | 899 newsgroup-p (gnus-group-find-parameter group 'newsgroup) |
900 mailing-list (when gnus-mailing-list-groups | |
901 (string-match gnus-mailing-list-groups group)) | |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
902 group (gnus-group-name-decode (gnus-group-real-name group) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
903 charset))) |
17493 | 904 (if (or (and to-group |
905 (gnus-news-group-p to-group)) | |
906 newsgroup-p | |
907 force-news | |
908 (and (gnus-news-group-p | |
909 (or pgroup gnus-newsgroup-name) | |
88155 | 910 (or header gnus-current-article)) |
17493 | 911 (not mailing-list) |
912 (not to-list) | |
913 (not to-address))) | |
914 ;; This is news. | |
915 (if post | |
88155 | 916 (message-news |
917 (or to-group | |
918 (and (not (gnus-virtual-group-p pgroup)) group))) | |
17493 | 919 (set-buffer gnus-article-copy) |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
920 (gnus-msg-treat-broken-reply-to) |
88155 | 921 (message-followup (if (or newsgroup-p force-news) |
922 (if (save-restriction | |
923 (article-narrow-to-head) | |
924 (message-fetch-field "newsgroups")) | |
925 nil | |
926 "") | |
927 to-group))) | |
17493 | 928 ;; The is mail. |
929 (if post | |
930 (progn | |
931 (message-mail (or to-address to-list)) | |
932 ;; Arrange for mail groups that have no `to-address' to | |
933 ;; get that when the user sends off the mail. | |
934 (when (and (not to-list) | |
935 (not to-address) | |
936 add-to-list) | |
937 (push (list 'gnus-inews-add-to-address pgroup) | |
938 message-send-actions))) | |
939 (set-buffer gnus-article-copy) | |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
940 (gnus-msg-treat-broken-reply-to) |
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
941 (message-wide-reply to-address))) |
17493 | 942 (when yank |
943 (gnus-inews-yank-articles yank)))))) | |
944 | |
88155 | 945 (defun gnus-msg-treat-broken-reply-to (&optional force) |
48588 | 946 "Remove the Reply-to header if broken-reply-to." |
88155 | 947 (when (or force |
948 (gnus-group-find-parameter | |
949 gnus-newsgroup-name 'broken-reply-to)) | |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
950 (save-restriction |
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
951 (message-narrow-to-head) |
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
952 (message-remove-header "reply-to")))) |
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
953 |
17493 | 954 (defun gnus-post-method (arg group &optional silent) |
955 "Return the posting method based on GROUP and ARG. | |
956 If SILENT, don't prompt the user." | |
88155 | 957 (let ((gnus-post-method (or (gnus-parameter-post-method group) |
958 gnus-post-method)) | |
959 (group-method (gnus-find-method-for-group group))) | |
17493 | 960 (cond |
961 ;; If the group-method is nil (which shouldn't happen) we use | |
962 ;; the default method. | |
963 ((null group-method) | |
88155 | 964 (or (and (listp gnus-post-method) ;If not current/native/nil |
965 (not (listp (car gnus-post-method))) ; and not a list of methods | |
966 gnus-post-method) ;then use it. | |
967 gnus-select-method | |
968 message-post-method)) | |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
969 ;; We want the inverse of the default |
17493 | 970 ((and arg (not (eq arg 0))) |
88155 | 971 (if (eq gnus-post-method 'current) |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
972 gnus-select-method |
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
973 group-method)) |
17493 | 974 ;; We query the user for a post method. |
975 ((or arg | |
88155 | 976 (and (listp gnus-post-method) |
17493 | 977 (listp (car gnus-post-method)))) |
978 (let* ((methods | |
979 ;; Collect all methods we know about. | |
980 (append | |
88155 | 981 (when (listp gnus-post-method) |
17493 | 982 (if (listp (car gnus-post-method)) |
983 gnus-post-method | |
984 (list gnus-post-method))) | |
985 gnus-secondary-select-methods | |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
986 (mapcar 'cdr gnus-server-alist) |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
987 (mapcar 'car gnus-opened-servers) |
17493 | 988 (list gnus-select-method) |
989 (list group-method))) | |
990 method-alist post-methods method) | |
991 ;; Weed out all mail methods. | |
992 (while methods | |
993 (setq method (gnus-server-get-method "" (pop methods))) | |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
994 (when (and (or (gnus-method-option-p method 'post) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
995 (gnus-method-option-p method 'post-mail)) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
996 (not (member method post-methods))) |
17493 | 997 (push method post-methods))) |
998 ;; Create a name-method alist. | |
999 (setq method-alist | |
1000 (mapcar | |
1001 (lambda (m) | |
88155 | 1002 (if (equal (cadr m) "") |
1003 (list (symbol-name (car m)) m) | |
1004 (list (concat (cadr m) " (" (symbol-name (car m)) ")") m))) | |
17493 | 1005 post-methods)) |
1006 ;; Query the user. | |
1007 (cadr | |
1008 (assoc | |
1009 (setq gnus-last-posting-server | |
1010 (if (and silent | |
1011 gnus-last-posting-server) | |
1012 ;; Just use the last value. | |
1013 gnus-last-posting-server | |
1014 (completing-read | |
1015 "Posting method: " method-alist nil t | |
1016 (cons (or gnus-last-posting-server "") 0)))) | |
1017 method-alist)))) | |
1018 ;; Override normal method. | |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
1019 ((and (eq gnus-post-method 'current) |
88155 | 1020 (not (memq (car group-method) gnus-discouraged-post-methods)) |
1021 (gnus-get-function group-method 'request-post t)) | |
1022 (assert (not arg)) | |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1023 group-method) |
88155 | 1024 ;; Use gnus-post-method. |
1025 ((listp gnus-post-method) ;A method... | |
1026 (assert (not (listp (car gnus-post-method)))) ;... not a list of methods. | |
17493 | 1027 gnus-post-method) |
88155 | 1028 ;; Use the normal select method (nil or native). |
17493 | 1029 (t gnus-select-method)))) |
1030 | |
1031 | |
1032 | |
1033 (defun gnus-extended-version () | |
88155 | 1034 "Stringified Gnus version and Emacs version. |
1035 See the variable `gnus-user-agent'." | |
17493 | 1036 (interactive) |
88155 | 1037 (if (stringp gnus-user-agent) |
1038 gnus-user-agent | |
1039 ;; `gnus-user-agent' is a list: | |
1040 (let* ((float-output-format nil) | |
1041 (gnus-v | |
1042 (when (memq 'gnus gnus-user-agent) | |
1043 (concat "Gnus/" | |
1044 (prin1-to-string (gnus-continuum-version gnus-version) t) | |
1045 " (" gnus-version ")"))) | |
1046 (emacs-v (gnus-emacs-version))) | |
1047 (concat gnus-v (when (and gnus-v emacs-v) " ") | |
1048 emacs-v)))) | |
17493 | 1049 |
1050 | |
1051 ;;; | |
1052 ;;; Gnus Mail Functions | |
1053 ;;; | |
1054 | |
1055 ;;; Mail reply commands of Gnus summary mode | |
1056 | |
88155 | 1057 (defun gnus-summary-reply (&optional yank wide very-wide) |
1058 "Start composing a mail reply to the current message. | |
17493 | 1059 If prefix argument YANK is non-nil, the original article is yanked |
88155 | 1060 automatically. |
1061 If WIDE, make a wide reply. | |
1062 If VERY-WIDE, make a very wide reply." | |
17493 | 1063 (interactive |
1064 (list (and current-prefix-arg | |
1065 (gnus-summary-work-articles 1)))) | |
88155 | 1066 ;; Allow user to require confirmation before replying by mail to the |
1067 ;; author of a news article (or mail message). | |
1068 (when (or | |
1069 (not (or (gnus-news-group-p gnus-newsgroup-name) | |
1070 gnus-confirm-treat-mail-like-news)) | |
1071 (not (cond ((stringp gnus-confirm-mail-reply-to-news) | |
1072 (string-match gnus-confirm-mail-reply-to-news | |
1073 gnus-newsgroup-name)) | |
1074 ((functionp gnus-confirm-mail-reply-to-news) | |
1075 (funcall gnus-confirm-mail-reply-to-news gnus-newsgroup-name)) | |
1076 (t gnus-confirm-mail-reply-to-news))) | |
1077 (y-or-n-p "Really reply by mail to article author? ")) | |
1078 (let* ((article | |
1079 (if (listp (car yank)) | |
1080 (caar yank) | |
1081 (car yank))) | |
1082 (gnus-article-reply (or article (gnus-summary-article-number))) | |
1083 (gnus-article-yanked-articles yank) | |
1084 (headers "")) | |
1085 ;; Stripping headers should be specified with mail-yank-ignored-headers. | |
17493 | 1086 (when yank |
88155 | 1087 (gnus-summary-goto-subject article)) |
1088 (gnus-setup-message (if yank 'reply-yank 'reply) | |
1089 (if (not very-wide) | |
1090 (gnus-summary-select-article) | |
1091 (dolist (article very-wide) | |
1092 (gnus-summary-select-article nil nil nil article) | |
1093 (save-excursion | |
1094 (set-buffer (gnus-copy-article-buffer)) | |
1095 (gnus-msg-treat-broken-reply-to) | |
1096 (save-restriction | |
1097 (message-narrow-to-head) | |
1098 (setq headers (concat headers (buffer-string))))))) | |
1099 (set-buffer (gnus-copy-article-buffer)) | |
1100 (gnus-msg-treat-broken-reply-to gnus-msg-force-broken-reply-to) | |
1101 (save-restriction | |
1102 (message-narrow-to-head) | |
1103 (when very-wide | |
1104 (erase-buffer) | |
1105 (insert headers)) | |
1106 (goto-char (point-max))) | |
1107 (mml-quote-region (point) (point-max)) | |
1108 (message-reply nil wide) | |
1109 (when yank | |
1110 (gnus-inews-yank-articles yank)) | |
1111 (gnus-summary-handle-replysign))))) | |
1112 | |
1113 (defun gnus-summary-handle-replysign () | |
1114 "Check the various replysign variables and take action accordingly." | |
1115 (when (or gnus-message-replysign gnus-message-replyencrypt) | |
1116 (let (signed encrypted) | |
1117 (save-excursion | |
1118 (set-buffer gnus-article-buffer) | |
1119 (setq signed (memq 'signed gnus-article-wash-types)) | |
1120 (setq encrypted (memq 'encrypted gnus-article-wash-types))) | |
1121 (cond ((and gnus-message-replyencrypt encrypted) | |
1122 (mml-secure-message mml-default-encrypt-method | |
1123 (if gnus-message-replysignencrypted | |
1124 'signencrypt | |
1125 'encrypt))) | |
1126 ((and gnus-message-replysign signed) | |
1127 (mml-secure-message mml-default-sign-method 'sign)))))) | |
17493 | 1128 |
1129 (defun gnus-summary-reply-with-original (n &optional wide) | |
1130 "Start composing a reply mail to the current message. | |
1131 The original article will be yanked." | |
1132 (interactive "P") | |
1133 (gnus-summary-reply (gnus-summary-work-articles n) wide)) | |
1134 | |
88155 | 1135 (defun gnus-summary-reply-broken-reply-to (&optional yank wide very-wide) |
1136 "Like `gnus-summary-reply' except removing reply-to field. | |
1137 If prefix argument YANK is non-nil, the original article is yanked | |
1138 automatically. | |
1139 If WIDE, make a wide reply. | |
1140 If VERY-WIDE, make a very wide reply." | |
1141 (interactive | |
1142 (list (and current-prefix-arg | |
1143 (gnus-summary-work-articles 1)))) | |
1144 (let ((gnus-msg-force-broken-reply-to t)) | |
1145 (gnus-summary-reply yank wide very-wide))) | |
1146 | |
1147 (defun gnus-summary-reply-broken-reply-to-with-original (n &optional wide) | |
1148 "Like `gnus-summary-reply-with-original' except removing reply-to field. | |
1149 The original article will be yanked." | |
1150 (interactive "P") | |
1151 (gnus-summary-reply-broken-reply-to (gnus-summary-work-articles n) wide)) | |
1152 | |
17493 | 1153 (defun gnus-summary-wide-reply (&optional yank) |
1154 "Start composing a wide reply mail to the current message. | |
1155 If prefix argument YANK is non-nil, the original article is yanked | |
1156 automatically." | |
1157 (interactive | |
1158 (list (and current-prefix-arg | |
1159 (gnus-summary-work-articles 1)))) | |
1160 (gnus-summary-reply yank t)) | |
1161 | |
1162 (defun gnus-summary-wide-reply-with-original (n) | |
1163 "Start composing a wide reply mail to the current message. | |
88155 | 1164 The original article will be yanked. |
1165 Uses the process/prefix convention." | |
17493 | 1166 (interactive "P") |
1167 (gnus-summary-reply-with-original n t)) | |
1168 | |
88155 | 1169 (defun gnus-summary-very-wide-reply (&optional yank) |
1170 "Start composing a very wide reply mail to the current message. | |
1171 If prefix argument YANK is non-nil, the original article is yanked | |
1172 automatically." | |
1173 (interactive | |
1174 (list (and current-prefix-arg | |
1175 (gnus-summary-work-articles 1)))) | |
1176 (gnus-summary-reply yank t (gnus-summary-work-articles yank))) | |
1177 | |
1178 (defun gnus-summary-very-wide-reply-with-original (n) | |
1179 "Start composing a very wide reply mail to the current message. | |
1180 The original article will be yanked." | |
1181 (interactive "P") | |
1182 (gnus-summary-reply | |
1183 (gnus-summary-work-articles n) t (gnus-summary-work-articles n))) | |
1184 | |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1185 (defun gnus-summary-mail-forward (&optional arg post) |
88155 | 1186 "Forward the current message(s) to another user. |
1187 If process marks exist, forward all marked messages; | |
1188 if ARG is nil, see `message-forward-as-mime' and `message-forward-show-mml'; | |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1189 if ARG is 1, decode the message and forward directly inline; |
34192
57a15e35e75b
* gnus-msg.el (gnus-msg-mail): COMPOSEFUNC should return t if
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
33342
diff
changeset
|
1190 if ARG is 2, forward message as an rfc822 MIME section; |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1191 if ARG is 3, decode message and forward as an rfc822 MIME section; |
34192
57a15e35e75b
* gnus-msg.el (gnus-msg-mail): COMPOSEFUNC should return t if
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
33342
diff
changeset
|
1192 if ARG is 4, forward message directly inline; |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1193 otherwise, use flipped `message-forward-as-mime'. |
88155 | 1194 If POST, post instead of mail. |
1195 For the `inline' alternatives, also see the variable | |
1196 `message-forward-ignored-headers'." | |
17493 | 1197 (interactive "P") |
88155 | 1198 (if (cdr (gnus-summary-work-articles nil)) |
1199 ;; Process marks are given. | |
1200 (gnus-uu-digest-mail-forward arg post) | |
1201 ;; No process marks. | |
1202 (let ((message-forward-as-mime message-forward-as-mime) | |
1203 (message-forward-show-mml message-forward-show-mml)) | |
1204 (cond | |
1205 ((null arg)) | |
1206 ((eq arg 1) | |
1207 (setq message-forward-as-mime nil | |
1208 message-forward-show-mml t)) | |
1209 ((eq arg 2) | |
1210 (setq message-forward-as-mime t | |
1211 message-forward-show-mml nil)) | |
1212 ((eq arg 3) | |
1213 (setq message-forward-as-mime t | |
1214 message-forward-show-mml t)) | |
1215 ((eq arg 4) | |
1216 (setq message-forward-as-mime nil | |
1217 message-forward-show-mml nil)) | |
1218 (t | |
1219 (setq message-forward-as-mime (not message-forward-as-mime)))) | |
1220 (let* ((gnus-article-reply (gnus-summary-article-number)) | |
1221 (gnus-article-yanked-articles (list gnus-article-reply))) | |
1222 (gnus-setup-message 'forward | |
1223 (gnus-summary-select-article) | |
1224 (let ((mail-parse-charset | |
1225 (or (and (gnus-buffer-live-p gnus-article-buffer) | |
1226 (with-current-buffer gnus-article-buffer | |
1227 gnus-article-charset)) | |
1228 gnus-newsgroup-charset)) | |
1229 (mail-parse-ignored-charsets | |
1230 gnus-newsgroup-ignored-charsets)) | |
1231 (set-buffer gnus-original-article-buffer) | |
1232 (message-forward post))))))) | |
17493 | 1233 |
1234 (defun gnus-summary-resend-message (address n) | |
1235 "Resend the current article to ADDRESS." | |
88155 | 1236 (interactive |
1237 (list (message-read-from-minibuffer | |
1238 "Resend message(s) to: " | |
1239 (when (and gnus-summary-resend-default-address | |
1240 (gnus-buffer-live-p gnus-original-article-buffer)) | |
1241 ;; If some other article is currently selected, the | |
1242 ;; initial-contents is wrong. Whatever, it is just the | |
1243 ;; initial-contents. | |
1244 (with-current-buffer gnus-original-article-buffer | |
1245 (nnmail-fetch-field "to")))) | |
1246 current-prefix-arg)) | |
17493 | 1247 (let ((articles (gnus-summary-work-articles n)) |
1248 article) | |
1249 (while (setq article (pop articles)) | |
1250 (gnus-summary-select-article nil nil nil article) | |
1251 (save-excursion | |
1252 (set-buffer gnus-original-article-buffer) | |
88155 | 1253 (message-resend address)) |
1254 (gnus-summary-mark-article-as-forwarded article)))) | |
1255 | |
1256 ;; From: Matthieu Moy <Matthieu.Moy@imag.fr> | |
1257 (defun gnus-summary-resend-message-edit () | |
1258 "Resend an article that has already been sent. | |
1259 A new buffer will be created to allow the user to modify body and | |
1260 contents of the message, and then, everything will happen as when | |
1261 composing a new message." | |
1262 (interactive) | |
1263 (let ((article (gnus-summary-article-number))) | |
1264 (gnus-setup-message 'reply-yank | |
1265 (gnus-summary-select-article t) | |
1266 (set-buffer gnus-original-article-buffer) | |
1267 (let ((cur (current-buffer)) | |
1268 (to (message-fetch-field "to"))) | |
1269 ;; Get a normal message buffer. | |
1270 (message-pop-to-buffer (message-buffer-name "Resend" to)) | |
1271 (insert-buffer-substring cur) | |
1272 (mime-to-mml) | |
1273 (message-narrow-to-head-1) | |
1274 ;; Gnus will generate a new one when sending. | |
1275 (message-remove-header "Message-ID") | |
1276 (message-remove-header message-ignored-resent-headers t) | |
1277 ;; Remove unwanted headers. | |
1278 (goto-char (point-max)) | |
1279 (insert mail-header-separator) | |
1280 (goto-char (point-min)) | |
1281 (when (re-search-forward "^To:\\|^Newsgroups:" nil 'move) | |
1282 (forward-char 1)) | |
1283 (widen))))) | |
17493 | 1284 |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1285 (defun gnus-summary-post-forward (&optional arg) |
17493 | 1286 "Forward the current article to a newsgroup. |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1287 See `gnus-summary-mail-forward' for ARG." |
17493 | 1288 (interactive "P") |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1289 (gnus-summary-mail-forward arg t)) |
17493 | 1290 |
1291 (defvar gnus-nastygram-message | |
1292 "The following article was inappropriately posted to %s.\n\n" | |
1293 "Format string to insert in nastygrams. | |
1294 The current group name will be inserted at \"%s\".") | |
1295 | |
1296 (defun gnus-summary-mail-nastygram (n) | |
1297 "Send a nastygram to the author of the current article." | |
1298 (interactive "P") | |
1299 (when (or gnus-expert-user | |
1300 (gnus-y-or-n-p | |
1301 "Really send a nastygram to the author of the current article? ")) | |
1302 (let ((group gnus-newsgroup-name)) | |
1303 (gnus-summary-reply-with-original n) | |
1304 (set-buffer gnus-message-buffer) | |
1305 (message-goto-body) | |
1306 (insert (format gnus-nastygram-message group)) | |
1307 (message-send-and-exit)))) | |
1308 | |
1309 (defun gnus-summary-mail-crosspost-complaint (n) | |
1310 "Send a complaint about crossposting to the current article(s)." | |
1311 (interactive "P") | |
1312 (let ((articles (gnus-summary-work-articles n)) | |
1313 article) | |
1314 (while (setq article (pop articles)) | |
1315 (set-buffer gnus-summary-buffer) | |
1316 (gnus-summary-goto-subject article) | |
1317 (let ((group (gnus-group-real-name gnus-newsgroup-name)) | |
1318 newsgroups followup-to) | |
1319 (gnus-summary-select-article) | |
1320 (set-buffer gnus-original-article-buffer) | |
1321 (if (and (<= (length (message-tokenize-header | |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1322 (setq newsgroups |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1323 (mail-fetch-field "newsgroups")) |
17493 | 1324 ", ")) |
1325 1) | |
1326 (or (not (setq followup-to (mail-fetch-field "followup-to"))) | |
1327 (not (member group (message-tokenize-header | |
1328 followup-to ", "))))) | |
1329 (if followup-to | |
1330 (gnus-message 1 "Followup-to restricted") | |
1331 (gnus-message 1 "Not a crossposted article")) | |
1332 (set-buffer gnus-summary-buffer) | |
1333 (gnus-summary-reply-with-original 1) | |
1334 (set-buffer gnus-message-buffer) | |
1335 (message-goto-body) | |
1336 (insert (format gnus-crosspost-complaint newsgroups group)) | |
1337 (message-goto-subject) | |
1338 (re-search-forward " *$") | |
1339 (replace-match " (crosspost notification)" t t) | |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
1340 (gnus-deactivate-mark) |
17493 | 1341 (when (gnus-y-or-n-p "Send this complaint? ") |
1342 (message-send-and-exit))))))) | |
1343 | |
1344 (defun gnus-mail-parse-comma-list () | |
1345 (let (accumulated | |
1346 beg) | |
1347 (skip-chars-forward " ") | |
1348 (while (not (eobp)) | |
1349 (setq beg (point)) | |
1350 (skip-chars-forward "^,") | |
1351 (while (zerop | |
1352 (save-excursion | |
1353 (save-restriction | |
1354 (let ((i 0)) | |
1355 (narrow-to-region beg (point)) | |
1356 (goto-char beg) | |
1357 (logand (progn | |
1358 (while (search-forward "\"" nil t) | |
1359 (incf i)) | |
1360 (if (zerop i) 2 i)) | |
1361 2))))) | |
1362 (skip-chars-forward ",") | |
1363 (skip-chars-forward "^,")) | |
1364 (skip-chars-backward " ") | |
1365 (push (buffer-substring beg (point)) | |
1366 accumulated) | |
1367 (skip-chars-forward "^,") | |
1368 (skip-chars-forward ", ")) | |
1369 accumulated)) | |
1370 | |
1371 (defun gnus-inews-add-to-address (group) | |
1372 (let ((to-address (mail-fetch-field "to"))) | |
1373 (when (and to-address | |
1374 (gnus-alive-p)) | |
1375 ;; This mail group doesn't have a `to-list', so we add one | |
1376 ;; here. Magic! | |
1377 (when (gnus-y-or-n-p | |
88155 | 1378 (format "Do you want to add this as `to-list': %s? " to-address)) |
17493 | 1379 (gnus-group-add-parameter group (cons 'to-list to-address)))))) |
1380 | |
1381 (defun gnus-put-message () | |
1382 "Put the current message in some group and return to Gnus." | |
1383 (interactive) | |
1384 (let ((reply gnus-article-reply) | |
1385 (winconf gnus-prev-winconf) | |
1386 (group gnus-newsgroup-name)) | |
88155 | 1387 (unless (and group |
1388 (not (gnus-group-read-only-p group))) | |
1389 (setq group (read-string "Put in group: " nil (gnus-writable-groups)))) | |
17493 | 1390 |
1391 (when (gnus-gethash group gnus-newsrc-hashtb) | |
1392 (error "No such group: %s" group)) | |
1393 (save-excursion | |
1394 (save-restriction | |
1395 (widen) | |
1396 (message-narrow-to-headers) | |
88155 | 1397 (let ((gnus-deletable-headers nil)) |
1398 (message-generate-headers | |
1399 (if (message-news-p) | |
1400 message-required-news-headers | |
1401 message-required-mail-headers))) | |
17493 | 1402 (goto-char (point-max)) |
88155 | 1403 (if (string-match " " group) |
1404 (insert "Gcc: \"" group "\"\n") | |
1405 (insert "Gcc: " group "\n")) | |
17493 | 1406 (widen))) |
1407 (gnus-inews-do-gcc) | |
88155 | 1408 (when (and (get-buffer gnus-group-buffer) |
1409 (gnus-buffer-exists-p (car-safe reply)) | |
1410 (cdr reply)) | |
1411 (set-buffer (car reply)) | |
1412 (gnus-summary-mark-article-as-replied (cdr reply))) | |
1413 (when winconf | |
1414 (set-window-configuration winconf)))) | |
17493 | 1415 |
1416 (defun gnus-article-mail (yank) | |
1417 "Send a reply to the address near point. | |
1418 If YANK is non-nil, include the original article." | |
1419 (interactive "P") | |
1420 (let ((address | |
1421 (buffer-substring | |
1422 (save-excursion (re-search-backward "[ \t\n]" nil t) (1+ (point))) | |
1423 (save-excursion (re-search-forward "[ \t\n]" nil t) (1- (point)))))) | |
1424 (when address | |
88155 | 1425 (gnus-msg-mail address) |
17493 | 1426 (when yank |
1427 (gnus-inews-yank-articles (list (cdr gnus-article-current))))))) | |
1428 | |
1429 (defvar nntp-server-type) | |
1430 (defun gnus-bug () | |
1431 "Send a bug report to the Gnus maintainers." | |
1432 (interactive) | |
1433 (unless (gnus-alive-p) | |
1434 (error "Gnus has been shut down")) | |
34797
b473bc6d9a55
* mml.el (gnus-add-minor-mode): Autoload.
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
34752
diff
changeset
|
1435 (gnus-setup-message (if (message-mail-user-agent) 'message 'bug) |
b473bc6d9a55
* mml.el (gnus-add-minor-mode): Autoload.
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
34752
diff
changeset
|
1436 (unless (message-mail-user-agent) |
b473bc6d9a55
* mml.el (gnus-add-minor-mode): Autoload.
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
34752
diff
changeset
|
1437 (delete-other-windows) |
b473bc6d9a55
* mml.el (gnus-add-minor-mode): Autoload.
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
34752
diff
changeset
|
1438 (when gnus-bug-create-help-buffer |
b473bc6d9a55
* mml.el (gnus-add-minor-mode): Autoload.
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
34752
diff
changeset
|
1439 (switch-to-buffer "*Gnus Help Bug*") |
b473bc6d9a55
* mml.el (gnus-add-minor-mode): Autoload.
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
34752
diff
changeset
|
1440 (erase-buffer) |
b473bc6d9a55
* mml.el (gnus-add-minor-mode): Autoload.
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
34752
diff
changeset
|
1441 (insert gnus-bug-message) |
b473bc6d9a55
* mml.el (gnus-add-minor-mode): Autoload.
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
34752
diff
changeset
|
1442 (goto-char (point-min))) |
b473bc6d9a55
* mml.el (gnus-add-minor-mode): Autoload.
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
34752
diff
changeset
|
1443 (message-pop-to-buffer "*Gnus Bug*")) |
b473bc6d9a55
* mml.el (gnus-add-minor-mode): Autoload.
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
34752
diff
changeset
|
1444 (let ((message-this-is-mail t)) |
b473bc6d9a55
* mml.el (gnus-add-minor-mode): Autoload.
ShengHuo ZHU <zsh@cs.rochester.edu>
parents:
34752
diff
changeset
|
1445 (message-setup `((To . ,gnus-maintainer) (Subject . "")))) |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
1446 (when gnus-bug-create-help-buffer |
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
1447 (push `(gnus-bug-kill-buffer) message-send-actions)) |
17493 | 1448 (goto-char (point-min)) |
1449 (re-search-forward (concat "^" (regexp-quote mail-header-separator) "$")) | |
1450 (forward-line 1) | |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
1451 (insert (gnus-version) "\n" |
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
1452 (emacs-version) "\n") |
17493 | 1453 (when (and (boundp 'nntp-server-type) |
1454 (stringp nntp-server-type)) | |
1455 (insert nntp-server-type)) | |
1456 (insert "\n\n\n\n\n") | |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1457 (let (text) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1458 (save-excursion |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1459 (set-buffer (gnus-get-buffer-create " *gnus environment info*")) |
88155 | 1460 (erase-buffer) |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1461 (gnus-debug) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1462 (setq text (buffer-string))) |
88155 | 1463 (insert "<#part type=application/emacs-lisp disposition=inline description=\"User settings\">\n" text "\n<#/part>")) |
17493 | 1464 (goto-char (point-min)) |
1465 (search-forward "Subject: " nil t) | |
1466 (message ""))) | |
1467 | |
1468 (defun gnus-bug-kill-buffer () | |
1469 (when (get-buffer "*Gnus Help Bug*") | |
1470 (kill-buffer "*Gnus Help Bug*"))) | |
1471 | |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1472 (defun gnus-summary-yank-message (buffer n) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1473 "Yank the current article into a composed message." |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1474 (interactive |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1475 (list (completing-read "Buffer: " (mapcar 'list (message-buffers)) nil t) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1476 current-prefix-arg)) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1477 (gnus-summary-iterate n |
88155 | 1478 (let ((gnus-inhibit-treatment t)) |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1479 (gnus-summary-select-article)) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1480 (save-excursion |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1481 (set-buffer buffer) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1482 (message-yank-buffer gnus-article-buffer)))) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1483 |
17493 | 1484 (defun gnus-debug () |
1485 "Attempts to go through the Gnus source file and report what variables have been changed. | |
1486 The source file has to be in the Emacs load path." | |
1487 (interactive) | |
88155 | 1488 (let ((files gnus-debug-files) |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
1489 (point (point)) |
17493 | 1490 file expr olist sym) |
1491 (gnus-message 4 "Please wait while we snoop your variables...") | |
1492 (sit-for 0) | |
1493 ;; Go through all the files looking for non-default values for variables. | |
1494 (save-excursion | |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
1495 (set-buffer (gnus-get-buffer-create " *gnus bug info*")) |
17493 | 1496 (while files |
1497 (erase-buffer) | |
1498 (when (and (setq file (locate-library (pop files))) | |
1499 (file-exists-p file)) | |
1500 (insert-file-contents file) | |
1501 (goto-char (point-min)) | |
1502 (if (not (re-search-forward "^;;* *Internal variables" nil t)) | |
1503 (gnus-message 4 "Malformed sources in file %s" file) | |
1504 (narrow-to-region (point-min) (point)) | |
1505 (goto-char (point-min)) | |
1506 (while (setq expr (ignore-errors (read (current-buffer)))) | |
1507 (ignore-errors | |
1508 (and (or (eq (car expr) 'defvar) | |
1509 (eq (car expr) 'defcustom)) | |
1510 (stringp (nth 3 expr)) | |
88155 | 1511 (not (memq (nth 1 expr) gnus-debug-exclude-variables)) |
17493 | 1512 (or (not (boundp (nth 1 expr))) |
1513 (not (equal (eval (nth 2 expr)) | |
1514 (symbol-value (nth 1 expr))))) | |
1515 (push (nth 1 expr) olist))))))) | |
1516 (kill-buffer (current-buffer))) | |
1517 (when (setq olist (nreverse olist)) | |
1518 (insert "------------------ Environment follows ------------------\n\n")) | |
1519 (while olist | |
1520 (if (boundp (car olist)) | |
88155 | 1521 (ignore-errors |
1522 (gnus-pp | |
1523 `(setq ,(car olist) | |
1524 ,(if (or (consp (setq sym (symbol-value (car olist)))) | |
1525 (and (symbolp sym) | |
1526 (not (or (eq sym nil) | |
1527 (eq sym t))))) | |
1528 (list 'quote (symbol-value (car olist))) | |
1529 (symbol-value (car olist)))))) | |
17493 | 1530 (insert ";; (makeunbound '" (symbol-name (car olist)) ")\n")) |
1531 (setq olist (cdr olist))) | |
1532 (insert "\n\n") | |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
1533 ;; Remove any control chars - they seem to cause trouble for some |
17493 | 1534 ;; mailers. (Byte-compiled output from the stuff above.) |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
1535 (goto-char point) |
88155 | 1536 (while (re-search-forward (mm-string-as-multibyte |
1537 "[\000-\010\013-\037\200-\237]") nil t) | |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
1538 (replace-match (format "\\%03o" (string-to-char (match-string 0))) |
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
1539 t t)))) |
17493 | 1540 |
1541 ;;; Treatment of rejected articles. | |
1542 ;;; Bounced mail. | |
1543 | |
1544 (defun gnus-summary-resend-bounced-mail (&optional fetch) | |
1545 "Re-mail the current message. | |
88155 | 1546 This only makes sense if the current message is a bounce message that |
17493 | 1547 contains some mail you have written which has been bounced back to |
1548 you. | |
1549 If FETCH, try to fetch the article that this is a reply to, if indeed | |
1550 this is a reply." | |
1551 (interactive "P") | |
1552 (gnus-summary-select-article t) | |
1553 (set-buffer gnus-original-article-buffer) | |
1554 (gnus-setup-message 'compose-bounce | |
1555 (let* ((references (mail-fetch-field "references")) | |
1556 (parent (and references (gnus-parent-id references)))) | |
1557 (message-bounce) | |
1558 ;; If there are references, we fetch the article we answered to. | |
1559 (and fetch parent | |
1560 (gnus-summary-refer-article parent) | |
1561 (gnus-summary-show-all-headers))))) | |
1562 | |
1563 ;;; Gcc handling. | |
1564 | |
33271
9b3030bf32fc
2000-11-06 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
31785
diff
changeset
|
1565 (defun gnus-inews-group-method (group) |
88155 | 1566 (cond |
1567 ;; If the group doesn't exist, we assume | |
1568 ;; it's an archive group... | |
1569 ((and (null (gnus-get-info group)) | |
1570 (eq (car (gnus-server-to-method gnus-message-archive-method)) | |
1571 (car (gnus-server-to-method (gnus-group-method group))))) | |
1572 gnus-message-archive-method) | |
1573 ;; Use the method. | |
1574 ((gnus-info-method (gnus-get-info group)) | |
1575 (gnus-info-method (gnus-get-info group))) | |
1576 ;; Find the method. | |
1577 (t (gnus-server-to-method (gnus-group-method group))))) | |
33271
9b3030bf32fc
2000-11-06 ShengHuo ZHU <zsh@cs.rochester.edu>
Dave Love <fx@gnu.org>
parents:
31785
diff
changeset
|
1578 |
17493 | 1579 ;; Do Gcc handling, which copied the message over to some group. |
1580 (defun gnus-inews-do-gcc (&optional gcc) | |
1581 (interactive) | |
88155 | 1582 (save-excursion |
1583 (save-restriction | |
1584 (message-narrow-to-headers) | |
1585 (let ((gcc (or gcc (mail-fetch-field "gcc" nil t))) | |
1586 (cur (current-buffer)) | |
1587 groups group method group-art | |
1588 mml-externalize-attachments) | |
1589 (when gcc | |
1590 (message-remove-header "gcc") | |
1591 (widen) | |
1592 (setq groups (message-unquote-tokens | |
1593 (message-tokenize-header gcc " ,"))) | |
1594 ;; Copy the article over to some group(s). | |
1595 (while (setq group (pop groups)) | |
1596 (unless (gnus-check-server | |
1597 (setq method (gnus-inews-group-method group))) | |
1598 (error "Can't open server %s" (if (stringp method) method | |
1599 (car method)))) | |
1600 (unless (gnus-request-group group nil method) | |
1601 (gnus-request-create-group group method)) | |
1602 (setq mml-externalize-attachments | |
1603 (if (stringp gnus-gcc-externalize-attachments) | |
1604 (string-match gnus-gcc-externalize-attachments group) | |
1605 gnus-gcc-externalize-attachments)) | |
1606 (save-excursion | |
1607 (nnheader-set-temp-buffer " *acc*") | |
1608 (insert-buffer-substring cur) | |
1609 (message-encode-message-body) | |
1610 (save-restriction | |
1611 (message-narrow-to-headers) | |
1612 (let* ((mail-parse-charset message-default-charset) | |
1613 (newsgroups-field (save-restriction | |
1614 (message-narrow-to-headers-or-head) | |
1615 (message-fetch-field "Newsgroups"))) | |
1616 (followup-field (save-restriction | |
1617 (message-narrow-to-headers-or-head) | |
1618 (message-fetch-field "Followup-To"))) | |
1619 ;; BUG: We really need to get the charset for | |
1620 ;; each name in the Newsgroups and Followup-To | |
1621 ;; lines to allow crossposting between group | |
1622 ;; namess with incompatible character sets. | |
1623 ;; -- Per Abrahamsen <abraham@dina.kvl.dk> 2001-10-08. | |
1624 (group-field-charset | |
1625 (gnus-group-name-charset | |
1626 method (or newsgroups-field ""))) | |
1627 (followup-field-charset | |
1628 (gnus-group-name-charset | |
1629 method (or followup-field ""))) | |
1630 (rfc2047-header-encoding-alist | |
1631 (append | |
1632 (when group-field-charset | |
1633 (list (cons "Newsgroups" group-field-charset))) | |
1634 (when followup-field-charset | |
1635 (list (cons "Followup-To" followup-field-charset))) | |
1636 rfc2047-header-encoding-alist))) | |
1637 (mail-encode-encoded-word-buffer))) | |
1638 (goto-char (point-min)) | |
1639 (when (re-search-forward | |
1640 (concat "^" (regexp-quote mail-header-separator) "$") | |
1641 nil t) | |
1642 (replace-match "" t t )) | |
1643 (unless (setq group-art | |
1644 (gnus-request-accept-article group method t t)) | |
1645 (gnus-message 1 "Couldn't store article in group %s: %s" | |
1646 group (gnus-status-message method)) | |
1647 (sit-for 2)) | |
1648 (when (and group-art | |
1649 ;; FIXME: Should gcc-mark-as-read work when | |
1650 ;; Gnus is not running? | |
1651 (gnus-alive-p) | |
1652 (or gnus-gcc-mark-as-read | |
1653 (and | |
1654 (boundp 'gnus-inews-mark-gcc-as-read) | |
1655 (symbol-value 'gnus-inews-mark-gcc-as-read)))) | |
1656 (gnus-group-mark-article-read group (cdr group-art))) | |
1657 (kill-buffer (current-buffer))))))))) | |
17493 | 1658 |
1659 (defun gnus-inews-insert-gcc () | |
1660 "Insert Gcc headers based on `gnus-outgoing-message-group'." | |
1661 (save-excursion | |
1662 (save-restriction | |
1663 (message-narrow-to-headers) | |
1664 (let* ((group gnus-outgoing-message-group) | |
1665 (gcc (cond | |
88155 | 1666 ((functionp group) |
17493 | 1667 (funcall group)) |
88155 | 1668 ((or (stringp group) (listp group)) |
17493 | 1669 group)))) |
1670 (when gcc | |
1671 (insert "Gcc: " | |
88155 | 1672 (if (stringp gcc) |
1673 (if (string-match " " gcc) | |
1674 (concat "\"" gcc "\"") | |
1675 gcc) | |
1676 (mapconcat (lambda (group) | |
1677 (if (string-match " " group) | |
1678 (concat "\"" group "\"") | |
1679 group)) | |
1680 gcc " ")) | |
17493 | 1681 "\n")))))) |
1682 | |
1683 (defun gnus-inews-insert-archive-gcc (&optional group) | |
1684 "Insert the Gcc to say where the article is to be archived." | |
1685 (let* ((var gnus-message-archive-group) | |
1686 (group (or group gnus-newsgroup-name "")) | |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
1687 (gcc-self-val |
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
1688 (and gnus-newsgroup-name |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1689 (not (equal gnus-newsgroup-name "")) |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
1690 (gnus-group-find-parameter |
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
1691 gnus-newsgroup-name 'gcc-self))) |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1692 result |
17493 | 1693 (groups |
1694 (cond | |
1695 ((null gnus-message-archive-method) | |
1696 ;; Ignore. | |
1697 nil) | |
1698 ((stringp var) | |
1699 ;; Just a single group. | |
1700 (list var)) | |
1701 ((null var) | |
1702 ;; We don't want this. | |
1703 nil) | |
1704 ((and (listp var) (stringp (car var))) | |
1705 ;; A list of groups. | |
1706 var) | |
88155 | 1707 ((functionp var) |
17493 | 1708 ;; A function. |
1709 (funcall var group)) | |
1710 (t | |
1711 ;; An alist of regexps/functions/forms. | |
1712 (while (and var | |
1713 (not | |
1714 (setq result | |
1715 (cond | |
1716 ((stringp (caar var)) | |
1717 ;; Regexp. | |
1718 (when (string-match (caar var) group) | |
1719 (cdar var))) | |
88155 | 1720 ((functionp (car var)) |
17493 | 1721 ;; Function. |
1722 (funcall (car var) group)) | |
1723 (t | |
1724 (eval (car var))))))) | |
1725 (setq var (cdr var))) | |
1726 result))) | |
1727 name) | |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
1728 (when (or groups gcc-self-val) |
17493 | 1729 (when (stringp groups) |
1730 (setq groups (list groups))) | |
1731 (save-excursion | |
1732 (save-restriction | |
1733 (message-narrow-to-headers) | |
1734 (goto-char (point-max)) | |
1735 (insert "Gcc: ") | |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
1736 (if gcc-self-val |
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
1737 ;; Use the `gcc-self' param value instead. |
17493 | 1738 (progn |
1739 (insert | |
1740 (if (stringp gcc-self-val) | |
88155 | 1741 (if (string-match " " gcc-self-val) |
1742 (concat "\"" gcc-self-val "\"") | |
1743 gcc-self-val) | |
1744 ;; In nndoc groups, we use the parent group name | |
1745 ;; instead of the current group. | |
1746 (let ((group (or (gnus-group-find-parameter | |
1747 gnus-newsgroup-name 'parent-group) | |
1748 group))) | |
1749 (if (string-match " " group) | |
1750 (concat "\"" group "\"") | |
1751 group)))) | |
17493 | 1752 (if (not (eq gcc-self-val 'none)) |
1753 (insert "\n") | |
88155 | 1754 (gnus-delete-line))) |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
1755 ;; Use the list of groups. |
17493 | 1756 (while (setq name (pop groups)) |
88155 | 1757 (let ((str (if (string-match ":" name) |
1758 name | |
1759 (gnus-group-prefixed-name | |
1760 name gnus-message-archive-method)))) | |
1761 (insert (if (string-match " " str) | |
1762 (concat "\"" str "\"") | |
1763 str))) | |
17493 | 1764 (when groups |
1765 (insert " "))) | |
1766 (insert "\n"))))))) | |
1767 | |
88155 | 1768 (defun gnus-mailing-list-followup-to () |
1769 "Look at the headers in the current buffer and return a Mail-Followup-To address." | |
1770 (let ((x-been-there (gnus-fetch-original-field "x-beenthere")) | |
1771 (list-post (gnus-fetch-original-field "list-post"))) | |
1772 (when (and list-post | |
1773 (string-match "mailto:\\([^>]+\\)" list-post)) | |
1774 (setq list-post (match-string 1 list-post))) | |
1775 (or list-post | |
1776 x-been-there))) | |
1777 | |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
1778 ;;; Posting styles. |
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
1779 |
88155 | 1780 (defun gnus-configure-posting-styles (&optional group-name) |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
1781 "Configure posting styles according to `gnus-posting-styles'." |
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
1782 (unless gnus-inhibit-posting-styles |
88155 | 1783 (let ((group (or group-name gnus-newsgroup-name "")) |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1784 (styles gnus-posting-styles) |
88155 | 1785 style match attribute value v results |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1786 filep name address element) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1787 ;; If the group has a posting-style parameter, add it at the end with a |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1788 ;; regexp matching everything, to be sure it takes precedence over all |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1789 ;; the others. |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1790 (when gnus-newsgroup-name |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1791 (let ((tmp-style (gnus-group-find-parameter group 'posting-style t))) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1792 (when tmp-style |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1793 (setq styles (append styles (list (cons ".*" tmp-style))))))) |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
1794 ;; Go through all styles and look for matches. |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1795 (dolist (style styles) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1796 (setq match (pop style)) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1797 (goto-char (point-min)) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1798 (when (cond |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1799 ((stringp match) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1800 ;; Regexp string match on the group name. |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1801 (string-match match group)) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1802 ((eq match 'header) |
88155 | 1803 ;; Obsolete format of header match. |
1804 (and (gnus-buffer-live-p gnus-article-copy) | |
1805 (with-current-buffer gnus-article-copy | |
1806 (save-restriction | |
1807 (nnheader-narrow-to-headers) | |
1808 (let ((header (message-fetch-field (pop style)))) | |
1809 (and header | |
1810 (string-match (pop style) header))))))) | |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1811 ((or (symbolp match) |
88155 | 1812 (functionp match)) |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1813 (cond |
88155 | 1814 ((functionp match) |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1815 ;; Function to be called. |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1816 (funcall match)) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1817 ((boundp match) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1818 ;; Variable to be checked. |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1819 (symbol-value match)))) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1820 ((listp match) |
88155 | 1821 (cond |
1822 ((eq (car match) 'header) | |
1823 ;; New format of header match. | |
1824 (and (gnus-buffer-live-p gnus-article-copy) | |
1825 (with-current-buffer gnus-article-copy | |
1826 (save-restriction | |
1827 (nnheader-narrow-to-headers) | |
1828 (let ((header (message-fetch-field (nth 1 match)))) | |
1829 (and header | |
1830 (string-match (nth 2 match) header))))))) | |
1831 (t | |
1832 ;; This is a form to be evaled. | |
1833 (eval match))))) | |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
19969
diff
changeset
|
1834 ;; We have a match, so we set the variables. |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1835 (dolist (attribute style) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1836 (setq element (pop attribute) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1837 filep nil) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1838 (setq value |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1839 (cond |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1840 ((eq (car attribute) :file) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1841 (setq filep t) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1842 (cadr attribute)) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1843 ((eq (car attribute) :value) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1844 (cadr attribute)) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1845 (t |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1846 (car attribute)))) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1847 ;; We get the value. |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1848 (setq v |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1849 (cond |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1850 ((stringp value) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1851 value) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1852 ((or (symbolp value) |
88155 | 1853 (functionp value)) |
1854 (cond ((functionp value) | |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1855 (funcall value)) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1856 ((boundp value) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1857 (symbol-value value)))) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1858 ((listp value) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1859 (eval value)))) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1860 ;; Translate obsolescent value. |
88155 | 1861 (cond |
1862 ((eq element 'signature-file) | |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1863 (setq element 'signature |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1864 filep t)) |
88155 | 1865 ((eq element 'x-face-file) |
1866 (setq element 'x-face | |
1867 filep t))) | |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1868 ;; Get the contents of file elems. |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1869 (when (and filep v) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1870 (setq v (with-temp-buffer |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1871 (insert-file-contents v) |
88155 | 1872 (buffer-substring |
1873 (point-min) | |
1874 (progn | |
1875 (goto-char (point-max)) | |
1876 (if (zerop (skip-chars-backward "\n")) | |
1877 (point) | |
1878 (1+ (point)))))))) | |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1879 (setq results (delq (assoc element results) results)) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1880 (push (cons element v) results)))) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1881 ;; Now we have all the styles, so we insert them. |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1882 (setq name (assq 'name results) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1883 address (assq 'address results)) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1884 (setq results (delq name (delq address results))) |
88155 | 1885 (gnus-make-local-hook 'message-setup-hook) |
1886 (setq results (sort results (lambda (x y) | |
1887 (string-lessp (car x) (car y))))) | |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1888 (dolist (result results) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1889 (add-hook 'message-setup-hook |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1890 (cond |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1891 ((eq 'eval (car result)) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1892 'ignore) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1893 ((eq 'body (car result)) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1894 `(lambda () |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1895 (save-excursion |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1896 (message-goto-body) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1897 (insert ,(cdr result))))) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1898 ((eq 'signature (car result)) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1899 (set (make-local-variable 'message-signature) nil) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1900 (set (make-local-variable 'message-signature-file) nil) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1901 (if (not (cdr result)) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1902 'ignore |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1903 `(lambda () |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1904 (save-excursion |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1905 (let ((message-signature ,(cdr result))) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1906 (when message-signature |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1907 (message-insert-signature))))))) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1908 (t |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1909 (let ((header |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1910 (if (symbolp (car result)) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1911 (capitalize (symbol-name (car result))) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1912 (car result)))) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1913 `(lambda () |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1914 (save-excursion |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1915 (message-remove-header ,header) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1916 (let ((value ,(cdr result))) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1917 (when value |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1918 (message-goto-eoh) |
88155 | 1919 (insert ,header ": " value) |
1920 (unless (bolp) | |
1921 (insert "\n"))))))))) | |
1922 nil 'local)) | |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1923 (when (or name address) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1924 (add-hook 'message-setup-hook |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1925 `(lambda () |
88155 | 1926 (set (make-local-variable 'user-mail-address) |
1927 ,(or (cdr address) user-mail-address)) | |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1928 (let ((user-full-name ,(or (cdr name) (user-full-name))) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1929 (user-mail-address |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1930 ,(or (cdr address) user-mail-address))) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1931 (save-excursion |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1932 (message-remove-header "From") |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
25278
diff
changeset
|
1933 (message-goto-eoh) |
88155 | 1934 (insert "From: " (message-make-from) "\n")))) |
1935 nil 'local))))) | |
17493 | 1936 |
1937 ;;; Allow redefinition of functions. | |
1938 | |
1939 (gnus-ems-redefine) | |
1940 | |
1941 (provide 'gnus-msg) | |
1942 | |
88155 | 1943 ;;; arch-tag: 9f22b2f5-1c0a-49de-916e-4c88e984852b |
17493 | 1944 ;;; gnus-msg.el ends here |