Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

*** empty log message ***

  • Loading branch information...
commit 97e5f6284e220b4dd4d36d75edb490bd2935d315 1 parent ca83b7d
@larsmagne larsmagne authored
View
53 lisp/ChangeLog
@@ -1,5 +1,58 @@
+Sat Jul 1 16:04:13 1995 Lars Magne Ingebrigtsen <lingebri@sunscipw.cern.ch>
+
+ * gnus.el (gnus-summary-edit-article-done): No arguments to
+ buffer-disable-undo.
+
+ * nnkiboze.el (nnkiboze-generate-group): Turn off slow stuff.
+
+ * gnus-msg.el (gnus-inews-news): Don't restore the summary config
+ if posting is unsuccessful.
+
+ * gnus-score.el (gnus-score-find-trace): Don't pop to score window
+ if no scores apply.
+
+ * gnus-msg.el (gnus-summary-cancel-article): Don't mark article as
+ cancelled if they are not.
+ (gnus-mail-reply-using-mail): Change map after running mail-setup.
+
+ * gnus.el (gnus-group-best-unread-group): Would return a group
+ that was supposed to be excluded.
+ (gnus-summary-next-group): Skip empty groups.
+
+ * nntp.el (nntp-open-server-semi-internal): Don't attempt a second
+ async connection if the server is down.
+
+ * gnus.el (gnus-summary-goto-last-article): Doc fix.
+ (gnus-no-server): Use permanent levels.
+
+ * gnus-msg.el: Unhide and hide was unnecessary when forwarding and
+ replying and stuff.
+
+ * nnvirtual.el (nnvirtual-retrieve-headers): Mark cancelled and
+ expired articles as read in the component group.
+ (nnvirtual-update-marked): When removing all marks, they wouldn't
+ go away.
+
+ * gnus.el (gnus-summary-catchup): Do thorough nnvirtual catchups.
+
+Fri Jun 30 09:10:57 1995 Lars Magne Ingebrigtsen <lingebri@sunscipw.cern.ch>
+
+ * gnus.el: gnus-bug wasn't interactive.
+
+Thu Jun 29 13:42:33 1995 Lars Magne Ingebrigtsen <lingebri@sunscipw.cern.ch>
+
+ * gnus.el (gnus-summary-catchup-to-here): Would mark one article
+ too many.
+ (gnus-articles-to-read): Accept whitespace.
+ (gnus-summary-go-to-next-thread): Didn't go to next thread when
+ threads were hidden.
+ (gnus-summary-display-article): When the first article was
+ cancelled, point would remain in the group buffer.
+
Wed Jun 28 16:24:38 1995 Lars Magne Ingebrigtsen <lingebri@sunscipw.cern.ch>
+ * gnus.el: 0.89 is released.
+
* nnfolder.el (nnfolder-directory): file-name-as-directory thing.
* gnus-mh.el (gnus-mail-reply-using-mhe): Set gnus-mail-buffer to
View
51 lisp/gnus-msg.el
@@ -284,7 +284,7 @@ If prefix argument YANK is non-nil, original article is yanked automatically."
(gnus-set-global-variables)
(if yank-articles (gnus-summary-goto-subject (car yank-articles)))
(save-window-excursion
- (gnus-summary-select-article t))
+ (gnus-summary-select-article))
(let ((headers gnus-current-headers)
(gnus-newsgroup-name gnus-newsgroup-name))
;; Check Followup-To: poster.
@@ -298,8 +298,7 @@ If prefix argument YANK is non-nil, original article is yanked automatically."
(gnus-summary-reply yank)
(gnus-post-news nil gnus-newsgroup-name
headers gnus-article-buffer
- (or yank-articles (not (not yank))))))
- (gnus-article-hide-headers-if-wanted))
+ (or yank-articles (not (not yank)))))))
(defun gnus-summary-followup-with-original (n)
"Compose a followup to an article and include the original article."
@@ -326,9 +325,9 @@ If prefix argument YANK is non-nil, original article is yanked automatically."
(let ((articles (gnus-summary-work-articles n)))
(while articles
(gnus-summary-select-article t nil nil (car articles))
- (gnus-eval-in-buffer-window gnus-article-buffer (gnus-cancel-news))
+ (and (gnus-eval-in-buffer-window gnus-article-buffer (gnus-cancel-news))
+ (gnus-summary-mark-as-read (car articles) gnus-canceled-mark))
(gnus-summary-remove-process-mark (car articles))
- (gnus-summary-mark-as-read (car articles) gnus-canceled-mark)
(gnus-article-hide-headers-if-wanted)
(setq articles (cdr articles)))))
@@ -531,7 +530,8 @@ will attempt to use the foreign server to post the article."
(interactive "P")
(let* ((case-fold-search nil)
(server-running (gnus-server-opened gnus-select-method))
- (reply gnus-article-reply))
+ (reply gnus-article-reply)
+ error)
(save-excursion
;; Connect to default NNTP server if necessary.
;; Suggested by yuki@flab.fujitsu.junet.
@@ -693,6 +693,7 @@ will attempt to use the foreign server to post the article."
(gnus-summary-mark-article-as-replied
(cdr reply))))))
;; We cannot signal an error.
+ (setq error t)
(ding) (gnus-message 1 "Article rejected: %s"
(gnus-status-message gnus-select-method)))
(set-buffer-modified-p nil))
@@ -702,7 +703,7 @@ will attempt to use the foreign server to post the article."
(let ((conf gnus-prev-winconf))
(bury-buffer)
;; Restore last window configuration.
- (and conf (set-window-configuration conf)))))
+ (and conf (not error) (set-window-configuration conf)))))
(defun gnus-inews-check-post ()
"Check whether the post looks ok."
@@ -869,7 +870,8 @@ will attempt to use the foreign server to post the article."
(downcase (mail-strip-quoted-names from))
(downcase (mail-strip-quoted-names (gnus-inews-user-name)))))
(progn
- (ding) (gnus-message 3 "This article is not yours."))
+ (ding) (gnus-message 3 "This article is not yours.")
+ nil)
;; Make control article.
(set-buffer (get-buffer-create " *Gnus-canceling*"))
(buffer-disable-undo (current-buffer))
@@ -884,13 +886,17 @@ will attempt to use the foreign server to post the article."
"This is a cancel message from " from ".\n")
;; Send the control article to NNTP server.
(gnus-message 5 "Canceling your article...")
- (if (funcall gnus-inews-article-function)
- (gnus-message 5 "Canceling your article...done")
- (ding)
- (gnus-message 1 "Cancel failed; %s"
- (gnus-status-message gnus-newsgroup-name)))
- ;; Kill the article buffer.
- (kill-buffer (current-buffer)))))))
+ (prog1
+ (if (funcall gnus-inews-article-function)
+ (gnus-message 5 "Canceling your article...done")
+ (progn
+ (ding)
+ (gnus-message 1 "Cancel failed; %s"
+ (gnus-status-message gnus-newsgroup-name))
+ nil)
+ t)
+ ;; Kill the article buffer.
+ (kill-buffer (current-buffer))))))))
;;; Lowlevel inews interface
@@ -1319,11 +1325,10 @@ Customize the variable gnus-mail-reply-method to use another mailer."
;; Stripping headers should be specified with mail-yank-ignored-headers.
(gnus-set-global-variables)
(if yank-articles (gnus-summary-goto-subject (car yank-articles)))
- (gnus-summary-select-article t)
+ (gnus-summary-select-article)
(let ((gnus-newsgroup-name gnus-newsgroup-name))
(bury-buffer gnus-article-buffer)
- (funcall gnus-mail-reply-method (or yank-articles (not (not yank)))))
- (gnus-article-hide-headers-if-wanted))
+ (funcall gnus-mail-reply-method (or yank-articles (not (not yank))))))
(defun gnus-summary-reply-with-original (n)
"Reply mail to news author with original article.
@@ -1336,13 +1341,12 @@ Customize the variable gnus-mail-reply-method to use another mailer."
Customize the variable gnus-mail-forward-method to use another mailer."
(interactive "P")
(gnus-set-global-variables)
- (gnus-summary-select-article t)
+ (gnus-summary-select-article)
(gnus-copy-article-buffer)
(let ((gnus-newsgroup-name gnus-newsgroup-name))
(if post
(gnus-forward-using-post gnus-article-copy)
- (funcall gnus-mail-forward-method gnus-article-copy)))
- (gnus-article-hide-headers-if-wanted))
+ (funcall gnus-mail-forward-method gnus-article-copy))))
(defun gnus-summary-post-forward ()
"Forward the current article to a newsgroup."
@@ -1390,8 +1394,6 @@ mailer."
(setq gnus-article-reply cur)
(make-local-variable 'gnus-prev-winconf)
(setq gnus-prev-winconf winconf)
- (use-local-map (copy-keymap mail-mode-map))
- (local-set-key "\C-c\C-c" 'gnus-mail-send-and-exit)
(if (and (buffer-modified-p)
(> (buffer-size) 0)
(not (gnus-y-or-n-p
@@ -1441,6 +1443,9 @@ mailer."
(or follow-to reply-to from sender "")))
subject message-of nil gnus-article-copy nil)
+ (use-local-map (copy-keymap mail-mode-map))
+ (local-set-key "\C-c\C-c" 'gnus-mail-send-and-exit)
+
(if (and follow-to (listp follow-to))
(progn
(goto-char (point-min))
View
5 lisp/gnus-score.el
@@ -1547,11 +1547,10 @@ This mode is an extended emacs-lisp mode.
trace)
(setq gnus-score-trace nil)
(gnus-possibly-score-headers 'trace)
+ (or (setq trace gnus-score-trace)
+ (error "No score rules apply to the current article."))
(pop-to-buffer "*Gnus Scores*")
(erase-buffer)
- (setq trace gnus-score-trace)
- (or trace
- (error "No score rules apply to the current article."))
(while trace
(insert (format "%S\n" (cdr (car trace))))
(setq trace (cdr trace)))
View
197 lisp/gnus.el
@@ -1291,7 +1291,7 @@ variable (string, integer, character, etc).")
(defconst gnus-maintainer "gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls & Boys)"
"The mail address of the Gnus maintainers.")
-(defconst gnus-version "(ding) Gnus v0.89"
+(defconst gnus-version "(ding) Gnus v0.90"
"Version number for this version of Gnus.")
(defvar gnus-info-nodes
@@ -1661,7 +1661,7 @@ Thank you for your help in stamping out bugs.
(autoload 'gnus-mail-other-window-using-mail "gnus-msg")
(autoload 'gnus-article-mail-with-original "gnus-msg")
(autoload 'gnus-article-mail "gnus-msg")
- (autoload 'gnus-bug "gnus-msg")
+ (autoload 'gnus-bug "gnus-msg" nil t)
;; gnus-vm
(autoload 'gnus-summary-save-in-vm "gnus-vm" nil t)
@@ -3071,6 +3071,7 @@ If ARG is non-nil and not a positive number, Gnus will
prompt the user for the name of an NNTP server to use.
As opposed to `gnus', this command will not connect to the local server."
(interactive "P")
+ (setq gnus-group-use-permanent-levels t)
(gnus (or arg (1- gnus-level-default-subscribed)) t))
(defalias '\(ding\) 'gnus)
@@ -3801,7 +3802,6 @@ If EXCLUDE-GROUP, do not go to that group."
(while (setq unread (get-text-property (point) 'gnus-unread))
(if (and (numberp unread) (> unread 0))
(progn
- (or best-point (setq best-point (point)))
(if (and (< (get-text-property (point) 'gnus-level) best)
(or (not exclude-group)
(not (equal exclude-group (gnus-group-group-name)))))
@@ -4416,7 +4416,7 @@ specify which levels you are interested in re-scanning."
(gnus-read-active-file)
(gnus-get-unread-articles (or level (1+ gnus-level-subscribed))))
(let ((gnus-read-active-file nil)
- (gnus-have-read-active-file nil))
+ (gnus-have-read-active-file (not arg)))
(gnus-get-unread-articles (or level (1+ gnus-level-subscribed)))))
(gnus-group-list-groups (or (and gnus-group-use-permanent-levels level)
gnus-group-default-list-level
@@ -6232,7 +6232,7 @@ If READ-ALL is non-nil, all articles in the group are selected."
(format
"How many articles from %s (default %d): "
gnus-newsgroup-name number))))
- (if (string-equal input "")
+ (if (string-match "^[ \t]*$" input)
number input)))
((and (> scored marked) (< scored number))
(let ((input
@@ -6505,67 +6505,71 @@ The resulting hash table is returned, or nil if no Xrefs were found."
;; Only do cross-references on subscribed
;; groups, if that is what is wanted.
(<= (nth 1 info) gnus-level-subscribed)))
- (progn
- (setq num 0)
- ;; Set the new list of read articles in this group.
- (setq active (gnus-gethash name gnus-active-hashtb))
- ;; First peel off all illegal article numbers.
- (if active
- (let ((ids idlist)
- (ticked (cdr (assq 'tick (nth 3 info))))
- (dormant (cdr (assq 'dormant (nth 3 info))))
- id)
- (setq exps nil)
- (while ids
- (setq id (car ids))
- (if (or (> id (cdr active))
- (< id (car active))
- (memq id ticked)
- (memq id dormant))
- (setq idlist (delq id idlist)))
- (and (memq id expirable)
- (setq exps (cons id exps)))
- (setq ids (cdr ids)))))
- ;; Update expirable articles.
- (gnus-add-marked-articles nil 'expirable exps info)
- (and active
- (null (nth 2 info))
- (> (car active) 1)
- (setcar (nthcdr 2 info) (cons 1 (1- (car active)))))
- (setcar (nthcdr 2 info)
- (setq range
- (gnus-add-to-range
- (nth 2 info)
- (setq idlist (sort idlist '<)))))
- ;; Then we have to re-compute how many unread
- ;; articles there are in this group.
- (if active
- (progn
- (cond
- ((not range)
- (setq num (- (1+ (cdr active)) (car active))))
- ((not (listp (cdr range)))
- (setq num (- (cdr active) (- (1+ (cdr range))
- (car range)))))
- (t
- (while range
- (if (numberp (car range))
- (setq num (1+ num))
- (setq num (+ num (- (1+ (cdr (car range)))
- (car (car range))))))
- (setq range (cdr range)))
- (setq num (- (cdr active) num))))
- ;; Update the number of unread articles.
- (setcar
- entry
- (max 0 (- num
- (length (cdr (assq 'tick (nth 3 info))))
- (length
- (cdr (assq 'dormant (nth 3 info)))))))
- ;; Update the group buffer.
- (gnus-group-update-group name t)))))))
+ (gnus-group-make-articles-read name idlist expirable))))
xref-hashtb)))))
+(defun gnus-group-make-articles-read (group articles expirable)
+ (let* ((num 0)
+ (entry (gnus-gethash group gnus-newsrc-hashtb))
+ (info (nth 2 entry))
+ (active (gnus-gethash name gnus-active-hashtb))
+ exps expirable range)
+ ;; First peel off all illegal article numbers.
+ (if active
+ (let ((ids articles)
+ (ticked (cdr (assq 'tick (nth 3 info))))
+ (dormant (cdr (assq 'dormant (nth 3 info))))
+ id)
+ (setq exps nil)
+ (while ids
+ (setq id (car ids))
+ (if (or (> id (cdr active))
+ (< id (car active))
+ (memq id ticked)
+ (memq id dormant))
+ (setq articles (delq id articles)))
+ (and (memq id expirable)
+ (setq exps (cons id exps)))
+ (setq ids (cdr ids)))))
+ ;; Update expirable articles.
+ (gnus-add-marked-articles nil 'expirable exps info)
+ (and active
+ (null (nth 2 info))
+ (> (car active) 1)
+ (setcar (nthcdr 2 info) (cons 1 (1- (car active)))))
+ (setcar (nthcdr 2 info)
+ (setq range
+ (gnus-add-to-range
+ (nth 2 info)
+ (setq articles (sort articles '<)))))
+ ;; Then we have to re-compute how many unread
+ ;; articles there are in this group.
+ (if active
+ (progn
+ (cond
+ ((not range)
+ (setq num (- (1+ (cdr active)) (car active))))
+ ((not (listp (cdr range)))
+ (setq num (- (cdr active) (- (1+ (cdr range))
+ (car range)))))
+ (t
+ (while range
+ (if (numberp (car range))
+ (setq num (1+ num))
+ (setq num (+ num (- (1+ (cdr (car range)))
+ (car (car range))))))
+ (setq range (cdr range)))
+ (setq num (- (cdr active) num))))
+ ;; Update the number of unread articles.
+ (setcar
+ entry
+ (max 0 (- num
+ (length (cdr (assq 'tick (nth 3 info))))
+ (length
+ (cdr (assq 'dormant (nth 3 info)))))))
+ ;; Update the group buffer.
+ (gnus-group-update-group name t)))))
+
(defun gnus-methods-equal-p (m1 m2)
(let ((m1 (or m1 gnus-select-method))
(m2 (or m2 gnus-select-method)))
@@ -7046,8 +7050,6 @@ article number."
(or (cdr (assq (gnus-summary-article-number) gnus-newsgroup-scored))
gnus-summary-default-score 0))
-;; Written by Sudish Joseph <joseph@cis.ohio-state.edu>.
-
(defun gnus-summary-recenter ()
"Center point in the summary window.
If `gnus-auto-center-summary' is nil, or the article buffer isn't
@@ -7381,6 +7383,8 @@ If BACKWARD, go to previous group instead."
(gnus-summary-exit t) ;Update all information.
(if (null group)
(gnus-summary-exit-no-update t)
+ (gnus-group-jump-to-group ingroup)
+ (setq group (gnus-summary-search-group backward))
(gnus-message 5 "Selecting %s..." group)
(set-buffer gnus-group-buffer)
;; We are now in group mode buffer.
@@ -7395,6 +7399,8 @@ If BACKWARD, go to previous group instead."
(set-buffer (setq gnus-summary-buffer sumbuf))
(gnus-summary-exit-no-update t))))
(let ((prevgroup group))
+ (gnus-group-jump-to-group ingroup)
+ (setq group (gnus-summary-search-group backward))
(gnus-summary-read-group group nil no-article sumbuf)
(while (and (string= gnus-newsgroup-name ingroup)
(bufferp sumbuf)
@@ -7516,22 +7522,21 @@ If optional argument UNREAD is non-nil, only unread article is selected."
(gnus-set-global-variables)
(if (null article)
nil
- (gnus-article-prepare article all-header)
- (gnus-summary-show-thread)
- (if (eq (gnus-summary-article-mark) gnus-dummy-mark)
- (progn
- (forward-line 1)
- (gnus-summary-position-cursor)))
- (run-hooks 'gnus-select-article-hook)
- (gnus-summary-recenter)
-; (set-window-point (get-buffer-window (current-buffer)) (point-max))
-; (sit-for 0)
- (gnus-summary-goto-subject article)
- ;; Successfully display article.
- (gnus-summary-update-line)
- (gnus-article-set-window-start
- (cdr (assq article gnus-newsgroup-bookmarks)))
- t))
+ (prog1
+ (gnus-article-prepare article all-header)
+ (gnus-summary-show-thread)
+ (if (eq (gnus-summary-article-mark) gnus-dummy-mark)
+ (progn
+ (forward-line 1)
+ (gnus-summary-position-cursor)))
+ (run-hooks 'gnus-select-article-hook)
+ (gnus-summary-recenter)
+ (gnus-summary-goto-subject article)
+ ;; Successfully display article.
+ (gnus-summary-update-line)
+ (gnus-article-set-window-start
+ (cdr (assq article gnus-newsgroup-bookmarks)))
+ t)))
(defun gnus-summary-select-article (&optional all-headers force pseudo article)
"Select the current article.
@@ -7815,7 +7820,7 @@ If ALL-HEADERS is non-nil, no header lines are hidden."
(gnus-summary-position-cursor)))
(defun gnus-summary-goto-last-article ()
- "Go to the last article."
+ "Go to the previously read article."
(interactive)
(prog1
(and gnus-last-article
@@ -8485,7 +8490,7 @@ This will have permanent effect only in mail groups."
(gnus-article-mode)
(use-local-map gnus-article-mode-map)
(setq buffer-read-only t)
- (buffer-disable-undo)
+ (buffer-disable-undo (current-buffer))
(pop-to-buffer gnus-summary-buffer)))
(defun gnus-summary-fancy-query ()
@@ -9196,21 +9201,26 @@ The number of articles marked as read is returned."
;; have to do when using auto-expiry or adaptive scoring.
(let ((unreads (length gnus-newsgroup-unreads)))
(if (gnus-summary-first-subject (not all))
- (while (and (gnus-summary-mark-as-read nil gnus-catchup-mark)
- (if to-here (< (point) to-here) t)
+ (while (and (if to-here (< (point) to-here) t)
+ (gnus-summary-mark-as-read nil gnus-catchup-mark)
(gnus-summary-search-subject nil (not all)))))
(- unreads (length gnus-newsgroup-unreads))
(or to-here
(setq gnus-newsgroup-unreads gnus-newsgroup-marked)))))
+ (let ((method (gnus-find-method-for-group gnus-newsgroup-name)))
+ (if (and (not to-here) (eq 'nnvirtual (car method)))
+ (nnvirtual-catchup-group
+ (gnus-group-real-name gnus-newsgroup-name) (nth 1 method) all)))
(gnus-summary-position-cursor)))
(defun gnus-summary-catchup-to-here (&optional all)
"Mark all unticked articles before the current one as read.
If ALL is non-nil, also mark ticked and dormant articles as read."
(interactive)
- (beginning-of-line)
- (gnus-summary-catchup all t (point))
- (gnus-set-mode-line 'summary)
+ (save-excursion
+ (end-of-line)
+ (gnus-summary-catchup all t (point))
+ (gnus-set-mode-line 'summary))
(gnus-summary-position-cursor))
(defun gnus-summary-catchup-all (&optional quietly)
@@ -9319,9 +9329,12 @@ Return the article number moved to, or nil if moving was impossible."
(let ((level (gnus-summary-thread-level))
(article (gnus-summary-article-number)))
(if previous
- (while (and (zerop (gnus-summary-prev-subject 1))
+ (while (and (zerop (forward-line -1))
(> (gnus-summary-thread-level) level)))
- (while (and (zerop (gnus-summary-next-subject 1))
+ (while (and (save-excursion
+ (forward-line 1)
+ (not (eobp)))
+ (zerop (forward-line 1))
(> (gnus-summary-thread-level) level))))
(gnus-summary-recenter)
(gnus-summary-position-cursor)
@@ -9885,7 +9898,7 @@ is initialized from the SAVEDIR environment variable."
"\M-g" "w" "\C-c\C-r" "\M-t" "C"
"o" "\C-o" "|" "\M-k" "\M-K" "V" "\C-c\C-d"
"\C-c\C-i" "x" "X" "s" "t" "g" "?" "l"
- "\C-c\C-v\C-v" "\C-d" "v" "\C-c\C-b"
+ "\C-c\C-v\C-v" "\C-d" "v"
;; "Mt" "M!" "Md" "Mr"
;; "Mc" "M " "Me" "Mx" "M?" "Mb" "MB" "M#" "M\M-#" "M\M-r"
;; "M\M-\C-r" "MD" "M\M-D" "MS" "MC" "MH" "M\C-c" "Mk" "MK"
View
2  lisp/nnkiboze.el
@@ -223,6 +223,8 @@ Finds out what articles are to be part of the nnkiboze groups."
(gnus-expert-user t)
(gnus-large-newsgroup nil)
(gnus-score-find-score-files-function 'nnkiboze-score-file)
+ gnus-select-group-hook gnus-summary-prepare-hook
+ gnus-thread-sort-functions gnus-show-threads
method nnkiboze-newsrc nov-buffer gname newsrc active
ginfo lowest)
(setq nnkiboze-current-score-group group)
View
3  lisp/nntp.el
@@ -1036,7 +1036,8 @@ If SERVICE, this this as the port number."
(and timer (cancel-timer timer))
(message "")
(or status
- (setq nntp-current-server nil))
+ (setq nntp-current-server nil
+ nntp-async-number nil))
status))
(defun nntp-open-server-internal (server &optional service)
View
27 lisp/nnvirtual.el
@@ -62,7 +62,8 @@
'headers
(let ((map nnvirtual-current-mapping)
(offset 0)
- articles beg group active top article result prefix)
+ articles beg group active top article result prefix
+ fetched-articles)
(while sequence
(while (< (car (car map)) (car sequence))
(setq offset (car (car map)))
@@ -88,9 +89,11 @@
;; parse a mixed HEAD/NOV buffer.
(and (eq result 'headers) (nnvirtual-convert-headers))
(goto-char (point-min))
+ (setq fetched-articles nil)
(while (not (eobp))
- (setq beg (point))
- (setq article (read nntp-server-buffer))
+ (setq beg (point)
+ article (read nntp-server-buffer)
+ fetched-articles (cons article fetched-articles))
(delete-region beg (point))
(insert (int-to-string (+ (- article active) offset)))
(beginning-of-line)
@@ -122,7 +125,15 @@
(insert ?\t)))
(forward-line 1))))
(goto-char (point-max))
- (insert-buffer-substring nntp-server-buffer))
+ (insert-buffer-substring nntp-server-buffer)
+ ;; We have now massaged and inserted the headers from one
+ ;; group. In case some of the articles have expired or been
+ ;; cancelled, we have to mark them as read in the component
+ ;; group.
+ (let ((unfetched (gnus-sorted-complement
+ articles (nreverse fetched-articles))))
+ (and unfetched
+ (gnus-group-make-articles-read group unfetched nil))))
;; The headers are ready for reading, so they are inserted into
;; the nntp-server-buffer, which is where Gnus expects to find
;; them.
@@ -402,6 +413,7 @@ If the stream is opened, return T, otherwise return NIL."
marks art-group group-alist g)
(while mark-lists
(setq marks (symbol-value (car (car mark-lists))))
+ ;; Find out what groups the mark belong to.
(while marks
(setq art-group (nnvirtual-art-group (car marks)))
(if (setq g (assoc (car art-group) group-alist))
@@ -409,6 +421,13 @@ If the stream is opened, return T, otherwise return NIL."
(setq group-alist (cons (list (car art-group) (cdr art-group))
group-alist)))
(setq marks (cdr marks)))
+ ;; The groups that don't have marks must have no marks. (Yup.)
+ (let ((groups nnvirtual-current-groups))
+ (while groups
+ (or (assoc (car groups) group-alist)
+ (setq group-alist (cons (list (car groups)) group-alist)))
+ (setq groups (cdr groups))))
+ ;; The we update the list of marks.
(while group-alist
(gnus-add-marked-articles
(car (car group-alist)) (cdr (car mark-lists))
View
4 texi/Makefile
@@ -1,9 +1,11 @@
TEXI2DVI=texi2dvi
+MAKEINFO=emacs -batch -q -no-site-file gnus.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer
+# MAKEINFO=makeinfo -o gnus gnus.texi
all: gnus
gnus: gnus.texi
- emacs -batch -q -no-site-file gnus.texi -l texinfmt -f texinfo-format-buffer -f save-buffer
+ $(MAKEINFO)
dvi: gnus.texi
$(TEXI2DVI) gnus.texi
Please sign in to comment.
Something went wrong with that request. Please try again.