- 'article-type 'annotation)
- (set-marker beg (point)))))))))
-
-(defun gnus-article-toggle-cited-text (region)
- "Toggle hiding the text in REGION."
- (let (buffer-read-only)
- (funcall
- (if (text-property-any
- (car region) (1- (cdr region))
- (car gnus-hidden-properties) (cadr gnus-hidden-properties))
- 'remove-text-properties 'gnus-add-text-properties)
- (car region) (cdr region) gnus-hidden-properties)))
+ 'article-type 'annotation)
+ (set-marker beg (point))))))))
+
+(defun gnus-article-toggle-cited-text (args &optional arg)
+ "Toggle hiding the text in REGION.
+ARG can be nil or a number. Positive means hide, negative
+means show, nil means toggle."
+ (let* ((region (car args))
+ (beg (car region))
+ (end (cdr region))
+ (start (cadr args))
+ (hidden
+ (text-property-any beg (1- end) 'article-type 'cite))
+ (inhibit-point-motion-hooks t)
+ buffer-read-only)
+ (when (or (null arg)
+ (zerop arg)
+ (and (> arg 0) (not hidden))
+ (and (< arg 0) hidden))
+ (if hidden
+ (progn
+ ;; Can't remove 'cite from g-a-wash-types here because
+ ;; multiple citations may be hidden -jas
+ (gnus-remove-text-properties-when
+ 'article-type 'cite beg end
+ (cons 'article-type (cons 'cite
+ gnus-hidden-properties))))
+ (gnus-add-wash-type 'cite)
+ (gnus-add-text-properties-when
+ 'article-type nil beg end
+ (cons 'article-type (cons 'cite
+ gnus-hidden-properties))))
+ (let ((gnus-article-mime-handle-alist-1 gnus-article-mime-handle-alist))
+ (gnus-set-mode-line 'article))
+ (save-excursion
+ (goto-char start)
+ (gnus-delete-line)
+ (put-text-property
+ (point)
+ (progn
+ (gnus-article-add-button
+ (point)
+ (progn (eval
+ (if hidden
+ gnus-cited-opened-text-button-line-format-spec
+ gnus-cited-closed-text-button-line-format-spec))
+ (point))
+ `gnus-article-toggle-cited-text
+ args)
+ (point))
+ 'article-type 'annotation)))))