/lisp/gnus/gnus-art.el
Emacs Lisp | 9035 lines | 7925 code | 629 blank | 481 comment | 121 complexity | 30dd8ce4a54c8af6353cb17adf8e1e7e MD5 | raw file
Possible License(s): GPL-3.0, LGPL-2.0, GPL-2.0, AGPL-3.0
Large files files are truncated, but you can click here to view the full file
- ;;; gnus-art.el --- article mode commands for Gnus
- ;; Copyright (C) 1996-2016 Free Software Foundation, Inc.
- ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
- ;; Keywords: news
- ;; This file is part of GNU Emacs.
- ;; GNU Emacs is free software: you can redistribute it and/or modify
- ;; it under the terms of the GNU General Public License as published by
- ;; the Free Software Foundation, either version 3 of the License, or
- ;; (at your option) any later version.
- ;; GNU Emacs is distributed in the hope that it will be useful,
- ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
- ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- ;; GNU General Public License for more details.
- ;; You should have received a copy of the GNU General Public License
- ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
- ;;; Commentary:
- ;;; Code:
- (eval-when-compile
- (require 'cl))
- (defvar tool-bar-map)
- (defvar w3m-minor-mode-map)
- (require 'gnus)
- (require 'gnus-sum)
- (require 'gnus-spec)
- (require 'gnus-int)
- (require 'gnus-win)
- (require 'mm-bodies)
- (require 'mail-parse)
- (require 'mm-decode)
- (require 'mm-view)
- (require 'wid-edit)
- (require 'mm-uu)
- (require 'message)
- (require 'mouse)
- (autoload 'gnus-msg-mail "gnus-msg" nil t)
- (autoload 'gnus-button-mailto "gnus-msg")
- (autoload 'gnus-button-reply "gnus-msg" nil t)
- (autoload 'parse-time-string "parse-time" nil nil)
- (autoload 'ansi-color-apply-on-region "ansi-color")
- (autoload 'mm-url-insert-file-contents-external "mm-url")
- (autoload 'mm-extern-cache-contents "mm-extern")
- (autoload 'url-expand-file-name "url-expand")
- (defgroup gnus-article nil
- "Article display."
- :link '(custom-manual "(gnus)Article Buffer")
- :group 'gnus)
- (defgroup gnus-article-treat nil
- "Treating article parts."
- :link '(custom-manual "(gnus)Article Hiding")
- :group 'gnus-article)
- (defgroup gnus-article-hiding nil
- "Hiding article parts."
- :link '(custom-manual "(gnus)Article Hiding")
- :group 'gnus-article)
- (defgroup gnus-article-highlight nil
- "Article highlighting."
- :link '(custom-manual "(gnus)Article Highlighting")
- :group 'gnus-article
- :group 'gnus-visual)
- (defgroup gnus-article-signature nil
- "Article signatures."
- :link '(custom-manual "(gnus)Article Signature")
- :group 'gnus-article)
- (defgroup gnus-article-headers nil
- "Article headers."
- :link '(custom-manual "(gnus)Hiding Headers")
- :group 'gnus-article)
- (defgroup gnus-article-washing nil
- "Special commands on articles."
- :link '(custom-manual "(gnus)Article Washing")
- :group 'gnus-article)
- (defgroup gnus-article-emphasis nil
- "Fontisizing articles."
- :link '(custom-manual "(gnus)Article Fontisizing")
- :group 'gnus-article)
- (defgroup gnus-article-saving nil
- "Saving articles."
- :link '(custom-manual "(gnus)Saving Articles")
- :group 'gnus-article)
- (defgroup gnus-article-mime nil
- "Worshiping the MIME wonder."
- :link '(custom-manual "(gnus)Using MIME")
- :group 'gnus-article)
- (defgroup gnus-article-buttons nil
- "Pushable buttons in the article buffer."
- :link '(custom-manual "(gnus)Article Buttons")
- :group 'gnus-article)
- (defgroup gnus-article-various nil
- "Other article options."
- :link '(custom-manual "(gnus)Misc Article")
- :group 'gnus-article)
- (defcustom gnus-ignored-headers
- (mapcar
- (lambda (header)
- (concat "^" header ":"))
- '("Path" "Expires" "Date-Received" "References" "Xref" "Lines"
- "Relay-Version" "Message-ID" "Approved" "Sender" "Received"
- "X-UIDL" "MIME-Version" "Return-Path" "In-Reply-To"
- "Content-Type" "Content-Transfer-Encoding" "X-WebTV-Signature"
- "X-MimeOLE" "X-MSMail-Priority" "X-Priority" "X-Loop"
- "X-Authentication-Warning" "X-MIME-Autoconverted" "X-Face"
- "X-Attribution" "X-Originating-IP" "Delivered-To"
- "NNTP-[-A-Za-z]+" "Distribution" "X-no-archive" "X-Trace"
- "X-Complaints-To" "X-NNTP-Posting-Host" "X-Orig.*"
- "Abuse-Reports-To" "Cache-Post-Path" "X-Article-Creation-Date"
- "X-Poster" "X-Mail2News-Path" "X-Server-Date" "X-Cache"
- "Originator" "X-Problems-To" "X-Auth-User" "X-Post-Time"
- "X-Admin" "X-UID" "Resent-[-A-Za-z]+" "X-Mailing-List"
- "Precedence" "Original-[-A-Za-z]+" "X-filename" "X-Orcpt"
- "Old-Received" "X-Pgp" "X-Auth" "X-From-Line"
- "X-Gnus-Article-Number" "X-Majordomo" "X-Url" "X-Sender"
- "MBOX-Line" "Priority" "X400-[-A-Za-z]+"
- "Status" "X-Gnus-Mail-Source" "Cancel-Lock"
- "X-FTN" "X-EXP32-SerialNo" "Encoding" "Importance"
- "Autoforwarded" "Original-Encoded-Information-Types" "X-Ya-Pop3"
- "X-Face-Version" "X-Vms-To" "X-ML-NAME" "X-ML-COUNT"
- "Mailing-List" "X-finfo" "X-md5sum" "X-md5sum-Origin"
- "X-Sun-Charset" "X-Accept-Language" "X-Envelope-Sender"
- "List-[A-Za-z]+" "X-Listprocessor-Version"
- "X-Received" "X-Distribute" "X-Sequence" "X-Juno-Line-Breaks"
- "X-Notes-Item" "X-MS-TNEF-Correlator" "x-uunet-gateway"
- "X-Received" "Content-length" "X-precedence"
- "X-Authenticated-User" "X-Comment" "X-Report" "X-Abuse-Info"
- "X-HTTP-Proxy" "X-Mydeja-Info" "X-Copyright" "X-No-Markup"
- "X-Abuse-Info" "X-From_" "X-Accept-Language" "Errors-To"
- "X-BeenThere" "X-Mailman-Version" "List-Help" "List-Post"
- "List-Subscribe" "List-Id" "List-Unsubscribe" "List-Archive"
- "X-Content-length" "X-Posting-Agent" "Original-Received"
- "X-Request-PGP" "X-Fingerprint" "X-WRIEnvto" "X-WRIEnvfrom"
- "X-Virus-Scanned" "X-Delivery-Agent" "Posted-Date" "X-Gateway"
- "X-Local-Origin" "X-Local-Destination" "X-UserInfo1"
- "X-Received-Date" "X-Hashcash" "Face" "X-DMCA-Notifications"
- "X-Abuse-and-DMCA-Info" "X-Postfilter" "X-Gpg-.*" "X-Disclaimer"
- "Envelope-To" "X-Spam-Score" "System-Type" "X-Injected-Via-Gmane"
- "X-Gmane-NNTP-Posting-Host" "Jabber-ID" "Archived-At"
- "Envelope-Sender" "Envelope-Recipients"))
- "*All headers that start with this regexp will be hidden.
- This variable can also be a list of regexps of headers to be ignored.
- If `gnus-visible-headers' is non-nil, this variable will be ignored."
- :type '(choice regexp
- (repeat regexp))
- :group 'gnus-article-hiding)
- (defcustom gnus-visible-headers
- "^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:"
- "*All headers that do not match this regexp will be hidden.
- This variable can also be a list of regexp of headers to remain visible.
- If this variable is non-nil, `gnus-ignored-headers' will be ignored."
- :type '(choice
- (repeat :value-to-internal (lambda (widget value)
- (custom-split-regexp-maybe value))
- :match (lambda (widget value)
- (or (stringp value)
- (widget-editable-list-match widget value)))
- regexp)
- (const :tag "Use gnus-ignored-headers" nil)
- regexp)
- :group 'gnus-article-hiding)
- (defcustom gnus-sorted-header-list
- '("^From:" "^Subject:" "^Summary:" "^Keywords:" "^Newsgroups:"
- "^Followup-To:" "^To:" "^Cc:" "^Date:" "^Organization:")
- "*This variable is a list of regular expressions.
- If it is non-nil, headers that match the regular expressions will
- be placed first in the article buffer in the sequence specified by
- this list."
- :type '(repeat regexp)
- :group 'gnus-article-hiding)
- (defcustom gnus-boring-article-headers '(empty followup-to reply-to)
- "Headers that are only to be displayed if they have interesting data.
- Possible values in this list are:
- `empty' Headers with no content.
- `newsgroups' Newsgroup identical to Gnus group.
- `to-address' To identical to To-address.
- `to-list' To identical to To-list.
- `cc-list' CC identical to To-list.
- `followup-to' Followup-to identical to Newsgroups.
- `reply-to' Reply-to identical to From.
- `date' Date less than four days old.
- `long-to' To and/or Cc longer than 1024 characters.
- `many-to' Multiple To and/or Cc."
- :type '(set (const :tag "Headers with no content." empty)
- (const :tag "Newsgroups identical to Gnus group." newsgroups)
- (const :tag "To identical to To-address." to-address)
- (const :tag "To identical to To-list." to-list)
- (const :tag "CC identical to To-list." cc-list)
- (const :tag "Followup-to identical to Newsgroups." followup-to)
- (const :tag "Reply-to identical to From." reply-to)
- (const :tag "Date less than four days old." date)
- (const :tag "To and/or Cc longer than 1024 characters." long-to)
- (const :tag "Multiple To and/or Cc headers." many-to))
- :group 'gnus-article-hiding)
- (defcustom gnus-article-skip-boring nil
- "Skip over text that is not worth reading.
- By default, if you set this t, then Gnus will display citations and
- signatures, but will never scroll down to show you a page consisting
- only of boring text. Boring text is controlled by
- `gnus-article-boring-faces'."
- :version "22.1"
- :type 'boolean
- :group 'gnus-article-hiding)
- (defcustom gnus-signature-separator '("^-- $" "^-- *$")
- "Regexp matching signature separator.
- This can also be a list of regexps. In that case, it will be checked
- from head to tail looking for a separator. Searches will be done from
- the end of the buffer."
- :type '(choice :format "%{%t%}: %[Value Menu%]\n%v"
- (regexp)
- (repeat :tag "List of regexp" regexp))
- :group 'gnus-article-signature)
- (defcustom gnus-signature-limit nil
- "Provide a limit to what is considered a signature.
- If it is a number, no signature may not be longer (in characters) than
- that number. If it is a floating point number, no signature may be
- longer (in lines) than that number. If it is a function, the function
- will be called without any parameters, and if it returns nil, there is
- no signature in the buffer. If it is a string, it will be used as a
- regexp. If it matches, the text in question is not a signature.
- This can also be a list of the above values."
- :type '(choice (const nil)
- (integer :value 200)
- (number :value 4.0)
- function
- (regexp :value ".*"))
- :group 'gnus-article-signature)
- (defcustom gnus-hidden-properties
- ;; We use to have `intangible' here as well, but Emacs's command loop moves
- ;; point out of invisible text anyway, so `intangible' is clearly not
- ;; needed there. And XEmacs doesn't handle `intangible' anyway.
- '(invisible t)
- "Property list to use for hiding text."
- :type 'plist
- :group 'gnus-article-hiding)
- ;; Fixme: This isn't the right thing for mixed graphical and non-graphical
- ;; frames in a session.
- (defcustom gnus-article-x-face-command
- (if (featurep 'xemacs)
- (if (or (gnus-image-type-available-p 'xface)
- (gnus-image-type-available-p 'pbm))
- 'gnus-display-x-face-in-from
- "{ echo \
- '/* Format_version=1, Width=48, Height=48, Depth=1, Valid_bits_per_item=16 */'\
- ; uncompface; } | icontopbm | ee -")
- (if (gnus-image-type-available-p 'pbm)
- 'gnus-display-x-face-in-from
- "{ echo \
- '/* Format_version=1, Width=48, Height=48, Depth=1, Valid_bits_per_item=16 */'\
- ; uncompface; } | icontopbm | display -"))
- "*String or function to be executed to display an X-Face header.
- If it is a string, the command will be executed in a sub-shell
- asynchronously. The compressed face will be piped to this command."
- :type `(choice string
- (function-item gnus-display-x-face-in-from)
- function)
- :version "21.1"
- :group 'gnus-picon
- :group 'gnus-article-washing)
- (defcustom gnus-article-x-face-too-ugly nil
- "Regexp matching posters whose face shouldn't be shown automatically."
- :type '(choice regexp (const nil))
- :group 'gnus-article-washing)
- (defcustom gnus-article-banner-alist nil
- "Banner alist for stripping.
- For example,
- ((egroups . \"^[ \\t\\n]*-------------------+\\\\( \\\\(e\\\\|Yahoo! \\\\)Groups Sponsor -+\\\\)?....\\n\\\\(.+\\n\\\\)+\"))"
- :version "21.1"
- :type '(repeat (cons symbol regexp))
- :group 'gnus-article-washing)
- (gnus-define-group-parameter
- banner
- :variable-document
- "Alist of regexps (to match group names) and banner."
- :variable-group gnus-article-washing
- :parameter-type
- '(choice :tag "Banner"
- :value nil
- (const :tag "Remove signature" signature)
- (symbol :tag "Item in `gnus-article-banner-alist'" none)
- regexp
- (const :tag "None" nil))
- :parameter-document
- "If non-nil, specify how to remove `banners' from articles.
- Symbol `signature' means to remove signatures delimited by
- `gnus-signature-separator'. Any other symbol is used to look up a
- regular expression to match the banner in `gnus-article-banner-alist'.
- A string is used as a regular expression to match the banner
- directly.")
- (defcustom gnus-article-address-banner-alist nil
- "Alist of mail addresses and banners.
- Each element has the form (ADDRESS . BANNER), where ADDRESS is a regexp
- to match a mail address in the From: header, BANNER is one of a symbol
- `signature', an item in `gnus-article-banner-alist', a regexp and nil.
- If ADDRESS matches author's mail address, it will remove things like
- advertisements. For example:
- \((\"@yoo-hoo\\\\.co\\\\.jp\\\\\\='\" . \"\\n_+\\nDo You Yoo-hoo!\\\\?\\n.*\\n.*\\n\"))
- "
- :type '(repeat
- (cons
- (regexp :tag "Address")
- (choice :tag "Banner" :value nil
- (const :tag "Remove signature" signature)
- (symbol :tag "Item in `gnus-article-banner-alist'" none)
- regexp
- (const :tag "None" nil))))
- :version "22.1"
- :group 'gnus-article-washing)
- (defmacro gnus-emphasis-custom-with-format (&rest body)
- `(let ((format "\
- \\(\\s-\\|^\\|\\=\\|[-\"]\\|\\s(\\)\\(%s\\(\\w+\\(\\s-+\\w+\\)*[.,]?\\)%s\\)\
- \\(\\([-,.;:!?\"]\\|\\s)\\)+\\s-\\|[?!.]\\s-\\|\\s)\\|\\s-\\)"))
- ,@body))
- (defun gnus-emphasis-custom-value-to-external (value)
- (gnus-emphasis-custom-with-format
- (if (consp (car value))
- (list (format format (car (car value)) (cdr (car value)))
- 2
- (if (nth 1 value) 2 3)
- (nth 2 value))
- value)))
- (defun gnus-emphasis-custom-value-to-internal (value)
- (gnus-emphasis-custom-with-format
- (let ((regexp (concat "\\`"
- (format (regexp-quote format)
- "\\([^()]+\\)" "\\([^()]+\\)")
- "\\'"))
- pattern)
- (if (string-match regexp (setq pattern (car value)))
- (list (cons (match-string 1 pattern) (match-string 2 pattern))
- (= (nth 2 value) 2)
- (nth 3 value))
- value))))
- (defcustom gnus-emphasis-alist
- (let ((types
- '(("\\*" "\\*" bold nil 2)
- ("_" "_" underline)
- ("/" "/" italic)
- ("_/" "/_" underline-italic)
- ("_\\*" "\\*_" underline-bold)
- ("\\*/" "/\\*" bold-italic)
- ("_\\*/" "/\\*_" underline-bold-italic))))
- (nconc
- (gnus-emphasis-custom-with-format
- (mapcar (lambda (spec)
- (list (format format (car spec) (cadr spec))
- (or (nth 3 spec) 2)
- (or (nth 4 spec) 3)
- (intern (format "gnus-emphasis-%s" (nth 2 spec)))))
- types))
- '(;; I've never seen anyone use this strikethru convention whereas I've
- ;; several times seen it triggered by normal text. --Stef
- ;; Miles suggests that this form is sometimes used but for italics,
- ;; so maybe we should map it to `italic'.
- ;; ("\\(\\s-\\|^\\)\\(-\\(\\(\\w\\|-[^-]\\)+\\)-\\)\\(\\s-\\|[?!.,;]\\)"
- ;; 2 3 gnus-emphasis-strikethru)
- ("\\(\\s-\\|^\\)\\(_\\(\\(\\w\\|_[^_]\\)+\\)_\\)\\(\\s-\\|[?!.,;]\\)"
- 2 3 gnus-emphasis-underline))))
- "*Alist that says how to fontify certain phrases.
- Each item looks like this:
- (\"_\\\\(\\\\w+\\\\)_\" 0 1 \\='underline)
- The first element is a regular expression to be matched. The second
- is a number that says what regular expression grouping used to find
- the entire emphasized word. The third is a number that says what
- regexp grouping should be displayed and highlighted. The fourth
- is the face used for highlighting."
- :type
- '(repeat
- (menu-choice
- :format "%[Customizing Style%]\n%v"
- :indent 2
- (group :tag "Default"
- :value ("" 0 0 default)
- :value-create
- (lambda (widget)
- (let ((value (widget-get
- (cadr (widget-get (widget-get widget :parent)
- :args))
- :value)))
- (if (not (eq (nth 2 value) 'default))
- (widget-put
- widget
- :value
- (gnus-emphasis-custom-value-to-external value))))
- (widget-group-value-create widget))
- regexp
- (integer :format "Match group: %v")
- (integer :format "Emphasize group: %v")
- face)
- (group :tag "Simple"
- :value (("_" . "_") nil default)
- (cons :format "%v"
- (regexp :format "Start regexp: %v")
- (regexp :format "End regexp: %v"))
- (boolean :format "Show start and end patterns: %[%v%]\n"
- :on " On " :off " Off ")
- face)))
- :get (lambda (symbol)
- (mapcar 'gnus-emphasis-custom-value-to-internal
- (default-value symbol)))
- :set (lambda (symbol value)
- (set-default symbol (mapcar 'gnus-emphasis-custom-value-to-external
- value)))
- :group 'gnus-article-emphasis)
- (defcustom gnus-emphasize-whitespace-regexp "^[ \t]+\\|[ \t]*\n"
- "A regexp to describe whitespace which should not be emphasized.
- Typical values are \"^[ \\t]+\\\\|[ \\t]*\\n\" and \"[ \\t]+\\\\|[ \\t]*\\n\".
- The former avoids underlining of leading and trailing whitespace,
- and the latter avoids underlining any whitespace at all."
- :version "21.1"
- :group 'gnus-article-emphasis
- :type 'regexp)
- (defface gnus-emphasis-bold '((t (:bold t)))
- "Face used for displaying strong emphasized text (*word*)."
- :group 'gnus-article-emphasis)
- (defface gnus-emphasis-italic '((t (:italic t)))
- "Face used for displaying italic emphasized text (/word/)."
- :group 'gnus-article-emphasis)
- (defface gnus-emphasis-underline '((t (:underline t)))
- "Face used for displaying underlined emphasized text (_word_)."
- :group 'gnus-article-emphasis)
- (defface gnus-emphasis-underline-bold '((t (:bold t :underline t)))
- "Face used for displaying underlined bold emphasized text (_*word*_)."
- :group 'gnus-article-emphasis)
- (defface gnus-emphasis-underline-italic '((t (:italic t :underline t)))
- "Face used for displaying underlined italic emphasized text (_/word/_)."
- :group 'gnus-article-emphasis)
- (defface gnus-emphasis-bold-italic '((t (:bold t :italic t)))
- "Face used for displaying bold italic emphasized text (/*word*/)."
- :group 'gnus-article-emphasis)
- (defface gnus-emphasis-underline-bold-italic
- '((t (:bold t :italic t :underline t)))
- "Face used for displaying underlined bold italic emphasized text.
- Example: (_/*word*/_)."
- :group 'gnus-article-emphasis)
- (defface gnus-emphasis-strikethru (if (featurep 'xemacs)
- '((t (:strikethru t)))
- '((t (:strike-through t))))
- "Face used for displaying strike-through text (-word-)."
- :group 'gnus-article-emphasis)
- (defface gnus-emphasis-highlight-words
- '((t (:background "black" :foreground "yellow")))
- "Face used for displaying highlighted words."
- :group 'gnus-article-emphasis)
- (defcustom gnus-article-time-format "%a, %d %b %Y %T %Z"
- "Format for display of Date headers in article bodies.
- See `format-time-string' for the possible values.
- The variable can also be function, which should return a complete Date
- header. The function is called with one argument, the time, which can
- be fed to `format-time-string'."
- :type '(choice string function)
- :link '(custom-manual "(gnus)Article Date")
- :group 'gnus-article-washing)
- (defcustom gnus-save-all-headers t
- "*If non-nil, don't remove any headers before saving.
- This will be overridden by the `:headers' property that the symbol of
- the saver function, which is specified by `gnus-default-article-saver',
- might have."
- :group 'gnus-article-saving
- :type 'boolean)
- (defcustom gnus-prompt-before-saving 'always
- "*This variable says how much prompting is to be done when saving articles.
- If it is nil, no prompting will be done, and the articles will be
- saved to the default files. If this variable is `always', each and
- every article that is saved will be preceded by a prompt, even when
- saving large batches of articles. If this variable is neither nil not
- `always', there the user will be prompted once for a file name for
- each invocation of the saving commands."
- :group 'gnus-article-saving
- :type '(choice (item always)
- (item :tag "never" nil)
- (sexp :tag "once" :format "%t\n" :value t)))
- (defcustom gnus-article-show-cursor nil
- "If non-nil, show the cursor in the Article buffer even when not selected."
- :version "25.1"
- :group 'gnus-article
- :type 'bool)
- (defcustom gnus-saved-headers gnus-visible-headers
- "Headers to keep if `gnus-save-all-headers' is nil.
- If `gnus-save-all-headers' is non-nil, this variable will be ignored.
- If that variable is nil, however, all headers that match this regexp
- will be kept while the rest will be deleted before saving. This and
- `gnus-save-all-headers' will be overridden by the `:headers' property
- that the symbol of the saver function, which is specified by
- `gnus-default-article-saver', might have."
- :group 'gnus-article-saving
- :type 'regexp)
- ;; Note that "Rmail format" is mbox since Emacs 23, but Babyl before.
- (defcustom gnus-default-article-saver 'gnus-summary-save-in-rmail
- "A function to save articles in your favorite format.
- The function will be called by way of the `gnus-summary-save-article'
- command, and friends such as `gnus-summary-save-article-rmail'.
- Gnus provides the following functions:
- * gnus-summary-save-in-rmail (Rmail format)
- * gnus-summary-save-in-mail (Unix mail format)
- * gnus-summary-save-in-folder (MH folder)
- * gnus-summary-save-in-file (article format)
- * gnus-summary-save-body-in-file (article body)
- * gnus-summary-save-in-vm (use VM's folder format)
- * gnus-summary-write-to-file (article format -- overwrite)
- * gnus-summary-write-body-to-file (article body -- overwrite)
- * gnus-summary-save-in-pipe (article format)
- The symbol of each function may have the following properties:
- * :decode
- The value non-nil means save decoded articles. This is meaningful
- only with `gnus-summary-save-in-file', `gnus-summary-save-body-in-file',
- `gnus-summary-write-to-file', `gnus-summary-write-body-to-file', and
- `gnus-summary-save-in-pipe'.
- * :function
- The value specifies an alternative function which appends, not
- overwrites, articles to a file. This implies that when saving many
- articles at a time, `gnus-prompt-before-saving' is bound to t and all
- articles are saved in a single file. This is meaningful only with
- `gnus-summary-write-to-file' and `gnus-summary-write-body-to-file'.
- * :headers
- The value specifies the symbol of a variable of which the value
- specifies headers to be saved. If it is omitted,
- `gnus-save-all-headers' and `gnus-saved-headers' control what
- headers should be saved."
- :group 'gnus-article-saving
- :type '(radio (function-item gnus-summary-save-in-rmail)
- (function-item gnus-summary-save-in-mail)
- (function-item gnus-summary-save-in-folder)
- (function-item gnus-summary-save-in-file)
- (function-item gnus-summary-save-body-in-file)
- (function-item gnus-summary-save-in-vm)
- (function-item gnus-summary-write-to-file)
- (function-item gnus-summary-write-body-to-file)
- (function-item gnus-summary-save-in-pipe)
- (function)))
- (defcustom gnus-article-save-coding-system
- (or (and (mm-coding-system-p 'utf-8) 'utf-8)
- (and (mm-coding-system-p 'iso-2022-7bit) 'iso-2022-7bit)
- (and (mm-coding-system-p 'emacs-mule) 'emacs-mule)
- (and (mm-coding-system-p 'escape-quoted) 'escape-quoted))
- "Coding system used to save decoded articles to a file.
- The recommended coding systems are `utf-8', `iso-2022-7bit' and so on,
- which can safely encode any characters in text. This is used by the
- commands including:
- * gnus-summary-save-article-file
- * gnus-summary-save-article-body-file
- * gnus-summary-write-article-file
- * gnus-summary-write-article-body-file
- and the functions to which you may set `gnus-default-article-saver':
- * gnus-summary-save-in-file
- * gnus-summary-save-body-in-file
- * gnus-summary-write-to-file
- * gnus-summary-write-body-to-file
- Those commands and functions save just text displayed in the article
- buffer to a file if the value of this variable is non-nil. Note that
- buttonized MIME parts will be lost in a saved file in that case.
- Otherwise, raw articles will be saved."
- :group 'gnus-article-saving
- :type `(choice
- :format "%{%t%}:\n %[Value Menu%] %v"
- (const :tag "Save raw articles" nil)
- ,@(delq nil
- (mapcar
- (lambda (arg) (if (mm-coding-system-p (nth 3 arg)) arg))
- '((const :tag "UTF-8" utf-8)
- (const :tag "iso-2022-7bit" iso-2022-7bit)
- (const :tag "Emacs internal" emacs-mule)
- (const :tag "escape-quoted" escape-quoted))))
- (symbol :tag "Coding system")))
- (defcustom gnus-rmail-save-name 'gnus-plain-save-name
- "A function generating a file name to save articles in Rmail format.
- The function is called with NEWSGROUP, HEADERS, and optional LAST-FILE."
- :group 'gnus-article-saving
- :type 'function)
- (defcustom gnus-mail-save-name 'gnus-plain-save-name
- "A function generating a file name to save articles in Unix mail format.
- The function is called with NEWSGROUP, HEADERS, and optional LAST-FILE."
- :group 'gnus-article-saving
- :type 'function)
- (defcustom gnus-folder-save-name 'gnus-folder-save-name
- "A function generating a file name to save articles in MH folder.
- The function is called with NEWSGROUP, HEADERS, and optional LAST-FOLDER."
- :group 'gnus-article-saving
- :type 'function)
- (defcustom gnus-file-save-name 'gnus-numeric-save-name
- "A function generating a file name to save articles in article format.
- The function is called with NEWSGROUP, HEADERS, and optional
- LAST-FILE."
- :group 'gnus-article-saving
- :type 'function)
- (defcustom gnus-split-methods
- '((gnus-article-archive-name)
- (gnus-article-nndoc-name))
- "*Variable used to suggest where articles are to be saved.
- For instance, if you would like to save articles related to Gnus in
- the file \"gnus-stuff\", and articles related to VM in \"vm-stuff\",
- you could set this variable to something like:
- ((\"^Subject:.*gnus\\|^Newsgroups:.*gnus\" \"gnus-stuff\")
- (\"^Subject:.*vm\\|^Xref:.*vm\" \"vm-stuff\"))
- This variable is an alist where the key is the match and the
- value is a list of possible files to save in if the match is
- non-nil.
- If the match is a string, it is used as a regexp match on the
- article. If the match is a symbol, that symbol will be funcalled
- from the buffer of the article to be saved with the newsgroup as the
- parameter. If it is a list, it will be evalled in the same buffer.
- If this form or function returns a string, this string will be used as a
- possible file name; and if it returns a non-nil list, that list will be
- used as possible file names."
- :group 'gnus-article-saving
- :type '(repeat (choice (list :value (fun) function)
- (cons :value ("" "") regexp (repeat string))
- (sexp :value nil))))
- (defcustom gnus-page-delimiter "^\^L"
- "*Regexp describing what to use as article page delimiters.
- The default value is \"^\^L\", which is a form linefeed at the
- beginning of a line."
- :type 'regexp
- :group 'gnus-article-various)
- (defcustom gnus-article-mode-line-format "Gnus: %g %S%m"
- "*The format specification for the article mode line.
- See `gnus-summary-mode-line-format' for a closer description.
- The following additional specs are available:
- %w The article washing status.
- %m The number of MIME parts in the article."
- :version "24.1"
- :type 'string
- :group 'gnus-article-various)
- (defcustom gnus-article-mode-hook nil
- "*A hook for Gnus article mode."
- :type 'hook
- :group 'gnus-article-various)
- (when (featurep 'xemacs)
- ;; Extracted from gnus-xmas-define in order to preserve user settings
- (when (fboundp 'turn-off-scroll-in-place)
- (add-hook 'gnus-article-mode-hook 'turn-off-scroll-in-place))
- ;; Extracted from gnus-xmas-redefine in order to preserve user settings
- (add-hook 'gnus-article-mode-hook 'gnus-xmas-article-menu-add))
- (defcustom gnus-article-menu-hook nil
- "*Hook run after the creation of the article mode menu."
- :type 'hook
- :group 'gnus-article-various)
- (defcustom gnus-article-prepare-hook nil
- "*A hook called after an article has been prepared in the article buffer."
- :type 'hook
- :group 'gnus-article-various)
- (defcustom gnus-copy-article-ignored-headers nil
- "List of headers to be removed when copying an article.
- Each element is a regular expression."
- :version "23.1" ;; No Gnus
- :type '(repeat regexp)
- :group 'gnus-article-various)
- (make-obsolete-variable 'gnus-article-hide-pgp-hook nil
- "Gnus 5.10 (Emacs 22.1)")
- (defface gnus-button
- '((t (:weight bold)))
- "Face used for highlighting a button in the article buffer."
- :group 'gnus-article-buttons)
- (defcustom gnus-article-button-face 'gnus-button
- "Face used for highlighting buttons in the article buffer.
- An article button is a piece of text that you can activate by pressing
- `RET' or `mouse-2' above it."
- :type 'face
- :group 'gnus-article-buttons)
- (defcustom gnus-article-mouse-face 'highlight
- "Face used for mouse highlighting in the article buffer.
- Article buttons will be displayed in this face when the cursor is
- above them."
- :type 'face
- :group 'gnus-article-buttons)
- (defcustom gnus-signature-face 'gnus-signature
- "Face used for highlighting a signature in the article buffer.
- Obsolete; use the face `gnus-signature' for customizations instead."
- :type 'face
- :group 'gnus-article-highlight
- :group 'gnus-article-signature)
- (defface gnus-signature
- '((t
- (:italic t)))
- "Face used for highlighting a signature in the article buffer."
- :group 'gnus-article-highlight
- :group 'gnus-article-signature)
- ;; backward-compatibility alias
- (put 'gnus-signature-face 'face-alias 'gnus-signature)
- (put 'gnus-signature-face 'obsolete-face "22.1")
- (defface gnus-header-from
- '((((class color)
- (background dark))
- (:foreground "PaleGreen1"))
- (((class color)
- (background light))
- (:foreground "red3"))
- (t
- (:italic t)))
- "Face used for displaying from headers."
- :group 'gnus-article-headers
- :group 'gnus-article-highlight)
- ;; backward-compatibility alias
- (put 'gnus-header-from-face 'face-alias 'gnus-header-from)
- (put 'gnus-header-from-face 'obsolete-face "22.1")
- (defface gnus-header-subject
- '((((class color)
- (background dark))
- (:foreground "SeaGreen1"))
- (((class color)
- (background light))
- (:foreground "red4"))
- (t
- (:bold t :italic t)))
- "Face used for displaying subject headers."
- :group 'gnus-article-headers
- :group 'gnus-article-highlight)
- ;; backward-compatibility alias
- (put 'gnus-header-subject-face 'face-alias 'gnus-header-subject)
- (put 'gnus-header-subject-face 'obsolete-face "22.1")
- (defface gnus-header-newsgroups
- '((((class color)
- (background dark))
- (:foreground "yellow" :italic t))
- (((class color)
- (background light))
- (:foreground "MidnightBlue" :italic t))
- (t
- (:italic t)))
- "Face used for displaying newsgroups headers.
- In the default setup this face is only used for crossposted
- articles."
- :group 'gnus-article-headers
- :group 'gnus-article-highlight)
- ;; backward-compatibility alias
- (put 'gnus-header-newsgroups-face 'face-alias 'gnus-header-newsgroups)
- (put 'gnus-header-newsgroups-face 'obsolete-face "22.1")
- (defface gnus-header-name
- '((((class color)
- (background dark))
- (:foreground "SpringGreen2"))
- (((class color)
- (background light))
- (:foreground "maroon"))
- (t
- (:bold t)))
- "Face used for displaying header names."
- :group 'gnus-article-headers
- :group 'gnus-article-highlight)
- ;; backward-compatibility alias
- (put 'gnus-header-name-face 'face-alias 'gnus-header-name)
- (put 'gnus-header-name-face 'obsolete-face "22.1")
- (defface gnus-header-content
- '((((class color)
- (background dark))
- (:foreground "SpringGreen1" :italic t))
- (((class color)
- (background light))
- (:foreground "indianred4" :italic t))
- (t
- (:italic t))) "Face used for displaying header content."
- :group 'gnus-article-headers
- :group 'gnus-article-highlight)
- ;; backward-compatibility alias
- (put 'gnus-header-content-face 'face-alias 'gnus-header-content)
- (put 'gnus-header-content-face 'obsolete-face "22.1")
- (defcustom gnus-header-face-alist
- '(("From" nil gnus-header-from)
- ("Subject" nil gnus-header-subject)
- ("Newsgroups:.*," nil gnus-header-newsgroups)
- ("" gnus-header-name gnus-header-content))
- "*Controls highlighting of article headers.
- An alist of the form (HEADER NAME CONTENT).
- HEADER is a regular expression which should match the name of a
- header and NAME and CONTENT are either face names or nil.
- The name of each header field will be displayed using the face
- specified by the first element in the list where HEADER matches
- the header name and NAME is non-nil. Similarly, the content will
- be displayed by the first non-nil matching CONTENT face."
- :group 'gnus-article-headers
- :group 'gnus-article-highlight
- :type '(repeat (list (regexp :tag "Header")
- (choice :tag "Name"
- (item :tag "skip" nil)
- (face :value default))
- (choice :tag "Content"
- (item :tag "skip" nil)
- (face :value default)))))
- (defcustom gnus-face-properties-alist (if (featurep 'xemacs)
- '((xface . (:face gnus-x-face)))
- '((pbm . (:face gnus-x-face))
- (png . nil)))
- "Alist of image types and properties applied to Face and X-Face images.
- Here are examples:
- ;; Specify the altitude of Face images in the From header.
- \(setq gnus-face-properties-alist
- \\='((pbm . (:face gnus-x-face :ascent 80))
- (png . (:ascent 80))))
- ;; Show Face images as pressed buttons.
- \(setq gnus-face-properties-alist
- \\='((pbm . (:face gnus-x-face :relief -2))
- (png . (:relief -2))))
- See the manual for the valid properties for various image types.
- Currently, `pbm' is used for X-Face images and `png' is used for Face
- images in Emacs. Only the `:face' property is effective on the `xface'
- image type in XEmacs if it is built with the libcompface library."
- :version "23.1" ;; No Gnus
- :group 'gnus-article-headers
- :type '(repeat (cons :format "%v" (symbol :tag "Image type") plist)))
- (defcustom gnus-article-decode-hook
- '(article-decode-charset article-decode-encoded-words
- article-decode-group-name article-decode-idna-rhs)
- "*Hook run to decode charsets in articles."
- :group 'gnus-article-headers
- :type 'hook)
- (defcustom gnus-display-mime-function 'gnus-display-mime
- "Function to display MIME articles."
- :group 'gnus-article-mime
- :type 'function)
- (defvar gnus-decode-header-function 'mail-decode-encoded-word-region
- "Function used to decode headers.")
- (defvar gnus-decode-address-function 'mail-decode-encoded-address-region
- "Function used to decode addresses.")
- (defvar gnus-article-dumbquotes-map
- '((?\200 "EUR")
- (?\202 ",")
- (?\203 "f")
- (?\204 ",,")
- (?\205 "...")
- (?\213 "<")
- (?\214 "OE")
- (?\221 "`")
- (?\222 "'")
- (?\223 "``")
- (?\224 "\"")
- (?\225 "*")
- (?\226 "-")
- (?\227 "--")
- (?\230 "~")
- (?\231 "(TM)")
- (?\233 ">")
- (?\234 "oe")
- (?\264 "'"))
- "Table for MS-to-Latin1 translation.")
- (defcustom gnus-ignored-mime-types nil
- "List of MIME types that should be ignored by Gnus."
- :version "21.1"
- :group 'gnus-article-mime
- :type '(repeat regexp))
- (defcustom gnus-unbuttonized-mime-types '(".*/.*")
- "List of MIME types that should not be given buttons when rendered inline.
- See also `gnus-buttonized-mime-types' which may override this variable.
- This variable is only used when `gnus-inhibit-mime-unbuttonizing' is nil."
- :version "21.1"
- :group 'gnus-article-mime
- :type '(repeat regexp))
- (defcustom gnus-buttonized-mime-types nil
- "List of MIME types that should be given buttons when rendered inline.
- If set, this variable overrides `gnus-unbuttonized-mime-types'.
- To see e.g. security buttons you could set this to
- `(\"multipart/signed\")'. You could also add \"multipart/alternative\" to
- this list to display radio buttons that allow you to choose one of two
- media types those mails include. See also `mm-discouraged-alternatives'.
- This variable is only used when `gnus-inhibit-mime-unbuttonizing' is nil."
- :version "22.1"
- :group 'gnus-article-mime
- :type '(repeat regexp))
- (defcustom gnus-inhibit-mime-unbuttonizing nil
- "If non-nil, all MIME parts get buttons.
- When nil (the default value), then some MIME parts do not get buttons,
- as described by the variables `gnus-buttonized-mime-types' and
- `gnus-unbuttonized-mime-types'."
- :version "22.1"
- :group 'gnus-article-mime
- :type 'boolean)
- (defcustom gnus-body-boundary-delimiter "_"
- "String used to delimit header and body.
- This variable is used by `gnus-article-treat-body-boundary' which can
- be controlled by `gnus-treat-body-boundary'."
- :version "22.1"
- :group 'gnus-article-various
- :type '(choice (item :tag "None" :value nil)
- string))
- (defcustom gnus-picon-databases '("/usr/lib/picon" "/usr/local/faces"
- "/usr/share/picons")
- "Defines the location of the faces database.
- For information on obtaining this database of pretty pictures, please
- see http://www.cs.indiana.edu/picons/ftp/index.html"
- :version "22.1"
- :type '(repeat directory)
- :link '(url-link :tag "download"
- "http://www.cs.indiana.edu/picons/ftp/index.html")
- :link '(custom-manual "(gnus)Picons")
- :group 'gnus-picon)
- (defun gnus-picons-installed-p ()
- "Say whether picons are installed on your machine."
- (let ((installed nil))
- (dolist (database gnus-picon-databases)
- (when (file-exists-p database)
- (setq installed t)))
- installed))
- (defcustom gnus-article-mime-part-function nil
- "Function called with a MIME handle as the argument.
- This is meant for people who want to do something automatic based
- on parts -- for instance, adding Vcard info to a database."
- :group 'gnus-article-mime
- :type '(choice (const nil)
- function))
- (defcustom gnus-mime-multipart-functions nil
- "An alist of MIME types to functions to display them."
- :version "21.1"
- :group 'gnus-article-mime
- :type '(repeat (cons :format "%v" (string :tag "MIME type") function)))
- (defcustom gnus-article-date-headers '(combined-lapsed)
- "A list of Date header formats to display.
- Valid formats are `ut' (Universal Time), `local' (local time
- zone), `english' (readable English), `lapsed' (elapsed time),
- `combined-lapsed' (both the original date and the elapsed time),
- `original' (the original date header), `iso8601' (ISO8601
- format), and `user-defined' (a user-defined format defined by the
- `gnus-article-time-format' variable).
- You have as many date headers as you want in the article buffer.
- Some of these headers are updated automatically. See
- `gnus-article-update-date-headers' for details."
- :version "24.1"
- :group 'gnus-article-headers
- :type '(set
- (const :tag "Universal time (UT)" ut)
- (const :tag "Local time zone" local)
- (const :tag "Readable English" english)
- (const :tag "Elapsed time" lapsed)
- (const :tag "Original and elapsed time" combined-lapsed)
- (const :tag "Original date header" original)
- (const :tag "ISO8601 format" iso8601)
- (const :tag "User-defined" user-defined)))
- (defcustom gnus-article-update-date-headers nil
- "A number that says how often to update the date header (in seconds).
- If nil, don't update it at all."
- :version "24.1"
- :group 'gnus-article-headers
- :type '(choice
- (item :tag "Don't update" :value nil)
- integer))
- (defcustom gnus-article-mime-match-handle-function 'undisplayed-alternative
- "Function called with a MIME handle as the argument.
- This is meant for people who want to view first matched part.
- For `undisplayed-alternative' (default), the first undisplayed
- part or alternative part is used. For `undisplayed', the first
- undisplayed part is used. For a function, the first part which
- the function return t is used. For nil, the first part is
- used."
- :version "21.1"
- :group 'gnus-article-mime
- :type '(choice
- (item :tag "first" :value nil)
- (item :tag "undisplayed" :value undisplayed)
- (item :tag "undisplayed or alternative"
- :value undisplayed-alternative)
- (function)))
- (defcustom gnus-mime-action-alist
- '(("save to file" . gnus-mime-save-part)
- ("save and strip" . gnus-mime-save-part-and-strip)
- ("replace with file" . gnus-mime-replace-part)
- ("delete part" . gnus-mime-delete-part)
- ("display as text" . gnus-mime-inline-part)
- ("view the part" . gnus-mime-view-part)
- ("pipe to command" . gnus-mime-pipe-part)
- ("toggle display" . gnus-article-press-button)
- ("toggle display" . gnus-article-view-part-as-charset)
- ("view as type" . gnus-mime-view-part-as-type)
- ("view internally" . gnus-mime-view-part-internally)
- ("view externally" . gnus-mime-view-part-externally))
- "An alist of actions that run on the MIME attachment."
- :group 'gnus-article-mime
- :type '(repeat (cons (string :tag "name")
- (function))))
- (defcustom gnus-auto-select-part 1
- "Advance to next MIME part when deleting or stripping parts.
- When 0, point will be placed on the same part as before. When
- positive (negative), move point forward (backwards) this many
- parts. When nil, redisplay article."
- :version "23.1" ;; No Gnus
- :group 'gnus-article-mime
- :type '(choice (const nil :tag "Redisplay article.")
- (const 1 :tag "Next part.")
- (const 0 :tag "Current part.")
- integer))
- ;;;
- ;;; The treatment variables
- ;;;
- (defvar gnus-part-display-hook nil
- "Hook called on parts that are to receive treatment.")
- (defvar gnus-article-treat-custom
- '(choice (const :tag "Off" nil)
- (const :tag "On" t)
- (const :tag "Header" head)
- (const :tag "First" first)
- (const :tag "Last" last)
- (integer :tag "Less")
- (repeat :tag "Groups" regexp)
- (sexp :tag "Predicate")))
- (defvar gnus-article-treat-head-custom
- '(choice (const :tag "Off" nil)
- (const :tag "Header" head)))
- (defvar gnus-article-treat-types '("text/plain" "text/x-verbatim"
- "text/x-patch" "text/html")
- "Part types eligible for treatment.")
- (defvar gnus-inhibit-treatment nil
- "Whether to inhibit treatment.")
- (defcustom gnus-treat-highlight-signature '(or t (typep "text/x-vcard"))
- "Highlight the signature.
- Valid values are nil, t, `head', `first', `last', an integer or a
- predicate. See Info node `(gnus)Customizing Articles'."
- :group 'gnus-article-treat
- :link '(custom-manual "(gnus)Customizing Articles")
- :type gnus-article-treat-custom)
- (put 'gnus-treat-highlight-signature 'highlight t)
- (defcustom gnus-treat-buttonize '(and 100000 (typep "text/plain"))
- "Add buttons.
- Valid values are nil, t, `head', `first', `last', an integer or a
- predicate. See Info node `(gnus)Customizing Articles'."
- :group 'gnus-article-treat
- :link '(custom-manual "(gnus)Customizing Articles")
- :type gnus-article-treat-custom)
- (put 'gnus-treat-buttonize 'highlight t)
- (defcustom gnus-treat-buttonize-head 'head
- "Add buttons to the head.
- Valid values are nil, t, `head', `first', `last', an integer or a
- predicate. See Info node `(gnus)Customizing Articles'."
- :group 'gnus-article-treat
- :link '(custom-manual "(gnus)Customizing Articles")
- :type gnus-article-treat-head-custom)
- (put 'gnus-treat-buttonize-head 'highlight t)
- (defcustom gnus-treat-date 'head
- "Display dates according to the `gnus-article-date-headers' variable.
- Valid values are nil, t, `head', `first', `last', an integer or a
- predicate. See Info node `(gnus)Customizing Articles'."
- :version "24.1"
- :group 'gnus-article-treat
- :link '(custom-manual "(gnus)Customizing Articles")
- :type gnus-article-treat-head-custom)
- (defcustom gnus-treat-emphasize 50000
- "Emphasize text.
- Valid values are nil, t, `head', `first', `last', an integer or a
- predicate. See Info node `(gnus)Customizing Articles'."
- :group 'gnus-article-treat
- :link '(custom-manual "(gnus)Customizing Articles")
- :type gnus-article-treat-custom)
- (put 'gnus-treat-emphasize 'highlight t)
- (defcustom gnus-treat-strip-cr nil
- "Remove carriage returns.
- Valid values are nil, t, `head', `first', `last', an integer or a
- predicate. See Info node `(gnus)Customizing Articles'."
- :version "22.1"
- :group 'gnus-article-treat
- :link '(custom-manual "(gnus)Customizing Articles")
- :type gnus-article-treat-custom)
- (defcustom gnus-treat-unsplit-urls nil
- "Remove newlines from within URLs.
- Valid values are nil, t, `head', `first', `last', an integer or a
- predicate. See Info node `(gnus)Customizing Articles'."
- :version "22.1"
- :group 'gnus-article-treat
- :link '(custom-manual "(gnus)Customizing Articles")
- :type gnus-article-treat-custom)
- (defcustom gnus-treat-leading-whitespace nil
- "Remove leading whitespace in headers.
- Valid values are nil, t, `head', `first', `last', an integer or a
- predicate. See Info node `(gnus)Customizing Articles'."
- :version "22.1"
- :group 'gnus-article-treat
- :link '(custom-manual "(gnus)Customizing Articles")
- :type gnus-article-treat-custom)
- (defcustom gnus-treat-hide-headers 'head
- "Hide headers.
- Valid values are nil, t, `head', `first', `last', an integer or a
- predicate. See Info node `(gnus)Customizing Articles'."
- :group 'gnus-article-treat
- :link '(custom-manual "(gnus)Customizing Articles")
- :type gnus-article-treat-head-custom)
- (defcustom gnus-treat-hide-boring-headers nil
- "Hide boring headers.
- Valid values are nil, t, `head', `first', `last', an integer or a
- predicate. See Info node `(gnus)Customizing Articles'."
- :group 'gnus-article-treat
- :link '(custom-manual "(gnus)Customizing Articles")
- :type gnus-article-treat-head-custom)
- (defcustom gnus-treat-hide-signature nil
- "Hide the signature.
- Valid values are nil, t, `head', `first', `last', an integer or a
- predicate. See Info node `(gnus)Customizing Articles'."
- :group 'gnus-article-treat
- :link '(custom-manual "(gnus)Customizing Articles")
- :type gnus-article-treat-custom)
- (defcustom gnus-treat-fill-article nil
- "Fill the article.
- Valid values are nil, t, `head', `first', `last', an integer or a
- predicate. See Info node `(gnus)Customizing Articles'."
- :group 'gnus-article-treat
- :link '(custom-manual "(gnus)Customizing Articles")
- :type gnus-article-treat-custom)
- (defcustom gnus-treat-hide-citation nil
- "Hide cited text.
- Valid values are nil, t, `head', `first', `last', an integer or a
- predicate. See Info node `(gnus)Customizing Articles'.
- See `gnus-article-highlight-citation' for variables used to
- control what it hides."
- :group 'gnus-article-treat
- :link '(custom-manual "(gnus)Customizing Articles")
- :type gnus-article-treat-custom)
- (defcustom gnus-treat-hide-citation-maybe nil
- "Hide cited text according to certain conditions.
- Valid values are nil, t, `head', `first', `last', an integer or a
- predicate. See Info node `(gnus)Customizing Articles'.
- See `gnus-cite-hide-percentage' and `gnus-cite-hide-absolute' for
- how to control what it hides."
- :group 'gnus-article-treat
- :link '(custom-manual "(gnus)Customizing Articles")
- :type gnus-article-treat-custom)
- (defcustom gnus-treat-strip-list-identifiers 'head
- "Strip list identifiers from `gnus-list-identifiers'.
- Valid values are nil, t, `head', `first', `last', an integer or a
- predicate. See Info node `(gnus)Customizing Articles'."
- :version "21.1"
- :group 'gnus-article-treat
- :link '(custom-manual "(gnus)Customizing Articles")
- :type gnus-article-treat-custom)
- (gnus-define-group-parameter
- list-identifier
- :variable-document
- "Alist of regexps and correspondent identifiers."
- :variable-group gnus-article-washing
- :parameter-type
- '(choice :tag "Identifier"
- :value nil
- (symbol :tag "Item in `gnus-list-identifiers'" none)
- regexp
- (const :tag "None" nil))
- :parameter-document
- "If non-nil, specify how to remove `identifiers' from articles' subject.
- Any symbol is used to look up a regular expression to match the
- banner in `gnus-list-identifiers'. A string is used as a regular
- expression to match the identifier directly.")
- (make-obsolete-variable 'gnus-treat-strip-pgp nil
- "Gnus 5.10 (Emacs 22.1)")
- (defcustom gnus-treat-strip-pem nil
- "Strip PEM signatures.
- Valid values are nil, t, `head', `first', `last', an integer or a
- predicate. See Info node `(gnus)Customizing Articles'."
- :group 'gnus-article-treat
- :link '(custom-manual "(gnus)Customizing Articles")
- :type gnus-article-treat-custom)
- (defcustom gnus-treat-strip-banner t
- "Strip banners from articles.
- The banner to be stripped is specified in the `banner' group parameter.
- Valid values are nil, t, `head', `first', `last', an integer or a
- predicate. See Info node `(gnus)Customizing Articles'."
- :group 'gnus-article-treat
- :link '(custom-manual "(gnus)Customizing Articles")
- :type gnus-article-treat-custom)
- (defcustom gnus-treat-highlight-headers 'head
- "Highlight the headers.
- Valid values are nil, t, `head', `first', `last', an integer or a
- predicate. See Info node `(gnus)Customizing Articles'."
- :group 'gnus-article-treat
- :link '(custom-manual "(gnus)Customizing Articles")
- :type gnus-article-treat-head-custom)
- (put 'gnus-treat-highlight-headers 'highlight t)
- (defcustom gnus-treat-highlight-citation t
- "Highlight cited text.
- Valid values are nil, t, `head', `first', `last', an integer or a
- predicate. See Info node `(gnus)Customizing Articles'."
- :group 'gnus-article-treat
- :link '(custom-manual "(gnus)Customizing Articles")
- :type gnus-article-treat-custom)
- (put 'gnus-treat-highlight-citation 'highlight t)
- (defcustom gnus-treat-strip-headers-in-body t
- "Strip the X-No-Archive header line from the beginning of the body.
- Valid values are nil, t, `head', `first', `last', an integer or a
- predicate. See Info node `(gnus)Customizing Articles'."
- :version "21.1"
- :group 'gnus-article-treat
- :link '(custom-manual "(gnus)Customizing Articles")
- :type gnus-article-treat-custom)
- (defcustom gnus-treat-strip-trailing-blank-lines nil
- "Strip trailing blank lines.
- Valid values are nil, t, `head', `first', `last', an integer or a
- predicate. See Info node `(gnus)Customi…
Large files files are truncated, but you can click here to view the full file