From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.emacs.gnus.general/81391 Path: news.gmane.org!not-for-mail From: Ted Zlatanov Newsgroups: gmane.emacs.gnus.general Subject: unexist tracking breaks some NNTP newsgroups Date: Wed, 15 Feb 2012 10:24:49 -0500 Organization: =?utf-8?B?0KLQtdC+0LTQvtGAINCX0LvQsNGC0LDQvdC+0LI=?= @ Cienfuegos Message-ID: <87r4xw15mm.fsf@lifelogs.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: quoted-printable X-Trace: dough.gmane.org 1329319544 30154 80.91.229.3 (15 Feb 2012 15:25:44 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Wed, 15 Feb 2012 15:25:44 +0000 (UTC) To: Ding Mailing List Original-X-From: ding-owner+M29671@lists.math.uh.edu Wed Feb 15 16:25:44 2012 Return-path: Envelope-to: ding-account@gmane.org Original-Received: from util0.math.uh.edu ([129.7.128.18]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Rxgjj-0007KY-8j for ding-account@gmane.org; Wed, 15 Feb 2012 16:25:40 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.math.uh.edu) by util0.math.uh.edu with smtp (Exim 4.63) (envelope-from ) id 1RxgjF-0001LM-KM; Wed, 15 Feb 2012 09:25:09 -0600 Original-Received: from mx2.math.uh.edu ([129.7.128.33]) by util0.math.uh.edu with esmtps (TLSv1:AES256-SHA:256) (Exim 4.63) (envelope-from ) id 1RxgjD-0001L9-TC for ding@lists.math.uh.edu; Wed, 15 Feb 2012 09:25:07 -0600 Original-Received: from quimby.gnus.org ([80.91.231.51]) by mx2.math.uh.edu with esmtps (TLSv1:AES256-SHA:256) (Exim 4.76) (envelope-from ) id 1Rxgiz-0000rg-7z for ding@lists.math.uh.edu; Wed, 15 Feb 2012 09:25:07 -0600 Original-Received: from z.lifelogs.com ([173.255.230.239]) by quimby.gnus.org with esmtp (Exim 4.72) (envelope-from ) id 1Rxgix-0005Je-H1 for ding@gnus.org; Wed, 15 Feb 2012 16:24:51 +0100 Original-Received: from heechee (c-76-28-40-19.hsd1.vt.comcast.net [76.28.40.19]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) (Authenticated sender: tzz) by z.lifelogs.com (Postfix) with ESMTPSA id 1D0747E0F5 for ; Wed, 15 Feb 2012 15:24:50 +0000 (UTC) User-Agent: Gnus/5.130004 (Ma Gnus v0.4) Emacs/24.0.93 (gnu/linux) X-Face: bd.DQ~'29fIs`T_%O%C\g%6jW)yi[zuz6;d4V0`@y-~$#3P_Ng{@m+e4o<4P'#(_GJQ%TT= D}[Ep*b!\e,fBZ'j_+#"Ps?s2!4H2-Y"sx" X-Spam-Score: -1.9 (-) List-ID: Precedence: bulk Xref: news.gmane.org gmane.emacs.gnus.general:81391 Archived-At: I don't think unexist tracking should be done for NNTP, since it's so rare to have articles deleted from NNTP. It's just extra data in the newsrc file 99.999% of the time, and otherwise your unread count if off by 1. Regardless, at least for me it's breaking some newsgroups like "nntp+news.gmane.org:gmane.comp.encryption.gpg.gnutls.devel". I get "Can't select group" and that's that. This worked until the `unexist' tracking was introduced so I think it's related to that new feature. I traced it to the fact that (gnus-articles-to-read "nntp+news.gmane.org:gmane.comp.encryption.gpg.gnutl= s.devel" nil) is returning 0 for articles (0, not nil). The debug statement below shows the two arguments to the `gnus-list-range-difference' call that's supposed to produce `articles': (gnus-list-range-difference '(4584 4592 4599 4601 5765 5827 5828 5829 5830)= '((2157 . 2159) 2161 2166 2179 2182 (2186 . 2187) 2204 2206 2211 2217 2228= 2230 2268 2272 2278 2281 (2287 . 2289) (2292 . 2295) (2297 . 2303) (2305 .= 2312) 2318 2327 (2329 . 2334) (2336 . 2338) (2340 . 2341) (2343 . 2344) 23= 46 (2348 . 2353) 2357 2360 2364 (2368 . 2373) (2375 . 2377) (2379 . 2388) (= 2390 . 2398) (2400 . 2403) 2409 (2428 . 2430) (2432 . 2437) (2440 . 2442) 2= 444 2446 2448 2454 2459 2461 2466 (2469 . 2470) 2477 (2480 . 2481) (2522 . = 2524) 2532 (2539 . 2552) 2554 (2581 . 6700) (6702 . 6704) (6707 . 6776) (67= 78 . 6951) (6953 . 7152) (7154 . 7353) (7355 . 7361) (7363 . 7386) (7388 . = 7396) (7398 . 7560) (7562 . 7796) (7798 . 8296) (8298 . 8360) (8362 . 8363)= (8365 . 8494) (8496 . 8505) (8507 . 8745) (8747 . 8748) (8750 . 8751) (875= 3 . 9013) (9015 . 9023) (9026 . 9175) (9177 . 9289) (9292 . 9299) (9303 . 9= 306) (9308 . 9331) (9333 . 9396) (9398 . 9424) (9426 . 9463) (9466 . 9510) = (9512 . 9567) (9569 . 9582) (9584 . 9585) (9587 . 9609) (9611 . 9615) (9617= . 9712) (9715 . 9719) (9721 . 9732) (9734 . 9795) (9797 . 9907) 9909 (9911= . 10448) (10450 . 10899) (10901 . 11248) (11250 . 19169) (19171 . 19241) (= 19243 . 19353) (19355 . 19645) 19647 (20114 . 20115) (20117 . 20118) (20300= . 22041) (22043 . 22575) (22577 . 23357) (23359 . 23428) (23430 . 23512) (= 23514 . 23777) (23779 . 24105) (24107 . 24386) (24388 . 25315) (25317 . 276= 22) (27694 . 28357) (28359 . 29516) (29518 . 30367) (30369 . 31315) (31317 = . 31341) (31343 . 31401) (31403 . 31447) (31449 . 31458) (31460 . 31582) (3= 1584 . 31591) (31593 . 31606) (31608 . 32964) (32966 . 32973) (32975 . 3335= 1) (33353 . 33438) (33440 . 34102) (34104 . 39244) (39246 . 39822) (39824 .= 39990) (39992 . 40654) (40656 . 41605) (41607 . 44507) (44509 . 45878) (45= 880 . 47046) (47048 . 47930) (47932 . 48400) (48402 . 48460) (48462 . 48482= ) (48484 . 48524) (48526 . 48552) (48554 . 48560) (48562 . 48577) (48579 . = 48582) (48584 . 48603) (48605 . 48623) (48625 . 48632) (48634 . 48642) (486= 44 . 48647) (48649 . 48651) 48720 48769 48772 48827 48987 48999 49299 (4942= 6 . 49427) 49789 49794 50178 50943 51053)) =3D> nil I added an extra temp debug statement at the beginning of the first let of `gnus-articles-to-read', which shows how `gnus-list-range-difference' is being called: Debugger entered: ((4584 4592 4599 4601 5765 5827 5828 5829 5830) ((2157 . = 2159) 2161 2166 2179 2182 (2186 . 2187) 2204 2206 2211 2217 2228 2230 2268 = 2272 2278 2281 (2287 . 2289) (2292 . 2295) (2297 . 2303) (2305 . 2312) 2318= 2327 (2329 . 2334) (2336 . 2338) (2340 . 2341) (2343 . 2344) 2346 (2348 . = 2353) 2357 2360 2364 (2368 . 2373) (2375 . 2377) (2379 . 2388) (2390 . 2398= ) (2400 . 2403) 2409 (2428 . 2430) (2432 . 2437) (2440 . 2442) 2444 2446 24= 48 2454 2459 2461 2466 (2469 . 2470) 2477 (2480 . 2481) (2522 . 2524) 2532 = (2539 . 2552) 2554 (2581 . 6700) (6702 . 6704) (6707 . 6776) (6778 . 6951) = (6953 . 7152) (7154 . 7353) (7355 . 7361) (7363 . 7386) (7388 . 7396) (7398= . 7560) (7562 . 7796) (7798 . 8296) (8298 . 8360) (8362 . 8363) (8365 . 84= 94) (8496 . 8505) (8507 . 8745) (8747 . 8748) (8750 . 8751) (8753 . 9013) (= 9015 . 9023) (9026 . 9175) (9177 . 9289) (9292 . 9299) (9303 . 9306) (9308 = . 9331) (9333 . 9396) (9398 . 9424) (9426 . 9463) (9466 . 9510) (9512 . 956= 7) (9569 . 9582) (9584 . 9585) (9587 . 9609) (9611 . 9615) (9617 . 9712) (9= 715 . 9719) (9721 . 9732) (9734 . 9795) (9797 . 9907) 9909 (9911 . 10448) (= 10450 . 10899) (10901 . 11248) (11250 . 19169) (19171 . 19241) (19243 . 193= 53) (19355 . 19645) 19647 (20114 . 20115) (20117 . 20118) (20300 . 22041) (= 22043 . 22575) (22577 . 23357) (23359 . 23428) (23430 . 23512) (23514 . 237= 77) (23779 . 24105) (24107 . 24386) (24388 . 25315) (25317 . 27622) (27694 = . 28357) (28359 . 29516) (29518 . 30367) (30369 . 31315) (31317 . 31341) (3= 1343 . 31401) (31403 . 31447) (31449 . 31458) (31460 . 31582) (31584 . 3159= 1) (31593 . 31606) (31608 . 32964) (32966 . 32973) (32975 . 33351) (33353 .= 33438) (33440 . 34102) (34104 . 39244) (39246 . 39822) (39824 . 39990) (39= 992 . 40654) (40656 . 41605) (41607 . 44507) (44509 . 45878) (45880 . 47046= ) (47048 . 47930) (47932 . 48400) (48402 . 48460) (48462 . 48482) (48484 . = 48524) (48526 . 48552) (48554 . 48560) (48562 . 48577) (48579 . 48582) (485= 84 . 48603) (48605 . 48623) (48625 . 48632) (48634 . 48642) (48644 . 48647)= (48649 . 48651) 48720 48769 48772 48827 48987 48999 49299 (49426 . 49427) = 49789 49794 50178 50943 51053)) (let* ((only-read-p t) (temp (debug (if (or read-all (and (zerop ...) (ze= rop ...)) gnus-newsgroup-display) (or (if gnus-newsgroup-maximum-articles (= let ... ...) (gnus-uncompress-range ...)) (gnus-cache-articles-in-group gro= up)) (setq only-read-p nil) (gnus-sorted-nunion (gnus-sorted-union gnus-new= sgroup-dormant gnus-newsgroup-marked) gnus-newsgroup-unreads)) (cdr (assq (= quote unexist) (gnus-info-marks (gnus-get-info group)))))) (articles (gnus-= list-range-difference (if (or read-all (and (zerop ...) (zerop ...)) gnus-n= ewsgroup-display) (or (if gnus-newsgroup-maximum-articles (let ... ...) (gn= us-uncompress-range ...)) (gnus-cache-articles-in-group group)) (setq only-= read-p nil) (gnus-sorted-nunion (gnus-sorted-union gnus-newsgroup-dormant g= nus-newsgroup-marked) gnus-newsgroup-unreads)) (cdr (assq (quote unexist) (= gnus-info-marks (gnus-get-info group)))))) (scored-list (gnus-killed-articl= es gnus-newsgroup-killed articles)) (scored (length scored-list)) (number (= length articles)) (marked (+ (length gnus-newsgroup-marked) (length gnus-ne= wsgroup-dormant))) (select (cond ((numberp read-all) read-all) ((numberp gn= us-newsgroup-display) gnus-newsgroup-display) (t (condition-case nil (cond = (... ...) (... ...) (t number)) (quit (message "Quit getting the articles t= o read") nil)))))) (setq select (if (stringp select) (string-to-number sele= ct) select)) (if (or (null select) (zerop select)) select (if (and (not (ze= rop scored)) (<=3D (abs select) scored)) (progn (setq articles (sort scored= -list (quote <))) (setq number (length articles))) (setq articles (copy-seq= uence articles))) (when (< (abs select) number) (if (< select 0) (setcdr (n= thcdr (1- (abs select)) articles) nil) (setq articles (nthcdr (- number sel= ect) articles)))) (setq gnus-newsgroup-unselected (gnus-sorted-difference g= nus-newsgroup-unreads articles)) (when gnus-alter-articles-to-read-function= (setq articles (sort (funcall gnus-alter-articles-to-read-function gnus-ne= wsgroup-name articles) (quote <)))) articles)) gnus-articles-to-read("nntp+news.gmane.org:gmane.comp.encryption.gpg.gnut= ls.devel" nil) (setq articles (gnus-articles-to-read group read-all)) (if (setq articles select-articles) (setq gnus-newsgroup-unselected (gnus= -sorted-difference gnus-newsgroup-unreads articles)) (setq articles (gnus-a= rticles-to-read group read-all))) (let* ((entry (gnus-group-entry group)) (gnus-summary-ignore-duplicates (= if (eq (car (gnus-find-method-for-group group)) (quote nnvirtual)) t gnus-s= ummary-ignore-duplicates)) (info (nth 2 entry)) charset articles fetched-ar= ticles cached) (unless (gnus-check-server (set (make-local-variable (quote = gnus-current-select-method)) (gnus-find-method-for-group group))) (error "C= ouldn't open server")) (setq charset (gnus-group-name-charset gnus-current-= select-method group)) (or (and entry (not (eq (car entry) t))) (gnus-activa= te-group group) (progn (when (equal major-mode (quote gnus-summary-mode)) (= gnus-kill-buffer (current-buffer))) (error "Couldn't activate group %s: %s"= (mm-decode-coding-string group charset) (mm-decode-coding-string (gnus-sta= tus-message group) charset)))) (unless (gnus-request-group group t) (when (= equal major-mode (quote gnus-summary-mode)) (gnus-kill-buffer (current-buff= er))) (error "Couldn't request group %s: %s" (mm-decode-coding-string group= charset) (mm-decode-coding-string (gnus-status-message group) charset))) (= when (and gnus-agent (gnus-active group)) (gnus-agent-possibly-alter-active= group (gnus-active group) info) (setq gnus-summary-use-undownloaded-faces = (gnus-agent-find-parameter group (quote agent-enable-undownloaded-faces))))= (setq gnus-newsgroup-name group gnus-newsgroup-unselected nil gnus-newsgro= up-unreads (gnus-list-of-unread-articles group)) (let ((display (gnus-group= -find-parameter group (quote display)))) (setq gnus-newsgroup-display (cond= ((not (zerop (or ... 0))) (quote gnus-not-ignore)) ((eq display (quote all= )) (quote gnus-not-ignore)) ((arrayp display) (gnus-summary-display-make-pr= edicate (mapcar (quote identity) display))) ((numberp display) (setq select= -articles (gnus-uncompress-range (cons ... ...))) nil) (t nil)))) (gnus-sum= mary-setup-default-charset) (when (gnus-virtual-group-p group) (setq cached= gnus-newsgroup-cached)) (setq gnus-newsgroup-unreads (gnus-sorted-ndiffere= nce (gnus-sorted-ndifference gnus-newsgroup-unreads gnus-newsgroup-marked) = gnus-newsgroup-dormant)) (setq gnus-newsgroup-processable nil) (gnus-update= -read-articles group gnus-newsgroup-unreads t) (when info (gnus-adjust-mark= ed-articles info)) (if (setq articles select-articles) (setq gnus-newsgroup= -unselected (gnus-sorted-difference gnus-newsgroup-unreads articles)) (setq= articles (gnus-articles-to-read group read-all))) (cond ((null articles) (= quote quit)) ((eq articles 0) nil) (t (setq gnus-newsgroup-dependencies (gn= us-make-hashtable (length articles))) (gnus-set-global-variables) (setq gnu= s-newsgroup-headers (gnus-fetch-headers articles)) (when cached (setq gnus-= newsgroup-cached cached)) (when gnus-suppress-duplicates (gnus-dup-suppress= -articles)) (setq gnus-newsgroup-limit (copy-sequence articles)) (setq fetc= hed-articles (mapcar (lambda (headers) (mail-header-number headers)) gnus-n= ewsgroup-headers)) (setq gnus-newsgroup-articles fetched-articles) (setq gn= us-newsgroup-unreads (gnus-sorted-nintersection gnus-newsgroup-unreads fetc= hed-articles)) (gnus-compute-unseen-list) (gnus-update-missing-marks (gnus-= sorted-difference articles fetched-articles)) (when (and gnus-fetch-old-hea= ders (eq gnus-headers-retrieved-by (quote nov))) (if (eq gnus-fetch-old-hea= ders (quote invisible)) (gnus-build-all-threads) (gnus-build-old-threads)))= (when gnus-agent (gnus-agent-get-undownloaded-list)) (gnus-summary-remove-= list-identifiers) (setq gnus-newsgroup-auto-expire (and (gnus-group-auto-ex= pirable-p group) (not (gnus-group-read-only-p group)))) (unless (and gnus-s= ingle-article-buffer (equal gnus-article-buffer "*Article*")) (gnus-article= -setup-buffer)) (when gnus-newsgroup-headers (setq gnus-newsgroup-begin (ma= il-header-number (car gnus-newsgroup-headers)) gnus-newsgroup-end (mail-hea= der-number (gnus-last-element gnus-newsgroup-headers)))) (or gnus-newsgroup= -headers t)))) gnus-select-newsgroup("nntp+news.gmane.org:gmane.comp.encryption.gpg.gnut= ls.devel" nil nil) (and new-group (gnus-select-newsgroup group show-all select-articles)) (let* ((new-group (gnus-summary-setup-buffer group)) (quit-config (gnus-g= roup-quit-config group)) (did-select (and new-group (gnus-select-newsgroup = group show-all select-articles)))) (cond ((not new-group) (gnus-set-global-= variables) (when kill-buffer (gnus-kill-or-deaden-summary kill-buffer)) (gn= us-configure-windows (quote summary) (quote force)) (gnus-set-mode-line (qu= ote summary)) (gnus-summary-position-point) (message "") t) ((null did-sele= ct) (when (and (eq major-mode (quote gnus-summary-mode)) (not (equal (curre= nt-buffer) kill-buffer))) (kill-buffer (current-buffer)) (if (not quit-conf= ig) (progn (gnus-summary-update-info) (set-buffer gnus-group-buffer) (gnus-= group-jump-to-group group) (gnus-group-next-unread-group 1)) (gnus-handle-e= phemeral-exit quit-config))) (if (null (gnus-list-of-unread-articles group)= ) (gnus-message 3 "Group %s contains no messages" group) (gnus-message 3 "C= an't select group")) nil) ((eq did-select (quote quit)) (and (eq major-mode= (quote gnus-summary-mode)) (not (equal (current-buffer) kill-buffer)) (kil= l-buffer (current-buffer))) (when kill-buffer (gnus-kill-or-deaden-summary = kill-buffer)) (if (not quit-config) (progn (set-buffer gnus-group-buffer) (= gnus-group-jump-to-group group) (gnus-configure-windows (quote group) (quot= e force))) (gnus-handle-ephemeral-exit quit-config)) (signal (quote quit) n= il)) (t (gnus-set-global-variables) (setq gnus-newsgroup-active (gnus-copy-= sequence (gnus-active gnus-newsgroup-name))) (setq gnus-newsgroup-highest (= cdr gnus-newsgroup-active)) (gnus-run-hooks (quote gnus-select-group-hook))= (when (memq (quote summary) (gnus-update-format-specifications nil (quote = summary) (quote summary-mode) (quote summary-dummy))) (gnus-update-summary-= mark-positions)) (when gnus-use-scoring (gnus-possibly-score-headers)) (whe= n gnus-build-sparse-threads (gnus-build-sparse-threads)) (if show-all (let = ((gnus-newsgroup-dormant nil)) (gnus-summary-initial-limit show-all)) (gnus= -summary-initial-limit show-all)) (unless no-display (gnus-summary-prepare)= ) (when gnus-use-trees (gnus-tree-open group) (setq gnus-summary-highlight-= line-function (quote gnus-tree-highlight-article))) (when (and (zerop (buff= er-size)) (not no-display)) (cond (gnus-newsgroup-dormant (gnus-summary-lim= it-include-dormant)) ((and gnus-newsgroup-scored show-all) (gnus-summary-li= mit-include-expunged t)))) (gnus-run-hooks (quote gnus-apply-kill-hook)) (i= f (and (zerop (buffer-size)) (not no-display)) (progn (gnus-summary-catchup= -and-exit nil t) (gnus-message 6 "No unread news") (when kill-buffer (gnus-= kill-or-deaden-summary kill-buffer)) nil) (gnus-summary-maybe-hide-threads)= (gnus-configure-windows (quote summary)) (when kill-buffer (gnus-kill-or-d= eaden-summary kill-buffer)) (gnus-summary-auto-select-subject) (if (and (no= t no-article) (not no-display) gnus-newsgroup-unreads gnus-auto-select-firs= t) (progn (let (...) (unless ... ...))) (gnus-summary-position-point) (gnus= -configure-windows (quote summary) (quote force)) (gnus-set-mode-line (quot= e summary))) (when (and gnus-auto-center-group (get-buffer-window gnus-grou= p-buffer t)) (let ((owin ...)) (select-window (get-buffer-window gnus-group= -buffer t)) (when (gnus-group-goto-group group) (recenter)) (select-window = owin))) (setq gnus-newsgroup-prepared t) (gnus-run-hooks (quote gnus-summar= y-prepared-hook)) (unless (gnus-ephemeral-group-p group) (gnus-group-update= -group group nil t)) t)))) gnus-summary-read-group-1("nntp+news.gmane.org:gmane.comp.encryption.gpg.= gnutls.devel" nil t nil nil nil) (or (gnus-summary-read-group-1 group show-all no-article kill-buffer no-d= isplay select-articles) (setq show-all nil select-articles nil)) (let ((gnus-auto-select-next nil)) (or (gnus-summary-read-group-1 group s= how-all no-article kill-buffer no-display select-articles) (setq show-all n= il select-articles nil))) (setq result (let ((gnus-auto-select-next nil)) (or (gnus-summary-read-gr= oup-1 group show-all no-article kill-buffer no-display select-articles) (se= tq show-all nil select-articles nil)))) (null (setq result (let ((gnus-auto-select-next nil)) (or (gnus-summary-r= ead-group-1 group show-all no-article kill-buffer no-display select-article= s) (setq show-all nil select-articles nil))))) (and group (null (setq result (let ((gnus-auto-select-next nil)) (or (gnu= s-summary-read-group-1 group show-all no-article kill-buffer no-display sel= ect-articles) (setq show-all nil select-articles nil))))) (eq gnus-auto-sel= ect-next (quote quietly))) (while (and group (null (setq result (let ((gnus-auto-select-next nil)) (= or (gnus-summary-read-group-1 group show-all no-article kill-buffer no-disp= lay select-articles) (setq show-all nil select-articles nil))))) (eq gnus-a= uto-select-next (quote quietly))) (set-buffer gnus-group-buffer) (when back= ward (gnus-group-prev-unread-group 2)) (if (not (equal group (gnus-group-gr= oup-name))) (setq group (gnus-group-group-name)) (setq group nil))) (let (result) (while (and group (null (setq result (let ((gnus-auto-selec= t-next nil)) (or (gnus-summary-read-group-1 group show-all no-article kill-= buffer no-display select-articles) (setq show-all nil select-articles nil))= ))) (eq gnus-auto-select-next (quote quietly))) (set-buffer gnus-group-buff= er) (when backward (gnus-group-prev-unread-group 2)) (if (not (equal group = (gnus-group-group-name))) (setq group (gnus-group-group-name)) (setq group = nil))) result) gnus-summary-read-group("nntp+news.gmane.org:gmane.comp.encryption.gpg.gn= utls.devel" nil t nil nil nil nil) gnus-group-read-group(nil t) gnus-group-select-group(nil) gnus-topic-select-group(nil) call-interactively(gnus-topic-select-group nil nil)