Function: article-hide-headers
article-hide-headers is an interactive and byte-compiled function
defined in gnus-art.el.gz.
Signature
(article-hide-headers &optional ARG DELETE)
Documentation
Hide unwanted headers and possibly sort them as well.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/gnus-art.el.gz
(defun article-hide-headers (&optional _arg _delete)
"Hide unwanted headers and possibly sort them as well."
(interactive nil gnus-article-mode)
;; This function might be inhibited.
(unless gnus-inhibit-hiding
(let ((inhibit-read-only t)
(case-fold-search t)
(max (1+ (length gnus-sorted-header-list)))
(inhibit-point-motion-hooks t)
(cur (current-buffer))
ignored visible beg)
(save-excursion
;; `gnus-ignored-headers' and `gnus-visible-headers' may be
;; group parameters, so we should go to the summary buffer.
(when (prog1
(condition-case nil
(progn (set-buffer gnus-summary-buffer) t)
(error nil))
(setq ignored (when (not gnus-visible-headers)
(cond ((stringp gnus-ignored-headers)
gnus-ignored-headers)
((listp gnus-ignored-headers)
(mapconcat #'identity
gnus-ignored-headers
"\\|"))))
visible (cond ((stringp gnus-visible-headers)
gnus-visible-headers)
((and gnus-visible-headers
(listp gnus-visible-headers))
(mapconcat #'identity
gnus-visible-headers
"\\|")))))
(set-buffer cur))
(save-restriction
;; First we narrow to just the headers.
(article-narrow-to-head)
;; Hide any "From " lines at the beginning of (mail) articles.
(while (looking-at "From ")
(forward-line 1))
(unless (bobp)
(delete-region (point-min) (point)))
;; Then treat the rest of the header lines.
;; Then we use the two regular expressions
;; `gnus-ignored-headers' and `gnus-visible-headers' to
;; select which header lines is to remain visible in the
;; article buffer.
(while (re-search-forward "^[^ \t:]*:" nil t)
(beginning-of-line)
;; Mark the rank of the header.
(put-text-property
(point) (1+ (point)) 'message-rank
(if (or (and visible (looking-at visible))
(and ignored
(not (looking-at ignored))))
(gnus-article-header-rank)
(+ 2 max)))
(forward-line 1))
(message-sort-headers-1)
(when (setq beg (text-property-any
(point-min) (point-max) 'message-rank (+ 2 max)))
;; We delete the unwanted headers.
(gnus-add-wash-type 'headers)
(add-text-properties (point-min) (+ 5 (point-min))
'(article-type headers dummy-invisible t))
(delete-region beg (point-max))))))))