(gnus-point-at-bol, gnus-point-at-eol): Remove.
[gnus] / lisp / gnus-cite.el
index 50ab6c1..71f2b17 100644 (file)
@@ -30,6 +30,7 @@
 
 (require 'gnus)
 (require 'gnus-range)
+(require 'gnus-art)
 (require 'message)     ; for message-cite-prefix-regexp
 
 ;;; Customization:
@@ -372,7 +373,7 @@ Lines matching `gnus-cite-attribution-suffix' and perhaps
        (goto-char (point-min))
        (forward-line (1- number))
        (when (re-search-forward gnus-cite-attribution-suffix
-                                (save-excursion (end-of-line 1) (point))
+                                (point-at-eol)
                                 t)
          (gnus-article-add-button (match-beginning 1) (match-end 1)
                                   'gnus-cite-toggle prefix))
@@ -618,41 +619,44 @@ cited text with attributions.  When called interactively, these two
 variables are ignored.
 See also the documentation for `gnus-article-highlight-citation'."
   (interactive (append (gnus-article-hidden-arg) '(force)))
-  (unless (gnus-article-check-hidden-text 'cite arg)
-    (save-excursion
-      (set-buffer gnus-article-buffer)
-      (gnus-cite-parse-maybe force)
-      (article-goto-body)
-      (let ((start (point))
-           (atts gnus-cite-attribution-alist)
-           (buffer-read-only nil)
-           (inhibit-point-motion-hooks t)
-           (hidden 0)
-           total)
-       (goto-char (point-max))
-       (gnus-article-search-signature)
-       (setq total (count-lines start (point)))
-       (while atts
-         (setq hidden (+ hidden (length (cdr (assoc (cdar atts)
-                                                    gnus-cite-prefix-alist))))
-               atts (cdr atts)))
-       (when (or force
-                 (and (> (* 100 hidden) (* gnus-cite-hide-percentage total))
-                      (> hidden gnus-cite-hide-absolute)))
-         (setq atts gnus-cite-attribution-alist)
+  (with-current-buffer gnus-article-buffer
+    (gnus-delete-wash-type 'cite)
+    (unless (gnus-article-check-hidden-text 'cite arg)
+      (save-excursion
+       (gnus-cite-parse-maybe force)
+       (article-goto-body)
+       (let ((start (point))
+             (atts gnus-cite-attribution-alist)
+             (buffer-read-only nil)
+             (inhibit-point-motion-hooks t)
+             (hidden 0)
+             total)
+         (goto-char (point-max))
+         (gnus-article-search-signature)
+         (setq total (count-lines start (point)))
          (while atts
-           (setq total (cdr (assoc (cdar atts) gnus-cite-prefix-alist))
-                 atts (cdr atts))
-           (while total
-             (setq hidden (car total)
-                   total (cdr total))
-             (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))
-                (nconc (list 'article-type 'cite)
-                       gnus-hidden-properties))))))))))
+           (setq hidden (+ hidden (length (cdr (assoc (cdar atts)
+                                                      gnus-cite-prefix-alist))))
+                 atts (cdr atts)))
+         (when (or force
+                   (and (> (* 100 hidden) (* gnus-cite-hide-percentage total))
+                        (> hidden gnus-cite-hide-absolute)))
+           (gnus-add-wash-type 'cite)
+           (setq atts gnus-cite-attribution-alist)
+           (while atts
+             (setq total (cdr (assoc (cdar atts) gnus-cite-prefix-alist))
+                   atts (cdr atts))
+             (while total
+               (setq hidden (car total)
+                     total (cdr total))
+               (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))
+                  (nconc (list 'article-type 'cite)
+                         gnus-hidden-properties)))))))))
+    (gnus-set-mode-line 'article)))
 
 (defun gnus-article-hide-citation-in-followups ()
   "Hide cited text in non-root articles."
@@ -723,7 +727,7 @@ See also the documentation for `gnus-article-highlight-citation'."
       ;; Each line.
       (setq begin (point)
            guess-limit (progn (skip-chars-forward "^> \t\r\n") (point))
-           end (progn (beginning-of-line 2) (point))
+           end (point-at-bol 2)
            start end)
       (goto-char begin)
       ;; Ignore standard Supercite attribution prefix.
@@ -1035,6 +1039,17 @@ See also the documentation for `gnus-article-highlight-citation'."
     (while vars
       (make-local-variable (pop vars)))))
 
+(defun gnus-cited-line-p ()
+  "Say whether the current line is a cited line."
+  (save-excursion
+    (beginning-of-line)
+    (let ((found nil))
+      (dolist (prefix (mapcar 'car gnus-cite-prefix-alist))
+       (when (string= (buffer-substring (point) (+ (length prefix) (point)))
+                      prefix)
+         (setq found t)))
+      found)))
+
 (gnus-ems-redefine)
 
 (provide 'gnus-cite)