1 ;;; gnus-art.el --- article mode commands for Gnus
2 ;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
3 ;; Free Software Foundation, Inc.
5 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
8 ;; This file is part of GNU Emacs.
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
11 ;; it under the terms of the GNU General Public License as published by
12 ;; the Free Software Foundation; either version 2, or (at your option)
15 ;; GNU Emacs is distributed in the hope that it will be useful,
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 ;; GNU General Public License for more details.
20 ;; You should have received a copy of the GNU General Public License
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
23 ;; Boston, MA 02111-1307, USA.
29 (eval-when-compile (require 'cl))
43 (autoload 'gnus-msg-mail "gnus-msg" nil t)
44 (autoload 'gnus-button-mailto "gnus-msg")
45 (autoload 'gnus-button-reply "gnus-msg" nil t)
47 (defgroup gnus-article nil
49 :link '(custom-manual "(gnus)The Article Buffer")
52 (defgroup gnus-article-treat nil
53 "Treating article parts."
54 :link '(custom-manual "(gnus)Article Hiding")
57 (defgroup gnus-article-hiding nil
58 "Hiding article parts."
59 :link '(custom-manual "(gnus)Article Hiding")
62 (defgroup gnus-article-highlight nil
63 "Article highlighting."
64 :link '(custom-manual "(gnus)Article Highlighting")
68 (defgroup gnus-article-signature nil
70 :link '(custom-manual "(gnus)Article Signature")
73 (defgroup gnus-article-headers nil
75 :link '(custom-manual "(gnus)Hiding Headers")
78 (defgroup gnus-article-washing nil
79 "Special commands on articles."
80 :link '(custom-manual "(gnus)Article Washing")
83 (defgroup gnus-article-emphasis nil
84 "Fontisizing articles."
85 :link '(custom-manual "(gnus)Article Fontisizing")
88 (defgroup gnus-article-saving nil
90 :link '(custom-manual "(gnus)Saving Articles")
93 (defgroup gnus-article-mime nil
94 "Worshiping the MIME wonder."
95 :link '(custom-manual "(gnus)Using MIME")
98 (defgroup gnus-article-buttons nil
99 "Pushable buttons in the article buffer."
100 :link '(custom-manual "(gnus)Article Buttons")
101 :group 'gnus-article)
103 (defgroup gnus-article-various nil
104 "Other article options."
105 :link '(custom-manual "(gnus)Misc Article")
106 :group 'gnus-article)
108 (defcustom gnus-ignored-headers
111 (concat "^" header ":"))
112 '("Path" "Expires" "Date-Received" "References" "Xref" "Lines"
113 "Relay-Version" "Message-ID" "Approved" "Sender" "Received"
114 "X-UIDL" "MIME-Version" "Return-Path" "In-Reply-To"
115 "Content-Type" "Content-Transfer-Encoding" "X-WebTV-Signature"
116 "X-MimeOLE" "X-MSMail-Priority" "X-Priority" "X-Loop"
117 "X-Authentication-Warning" "X-MIME-Autoconverted" "X-Face"
118 "X-Attribution" "X-Originating-IP" "Delivered-To"
119 "NNTP-[-A-Za-z]+" "Distribution" "X-no-archive" "X-Trace"
120 "X-Complaints-To" "X-NNTP-Posting-Host" "X-Orig.*"
121 "Abuse-Reports-To" "Cache-Post-Path" "X-Article-Creation-Date"
122 "X-Poster" "X-Mail2News-Path" "X-Server-Date" "X-Cache"
123 "Originator" "X-Problems-To" "X-Auth-User" "X-Post-Time"
124 "X-Admin" "X-UID" "Resent-[-A-Za-z]+" "X-Mailing-List"
125 "Precedence" "Original-[-A-Za-z]+" "X-filename" "X-Orcpt"
126 "Old-Received" "X-Pgp" "X-Auth" "X-From-Line"
127 "X-Gnus-Article-Number" "X-Majordomo" "X-Url" "X-Sender"
128 "MBOX-Line" "Priority" "X400-[-A-Za-z]+"
129 "Status" "X-Gnus-Mail-Source" "Cancel-Lock"
130 "X-FTN" "X-EXP32-SerialNo" "Encoding" "Importance"
131 "Autoforwarded" "Original-Encoded-Information-Types" "X-Ya-Pop3"
132 "X-Face-Version" "X-Vms-To" "X-ML-NAME" "X-ML-COUNT"
133 "Mailing-List" "X-finfo" "X-md5sum" "X-md5sum-Origin"
134 "X-Sun-Charset" "X-Accept-Language" "X-Envelope-Sender"
135 "List-[A-Za-z]+" "X-Listprocessor-Version"
136 "X-Received" "X-Distribute" "X-Sequence" "X-Juno-Line-Breaks"
137 "X-Notes-Item" "X-MS-TNEF-Correlator" "x-uunet-gateway"
138 "X-Received" "Content-length" "X-precedence"
139 "X-Authenticated-User" "X-Comment" "X-Report" "X-Abuse-Info"
140 "X-HTTP-Proxy" "X-Mydeja-Info" "X-Copyright" "X-No-Markup"
141 "X-Abuse-Info" "X-From_" "X-Accept-Language" "Errors-To"
142 "X-BeenThere" "X-Mailman-Version" "List-Help" "List-Post"
143 "List-Subscribe" "List-Id" "List-Unsubscribe" "List-Archive"
144 "X-Content-length" "X-Posting-Agent" "Original-Received"
145 "X-Request-PGP" "X-Fingerprint" "X-WRIEnvto" "X-WRIEnvfrom"
146 "X-Virus-Scanned" "X-Delivery-Agent" "Posted-Date" "X-Gateway"
147 "X-Local-Origin" "X-Local-Destination" "X-UserInfo1"
148 "X-Received-Date" "X-Hashcash" "Face" "X-DMCA-Notifications"
149 "X-Abuse-and-DMCA-Info" "X-Postfilter"))
150 "*All headers that start with this regexp will be hidden.
151 This variable can also be a list of regexps of headers to be ignored.
152 If `gnus-visible-headers' is non-nil, this variable will be ignored."
153 :type '(choice :custom-show nil
156 :group 'gnus-article-hiding)
158 (defcustom gnus-visible-headers
159 "^From:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^Followup-To:\\|^Reply-To:\\|^Organization:\\|^Summary:\\|^Keywords:\\|^To:\\|^[BGF]?Cc:\\|^Posted-To:\\|^Mail-Copies-To:\\|^Mail-Followup-To:\\|^Apparently-To:\\|^Gnus-Warning:\\|^Resent-From:\\|^X-Sent:"
160 "*All headers that do not match this regexp will be hidden.
161 This variable can also be a list of regexp of headers to remain visible.
162 If this variable is non-nil, `gnus-ignored-headers' will be ignored."
163 :type '(repeat :value-to-internal (lambda (widget value)
164 (custom-split-regexp-maybe value))
165 :match (lambda (widget value)
167 (widget-editable-list-match widget value)))
169 :group 'gnus-article-hiding)
171 (defcustom gnus-sorted-header-list
172 '("^From:" "^Subject:" "^Summary:" "^Keywords:" "^Newsgroups:"
173 "^Followup-To:" "^To:" "^Cc:" "^Date:" "^Organization:")
174 "*This variable is a list of regular expressions.
175 If it is non-nil, headers that match the regular expressions will
176 be placed first in the article buffer in the sequence specified by
178 :type '(repeat regexp)
179 :group 'gnus-article-hiding)
181 (defcustom gnus-boring-article-headers '(empty followup-to reply-to)
182 "Headers that are only to be displayed if they have interesting data.
183 Possible values in this list are:
185 'empty Headers with no content.
186 'newsgroups Newsgroup identical to Gnus group.
187 'to-address To identical to To-address.
188 'followup-to Followup-to identical to Newsgroups.
189 'reply-to Reply-to identical to From.
190 'date Date less than four days old.
191 'long-to To and/or Cc longer than 1024 characters.
192 'many-to Multiple To and/or Cc."
193 :type '(set (const :tag "Headers with no content." empty)
194 (const :tag "Newsgroups identical to Gnus group." newsgroups)
195 (const :tag "To identical to To-address." to-address)
196 (const :tag "Followup-to identical to Newsgroups." followup-to)
197 (const :tag "Reply-to identical to From." reply-to)
198 (const :tag "Date less than four days old." date)
199 (const :tag "To and/or Cc longer than 1024 characters." long-to)
200 (const :tag "Multiple To and/or Cc headers." many-to))
201 :group 'gnus-article-hiding)
203 (defcustom gnus-signature-separator '("^-- $" "^-- *$")
204 "Regexp matching signature separator.
205 This can also be a list of regexps. In that case, it will be checked
206 from head to tail looking for a separator. Searches will be done from
207 the end of the buffer."
208 :type '(repeat string)
209 :group 'gnus-article-signature)
211 (defcustom gnus-signature-limit nil
212 "Provide a limit to what is considered a signature.
213 If it is a number, no signature may not be longer (in characters) than
214 that number. If it is a floating point number, no signature may be
215 longer (in lines) than that number. If it is a function, the function
216 will be called without any parameters, and if it returns nil, there is
217 no signature in the buffer. If it is a string, it will be used as a
218 regexp. If it matches, the text in question is not a signature."
219 :type '(choice (integer :value 200)
221 (function :value fun)
222 (regexp :value ".*"))
223 :group 'gnus-article-signature)
225 (defcustom gnus-hidden-properties '(invisible t intangible t)
226 "Property list to use for hiding text."
228 :group 'gnus-article-hiding)
230 ;; Fixme: This isn't the right thing for mixed graphical and and
231 ;; non-graphical frames in a session.
232 (defcustom gnus-article-x-face-command
233 (if (featurep 'xemacs)
234 (if (or (gnus-image-type-available-p 'xface)
235 (gnus-image-type-available-p 'pbm))
236 'gnus-display-x-face-in-from
237 "{ echo '/* Width=48, Height=48 */'; uncompface; } | icontopbm | ee -")
238 (if (gnus-image-type-available-p 'pbm)
239 'gnus-display-x-face-in-from
240 "{ echo '/* Width=48, Height=48 */'; uncompface; } | icontopbm | \
242 "*String or function to be executed to display an X-Face header.
243 If it is a string, the command will be executed in a sub-shell
244 asynchronously. The compressed face will be piped to this command."
245 :type `(choice string
246 (function-item gnus-display-x-face-in-from)
250 :group 'gnus-article-washing)
252 (defcustom gnus-article-x-face-too-ugly nil
253 "Regexp matching posters whose face shouldn't be shown automatically."
254 :type '(choice regexp (const nil))
255 :group 'gnus-article-washing)
257 (defcustom gnus-article-banner-alist nil
258 "Banner alist for stripping.
260 ((egroups . \"^[ \\t\\n]*-------------------+\\\\( \\\\(e\\\\|Yahoo! \\\\)Groups Sponsor -+\\\\)?....\\n\\\\(.+\\n\\\\)+\"))"
262 :type '(repeat (cons symbol regexp))
263 :group 'gnus-article-washing)
265 (gnus-define-group-parameter
268 "Alist of regexps (to match group names) and banner."
269 :variable-group gnus-article-washing
271 '(choice :tag "Banner"
273 (const :tag "Remove signature" signature)
274 (symbol :tag "Item in `gnus-article-banner-alist'" none)
276 (const :tag "None" nil))
278 "If non-nil, specify how to remove `banners' from articles.
280 Symbol `signature' means to remove signatures delimited by
281 `gnus-signature-separator'. Any other symbol is used to look up a
282 regular expression to match the banner in `gnus-article-banner-alist'.
283 A string is used as a regular expression to match the banner
286 (defcustom gnus-article-address-banner-alist nil
287 "Alist of mail addresses and banners.
288 Each element has the form (ADDRESS . BANNER), where ADDRESS is a regexp
289 to match a mail address in the From: header, BANNER is one of a symbol
290 `signature', an item in `gnus-article-banner-alist', a regexp and nil.
291 If ADDRESS matches author's mail address, it will remove things like
292 advertisements. For example:
294 \((\"@yoo-hoo\\\\.co\\\\.jp\\\\'\" . \"\\n_+\\nDo You Yoo-hoo!\\\\?\\n.*\\n.*\\n\"))
298 (regexp :tag "Address")
299 (choice :tag "Banner" :value nil
300 (const :tag "Remove signature" signature)
301 (symbol :tag "Item in `gnus-article-banner-alist'" none)
303 (const :tag "None" nil))))
304 :group 'gnus-article-washing)
306 (defcustom gnus-emphasis-alist
308 "\\(\\s-\\|^\\|\\=\\|[-\"]\\|\\s(\\)\\(%s\\(\\w+\\(\\s-+\\w+\\)*[.,]?\\)%s\\)\\(\\([-,.;:!?\"]\\|\\s)\\)+\\s-\\|[?!.]\\s-\\|\\s)\\|\\s-\\)")
313 ("_/" "/_" underline-italic)
314 ("_\\*" "\\*_" underline-bold)
315 ("\\*/" "/\\*" bold-italic)
316 ("_\\*/" "/\\*_" underline-bold-italic))))
320 (format format (car spec) (cadr spec))
321 2 3 (intern (format "gnus-emphasis-%s" (nth 2 spec)))))
323 ("\\(\\s-\\|^\\)\\(-\\(\\(\\w\\|-[^-]\\)+\\)-\\)\\(\\s-\\|[?!.,;]\\)"
324 2 3 gnus-emphasis-strikethru)
325 ("\\(\\s-\\|^\\)\\(_\\(\\(\\w\\|_[^_]\\)+\\)_\\)\\(\\s-\\|[?!.,;]\\)"
326 2 3 gnus-emphasis-underline)))
327 "*Alist that says how to fontify certain phrases.
328 Each item looks like this:
330 (\"_\\\\(\\\\w+\\\\)_\" 0 1 'underline)
332 The first element is a regular expression to be matched. The second
333 is a number that says what regular expression grouping used to find
334 the entire emphasized word. The third is a number that says what
335 regexp grouping should be displayed and highlighted. The fourth
336 is the face used for highlighting."
337 :type '(repeat (list :value ("" 0 0 default)
339 (integer :tag "Match group")
340 (integer :tag "Emphasize group")
342 :group 'gnus-article-emphasis)
344 (defcustom gnus-emphasize-whitespace-regexp "^[ \t]+\\|[ \t]*\n"
345 "A regexp to describe whitespace which should not be emphasized.
346 Typical values are \"^[ \\t]+\\\\|[ \\t]*\\n\" and \"[ \\t]+\\\\|[ \\t]*\\n\".
347 The former avoids underlining of leading and trailing whitespace,
348 and the latter avoids underlining any whitespace at all."
350 :group 'gnus-article-emphasis
353 (defface gnus-emphasis-bold '((t (:bold t)))
354 "Face used for displaying strong emphasized text (*word*)."
355 :group 'gnus-article-emphasis)
357 (defface gnus-emphasis-italic '((t (:italic t)))
358 "Face used for displaying italic emphasized text (/word/)."
359 :group 'gnus-article-emphasis)
361 (defface gnus-emphasis-underline '((t (:underline t)))
362 "Face used for displaying underlined emphasized text (_word_)."
363 :group 'gnus-article-emphasis)
365 (defface gnus-emphasis-underline-bold '((t (:bold t :underline t)))
366 "Face used for displaying underlined bold emphasized text (_*word*_)."
367 :group 'gnus-article-emphasis)
369 (defface gnus-emphasis-underline-italic '((t (:italic t :underline t)))
370 "Face used for displaying underlined italic emphasized text (_/word/_)."
371 :group 'gnus-article-emphasis)
373 (defface gnus-emphasis-bold-italic '((t (:bold t :italic t)))
374 "Face used for displaying bold italic emphasized text (/*word*/)."
375 :group 'gnus-article-emphasis)
377 (defface gnus-emphasis-underline-bold-italic
378 '((t (:bold t :italic t :underline t)))
379 "Face used for displaying underlined bold italic emphasized text.
380 Example: (_/*word*/_)."
381 :group 'gnus-article-emphasis)
383 (defface gnus-emphasis-strikethru '((t (:strikethru t)))
384 "Face used for displaying strike-through text (-word-)."
385 :group 'gnus-article-emphasis)
387 (defface gnus-emphasis-highlight-words
388 '((t (:background "black" :foreground "yellow")))
389 "Face used for displaying highlighted words."
390 :group 'gnus-article-emphasis)
392 (defcustom gnus-article-time-format "%a, %b %d %Y %T %Z"
393 "Format for display of Date headers in article bodies.
394 See `format-time-string' for the possible values.
396 The variable can also be function, which should return a complete Date
397 header. The function is called with one argument, the time, which can
398 be fed to `format-time-string'."
399 :type '(choice string symbol)
400 :link '(custom-manual "(gnus)Article Date")
401 :group 'gnus-article-washing)
404 (autoload 'mail-extract-address-components "mail-extr"))
406 (defcustom gnus-save-all-headers t
407 "*If non-nil, don't remove any headers before saving."
408 :group 'gnus-article-saving
411 (defcustom gnus-prompt-before-saving 'always
412 "*This variable says how much prompting is to be done when saving articles.
413 If it is nil, no prompting will be done, and the articles will be
414 saved to the default files. If this variable is `always', each and
415 every article that is saved will be preceded by a prompt, even when
416 saving large batches of articles. If this variable is neither nil not
417 `always', there the user will be prompted once for a file name for
418 each invocation of the saving commands."
419 :group 'gnus-article-saving
420 :type '(choice (item always)
421 (item :tag "never" nil)
422 (sexp :tag "once" :format "%t\n" :value t)))
424 (defcustom gnus-saved-headers gnus-visible-headers
425 "Headers to keep if `gnus-save-all-headers' is nil.
426 If `gnus-save-all-headers' is non-nil, this variable will be ignored.
427 If that variable is nil, however, all headers that match this regexp
428 will be kept while the rest will be deleted before saving."
429 :group 'gnus-article-saving
432 (defcustom gnus-default-article-saver 'gnus-summary-save-in-rmail
433 "A function to save articles in your favourite format.
434 The function must be interactively callable (in other words, it must
435 be an Emacs command).
437 Gnus provides the following functions:
439 * gnus-summary-save-in-rmail (Rmail format)
440 * gnus-summary-save-in-mail (Unix mail format)
441 * gnus-summary-save-in-folder (MH folder)
442 * gnus-summary-save-in-file (article format)
443 * gnus-summary-save-body-in-file (article body)
444 * gnus-summary-save-in-vm (use VM's folder format)
445 * gnus-summary-write-to-file (article format -- overwrite)."
446 :group 'gnus-article-saving
447 :type '(radio (function-item gnus-summary-save-in-rmail)
448 (function-item gnus-summary-save-in-mail)
449 (function-item gnus-summary-save-in-folder)
450 (function-item gnus-summary-save-in-file)
451 (function-item gnus-summary-save-body-in-file)
452 (function-item gnus-summary-save-in-vm)
453 (function-item gnus-summary-write-to-file)))
455 (defcustom gnus-rmail-save-name 'gnus-plain-save-name
456 "A function generating a file name to save articles in Rmail format.
457 The function is called with NEWSGROUP, HEADERS, and optional LAST-FILE."
458 :group 'gnus-article-saving
461 (defcustom gnus-mail-save-name 'gnus-plain-save-name
462 "A function generating a file name to save articles in Unix mail format.
463 The function is called with NEWSGROUP, HEADERS, and optional LAST-FILE."
464 :group 'gnus-article-saving
467 (defcustom gnus-folder-save-name 'gnus-folder-save-name
468 "A function generating a file name to save articles in MH folder.
469 The function is called with NEWSGROUP, HEADERS, and optional LAST-FOLDER."
470 :group 'gnus-article-saving
473 (defcustom gnus-file-save-name 'gnus-numeric-save-name
474 "A function generating a file name to save articles in article format.
475 The function is called with NEWSGROUP, HEADERS, and optional
477 :group 'gnus-article-saving
480 (defcustom gnus-split-methods
481 '((gnus-article-archive-name)
482 (gnus-article-nndoc-name))
483 "*Variable used to suggest where articles are to be saved.
484 For instance, if you would like to save articles related to Gnus in
485 the file \"gnus-stuff\", and articles related to VM in \"vm-stuff\",
486 you could set this variable to something like:
488 '((\"^Subject:.*gnus\\|^Newsgroups:.*gnus\" \"gnus-stuff\")
489 (\"^Subject:.*vm\\|^Xref:.*vm\" \"vm-stuff\"))
491 This variable is an alist where the where the key is the match and the
492 value is a list of possible files to save in if the match is non-nil.
494 If the match is a string, it is used as a regexp match on the
495 article. If the match is a symbol, that symbol will be funcalled
496 from the buffer of the article to be saved with the newsgroup as the
497 parameter. If it is a list, it will be evaled in the same buffer.
499 If this form or function returns a string, this string will be used as
500 a possible file name; and if it returns a non-nil list, that list will
501 be used as possible file names."
502 :group 'gnus-article-saving
503 :type '(repeat (choice (list :value (fun) function)
504 (cons :value ("" "") regexp (repeat string))
507 (defcustom gnus-page-delimiter "^\^L"
508 "*Regexp describing what to use as article page delimiters.
509 The default value is \"^\^L\", which is a form linefeed at the
510 beginning of a line."
512 :group 'gnus-article-various)
514 (defcustom gnus-article-mode-line-format "Gnus: %g [%w] %S%m"
515 "*The format specification for the article mode line.
516 See `gnus-summary-mode-line-format' for a closer description.
518 The following additional specs are available:
520 %w The article washing status.
521 %m The number of MIME parts in the article."
523 :group 'gnus-article-various)
525 (defcustom gnus-article-mode-hook nil
526 "*A hook for Gnus article mode."
528 :group 'gnus-article-various)
530 (when (featurep 'xemacs)
531 ;; Extracted from gnus-xmas-define in order to preserve user settings
532 (when (fboundp 'turn-off-scroll-in-place)
533 (add-hook 'gnus-article-mode-hook 'turn-off-scroll-in-place))
534 ;; Extracted from gnus-xmas-redefine in order to preserve user settings
535 (add-hook 'gnus-article-mode-hook 'gnus-xmas-article-menu-add))
537 (defcustom gnus-article-menu-hook nil
538 "*Hook run after the creation of the article mode menu."
540 :group 'gnus-article-various)
542 (defcustom gnus-article-prepare-hook nil
543 "*A hook called after an article has been prepared in the article buffer."
545 :group 'gnus-article-various)
547 (defvar gnus-article-hide-pgp-hook nil)
548 (make-obsolete-variable 'gnus-article-hide-pgp-hook
549 "This variable is obsolete in Gnus 5.10.")
551 (defcustom gnus-article-button-face 'bold
552 "Face used for highlighting buttons in the article buffer.
554 An article button is a piece of text that you can activate by pressing
555 `RET' or `mouse-2' above it."
557 :group 'gnus-article-buttons)
559 (defcustom gnus-article-mouse-face 'highlight
560 "Face used for mouse highlighting in the article buffer.
562 Article buttons will be displayed in this face when the cursor is
565 :group 'gnus-article-buttons)
567 (defcustom gnus-signature-face 'gnus-signature-face
568 "Face used for highlighting a signature in the article buffer.
569 Obsolete; use the face `gnus-signature-face' for customizations instead."
571 :group 'gnus-article-highlight
572 :group 'gnus-article-signature)
574 (defface gnus-signature-face
577 "Face used for highlighting a signature in the article buffer."
578 :group 'gnus-article-highlight
579 :group 'gnus-article-signature)
581 (defface gnus-header-from-face
584 (:foreground "spring green"))
587 (:foreground "red3"))
590 "Face used for displaying from headers."
591 :group 'gnus-article-headers
592 :group 'gnus-article-highlight)
594 (defface gnus-header-subject-face
597 (:foreground "SeaGreen3"))
600 (:foreground "red4"))
602 (:bold t :italic t)))
603 "Face used for displaying subject headers."
604 :group 'gnus-article-headers
605 :group 'gnus-article-highlight)
607 (defface gnus-header-newsgroups-face
610 (:foreground "yellow" :italic t))
613 (:foreground "MidnightBlue" :italic t))
616 "Face used for displaying newsgroups headers."
617 :group 'gnus-article-headers
618 :group 'gnus-article-highlight)
620 (defface gnus-header-name-face
623 (:foreground "SeaGreen"))
626 (:foreground "maroon"))
629 "Face used for displaying header names."
630 :group 'gnus-article-headers
631 :group 'gnus-article-highlight)
633 (defface gnus-header-content-face
636 (:foreground "forest green" :italic t))
639 (:foreground "indianred4" :italic t))
641 (:italic t))) "Face used for displaying header content."
642 :group 'gnus-article-headers
643 :group 'gnus-article-highlight)
645 (defcustom gnus-header-face-alist
646 '(("From" nil gnus-header-from-face)
647 ("Subject" nil gnus-header-subject-face)
648 ("Newsgroups:.*," nil gnus-header-newsgroups-face)
649 ("" gnus-header-name-face gnus-header-content-face))
650 "*Controls highlighting of article header.
652 An alist of the form (HEADER NAME CONTENT).
654 HEADER is a regular expression which should match the name of an
655 header header and NAME and CONTENT are either face names or nil.
657 The name of each header field will be displayed using the face
658 specified by the first element in the list where HEADER match the
659 header name and NAME is non-nil. Similarly, the content will be
660 displayed by the first non-nil matching CONTENT face."
661 :group 'gnus-article-headers
662 :group 'gnus-article-highlight
663 :type '(repeat (list (regexp :tag "Header")
665 (item :tag "skip" nil)
666 (face :value default))
667 (choice :tag "Content"
668 (item :tag "skip" nil)
669 (face :value default)))))
671 (defcustom gnus-article-decode-hook
672 '(article-decode-charset article-decode-encoded-words
673 article-decode-group-name)
674 "*Hook run to decode charsets in articles."
675 :group 'gnus-article-headers
678 (defcustom gnus-display-mime-function 'gnus-display-mime
679 "Function to display MIME articles."
680 :group 'gnus-article-mime
683 (defvar gnus-decode-header-function 'mail-decode-encoded-word-region
684 "Function used to decode headers.")
686 (defvar gnus-article-dumbquotes-map
706 "Table for MS-to-Latin1 translation.")
708 (defcustom gnus-ignored-mime-types nil
709 "List of MIME types that should be ignored by Gnus."
711 :group 'gnus-article-mime
712 :type '(repeat regexp))
714 (defcustom gnus-unbuttonized-mime-types '(".*/.*")
715 "List of MIME types that should not be given buttons when rendered inline.
716 See also `gnus-buttonized-mime-types' which may override this variable.
717 This variable is only used when `gnus-inhibit-mime-unbuttonizing' is nil."
719 :group 'gnus-article-mime
720 :type '(repeat regexp))
722 (defcustom gnus-buttonized-mime-types nil
723 "List of MIME types that should be given buttons when rendered inline.
724 If set, this variable overrides `gnus-unbuttonized-mime-types'.
725 To see e.g. security buttons you could set this to
726 `(\"multipart/signed\")'.
727 This variable is only used when `gnus-inhibit-mime-unbuttonizing' is nil."
729 :group 'gnus-article-mime
730 :type '(repeat regexp))
732 (defcustom gnus-inhibit-mime-unbuttonizing nil
733 "If non-nil, all MIME parts get buttons.
734 When nil (the default value), then some MIME parts do not get buttons,
735 as described by the variables `gnus-buttonized-mime-types' and
736 `gnus-unbuttonized-mime-types'."
740 (defcustom gnus-body-boundary-delimiter "_"
741 "String used to delimit header and body.
742 This variable is used by `gnus-article-treat-body-boundary' which can
743 be controlled by `gnus-treat-body-boundary'."
744 :group 'gnus-article-various
745 :type '(choice (item :tag "None" :value nil)
748 (defcustom gnus-picon-databases '("/usr/lib/picon" "/usr/local/faces")
749 "Defines the location of the faces database.
750 For information on obtaining this database of pretty pictures, please
751 see http://www.cs.indiana.edu/picons/ftp/index.html"
752 :type '(repeat directory)
753 :link '(url-link :tag "download"
754 "http://www.cs.indiana.edu/picons/ftp/index.html")
755 :link '(custom-manual "(gnus)Picons")
758 (defun gnus-picons-installed-p ()
759 "Say whether picons are installed on your machine."
760 (let ((installed nil))
761 (dolist (database gnus-picon-databases)
762 (when (file-exists-p database)
766 (defcustom gnus-article-mime-part-function nil
767 "Function called with a MIME handle as the argument.
768 This is meant for people who want to do something automatic based
769 on parts -- for instance, adding Vcard info to a database."
770 :group 'gnus-article-mime
773 (defcustom gnus-mime-multipart-functions nil
774 "An alist of MIME types to functions to display them."
776 :group 'gnus-article-mime
779 (defcustom gnus-article-date-lapsed-new-header nil
780 "Whether the X-Sent and Date headers can coexist.
781 When using `gnus-treat-date-lapsed', the \"X-Sent:\" header will
782 either replace the old \"Date:\" header (if this variable is nil), or
783 be added below it (otherwise)."
785 :group 'gnus-article-headers
788 (defcustom gnus-article-mime-match-handle-function 'undisplayed-alternative
789 "Function called with a MIME handle as the argument.
790 This is meant for people who want to view first matched part.
791 For `undisplayed-alternative' (default), the first undisplayed
792 part or alternative part is used. For `undisplayed', the first
793 undisplayed part is used. For a function, the first part which
794 the function return `t' is used. For `nil', the first part is
797 :group 'gnus-article-mime
799 (item :tag "first" :value nil)
800 (item :tag "undisplayed" :value undisplayed)
801 (item :tag "undisplayed or alternative"
802 :value undisplayed-alternative)
805 (defcustom gnus-mime-action-alist
806 '(("save to file" . gnus-mime-save-part)
807 ("save and strip" . gnus-mime-save-part-and-strip)
808 ("display as text" . gnus-mime-inline-part)
809 ("view the part" . gnus-mime-view-part)
810 ("pipe to command" . gnus-mime-pipe-part)
811 ("toggle display" . gnus-article-press-button)
812 ("toggle display" . gnus-article-view-part-as-charset)
813 ("view as type" . gnus-mime-view-part-as-type)
814 ("view internally" . gnus-mime-view-part-internally)
815 ("view externally" . gnus-mime-view-part-externally))
816 "An alist of actions that run on the MIME attachment."
817 :group 'gnus-article-mime
818 :type '(repeat (cons (string :tag "name")
822 ;;; The treatment variables
825 (defvar gnus-part-display-hook nil
826 "Hook called on parts that are to receive treatment.")
828 (defvar gnus-article-treat-custom
829 '(choice (const :tag "Off" nil)
831 (const :tag "Header" head)
832 (const :tag "Last" last)
833 (integer :tag "Less")
834 (repeat :tag "Groups" regexp)
835 (sexp :tag "Predicate")))
837 (defvar gnus-article-treat-head-custom
838 '(choice (const :tag "Off" nil)
839 (const :tag "Header" head)))
841 (defvar gnus-article-treat-types '("text/plain")
844 (defvar gnus-inhibit-treatment nil
845 "Whether to inhibit treatment.")
847 (defcustom gnus-treat-highlight-signature '(or last (typep "text/x-vcard"))
848 "Highlight the signature.
849 Valid values are nil, t, `head', `last', an integer or a predicate.
850 See Info node `(gnus)Customizing Articles'."
851 :group 'gnus-article-treat
852 :link '(custom-manual "(gnus)Customizing Articles")
853 :type gnus-article-treat-custom)
854 (put 'gnus-treat-highlight-signature 'highlight t)
856 (defcustom gnus-treat-buttonize 100000
858 Valid values are nil, t, `head', `last', an integer or a predicate.
859 See Info node `(gnus)Customizing Articles'."
860 :group 'gnus-article-treat
861 :link '(custom-manual "(gnus)Customizing Articles")
862 :type gnus-article-treat-custom)
863 (put 'gnus-treat-buttonize 'highlight t)
865 (defcustom gnus-treat-buttonize-head 'head
866 "Add buttons to the head.
867 Valid values are nil, t, `head', `last', an integer or a predicate.
868 See Info node `(gnus)Customizing Articles' for details."
869 :group 'gnus-article-treat
870 :link '(custom-manual "(gnus)Customizing Articles")
871 :type gnus-article-treat-head-custom)
872 (put 'gnus-treat-buttonize-head 'highlight t)
874 (defcustom gnus-treat-emphasize
875 (and (or window-system
877 (>= (string-to-number emacs-version) 21))
880 Valid values are nil, t, `head', `last', an integer or a predicate.
881 See Info node `(gnus)Customizing Articles' for details."
882 :group 'gnus-article-treat
883 :link '(custom-manual "(gnus)Customizing Articles")
884 :type gnus-article-treat-custom)
885 (put 'gnus-treat-emphasize 'highlight t)
887 (defcustom gnus-treat-strip-cr nil
888 "Remove carriage returns.
889 Valid values are nil, t, `head', `last', an integer or a predicate.
890 See Info node `(gnus)Customizing Articles' for details."
891 :group 'gnus-article-treat
892 :link '(custom-manual "(gnus)Customizing Articles")
893 :type gnus-article-treat-custom)
895 (defcustom gnus-treat-unsplit-urls nil
896 "Remove newlines from within URLs.
897 Valid values are nil, t, `head', `last', an integer or a predicate.
898 See Info node `(gnus)Customizing Articles' for details."
899 :group 'gnus-article-treat
900 :link '(custom-manual "(gnus)Customizing Articles")
901 :type gnus-article-treat-custom)
903 (defcustom gnus-treat-leading-whitespace nil
904 "Remove leading whitespace in headers.
905 Valid values are nil, t, `head', `last', an integer or a predicate.
906 See Info node `(gnus)Customizing Articles' for details."
907 :group 'gnus-article-treat
908 :link '(custom-manual "(gnus)Customizing Articles")
909 :type gnus-article-treat-custom)
911 (defcustom gnus-treat-hide-headers 'head
913 Valid values are nil, t, `head', `last', an integer or a predicate.
914 See Info node `(gnus)Customizing Articles' for details."
915 :group 'gnus-article-treat
916 :link '(custom-manual "(gnus)Customizing Articles")
917 :type gnus-article-treat-head-custom)
919 (defcustom gnus-treat-hide-boring-headers nil
920 "Hide boring headers.
921 Valid values are nil, t, `head', `last', an integer or a predicate.
922 See Info node `(gnus)Customizing Articles' for details."
923 :group 'gnus-article-treat
924 :link '(custom-manual "(gnus)Customizing Articles")
925 :type gnus-article-treat-head-custom)
927 (defcustom gnus-treat-hide-signature nil
929 Valid values are nil, t, `head', `last', an integer or a predicate.
930 See Info node `(gnus)Customizing Articles' for details."
931 :group 'gnus-article-treat
932 :link '(custom-manual "(gnus)Customizing Articles")
933 :type gnus-article-treat-custom)
935 (defcustom gnus-treat-fill-article nil
937 Valid values are nil, t, `head', `last', an integer or a predicate.
938 See Info node `(gnus)Customizing Articles' for details."
939 :group 'gnus-article-treat
940 :link '(custom-manual "(gnus)Customizing Articles")
941 :type gnus-article-treat-custom)
943 (defcustom gnus-treat-hide-citation nil
945 Valid values are nil, t, `head', `last', an integer or a predicate.
946 See Info node `(gnus)Customizing Articles' for details."
947 :group 'gnus-article-treat
948 :link '(custom-manual "(gnus)Customizing Articles")
949 :type gnus-article-treat-custom)
951 (defcustom gnus-treat-hide-citation-maybe nil
953 Valid values are nil, t, `head', `last', an integer or a predicate.
954 See Info node `(gnus)Customizing Articles' for details."
955 :group 'gnus-article-treat
956 :link '(custom-manual "(gnus)Customizing Articles")
957 :type gnus-article-treat-custom)
959 (defcustom gnus-treat-strip-list-identifiers 'head
960 "Strip list identifiers from `gnus-list-identifiers`.
961 Valid values are nil, t, `head', `last', an integer or a predicate.
962 See Info node `(gnus)Customizing Articles' for details."
964 :group 'gnus-article-treat
965 :link '(custom-manual "(gnus)Customizing Articles")
966 :type gnus-article-treat-custom)
968 (make-obsolete-variable 'gnus-treat-strip-pgp
969 "This option is obsolete in Gnus 5.10.")
971 (defcustom gnus-treat-strip-pem nil
972 "Strip PEM signatures.
973 Valid values are nil, t, `head', `last', an integer or a predicate.
974 See Info node `(gnus)Customizing Articles' for details."
975 :group 'gnus-article-treat
976 :link '(custom-manual "(gnus)Customizing Articles")
977 :type gnus-article-treat-custom)
979 (defcustom gnus-treat-strip-banner t
980 "Strip banners from articles.
981 The banner to be stripped is specified in the `banner' group parameter.
982 Valid values are nil, t, `head', `last', an integer or a predicate.
983 See Info node `(gnus)Customizing Articles' for details."
984 :group 'gnus-article-treat
985 :link '(custom-manual "(gnus)Customizing Articles")
986 :type gnus-article-treat-custom)
988 (defcustom gnus-treat-highlight-headers 'head
989 "Highlight the headers.
990 Valid values are nil, t, `head', `last', an integer or a predicate.
991 See Info node `(gnus)Customizing Articles' for details."
992 :group 'gnus-article-treat
993 :link '(custom-manual "(gnus)Customizing Articles")
994 :type gnus-article-treat-head-custom)
995 (put 'gnus-treat-highlight-headers 'highlight t)
997 (defcustom gnus-treat-highlight-citation t
998 "Highlight cited text.
999 Valid values are nil, t, `head', `last', an integer or a predicate.
1000 See Info node `(gnus)Customizing Articles' for details."
1001 :group 'gnus-article-treat
1002 :link '(custom-manual "(gnus)Customizing Articles")
1003 :type gnus-article-treat-custom)
1004 (put 'gnus-treat-highlight-citation 'highlight t)
1006 (defcustom gnus-treat-date-ut nil
1007 "Display the Date in UT (GMT).
1008 Valid values are nil, t, `head', `last', an integer or a predicate.
1009 See Info node `(gnus)Customizing Articles' for details."
1010 :group 'gnus-article-treat
1011 :link '(custom-manual "(gnus)Customizing Articles")
1012 :type gnus-article-treat-head-custom)
1014 (defcustom gnus-treat-date-local nil
1015 "Display the Date in the local timezone.
1016 Valid values are nil, t, `head', `last', an integer or a predicate.
1017 See Info node `(gnus)Customizing Articles' for details."
1018 :group 'gnus-article-treat
1019 :link '(custom-manual "(gnus)Customizing Articles")
1020 :type gnus-article-treat-head-custom)
1022 (defcustom gnus-treat-date-english nil
1023 "Display the Date in a format that can be read aloud in English.
1024 Valid values are nil, t, `head', `last', an integer or a predicate.
1025 See Info node `(gnus)Customizing Articles' for details."
1026 :group 'gnus-article-treat
1027 :link '(custom-manual "(gnus)Customizing Articles")
1028 :type gnus-article-treat-head-custom)
1030 (defcustom gnus-treat-date-lapsed nil
1031 "Display the Date header in a way that says how much time has elapsed.
1032 Valid values are nil, t, `head', `last', an integer or a predicate.
1033 See Info node `(gnus)Customizing Articles' for details."
1034 :group 'gnus-article-treat
1035 :link '(custom-manual "(gnus)Customizing Articles")
1036 :type gnus-article-treat-head-custom)
1038 (defcustom gnus-treat-date-original nil
1039 "Display the date in the original timezone.
1040 Valid values are nil, t, `head', `last', an integer or a predicate.
1041 See Info node `(gnus)Customizing Articles' for details."
1042 :group 'gnus-article-treat
1043 :link '(custom-manual "(gnus)Customizing Articles")
1044 :type gnus-article-treat-head-custom)
1046 (defcustom gnus-treat-date-iso8601 nil
1047 "Display the date in the ISO8601 format.
1048 Valid values are nil, t, `head', `last', an integer or a predicate.
1049 See Info node `(gnus)Customizing Articles' for details."
1051 :group 'gnus-article-treat
1052 :link '(custom-manual "(gnus)Customizing Articles")
1053 :type gnus-article-treat-head-custom)
1055 (defcustom gnus-treat-date-user-defined nil
1056 "Display the date in a user-defined format.
1057 The format is defined by the `gnus-article-time-format' variable.
1058 Valid values are nil, t, `head', `last', an integer or a predicate.
1059 See Info node `(gnus)Customizing Articles' for details."
1060 :group 'gnus-article-treat
1061 :link '(custom-manual "(gnus)Customizing Articles")
1062 :type gnus-article-treat-head-custom)
1064 (defcustom gnus-treat-strip-headers-in-body t
1065 "Strip the X-No-Archive header line from the beginning of the body.
1066 Valid values are nil, t, `head', `last', an integer or a predicate.
1067 See Info node `(gnus)Customizing Articles' for details."
1069 :group 'gnus-article-treat
1070 :link '(custom-manual "(gnus)Customizing Articles")
1071 :type gnus-article-treat-custom)
1073 (defcustom gnus-treat-strip-trailing-blank-lines nil
1074 "Strip trailing blank lines.
1075 Valid values are nil, t, `head', `last', an integer or a predicate.
1076 See Info node `(gnus)Customizing Articles' for details."
1077 :group 'gnus-article-treat
1078 :link '(custom-manual "(gnus)Customizing Articles")
1079 :type gnus-article-treat-custom)
1081 (defcustom gnus-treat-strip-leading-blank-lines nil
1082 "Strip leading blank lines.
1083 Valid values are nil, t, `head', `last', an integer or a predicate.
1084 See Info node `(gnus)Customizing Articles' for details."
1085 :group 'gnus-article-treat
1086 :link '(custom-manual "(gnus)Customizing Articles")
1087 :type gnus-article-treat-custom)
1089 (defcustom gnus-treat-strip-multiple-blank-lines nil
1090 "Strip multiple blank lines.
1091 Valid values are nil, t, `head', `last', an integer or a predicate.
1092 See Info node `(gnus)Customizing Articles' for details."
1093 :group 'gnus-article-treat
1094 :link '(custom-manual "(gnus)Customizing Articles")
1095 :type gnus-article-treat-custom)
1097 (defcustom gnus-treat-unfold-headers 'head
1098 "Unfold folded header lines.
1099 Valid values are nil, t, `head', `last', an integer or a predicate.
1100 See Info node `(gnus)Customizing Articles' for details."
1101 :group 'gnus-article-treat
1102 :link '(custom-manual "(gnus)Customizing Articles")
1103 :type gnus-article-treat-custom)
1105 (defcustom gnus-treat-fold-headers nil
1107 Valid values are nil, t, `head', `last', an integer or a predicate.
1108 See Info node `(gnus)Customizing Articles' for details."
1109 :group 'gnus-article-treat
1110 :link '(custom-manual "(gnus)Customizing Articles")
1111 :type gnus-article-treat-custom)
1113 (defcustom gnus-treat-fold-newsgroups 'head
1114 "Fold the Newsgroups and Followup-To headers.
1115 Valid values are nil, t, `head', `last', an integer or a predicate.
1116 See Info node `(gnus)Customizing Articles' for details."
1117 :group 'gnus-article-treat
1118 :link '(custom-manual "(gnus)Customizing Articles")
1119 :type gnus-article-treat-custom)
1121 (defcustom gnus-treat-overstrike t
1122 "Treat overstrike highlighting.
1123 Valid values are nil, t, `head', `last', an integer or a predicate.
1124 See Info node `(gnus)Customizing Articles' for details."
1125 :group 'gnus-article-treat
1126 :link '(custom-manual "(gnus)Customizing Articles")
1127 :type gnus-article-treat-custom)
1128 (put 'gnus-treat-overstrike 'highlight t)
1130 (defcustom gnus-treat-display-xface
1131 (and (not noninteractive)
1132 (or (and (fboundp 'image-type-available-p)
1133 (image-type-available-p 'xbm)
1134 (string-match "^0x" (shell-command-to-string "uncompface")))
1135 (and (featurep 'xemacs)
1138 "Display X-Face headers.
1139 Valid values are nil, t, `head', `last', an integer or a predicate.
1140 See Info node `(gnus)Customizing Articles' and Info node
1141 `(gnus)X-Face' for details."
1142 :group 'gnus-article-treat
1144 :link '(custom-manual "(gnus)Customizing Articles")
1145 :link '(custom-manual "(gnus)X-Face")
1146 :type gnus-article-treat-head-custom)
1147 (put 'gnus-treat-display-xface 'highlight t)
1149 (defcustom gnus-treat-display-face
1150 (and (not noninteractive)
1151 (or (and (fboundp 'image-type-available-p)
1152 (image-type-available-p 'png))
1153 (and (featurep 'xemacs)
1156 "Display Face headers.
1157 Valid values are nil, t, `head', `last', an integer or a predicate.
1158 See Info node `(gnus)Customizing Articles' and Info node
1159 `(gnus)X-Face' for details."
1160 :group 'gnus-article-treat
1162 :link '(custom-manual "(gnus)Customizing Articles")
1163 :link '(custom-manual "(gnus)X-Face")
1164 :type gnus-article-treat-head-custom)
1165 (put 'gnus-treat-display-xface 'highlight t)
1167 (defcustom gnus-treat-display-grey-xface
1168 (and (not noninteractive)
1169 (string-match "^0x" (shell-command-to-string "uncompface"))
1171 "Display grey X-Face headers.
1172 Valid values are nil, t."
1173 :group 'gnus-article-treat
1176 (put 'gnus-treat-display-grey-xface 'highlight t)
1178 (defcustom gnus-treat-display-smileys
1179 (if (or (and (featurep 'xemacs)
1181 (and (fboundp 'image-type-available-p)
1182 (image-type-available-p 'pbm)))
1185 Valid values are nil, t, `head', `last', an integer or a predicate.
1186 See Info node `(gnus)Customizing Articles' and Info node
1187 `(gnus)Smileys' for details."
1188 :group 'gnus-article-treat
1190 :link '(custom-manual "(gnus)Customizing Articles")
1191 :link '(custom-manual "(gnus)Smileys")
1192 :type gnus-article-treat-custom)
1193 (put 'gnus-treat-display-smileys 'highlight t)
1195 (defcustom gnus-treat-from-picon
1196 (if (and (gnus-image-type-available-p 'xpm)
1197 (gnus-picons-installed-p))
1199 "Display picons in the From header.
1200 Valid values are nil, t, `head', `last', an integer or a predicate.
1201 See Info node `(gnus)Customizing Articles' and Info node
1202 `(gnus)Picons' for details."
1203 :group 'gnus-article-treat
1205 :link '(custom-manual "(gnus)Customizing Articles")
1206 :link '(custom-manual "(gnus)Picons")
1207 :type gnus-article-treat-head-custom)
1208 (put 'gnus-treat-from-picon 'highlight t)
1210 (defcustom gnus-treat-mail-picon
1211 (if (and (gnus-image-type-available-p 'xpm)
1212 (gnus-picons-installed-p))
1214 "Display picons in To and Cc headers.
1215 Valid values are nil, t, `head', `last', an integer or a predicate.
1216 See Info node `(gnus)Customizing Articles' and Info node
1217 `(gnus)Picons' for details."
1218 :group 'gnus-article-treat
1220 :link '(custom-manual "(gnus)Customizing Articles")
1221 :link '(custom-manual "(gnus)Picons")
1222 :type gnus-article-treat-head-custom)
1223 (put 'gnus-treat-mail-picon 'highlight t)
1225 (defcustom gnus-treat-newsgroups-picon
1226 (if (and (gnus-image-type-available-p 'xpm)
1227 (gnus-picons-installed-p))
1229 "Display picons in the Newsgroups and Followup-To headers.
1230 Valid values are nil, t, `head', `last', an integer or a predicate.
1231 See Info node `(gnus)Customizing Articles' and Info node
1232 `(gnus)Picons' for details."
1233 :group 'gnus-article-treat
1235 :link '(custom-manual "(gnus)Customizing Articles")
1236 :link '(custom-manual "(gnus)Picons")
1237 :type gnus-article-treat-head-custom)
1238 (put 'gnus-treat-newsgroups-picon 'highlight t)
1240 (defcustom gnus-treat-body-boundary
1241 (if (or gnus-treat-newsgroups-picon
1242 gnus-treat-mail-picon
1243 gnus-treat-from-picon)
1245 "Draw a boundary at the end of the headers.
1246 Valid values are nil, t, `head', `last', an integer or a predicate.
1247 See Info node `(gnus)Customizing Articles' for details."
1249 :group 'gnus-article-treat
1250 :link '(custom-manual "(gnus)Customizing Articles")
1251 :type gnus-article-treat-custom)
1253 (defcustom gnus-treat-capitalize-sentences nil
1254 "Capitalize sentence-starting words.
1255 Valid values are nil, t, `head', `last', an integer or a predicate.
1256 See Info node `(gnus)Customizing Articles' for details."
1258 :group 'gnus-article-treat
1259 :link '(custom-manual "(gnus)Customizing Articles")
1260 :type gnus-article-treat-custom)
1262 (defcustom gnus-treat-wash-html nil
1264 Valid values are nil, t, `head', `last', an integer or a predicate.
1265 See Info node `(gnus)Customizing Articles' for details."
1266 :group 'gnus-article-treat
1267 :link '(custom-manual "(gnus)Customizing Articles")
1268 :type gnus-article-treat-custom)
1270 (defcustom gnus-treat-fill-long-lines nil
1272 Valid values are nil, t, `head', `last', an integer or a predicate.
1273 See Info node `(gnus)Customizing Articles' for details."
1274 :group 'gnus-article-treat
1275 :link '(custom-manual "(gnus)Customizing Articles")
1276 :type gnus-article-treat-custom)
1278 (defcustom gnus-treat-play-sounds nil
1280 Valid values are nil, t, `head', `last', an integer or a predicate.
1281 See Info node `(gnus)Customizing Articles' for details."
1283 :group 'gnus-article-treat
1284 :link '(custom-manual "(gnus)Customizing Articles")
1285 :type gnus-article-treat-custom)
1287 (defcustom gnus-treat-translate nil
1288 "Translate articles from one language to another.
1289 Valid values are nil, t, `head', `last', an integer or a predicate.
1290 See Info node `(gnus)Customizing Articles' for details."
1292 :group 'gnus-article-treat
1293 :link '(custom-manual "(gnus)Customizing Articles")
1294 :type gnus-article-treat-custom)
1296 (defcustom gnus-treat-x-pgp-sig nil
1298 To automatically treat X-PGP-Sig, set it to head.
1299 Valid values are nil, t, `head', `last', an integer or a predicate.
1300 See Info node `(gnus)Customizing Articles' for details."
1301 :group 'gnus-article-treat
1302 :group 'mime-security
1303 :link '(custom-manual "(gnus)Customizing Articles")
1304 :type gnus-article-treat-custom)
1306 (defvar gnus-article-encrypt-protocol-alist
1307 '(("PGP" . mml2015-self-encrypt)))
1309 ;; Set to nil if more than one protocol added to
1310 ;; gnus-article-encrypt-protocol-alist.
1311 (defcustom gnus-article-encrypt-protocol "PGP"