:type 'integer)
(defcustom gnus-cite-attribution-prefix
- "In article\\|in <\\|On \\(Mon\\|Tue\\|Wed\\|Thu\\|Fri\\|Sat\\|Sun\\),"
+ "In article\\|in <\\|On \\(Mon\\|Tue\\|Wed\\|Thu\\|Fri\\|Sat\\|Sun\\),\\| > -----Original Message-----"
"*Regexp matching the beginning of an attribution line."
:group 'gnus-cite
:type 'regexp)
(defcustom gnus-cite-attribution-suffix
- "\\(\\(wrote\\|writes\\|said\\|says\\|>\\)\\(:\\|\\.\\.\\.\\)\\)[ \t]*$"
+ "\\(\\(wrote\\|writes\\|said\\|says\\|>\\)\\(:\\|\\.\\.\\.\\)\\|-----Original Message-----\\)[ \t]*$"
"*Regexp matching the end of an attribution line.
The text matching the first grouping will be used as a button."
:group 'gnus-cite
skip (gnus-cite-find-prefix number)
face (cdr (assoc prefix face-alist)))
;; Add attribution button.
- (goto-line number)
+ (goto-char (point-min))
+ (forward-line (1- number))
(when (re-search-forward gnus-cite-attribution-suffix
(save-excursion (end-of-line 1) (point))
t)
(while numbers
(setq number (pop numbers))
(goto-char (point-min))
- (forward-line number)
+ (forward-line (1- number))
(push (cons (point-marker) "") marks)
(while (and numbers
(= (1- number) (car numbers)))
(forward-line (1- number))
(push (cons (point-marker) prefix) marks)))
;; Skip to the beginning of the body.
- (goto-char (point-min))
- (search-forward "\n\n" nil t)
+ (article-goto-body)
(push (cons (point-marker) "") marks)
;; Find the end of the body.
(goto-char (point-max))
(fill-column (if width (prefix-numeric-value width) fill-column)))
(save-restriction
(while (cdr marks)
- (widen)
(narrow-to-region (caar marks) (caadr marks))
(let ((adaptive-fill-regexp
(concat "^" (regexp-quote (cdar marks)) " *"))
(save-excursion
(set-buffer gnus-article-buffer)
(gnus-cite-parse-maybe force)
- (goto-char (point-min))
- (search-forward "\n\n" nil t)
+ (article-goto-body)
(let ((start (point))
(atts gnus-cite-attribution-alist)
(buffer-read-only nil)
(while total
(setq hidden (car total)
total (cdr total))
- (goto-line hidden)
+ (goto-char (point-min))
+ (forward-line (1- hidden))
(unless (assq hidden gnus-cite-attribution-alist)
(gnus-add-text-properties
(point) (progn (forward-line 1) (point))
;;; Internal functions:
+
(defun gnus-cite-parse-maybe (&optional force)
;; Parse if the buffer has changes since last time.
(if (and (not force)
(defun gnus-cite-parse-wrapper ()
;; Wrap chopped gnus-cite-parse
- (goto-char (point-min))
- (unless (search-forward "\n\n" nil t)
- (goto-char (point-max)))
+ (article-goto-body)
(save-excursion
(gnus-cite-parse-attributions))
;; Try to avoid check citation if there is no reason to believe
(when face
(let ((inhibit-point-motion-hooks t)
from to overlay)
- (goto-line number)
- (unless (eobp) ; Sometimes things become confused.
+ (goto-char (point-min))
+ (when (zerop (forward-line (1- number)))
(forward-char (length prefix))
(skip-chars-forward " \t")
(setq from (point))
(while numbers
(setq number (car numbers)
numbers (cdr numbers))
- (goto-line number)
+ (goto-char (point-min))
+ (forward-line (1- number))
(cond ((get-text-property (point) 'invisible)
(remove-text-properties (point) (progn (forward-line 1) (point))
gnus-hidden-properties))