gnus-group-number-of-unread-mail
Le
Ph. Idlavi
Bonjour,
J'ai pompé la fonction gnus-group-number-of-unread-mail à l'adresse :
http://www-verimag.imag.fr/~moy/emacs/.gnus.el
8<8<8<8<8<8<8<8<8<
(defun gnus-group-number-of-unread-mail (level)
"*Returns the number of unread mails in groups of subscription level LEVEL and below."
(let ((num-of-unread 0)
(newsrc (cdr gnus-newsrc-alist))
info clevel)
(while newsrc
(setq info (car newsrc)
clevel (gnus-info-level info))
(when (<= clevel level)
(setq num-of-unread
(+ num-of-unread (car (gnus-gethash (gnus-info-group info) gnus-newsrc-hashtb)))))
(setq newsrc (cdr newsrc)))
num-of-unread))
8<8<8<8<8<8<8<8<8<
mais Alt-: (gnus-group-number-of-unread-mail 2) dans le buffer Group
donne le Backtrace suivant :
8<8<8<8<8<8<8<8<8<
Debugger entered--Lisp error: (wrong-type-argument number-or-marker-p t)
+(1 t)
(setq num-of-unread (+ num-of-unread (car )))
(progn (setq num-of-unread (+ num-of-unread )))
(if (<= clevel level) (progn (setq num-of-unread )))
(when (<= clevel level) (setq num-of-unread (+ num-of-unread )))
(while newsrc (setq info (car newsrc) clevel (gnus-info-level info)) (when (<= clevel level) (setq num-of-unread )) (setq newsrc (cdr newsrc)))
(let ((num-of-unread 0) (newsrc )) (while newsrc (setq info clevel ) (when ) (setq newsrc )) num-of-unread)
gnus-group-number-of-unread-mail(2)
eval((gnus-group-number-of-unread-mail 2))
eval-expression((gnus-group-number-of-unread-mail 2) nil)
call-interactively(eval-expression)
recursive-edit()
byte-code("Æ!Ç È !? Éed\"V4 ebÊ¥y`dbÊ¥Zy\f`|)ËcebÌÍ !Î @Ï=K ÐÑÒ\"Ó ÌÔ!ÒÕÒÌÔ!Ö ,Õ" [debugger-buffer debugger-args noninteractive debugger-batch-max-lines middlestart buffer-read-only pop-to-buffer debugger-mode debugger-setup-buffer count-lines 2 "" message buffer-string kill-emacs debug backtrace-debug 3 t debugger-reenable "" nil recursive-edit standard-output inhibit-trace] 3)
debug(error (wrong-type-argument number-or-marker-p t))
+(0 t)
(setq num-of-unread (+ num-of-unread (car )))
(progn (setq num-of-unread (+ num-of-unread )))
(if (<= clevel level) (progn (setq num-of-unread )))
(when (<= clevel level) (setq num-of-unread (+ num-of-unread )))
(while newsrc (setq info (car newsrc) clevel (gnus-info-level info)) (when (<= clevel level) (setq num-of-unread )) (setq newsrc (cdr newsrc)))
(let ((num-of-unread 0) (newsrc )) (while newsrc (setq info clevel ) (when ) (setq newsrc )) num-of-unread)
gnus-group-number-of-unread-mail(2)
eval((gnus-group-number-of-unread-mail 2))
eval-expression((gnus-group-number-of-unread-mail 2) nil)
call-interactively(eval-expression)
recursive-edit()
byte-code("Æ!Ç È !? Éed\"V4 ebÊ¥y`dbÊ¥Zy\f`|)ËcebÌÍ !Î @Ï=K ÐÑÒ\"Ó ÌÔ!ÒÕÒÌÔ!Ö ,Õ" [debugger-buffer debugger-args noninteractive debugger-batch-max-lines middlestart buffer-read-only pop-to-buffer debugger-mode debugger-setup-buffer count-lines 2 "" message buffer-string kill-emacs debug backtrace-debug 3 t debugger-reenable "" nil recursive-edit standard-output inhibit-trace] 3)
debug(error (wrong-type-argument number-or-marker-p t))
+(0 t)
(setq num-of-unread (+ num-of-unread (car )))
(progn (setq num-of-unread (+ num-of-unread )))
(if (<= clevel level) (progn (setq num-of-unread )))
(when (<= clevel level) (setq num-of-unread (+ num-of-unread )))
(while newsrc (setq info (car newsrc) clevel (gnus-info-level info)) (when (<= clevel level) (setq num-of-unread )) (setq newsrc (cdr newsrc)))
(let ((num-of-unread 0) (newsrc )) (while newsrc (setq info clevel ) (when ) (setq newsrc )) num-of-unread)
gnus-group-number-of-unread-mail(2)
eval((gnus-group-number-of-unread-mail 2))
eval-expression((gnus-group-number-of-unread-mail 2) nil)
call-interactively(eval-expression)
recursive-edit()
byte-code("Æ!Ç È !? Éed\"V4 ebÊ¥y`dbÊ¥Zy\f`|)ËcebÌÍ !Î @Ï=K ÐÑÒ\"Ó ÌÔ!ÒÕÒÌÔ!Ö ,Õ" [debugger-buffer debugger-args noninteractive debugger-batch-max-lines middlestart buffer-read-only pop-to-buffer debugger-mode debugger-setup-buffer count-lines 2 "" message buffer-string kill-emacs debug backtrace-debug 3 t debugger-reenable "" nil recursive-edit standard-output inhibit-trace] 3)
debug(error (wrong-type-argument number-or-marker-p t))
+(0 t)
(setq num-of-unread (+ num-of-unread (car )))
(progn (setq num-of-unread (+ num-of-unread )))
(if (<= clevel level) (progn (setq num-of-unread )))
(when (<= clevel level) (setq num-of-unread (+ num-of-unread )))
(while newsrc (setq info (car newsrc) clevel (gnus-info-level info)) (when (<= clevel level) (setq num-of-unread )) (setq newsrc (cdr newsrc)))
(let ((num-of-unread 0) (newsrc ) info clevel) (while newsrc (setq info clevel ) (when ) (setq newsrc )) num-of-unread)
gnus-group-number-of-unread-mail(2)
eval((gnus-group-number-of-unread-mail 2))
eval-expression((gnus-group-number-of-unread-mail 2) nil)
call-interactively(eval-expression)
8<8<8<8<8<8<8<8<8<
Il me semble pourtant que cette fonction a déjà fonctionné chez moi
Comment récupérer le nombre de messages non lus ou le nombre de nouveaux
messages de niveau x? (Gnus v5.10.6)
Merci de votre aide.
--
Philippe.
J'ai pompé la fonction gnus-group-number-of-unread-mail à l'adresse :
http://www-verimag.imag.fr/~moy/emacs/.gnus.el
8<8<8<8<8<8<8<8<8<
(defun gnus-group-number-of-unread-mail (level)
"*Returns the number of unread mails in groups of subscription level LEVEL and below."
(let ((num-of-unread 0)
(newsrc (cdr gnus-newsrc-alist))
info clevel)
(while newsrc
(setq info (car newsrc)
clevel (gnus-info-level info))
(when (<= clevel level)
(setq num-of-unread
(+ num-of-unread (car (gnus-gethash (gnus-info-group info) gnus-newsrc-hashtb)))))
(setq newsrc (cdr newsrc)))
num-of-unread))
8<8<8<8<8<8<8<8<8<
mais Alt-: (gnus-group-number-of-unread-mail 2) dans le buffer Group
donne le Backtrace suivant :
8<8<8<8<8<8<8<8<8<
Debugger entered--Lisp error: (wrong-type-argument number-or-marker-p t)
+(1 t)
(setq num-of-unread (+ num-of-unread (car )))
(progn (setq num-of-unread (+ num-of-unread )))
(if (<= clevel level) (progn (setq num-of-unread )))
(when (<= clevel level) (setq num-of-unread (+ num-of-unread )))
(while newsrc (setq info (car newsrc) clevel (gnus-info-level info)) (when (<= clevel level) (setq num-of-unread )) (setq newsrc (cdr newsrc)))
(let ((num-of-unread 0) (newsrc )) (while newsrc (setq info clevel ) (when ) (setq newsrc )) num-of-unread)
gnus-group-number-of-unread-mail(2)
eval((gnus-group-number-of-unread-mail 2))
eval-expression((gnus-group-number-of-unread-mail 2) nil)
call-interactively(eval-expression)
recursive-edit()
byte-code("Æ!Ç È !? Éed\"V4 ebÊ¥y`dbÊ¥Zy\f`|)ËcebÌÍ !Î @Ï=K ÐÑÒ\"Ó ÌÔ!ÒÕÒÌÔ!Ö ,Õ" [debugger-buffer debugger-args noninteractive debugger-batch-max-lines middlestart buffer-read-only pop-to-buffer debugger-mode debugger-setup-buffer count-lines 2 "" message buffer-string kill-emacs debug backtrace-debug 3 t debugger-reenable "" nil recursive-edit standard-output inhibit-trace] 3)
debug(error (wrong-type-argument number-or-marker-p t))
+(0 t)
(setq num-of-unread (+ num-of-unread (car )))
(progn (setq num-of-unread (+ num-of-unread )))
(if (<= clevel level) (progn (setq num-of-unread )))
(when (<= clevel level) (setq num-of-unread (+ num-of-unread )))
(while newsrc (setq info (car newsrc) clevel (gnus-info-level info)) (when (<= clevel level) (setq num-of-unread )) (setq newsrc (cdr newsrc)))
(let ((num-of-unread 0) (newsrc )) (while newsrc (setq info clevel ) (when ) (setq newsrc )) num-of-unread)
gnus-group-number-of-unread-mail(2)
eval((gnus-group-number-of-unread-mail 2))
eval-expression((gnus-group-number-of-unread-mail 2) nil)
call-interactively(eval-expression)
recursive-edit()
byte-code("Æ!Ç È !? Éed\"V4 ebÊ¥y`dbÊ¥Zy\f`|)ËcebÌÍ !Î @Ï=K ÐÑÒ\"Ó ÌÔ!ÒÕÒÌÔ!Ö ,Õ" [debugger-buffer debugger-args noninteractive debugger-batch-max-lines middlestart buffer-read-only pop-to-buffer debugger-mode debugger-setup-buffer count-lines 2 "" message buffer-string kill-emacs debug backtrace-debug 3 t debugger-reenable "" nil recursive-edit standard-output inhibit-trace] 3)
debug(error (wrong-type-argument number-or-marker-p t))
+(0 t)
(setq num-of-unread (+ num-of-unread (car )))
(progn (setq num-of-unread (+ num-of-unread )))
(if (<= clevel level) (progn (setq num-of-unread )))
(when (<= clevel level) (setq num-of-unread (+ num-of-unread )))
(while newsrc (setq info (car newsrc) clevel (gnus-info-level info)) (when (<= clevel level) (setq num-of-unread )) (setq newsrc (cdr newsrc)))
(let ((num-of-unread 0) (newsrc )) (while newsrc (setq info clevel ) (when ) (setq newsrc )) num-of-unread)
gnus-group-number-of-unread-mail(2)
eval((gnus-group-number-of-unread-mail 2))
eval-expression((gnus-group-number-of-unread-mail 2) nil)
call-interactively(eval-expression)
recursive-edit()
byte-code("Æ!Ç È !? Éed\"V4 ebÊ¥y`dbÊ¥Zy\f`|)ËcebÌÍ !Î @Ï=K ÐÑÒ\"Ó ÌÔ!ÒÕÒÌÔ!Ö ,Õ" [debugger-buffer debugger-args noninteractive debugger-batch-max-lines middlestart buffer-read-only pop-to-buffer debugger-mode debugger-setup-buffer count-lines 2 "" message buffer-string kill-emacs debug backtrace-debug 3 t debugger-reenable "" nil recursive-edit standard-output inhibit-trace] 3)
debug(error (wrong-type-argument number-or-marker-p t))
+(0 t)
(setq num-of-unread (+ num-of-unread (car )))
(progn (setq num-of-unread (+ num-of-unread )))
(if (<= clevel level) (progn (setq num-of-unread )))
(when (<= clevel level) (setq num-of-unread (+ num-of-unread )))
(while newsrc (setq info (car newsrc) clevel (gnus-info-level info)) (when (<= clevel level) (setq num-of-unread )) (setq newsrc (cdr newsrc)))
(let ((num-of-unread 0) (newsrc ) info clevel) (while newsrc (setq info clevel ) (when ) (setq newsrc )) num-of-unread)
gnus-group-number-of-unread-mail(2)
eval((gnus-group-number-of-unread-mail 2))
eval-expression((gnus-group-number-of-unread-mail 2) nil)
call-interactively(eval-expression)
8<8<8<8<8<8<8<8<8<
Il me semble pourtant que cette fonction a déjà fonctionné chez moi
Comment récupérer le nombre de messages non lus ou le nombre de nouveaux
messages de niveau x? (Gnus v5.10.6)
Merci de votre aide.
--
Philippe.

