unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#49068: 28.0.50; [PATCH] Feature suggestion, add number of groups in subtopics to gnus-topic-line-format
@ 2021-06-17  0:21 Alex Bochannek
  2021-06-19 13:04 ` Lars Ingebrigtsen
  0 siblings, 1 reply; 3+ messages in thread
From: Alex Bochannek @ 2021-06-17  0:21 UTC (permalink / raw)
  To: 49068

[-- Attachment #1: Type: text/plain, Size: 722 bytes --]

Hello!

I would like to display not just the number of unread articles for
subtopics in the topic line, but also have the number of groups include
the subtopics.


For 'gnus-topic-line-format' variable add 'G' element to allow for
display of number of groups in subtopics

	* lisp/gnus/gnus-topic.el (gnus-topic-line-format)
	(gnus-topic-line-format-alist, gnus-topic-prepare-topic)
	(gnus-topic-insert-topic-line, )
	(gnus-topic-display-missing-topic, )
	(gnus-topic-update-topic-line):
	Provide number of groups in subtopics for topic line display and
	add 'G' element to be used for 'gnus-topic-line-format' variable

	* doc/misc/gnus.texi (Topic Variables):
	Document 'G' element for 'gnus-topic-line-format' variable

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 5015 bytes --]

diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index b63947c044..ff8404e532 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -4126,6 +4126,8 @@ Topic Variables
 Level.
 @item g
 Number of groups in the topic.
+@item G
+Number of groups in the topic and all its subtopics.
 @item a
 Number of unread articles in the topic.
 @item A
diff --git a/lisp/gnus/gnus-topic.el b/lisp/gnus/gnus-topic.el
index b974dff372..568fbbcafb 100644
--- a/lisp/gnus/gnus-topic.el
+++ b/lisp/gnus/gnus-topic.el
@@ -54,6 +54,7 @@ gnus-topic-line-format
 %n  Topic name.
 %v  Nothing if the topic is visible, \"...\" otherwise.
 %g  Number of groups in the topic.
+%G  Number of groups in the topic and its subtopics.
 %a  Number of unread articles in the groups in the topic.
 %A  Number of unread articles in the groups in the topic and its subtopics.
 
@@ -87,6 +88,7 @@ gnus-topic-line-format-alist
     (?v visible ?s)
     (?i indentation ?s)
     (?g number-of-groups ?d)
+    (?G total-number-of-groups ?d)
     (?a (gnus-topic-articles-in-topic entries) ?d)
     (?A total-number-of-articles ?d)
     (?l level ?d)))
@@ -485,16 +487,18 @@ gnus-topic-prepare-topic
 If SILENT, don't insert anything.  Return the number of unread
 articles in the topic and its subtopics."
   (let* ((type (pop topicl))
+	 (entries-level (if gnus-group-listed-groups
+			    gnus-level-killed
+			  list-level))
+	 (all (or predicate gnus-group-listed-groups
+		  (cdr (assq 'visible
+			     (gnus-topic-hierarchical-parameters
+			      (car type))))))
+	 (lowest (if gnus-group-listed-groups 0 lowest))
 	 (entries (gnus-topic-find-groups
-		   (car type)
-		   (if gnus-group-listed-groups
-		       gnus-level-killed
-		     list-level)
-		   (or predicate gnus-group-listed-groups
-		       (cdr (assq 'visible
-				  (gnus-topic-hierarchical-parameters
-				   (car type)))))
-		   (if gnus-group-listed-groups 0 lowest)))
+		   (car type) entries-level all lowest))
+	 (all-groups (gnus-topic-find-groups
+		      (car type) entries-level all lowest t))
 	 (visiblep (and (eq (nth 1 type) 'visible) (not silent)))
 	 (gnus-group-indentation
 	  (make-string (* gnus-topic-indent-level level) ? ))
@@ -573,7 +577,7 @@ gnus-topic-prepare-topic
       (gnus-topic-insert-topic-line
        (car type) visiblep
        (not (eq (nth 2 type) 'hidden))
-       level all-entries unread))
+       level all-entries unread all-groups))
     (gnus-topic-update-unreads (car type) unread)
     (gnus-group--setup-tool-bar-update beg end)
     (goto-char end)
@@ -627,10 +631,10 @@ gnus-topic-fold
 (defvar gnus-tmp-header)
 
 (defun gnus-topic-insert-topic-line (name visiblep shownp level entries
-					  &optional unread)
+					  &optional unread all-groups)
   (gnus--\,@
    (let ((vars '(indentation visible name level number-of-groups
-                 total-number-of-articles entries)))
+                 total-number-of-groups total-number-of-articles entries)))
      `((with-suppressed-warnings ((lexical ,@vars))
          ,@(mapcar (lambda (s) `(defvar ,s)) vars)))))
   (let* ((visible (if visiblep "" "..."))
@@ -639,6 +643,7 @@ gnus-topic-insert-topic-line
 	 (indentation (make-string (* gnus-topic-indent-level level) ? ))
 	 (total-number-of-articles unread)
 	 (number-of-groups (length entries))
+	 (total-number-of-groups (length all-groups))
 	 (active-topic (eq gnus-topic-alist gnus-topic-active-alist))
 	 gnus-tmp-header)
     (gnus-topic-update-unreads name unread)
@@ -731,6 +736,9 @@ gnus-topic-display-missing-topic
 	 (entries (gnus-topic-find-groups
 		   (car type) (car gnus-group-list-mode)
 		   (cdr gnus-group-list-mode)))
+	 (all-groups (gnus-topic-find-groups
+		   (car type) (car gnus-group-list-mode)
+		   (cdr gnus-group-list-mode) nil t))
 	entry)
     (while children
       (cl-incf unread (gnus-topic-unread (caar (pop children)))))
@@ -738,7 +746,7 @@ gnus-topic-display-missing-topic
       (when (numberp (car entry))
 	(cl-incf unread (car entry))))
     (gnus-topic-insert-topic-line
-     topic t t (car (gnus-topic-find-topology topic)) nil unread)))
+     topic t t (car (gnus-topic-find-topology topic)) nil unread all-groups)))
 
 (defun gnus-topic-goto-missing-topic (topic)
   (if (gnus-topic-goto-topic topic)
@@ -768,6 +776,9 @@ gnus-topic-update-topic-line
 	 (entries (gnus-topic-find-groups
 		   (car type) (car gnus-group-list-mode)
 		   (cdr gnus-group-list-mode)))
+	 (all-groups (gnus-topic-find-groups
+		   (car type) (car gnus-group-list-mode)
+		   (cdr gnus-group-list-mode) t))
 	 (parent (gnus-topic-parent-topic topic-name))
 	 (all-entries entries)
 	 (unread 0)
@@ -786,7 +797,7 @@ gnus-topic-update-topic-line
       (gnus-topic-insert-topic-line
        (car type) (gnus-topic-visible-p)
        (not (eq (nth 2 type) 'hidden))
-       (gnus-group-topic-level) all-entries unread)
+       (gnus-group-topic-level) all-entries unread all-groups)
       (gnus-delete-line)
       (forward-line -1)
       (setq new-unread (gnus-group-topic-unread)))

[-- Attachment #3: Type: text/plain, Size: 10 bytes --]

-- 
Alex.

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* bug#49068: 28.0.50; [PATCH] Feature suggestion, add number of groups in subtopics to gnus-topic-line-format
  2021-06-17  0:21 bug#49068: 28.0.50; [PATCH] Feature suggestion, add number of groups in subtopics to gnus-topic-line-format Alex Bochannek
@ 2021-06-19 13:04 ` Lars Ingebrigtsen
  2021-06-19 15:40   ` Alex Bochannek
  0 siblings, 1 reply; 3+ messages in thread
From: Lars Ingebrigtsen @ 2021-06-19 13:04 UTC (permalink / raw)
  To: Alex Bochannek; +Cc: 49068

Alex Bochannek <alex@bochannek.com> writes:

> I would like to display not just the number of unread articles for
> subtopics in the topic line, but also have the number of groups include
> the subtopics.
>
> For 'gnus-topic-line-format' variable add 'G' element to allow for
> display of number of groups in subtopics

Thanks; applied to Emacs 28.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#49068: 28.0.50; [PATCH] Feature suggestion, add number of groups in subtopics to gnus-topic-line-format
  2021-06-19 13:04 ` Lars Ingebrigtsen
@ 2021-06-19 15:40   ` Alex Bochannek
  0 siblings, 0 replies; 3+ messages in thread
From: Alex Bochannek @ 2021-06-19 15:40 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 49068

Lars Ingebrigtsen <larsi@gnus.org> writes:

> Alex Bochannek <alex@bochannek.com> writes:
>
>> I would like to display not just the number of unread articles for
>> subtopics in the topic line, but also have the number of groups include
>> the subtopics.
>>
>> For 'gnus-topic-line-format' variable add 'G' element to allow for
>> display of number of groups in subtopics
>
> Thanks; applied to Emacs 28.

Thanks!

-- 
Alex.





^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-06-19 15:40 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-17  0:21 bug#49068: 28.0.50; [PATCH] Feature suggestion, add number of groups in subtopics to gnus-topic-line-format Alex Bochannek
2021-06-19 13:04 ` Lars Ingebrigtsen
2021-06-19 15:40   ` Alex Bochannek

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).