mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-11 09:20:51 +00:00
* mm-util.el (mm-with-multibyte, mm-with-unibyte): Remove.
* nnkiboze.el (nnkiboze-generate-group): Use explicit mm-disable-multibyte rather than mm-with-unibyte.
This commit is contained in:
parent
ee5b7365d5
commit
eafee8f217
@ -1,5 +1,10 @@
|
||||
2008-06-25 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* mm-util.el (mm-with-multibyte, mm-with-unibyte): Remove.
|
||||
|
||||
* nnkiboze.el (nnkiboze-generate-group):
|
||||
Use explicit mm-disable-multibyte rather than mm-with-unibyte.
|
||||
|
||||
* nnmairix.el: Require CL.
|
||||
|
||||
2008-06-15 David Engster <dengste@eml.cc>
|
||||
|
@ -1093,20 +1093,6 @@ Emacs 23 (unicode)."
|
||||
(put 'mm-with-unibyte-current-buffer 'lisp-indent-function 0)
|
||||
(put 'mm-with-unibyte-current-buffer 'edebug-form-spec '(body))
|
||||
|
||||
(defmacro mm-with-unibyte (&rest forms)
|
||||
"Eval the FORMS with the default value of `enable-multibyte-characters' nil."
|
||||
`(let (default-enable-multibyte-characters)
|
||||
,@forms))
|
||||
(put 'mm-with-unibyte 'lisp-indent-function 0)
|
||||
(put 'mm-with-unibyte 'edebug-form-spec '(body))
|
||||
|
||||
(defmacro mm-with-multibyte (&rest forms)
|
||||
"Eval the FORMS with the default value of `enable-multibyte-characters' t."
|
||||
`(let ((default-enable-multibyte-characters t))
|
||||
,@forms))
|
||||
(put 'mm-with-multibyte 'lisp-indent-function 0)
|
||||
(put 'mm-with-multibyte 'edebug-form-spec '(body))
|
||||
|
||||
(defun mm-find-charset-region (b e)
|
||||
"Return a list of Emacs charsets in the region B to E."
|
||||
(cond
|
||||
|
@ -247,101 +247,102 @@ Finds out what articles are to be part of the nnkiboze groups."
|
||||
(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
|
||||
(gnus-info-level (gnus-get-info gname)))
|
||||
(>= 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-active (caar newsrc))))
|
||||
;; 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 (gnus-group-unread (caar newsrc)))
|
||||
(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-group-entry (caar newsrc)) 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")))
|
||||
(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
|
||||
(mm-disable-multibyte)
|
||||
(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
|
||||
(gnus-info-level (gnus-get-info gname)))
|
||||
(>= 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-active (caar newsrc))))
|
||||
;; 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 (gnus-group-unread (caar newsrc)))
|
||||
(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-group-entry (caar newsrc)) 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
|
||||
(mm-disable-multibyte)
|
||||
(insert "(setq nnkiboze-newsrc '")
|
||||
(gnus-prin1 nnkiboze-newsrc)
|
||||
(insert ")\n"))
|
||||
(unless inhibit-list-groups
|
||||
(save-excursion
|
||||
(set-buffer gnus-group-buffer)
|
||||
|
Loading…
Reference in New Issue
Block a user