emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/gnus/nnkiboze.el [emacs-unicode-2]


From: Miles Bader
Subject: [Emacs-diffs] Changes to emacs/lisp/gnus/nnkiboze.el [emacs-unicode-2]
Date: Thu, 09 Sep 2004 06:02:55 -0400

Index: emacs/lisp/gnus/nnkiboze.el
diff -c emacs/lisp/gnus/nnkiboze.el:1.8.6.1 emacs/lisp/gnus/nnkiboze.el:1.8.6.2
*** emacs/lisp/gnus/nnkiboze.el:1.8.6.1 Fri Mar 12 00:03:11 2004
--- emacs/lisp/gnus/nnkiboze.el Thu Sep  9 09:36:26 2004
***************
*** 1,6 ****
  ;;; nnkiboze.el --- select virtual news access for Gnus
  
! ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000
  ;;    Free Software Foundation, Inc.
  
  ;; Author: Lars Magne Ingebrigtsen <address@hidden>
--- 1,6 ----
  ;;; nnkiboze.el --- select virtual news access for Gnus
  
! ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003
  ;;    Free Software Foundation, Inc.
  
  ;; Author: Lars Magne Ingebrigtsen <address@hidden>
***************
*** 109,118 ****
        (setq num (string-to-int (match-string 2 xref))
            group (match-string 1 xref))
        (or (with-current-buffer buffer
!           (gnus-cache-request-article num group))
          (gnus-request-article num group buffer)))))
  
  (deffoo nnkiboze-request-scan (&optional group server)
    (nnkiboze-generate-group (concat "nnkiboze:" group)))
  
  (deffoo nnkiboze-request-group (group &optional server dont-check)
--- 109,120 ----
        (setq num (string-to-int (match-string 2 xref))
            group (match-string 1 xref))
        (or (with-current-buffer buffer
!           (or (and gnus-use-cache (gnus-cache-request-article num group))
!               (gnus-agent-request-article num group)))
          (gnus-request-article num group buffer)))))
  
  (deffoo nnkiboze-request-scan (&optional group server)
+   (nnkiboze-possibly-change-group group)
    (nnkiboze-generate-group (concat "nnkiboze:" group)))
  
  (deffoo nnkiboze-request-group (group &optional server dont-check)
***************
*** 227,237 ****
  (defun nnkiboze-generate-group (group &optional inhibit-list-groups)
    (let* ((info (nth 2 (gnus-gethash group gnus-newsrc-hashtb)))
         (newsrc-file (concat nnkiboze-directory
!                               (nnheader-translate-file-chars
!                                (concat group ".newsrc"))))
         (nov-file (concat nnkiboze-directory
!                            (nnheader-translate-file-chars
!                             (concat group ".nov"))))
         method nnkiboze-newsrc gname newsrc active
         ginfo lowest glevel orig-info nov-buffer
         ;; Bind various things to nil to make group entry faster.
--- 229,239 ----
  (defun nnkiboze-generate-group (group &optional inhibit-list-groups)
    (let* ((info (nth 2 (gnus-gethash group gnus-newsrc-hashtb)))
         (newsrc-file (concat nnkiboze-directory
!                             (nnheader-translate-file-chars
!                              (concat group ".newsrc"))))
         (nov-file (concat nnkiboze-directory
!                          (nnheader-translate-file-chars
!                           (concat group ".nov"))))
         method nnkiboze-newsrc gname newsrc active
         ginfo lowest glevel orig-info nov-buffer
         ;; Bind various things to nil to make group entry faster.
***************
*** 242,353 ****
         (gnus-score-use-all-scores nil)
         (gnus-use-scoring t)
         (gnus-verbose (min gnus-verbose 3))
!        gnus-select-group-hook gnus-summary-prepare-hook
         gnus-thread-sort-functions gnus-show-threads
         gnus-visual gnus-suppress-duplicates num-unread)
      (unless info
        (error "No such group: %s" group))
      ;; Load the kiboze newsrc file for this group.
!     (when (file-exists-p newsrc-file)
!       (load newsrc-file))
!     (let ((coding-system-for-write nnkiboze-file-coding-system))
!       (with-temp-file nov-file
!       (when (file-exists-p nov-file)
!         (insert-file-contents nov-file))
!       (setq nov-buffer (current-buffer))
!       ;; Go through the active hashtb and add new all groups that match the
!       ;; kiboze regexp.
!       (mapatoms
!        (lambda (group)
!          (and (string-match nnkiboze-regexp
!                             (setq gname (symbol-name group))) ; Match
!               (not (assoc gname nnkiboze-newsrc)) ; It isn't registered
!               (numberp (car (symbol-value group))) ; It is active
!               (or (> nnkiboze-level 7)
!                   (and (setq glevel (nth 1 (nth 2 (gnus-gethash
!                                                    gname 
gnus-newsrc-hashtb))))
!                        (>= nnkiboze-level glevel)))
!               (not (string-match "^nnkiboze:" gname)) ; Exclude kibozes
!               (push (cons gname (1- (car (symbol-value group))))
!                     nnkiboze-newsrc)))
!        gnus-active-hashtb)
!       ;; `newsrc' is set to the list of groups that possibly are
!       ;; component groups to this kiboze group.  This list has elements
!       ;; on the form `(GROUP . NUMBER)', where NUMBER is the highest
!       ;; number that has been kibozed in GROUP in this kiboze group.
!       (setq newsrc nnkiboze-newsrc)
!       (while newsrc
!         (if (not (setq active (gnus-gethash
!                                (caar newsrc) gnus-active-hashtb)))
!             ;; This group isn't active after all, so we remove it from
!             ;; the list of component groups.
!             (setq nnkiboze-newsrc (delq (car newsrc) nnkiboze-newsrc))
!           (setq lowest (cdar newsrc))
!           ;; Ok, we have a valid component group, so we jump to it.
!           (switch-to-buffer gnus-group-buffer)
!           (gnus-group-jump-to-group (caar newsrc))
!           (gnus-message 3 "nnkiboze: Checking %s..." (caar newsrc))
!           (setq ginfo (gnus-get-info (gnus-group-group-name))
!                 orig-info (gnus-copy-sequence ginfo)
!                 num-unread (car (gnus-gethash (caar newsrc)
!                                               gnus-newsrc-hashtb)))
!           (unwind-protect
!               (progn
!                 ;; We set all list of article marks to nil.  Since we operate
!                 ;; on copies of the real lists, we can destroy anything we
!                 ;; want here.
!                 (when (nth 3 ginfo)
!                   (setcar (nthcdr 3 ginfo) nil))
!                 ;; We set the list of read articles to be what we expect for
!                 ;; this kiboze group -- either nil or `(1 . LOWEST)'.
!                 (when ginfo
!                   (setcar (nthcdr 2 ginfo)
!                           (and (not (= lowest 1)) (cons 1 lowest))))
!                 (when (and (or (not ginfo)
!                                (> (length (gnus-list-of-unread-articles
!                                            (car ginfo)))
!                                   0))
!                            (progn
!                              (ignore-errors
!                                (gnus-group-select-group nil))
!                              (eq major-mode 'gnus-summary-mode)))
!                   ;; We are now in the group where we want to be.
!                   (setq method (gnus-find-method-for-group
!                                 gnus-newsgroup-name))
!                   (when (eq method gnus-select-method)
!                     (setq method nil))
!                   ;; We go through the list of scored articles.
!                   (while gnus-newsgroup-scored
!                     (when (> (caar gnus-newsgroup-scored) lowest)
!                       ;; If it has a good score, then we enter this article
!                       ;; into the kiboze group.
!                       (nnkiboze-enter-nov
!                        nov-buffer
!                        (gnus-summary-article-header
!                         (caar gnus-newsgroup-scored))
!                        gnus-newsgroup-name))
!                     (setq gnus-newsgroup-scored (cdr gnus-newsgroup-scored)))
!                   ;; That's it.  We exit this group.
!                   (when (eq major-mode 'gnus-summary-mode)
!                     (kill-buffer (current-buffer)))))
!             ;; Restore the proper info.
!             (when ginfo
!               (setcdr ginfo (cdr orig-info)))
!             (setcar (gnus-gethash (caar newsrc) gnus-newsrc-hashtb)
!                     num-unread)))
!         (setcdr (car newsrc) (car active))
!         (gnus-message 3 "nnkiboze: Checking %s...done" (caar newsrc))
!         (setq newsrc (cdr newsrc)))))
!     ;; We save the kiboze newsrc for this group.
!     (with-temp-file newsrc-file
!       (insert "(setq nnkiboze-newsrc '")
!       (gnus-prin1 nnkiboze-newsrc)
!       (insert ")\n")))
    (unless inhibit-list-groups
      (save-excursion
        (set-buffer gnus-group-buffer)
        (gnus-group-list-groups)))
!   t)
  
  (defun nnkiboze-enter-nov (buffer header group)
    (save-excursion
--- 244,359 ----
         (gnus-score-use-all-scores nil)
         (gnus-use-scoring t)
         (gnus-verbose (min gnus-verbose 3))
!        gnus-select-group-hook gnus-summary-prepare-hook
         gnus-thread-sort-functions gnus-show-threads
         gnus-visual gnus-suppress-duplicates num-unread)
      (unless info
        (error "No such group: %s" group))
      ;; Load the kiboze newsrc file for this group.
!     (mm-with-unibyte
!       (when (file-exists-p newsrc-file)
!       (load newsrc-file))
!       (let ((coding-system-for-write nnkiboze-file-coding-system))
!       (gnus-make-directory (file-name-directory nov-file))
!       (with-temp-file nov-file
!         (when (file-exists-p nov-file)
!           (insert-file-contents nov-file))
!         (setq nov-buffer (current-buffer))
!         ;; Go through the active hashtb and add new all groups that match the
!         ;; kiboze regexp.
!         (mapatoms
!          (lambda (group)
!            (and (string-match nnkiboze-regexp
!                               (setq gname (symbol-name group))) ; Match
!                 (not (assoc gname nnkiboze-newsrc)) ; It isn't registered
!                 (numberp (car (symbol-value group))) ; It is active
!                 (or (> nnkiboze-level 7)
!                     (and (setq glevel
!                                (nth 1 (nth 2 (gnus-gethash
!                                               gname gnus-newsrc-hashtb))))
!                          (>= nnkiboze-level glevel)))
!                 (not (string-match "^nnkiboze:" gname)) ; Exclude kibozes
!                 (push (cons gname (1- (car (symbol-value group))))
!                       nnkiboze-newsrc)))
!          gnus-active-hashtb)
!         ;; `newsrc' is set to the list of groups that possibly are
!         ;; component groups to this kiboze group.  This list has elements
!         ;; on the form `(GROUP . NUMBER)', where NUMBER is the highest
!         ;; number that has been kibozed in GROUP in this kiboze group.
!         (setq newsrc nnkiboze-newsrc)
!         (while newsrc
!           (if (not (setq active (gnus-gethash
!                                  (caar newsrc) gnus-active-hashtb)))
!               ;; This group isn't active after all, so we remove it from
!               ;; the list of component groups.
!               (setq nnkiboze-newsrc (delq (car newsrc) nnkiboze-newsrc))
!             (setq lowest (cdar newsrc))
!             ;; Ok, we have a valid component group, so we jump to it.
!             (switch-to-buffer gnus-group-buffer)
!             (gnus-group-jump-to-group (caar newsrc))
!             (gnus-message 3 "nnkiboze: Checking %s..." (caar newsrc))
!             (setq ginfo (gnus-get-info (gnus-group-group-name))
!                   orig-info (gnus-copy-sequence ginfo)
!                   num-unread (car (gnus-gethash (caar newsrc)
!                                                 gnus-newsrc-hashtb)))
!             (unwind-protect
!                 (progn
!                   ;; We set all list of article marks to nil.  Since we 
operate
!                   ;; on copies of the real lists, we can destroy anything we
!                   ;; want here.
!                   (when (nth 3 ginfo)
!                     (setcar (nthcdr 3 ginfo) nil))
!                   ;; We set the list of read articles to be what we expect for
!                   ;; this kiboze group -- either nil or `(1 . LOWEST)'.
!                   (when ginfo
!                     (setcar (nthcdr 2 ginfo)
!                             (and (not (= lowest 1)) (cons 1 lowest))))
!                   (when (and (or (not ginfo)
!                                  (> (length (gnus-list-of-unread-articles
!                                              (car ginfo)))
!                                     0))
!                              (progn
!                                (ignore-errors
!                                  (gnus-group-select-group nil))
!                                (eq major-mode 'gnus-summary-mode)))
!                     ;; We are now in the group where we want to be.
!                     (setq method (gnus-find-method-for-group
!                                   gnus-newsgroup-name))
!                     (when (eq method gnus-select-method)
!                       (setq method nil))
!                     ;; We go through the list of scored articles.
!                     (while gnus-newsgroup-scored
!                       (when (> (caar gnus-newsgroup-scored) lowest)
!                         ;; If it has a good score, then we enter this article
!                         ;; into the kiboze group.
!                         (nnkiboze-enter-nov
!                          nov-buffer
!                          (gnus-summary-article-header
!                           (caar gnus-newsgroup-scored))
!                          gnus-newsgroup-name))
!                       (setq gnus-newsgroup-scored (cdr 
gnus-newsgroup-scored)))
!                     ;; That's it.  We exit this group.
!                     (when (eq major-mode 'gnus-summary-mode)
!                       (kill-buffer (current-buffer)))))
!               ;; Restore the proper info.
!               (when ginfo
!                 (setcdr ginfo (cdr orig-info)))
!               (setcar (gnus-gethash (caar newsrc) gnus-newsrc-hashtb)
!                       num-unread)))
!           (setcdr (car newsrc) (cdr active))
!           (gnus-message 3 "nnkiboze: Checking %s...done" (caar newsrc))
!           (setq newsrc (cdr newsrc)))))
!       ;; We save the kiboze newsrc for this group.
!       (gnus-make-directory (file-name-directory newsrc-file))
!       (with-temp-file newsrc-file
!       (insert "(setq nnkiboze-newsrc '")
!       (gnus-prin1 nnkiboze-newsrc)
!       (insert ")\n")))
    (unless inhibit-list-groups
      (save-excursion
        (set-buffer gnus-group-buffer)
        (gnus-group-list-groups)))
!   t))
  
  (defun nnkiboze-enter-nov (buffer header group)
    (save-excursion




reply via email to

[Prev in Thread] Current Thread [Next in Thread]