Poser une question


À ce propos, utilise 'q' pour sortir du débuggeur, au lieu de
'C-x o'.
Il semblerait que Gnus stocke un 't' au lieu d'un nombre dans
le nombre d'article non-lus d'un de tes groupes. Comme
'gnus-newsrc-alist' n'est pas documentée, je ne sais pas ce que
cela veux dire. Que donne ceci :
(require 'cl)
(defun drkm-gnus-grp:number-of-unread-mail (level)
"Returns the number of unread mails in groups of LEVEL and below."
(let ((total 0))
(dolist (rc (cdr gnus-newsrc-alist) total)
(when (<= (gnus-info-level rc) level)
(let ((unread (gnus-group-unread (gnus-info-group rc))))
(when (integerp unread)
(incf total unread)))))))
--drkm
[...]
Ça c'est vu ?!... dans une boule de cristal ? ;-)
Pourquoi ne faut il pas sortir du débuggueur avec 'C-x o' ?
Ah... J'ai peut-être une mauvaise configuration dans le .gnus :-(
Peut on savoir quel est le vilain groupe qui stocke un 't' au lieu d'un
nombre ?
Ça semble marcher parfaitement !
GrandMerci.
--
Philippe.
Meuh non, c'est la webcam sur ton bureau. Je peux même te dire
que tu as provoqué 4 fois de suite l'erreur avant de te décider à
copier ton backtrace. Big Brother's watching *you*!
Parce que 'C-x o' ne quitte pas le débuggeur. Il change juste
de fenêtre, mais tu es toujours dans le contexte d'exécution du
débuggeur. Regarde ton backtrace ;-)
--drkm
Quand tu ne quittes pas avec 'q', Emacs garde les anciennes
« backtraces » et les empile. Du coup, tu te retrouves avec une trace
énôôrme dont une grande partie inutile.
--
Matthieu
Tiens, je pensais que s'il affichait effectivement ce qui peut
sembler être la concaténation de plusieurs backtraces, c'est
qu'en fait le backtrace est effectivement celui-là. Dû au fait
qu'Emacs ne dépile pas. D'où le recursive edit.
Non ?
--drkm