2003-01-05 Lars Magne Ingebrigtsen <larsi@gnus.org>
+ * gnus-msg.el (gnus-inews-make-draft): Quote article-reply.
+
+ * gnus-group.el (gnus-number-of-unseen-articles-in-group):
+ Protect against unactive groups.
+
+ * message.el (message-check-news-header-syntax): Check long
+ header lines.
+ (message-check-news-header-syntax): Update `start'.
+
* gnus-group.el (gnus-group-expire-articles): Doc fix.
+ (gnus-group-line-format): %U.
+ (gnus-group-line-format-alist): ?U.
+ (gnus-number-of-unseen-articles-in-group): New function.
* nntp.el (nntp-accept-process-output): Use a 0.1 second timeout.
%i Number of ticked and dormant (integer)
%T Number of ticked articles (integer)
%R Number of read articles (integer)
+%U Number of unseen articles (integer)
%t Estimated total number of articles (integer)
%y Number of unread, unticked articles (integer)
%G Group name (string)
(gnus-range-length (cdr (assq 'tick gnus-tmp-marked))))))
(t number)) ?s)
(?R gnus-tmp-number-of-read ?s)
+ (?U (gnus-number-of-unseen-articles-in-group gnus-tmp-group) ?s)
(?t gnus-tmp-number-total ?d)
(?y gnus-tmp-number-of-unread ?s)
(?I (gnus-range-length (cdr (assq 'dormant gnus-tmp-marked))) ?d)
nil)
(gnus-method-simplify (gnus-find-method-for-group group))))))
+(defun gnus-number-of-unseen-articles-in-group (group)
+ (let* ((info (nth 2 (gnus-group-entry group)))
+ (marked (gnus-info-marks info))
+ (seen (cdr (assq 'seen marked)))
+ (active (gnus-active group)))
+ (if (not active)
+ 0
+ (length (gnus-uncompress-range
+ (gnus-range-difference
+ (gnus-range-difference (list active) (gnus-info-read info))
+ seen))))))
+
(defun gnus-group-insert-group-line (gnus-tmp-group gnus-tmp-level
gnus-tmp-marked number
gnus-tmp-method)
(defun gnus-inews-make-draft ()
`(lambda ()
(gnus-inews-make-draft-meta-information
- ,gnus-newsgroup-name ,gnus-article-reply)))
+ ,gnus-newsgroup-name ',gnus-article-reply)))
(defvar gnus-article-reply nil)
(defmacro gnus-setup-message (config &rest forms)
(let ((data gnus-newsgroup-data))
(while (and data
(and (not (and undownloaded
- (memq (car data) gnus-newsgroup-undownloaded)))
+ (memq (car data)
+ gnus-newsgroup-undownloaded)))
(if unseen
(or (not (memq
(gnus-data-number (car data))
`approved', `sender', `empty', `empty-headers', `message-id', `from',
`subject', `shorten-followup-to', `existing-newsgroups',
`buffer-file-name', `unchanged', `newsgroups', `reply-to',
-'continuation-headers'."
+'continuation-headers', and `long-header-lines'."
:group 'message-news
:type '(repeat sexp)) ; Fixme: improve this
(y-or-n-p
"The control code \"cmsg\" is in the subject. Really post? ")
t))
+ ;; Check long header lines.
+ (message-check 'long-header-lines
+ (let ((start (point))
+ found)
+ (while (and (not found)
+ (re-search-forward "^\\([^ \t:]+\\): " nil t))
+ (when (> (- (point) start) 998)
+ (setq found t))
+ (setq start (match-beginning 0))
+ (forward-line 1))
+ (if found
+ (y-or-n-p (format "Your %s header is too long. Really post? "
+ (match-string 1)))
+ t)))
;; Check for multiple identical headers.
(message-check 'multiple-headers
(let (found)
2003-01-05 Lars Magne Ingebrigtsen <larsi@gnus.org>
* gnus.texi (Setting Process Marks): Addition.
+ (Group Line Specification): Addition.
2003-01-04 Lars Magne Ingebrigtsen <larsi@gnus.org>
@item R
\e$B4{FI5-;v$N?t!#\e(B
+@item U
+\e$B$^$@FI$^$l$?$3$H$,L5$$5-;v$N?t!#\e(B
+
@item t
\e$B?dDjA45-;v?t\e(B (\e$B$3$l$O<B:]$O\e(B @var{max-number} - @var{min-number} + 1)\e$B!#\e(B
@item R
Number of read articles.
+@item U
+Number of unseen articles.
+
@item t
Estimated total number of articles. (This is really @var{max-number}
minus @var{min-number} plus 1.)