projects
/
elisp
/
gnus.git-
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Sync up with gnus-5.6.39
[elisp/gnus.git-]
/
lisp
/
gnus-topic.el
diff --git
a/lisp/gnus-topic.el
b/lisp/gnus-topic.el
index
6ee2a63
..
3f2b2af
100644
(file)
--- a/
lisp/gnus-topic.el
+++ b/
lisp/gnus-topic.el
@@
-74,6
+74,7
@@
with some simple extensions.
(defvar gnus-topic-active-topology nil)
(defvar gnus-topic-active-alist nil)
(defvar gnus-topic-active-topology nil)
(defvar gnus-topic-active-alist nil)
+(defvar gnus-topic-unreads nil)
(defvar gnus-topology-checked-p nil
"Whether the topology has been checked in this session.")
(defvar gnus-topology-checked-p nil
"Whether the topology has been checked in this session.")
@@
-109,9
+110,7
@@
with some simple extensions.
(defun gnus-topic-unread (topic)
"Return the number of unread articles in TOPIC."
(defun gnus-topic-unread (topic)
"Return the number of unread articles in TOPIC."
- (or (save-excursion
- (and (gnus-topic-goto-topic topic)
- (gnus-group-topic-unread)))
+ (or (cdr (assoc topic gnus-topic-unreads))
0))
(defun gnus-group-topic-p ()
0))
(defun gnus-group-topic-p ()
@@
-472,6
+471,7
@@
articles in the topic and its subtopics."
(car type) visiblep
(not (eq (nth 2 type) 'hidden))
level all-entries unread))
(car type) visiblep
(not (eq (nth 2 type) 'hidden))
level all-entries unread))
+ (gnus-topic-update-unreads (car type) unread)
(goto-char end)
unread))
(goto-char end)
unread))
@@
-528,6
+528,7
@@
articles in the topic and its subtopics."
(number-of-groups (length entries))
(active-topic (eq gnus-topic-alist gnus-topic-active-alist))
gnus-tmp-header)
(number-of-groups (length entries))
(active-topic (eq gnus-topic-alist gnus-topic-active-alist))
gnus-tmp-header)
+ (gnus-topic-update-unreads name unread)
(beginning-of-line)
;; Insert the text.
(gnus-add-text-properties
(beginning-of-line)
;; Insert the text.
(gnus-add-text-properties
@@
-540,6
+541,11
@@
articles in the topic and its subtopics."
'gnus-active active-topic
'gnus-topic-visible visiblep))))
'gnus-active active-topic
'gnus-topic-visible visiblep))))
+(defun gnus-topic-update-unreads (topic unreads)
+ (setq gnus-topic-unreads (delq (assoc topic gnus-topic-unreads)
+ gnus-topic-unreads))
+ (push (cons topic unreads) gnus-topic-unreads))
+
(defun gnus-topic-update-topics-containing-group (group)
"Update all topics that have GROUP as a member."
(when (and (eq major-mode 'gnus-group-mode)
(defun gnus-topic-update-topics-containing-group (group)
"Update all topics that have GROUP as a member."
(when (and (eq major-mode 'gnus-group-mode)
@@
-621,7
+627,7
@@
articles in the topic and its subtopics."
(parent (gnus-topic-parent-topic topic-name))
(all-entries entries)
(unread 0)
(parent (gnus-topic-parent-topic topic-name))
(all-entries entries)
(unread 0)
- old-unread entry)
+ old-unread entry new-unread)
(when (gnus-topic-goto-topic (car type))
;; Tally all the groups that belong in this topic.
(if reads
(when (gnus-topic-goto-topic (car type))
;; Tally all the groups that belong in this topic.
(if reads
@@
-637,11
+643,14
@@
articles in the topic and its subtopics."
(car type) (gnus-topic-visible-p)
(not (eq (nth 2 type) 'hidden))
(gnus-group-topic-level) all-entries unread)
(car type) (gnus-topic-visible-p)
(not (eq (nth 2 type) 'hidden))
(gnus-group-topic-level) all-entries unread)
- (gnus-delete-line))
+ (gnus-delete-line)
+ (forward-line -1)
+ (setq new-unread (gnus-group-topic-unread)))
(when parent
(forward-line -1)
(gnus-topic-update-topic-line
(when parent
(forward-line -1)
(gnus-topic-update-topic-line
- parent (- (or old-unread 0) (or (gnus-group-topic-unread) 0))))
+ parent
+ (- (or old-unread 0) (or new-unread 0))))
unread))
(defun gnus-topic-group-indentation ()
unread))
(defun gnus-topic-group-indentation ()
@@
-906,6
+915,8
@@
articles in the topic and its subtopics."
"\M-#" gnus-topic-unmark-topic
[tab] gnus-topic-indent
[(meta tab)] gnus-topic-unindent
"\M-#" gnus-topic-unmark-topic
[tab] gnus-topic-indent
[(meta tab)] gnus-topic-unindent
+ "\C-i" gnus-topic-indent
+ "\M-\C-i" gnus-topic-unindent
gnus-mouse-2 gnus-mouse-pick-topic)
;; Define a new submap.
gnus-mouse-2 gnus-mouse-pick-topic)
;; Define a new submap.
@@
-925,7
+936,7
@@
articles in the topic and its subtopics."
"r" gnus-topic-rename
"\177" gnus-topic-delete
[delete] gnus-topic-delete
"r" gnus-topic-rename
"\177" gnus-topic-delete
[delete] gnus-topic-delete
- "h" gnus-topic-toggle-display-empty-topics)
+ "H" gnus-topic-toggle-display-empty-topics)
(gnus-define-keys (gnus-topic-sort-map "S" gnus-group-topic-map)
"s" gnus-topic-sort-groups
(gnus-define-keys (gnus-topic-sort-map "S" gnus-group-topic-map)
"s" gnus-topic-sort-groups
@@
-975,7
+986,6
@@
articles in the topic and its subtopics."
(gnus-topic-make-menu-bar))
(gnus-set-format 'topic t)
(gnus-add-minor-mode 'gnus-topic-mode " Topic" gnus-topic-mode-map)
(gnus-topic-make-menu-bar))
(gnus-set-format 'topic t)
(gnus-add-minor-mode 'gnus-topic-mode " Topic" gnus-topic-mode-map)
- (add-hook 'gnus-summary-exit-hook 'gnus-topic-update-topic)
(add-hook 'gnus-group-catchup-group-hook 'gnus-topic-update-topic)
(set (make-local-variable 'gnus-group-prepare-function)
'gnus-group-prepare-topics)
(add-hook 'gnus-group-catchup-group-hook 'gnus-topic-update-topic)
(set (make-local-variable 'gnus-group-prepare-function)
'gnus-group-prepare-topics)