Function: gnus-dissect-cited-text
gnus-dissect-cited-text is a byte-compiled function defined in
gnus-cite.el.gz.
Signature
(gnus-dissect-cited-text)
Documentation
Dissect the article buffer looking for cited text.
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/gnus-cite.el.gz
(defun gnus-dissect-cited-text ()
"Dissect the article buffer looking for cited text."
(with-current-buffer gnus-article-buffer
(gnus-cite-parse-maybe nil t)
(let ((alist gnus-cite-prefix-alist)
prefix numbers number marks m)
;; Loop through citation prefixes.
(while alist
(setq numbers (pop alist)
prefix (pop numbers))
(while numbers
(setq number (pop numbers))
(goto-char (point-min))
(forward-line number)
(push (cons (point-marker) "") marks)
(while (and numbers
(= (1- number) (car numbers)))
(setq number (pop numbers)))
(goto-char (point-min))
(forward-line (1- number))
(push (cons (point-marker) prefix) marks)))
;; Skip to the beginning of the body.
(article-goto-body)
(push (cons (point-marker) "") marks)
;; Find the end of the body.
(goto-char (point-max))
(gnus-article-search-signature)
(push (cons (point-marker) "") marks)
;; Sort the marks.
(setq marks (sort marks #'car-less-than-car))
(let ((omarks marks))
(setq marks nil)
(while (cdr omarks)
(if (= (caar omarks) (caadr omarks))
(progn
(unless (equal (cdar omarks) "")
(push (car omarks) marks))
(unless (equal (cdadr omarks) "")
(push (cadr omarks) marks))
(unless (and (equal (cdar omarks) "")
(equal (cdadr omarks) "")
(not (cddr omarks)))
(setq omarks (cdr omarks))))
(push (car omarks) marks))
(setq omarks (cdr omarks)))
(when (car omarks)
(push (car omarks) marks))
(setq marks (setq m (nreverse marks)))
(while (cddr m)
(if (and (equal (cdadr m) "")
(equal (cdar m) (cdaddr m))
(goto-char (caadr m))
(looking-at "[ \t]*$")
(forward-line 1)
(= (point) (caaddr m)))
(setcdr m (cdddr m))
(setq m (cdr m))))
marks))))