X-Git-Url: http://cgit.sxemacs.org/?p=gnus;a=blobdiff_plain;f=lisp%2Fgnus-cite.el;h=3840f33687cf1c966d095d1759be28beac6dfbc3;hp=a010a833e9d593e4d594ceba8f3154faf8efbcbd;hb=88a72625d1e27f31be5f521ed8a7369e9f708884;hpb=0d4d6534c6e74b4aadd62c2fac02a440a4aeaeba diff --git a/lisp/gnus-cite.el b/lisp/gnus-cite.el index a010a833e..3840f3368 100644 --- a/lisp/gnus-cite.el +++ b/lisp/gnus-cite.el @@ -1,7 +1,6 @@ ;;; gnus-cite.el --- parse citations in articles for Gnus -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, -;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +;; Copyright (C) 1995-2013 Free Software Foundation, Inc. ;; Author: Per Abhiddenware @@ -510,6 +509,7 @@ Lines matching `gnus-cite-attribution-suffix' and perhaps (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)) @@ -544,8 +544,20 @@ longer than the frame width." use-hard-newlines) (unless do-fill (setq do-fill (gnus-article-foldable-buffer (cdar marks)))) + ;; Note: the XEmacs version of `fill-region' inserts a newline + ;; unless the region ends with a newline. (when do-fill - (fill-region (point-min) (point-max)))) + (if (not long-lines) + (fill-region (point-min) (point-max)) + (goto-char (point-min)) + (while (not (eobp)) + (end-of-line) + (when (prog1 + (> (current-column) (window-width)) + (forward-line 1)) + (save-restriction + (narrow-to-region (line-beginning-position 0) (point)) + (fill-region (point-min) (point-max)))))))) (set-marker (caar marks) nil) (setq marks (cdr marks))) (when marks @@ -562,7 +574,8 @@ longer than the frame width." columns) (goto-char (point-min)) (while (not (eobp)) - (forward-char (length prefix)) + (unless (> (length prefix) (- (point-max) (point))) + (forward-char (length prefix))) (skip-chars-forward " \t") (unless (eolp) (let ((elem (assq (current-column) columns))) @@ -571,7 +584,7 @@ longer than the frame width." (push elem columns)) (setcdr elem (1+ (cdr elem))))) (end-of-line) - (when (> (current-column) (frame-width)) + (when (> (current-column) (window-width)) (setq do-fill t)) (forward-line 1)) (and do-fill @@ -579,24 +592,6 @@ longer than the frame width." ;; like code? Check for ragged edges on the left. (< (length columns) 3)))) -(defun gnus-article-natural-long-line-p () - "Return true if the current line is long, and it's natural text." - (save-excursion - (beginning-of-line) - (and - ;; The line is long. - (> (- (line-end-position) (line-beginning-position)) - (frame-width)) - ;; It doesn't start with spaces. - (not (looking-at " ")) - ;; Not cited text. - (let ((line-number (1+ (count-lines (point-min) (point)))) - citep) - (dolist (elem gnus-cite-prefix-alist) - (when (member line-number (cdr elem)) - (setq citep t))) - (not citep))))) - (defun gnus-article-hide-citation (&optional arg force) "Toggle hiding of all cited text except attribution lines. See the documentation for `gnus-article-highlight-citation'. @@ -750,28 +745,14 @@ See also the documentation for `gnus-article-highlight-citation'." (gnus-article-search-signature) (setq total (count-lines start (point))) (while atts - (setq hidden (+ hidden (length (cdr (assoc (cdar atts) - gnus-cite-prefix-alist)))) + (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))) + (gnus-article-hide-citation))))))) (defun gnus-article-hide-citation-in-followups () "Hide cited text in non-root articles." @@ -1169,18 +1150,6 @@ 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))) - - ;; Highlighting of different citation levels in message-mode. ;; - message-cite-prefix will be overridden if this is enabled. @@ -1230,13 +1199,8 @@ Returns nil if there is no such line before LIMIT, t otherwise." (autoload 'font-lock-set-defaults "font-lock"))) (define-minor-mode gnus-message-citation-mode - "Toggle `gnus-message-citation-mode' in current buffer. -This buffer local minor mode provides additional font-lock support for -nested citations. -With prefix ARG, turn `gnus-message-citation-mode' on if and only if ARG -is positive. -Automatically turn `font-lock-mode' on when `gnus-message-citation-mode' -is turned on." + "Minor mode providing more font-lock support for nested citations. +When enabled, it automatically turns on `font-lock-mode'." nil ;; init-value "" ;; lighter nil ;; keymap