Gnus development mailing list
 help / color / mirror / Atom feed
* Topic sorting
@ 1999-10-21 17:35 Toni Drabik
  1999-10-21 18:40 ` Robin S. Socha
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Toni Drabik @ 1999-10-21 17:35 UTC (permalink / raw)


It seems to me that there is no easy way to sort group topics. Gnus manual
explains only how to sort groups. I suppose that I should manually edit
`.newsrc.eld' file to change the order in which topics appear in my *Group*
buffer?

Wouldn't it be nice if this could be done in more elegant fashion?

-- 
Toni Drabik <tdrabik@public.srce.hr>
Warning: This article may be fatal if swallowed.


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

* Re: Topic sorting
  1999-10-21 17:35 Topic sorting Toni Drabik
@ 1999-10-21 18:40 ` Robin S. Socha
  1999-10-21 19:09   ` Hrvoje Niksic
  1999-10-21 20:07 ` Justin Sheehy
  1999-10-21 20:41 ` Shenghuo ZHU
  2 siblings, 1 reply; 9+ messages in thread
From: Robin S. Socha @ 1999-10-21 18:40 UTC (permalink / raw)
  Cc: ding

* Toni Drabik <tdrabik@public.srce.hr> writes:
> It seems to me that there is no easy way to sort group topics. Gnus
> manual explains only how to sort groups. I suppose that I should
> manually edit `.newsrc.eld' file to change the order in which topics
> appear in my *Group* buffer?

C-h a gnus.*topic RET:
gnus-topic-sort-groups   - Sort the current topic according to FUNC.
[...]
-- 
Robin S. Socha  <http://socha.net/Gnus/>


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

* Re: Topic sorting
  1999-10-21 18:40 ` Robin S. Socha
@ 1999-10-21 19:09   ` Hrvoje Niksic
  1999-10-21 20:34     ` Robin S. Socha
  0 siblings, 1 reply; 9+ messages in thread
From: Hrvoje Niksic @ 1999-10-21 19:09 UTC (permalink / raw)


"Robin S. Socha" <robin@socha.net> writes:

> * Toni Drabik <tdrabik@public.srce.hr> writes:
> > It seems to me that there is no easy way to sort group topics. Gnus
> > manual explains only how to sort groups. I suppose that I should
> > manually edit `.newsrc.eld' file to change the order in which topics
> > appear in my *Group* buffer?
> 
> C-h a gnus.*topic RET:
> gnus-topic-sort-groups   - Sort the current topic according to FUNC.
> [...]

Are you sure this does what Toni wants?  I haven't tried it, but I
believe that gnus-topic-sort-groups sorts the groups within a
particular topic, whereas Toni wants to sort topics themselves.


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

* Re: Topic sorting
  1999-10-21 17:35 Topic sorting Toni Drabik
  1999-10-21 18:40 ` Robin S. Socha
@ 1999-10-21 20:07 ` Justin Sheehy
  1999-10-21 20:41 ` Shenghuo ZHU
  2 siblings, 0 replies; 9+ messages in thread
From: Justin Sheehy @ 1999-10-21 20:07 UTC (permalink / raw)


Toni Drabik <tdrabik@public.srce.hr> writes:

> I suppose that I should manually edit `.newsrc.eld' file to change
> the order in which topics appear in my *Group* buffer?

You could... or you could kill and yank them with C-k and C-y

-Justin

 


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

* Re: Topic sorting
  1999-10-21 19:09   ` Hrvoje Niksic
@ 1999-10-21 20:34     ` Robin S. Socha
  1999-10-22 14:16       ` Toni Drabik
  0 siblings, 1 reply; 9+ messages in thread
From: Robin S. Socha @ 1999-10-21 20:34 UTC (permalink / raw)


* Hrvoje Niksic <hniksic@srce.hr> writes:
> "Robin S. Socha" <robin@socha.net> writes:
>> * Toni Drabik <tdrabik@public.srce.hr> writes:
>> > It seems to me that there is no easy way to sort group topics. Gnus
>> > manual explains only how to sort groups. I suppose that I should
>> > manually edit `.newsrc.eld' file to change the order in which
>> > topics appear in my *Group* buffer?

Ok. Just C-k and C-y them in the order you like.

>> C-h a gnus.*topic RET: gnus-topic-sort-groups - Sort the current
>> topic according to FUNC.  [...]

> Are you sure this does what Toni wants?  

No. Indeed, I was talking BS.

> I haven't tried it, but I believe that gnus-topic-sort-groups sorts
> the groups within a particular topic, whereas Toni wants to sort
> topics themselves.

I stand corrected. :-/
-- 
Robin S. Socha  <http://socha.net/Gnus/>


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

* Re: Topic sorting
  1999-10-21 17:35 Topic sorting Toni Drabik
  1999-10-21 18:40 ` Robin S. Socha
  1999-10-21 20:07 ` Justin Sheehy
@ 1999-10-21 20:41 ` Shenghuo ZHU
  1999-10-22  6:33   ` Norbert Koch
  2 siblings, 1 reply; 9+ messages in thread
From: Shenghuo ZHU @ 1999-10-21 20:41 UTC (permalink / raw)


>>>>> "Toni" == Toni Drabik <tdrabik@public.srce.hr> writes:

Toni> It seems to me that there is no easy way to sort group
Toni> topics. Gnus manual explains only how to sort groups. I suppose
Toni> that I should manually edit `.newsrc.eld' file to change the
Toni> order in which topics appear in my *Group* buffer?

Toni> Wouldn't it be nice if this could be done in more elegant
Toni> fashion?

[...]

I just wrote the function. I'll put it into CVS if people like it.

-- 
Shenghuo ZHU


(defun zsh/gnus-topic-sort-topics-1 (top reverse)
  (if (cdr top)
      (let ((subtop
	     (mapcar `(lambda (top)
			(zsh/gnus-topic-sort-topics-1 top ,reverse))
		     (sort (cdr top)
			   '(lambda (t1 t2) 
			      (string-lessp (caar t1) (caar t2)))))))
	(setcdr top (if reverse (reverse subtop) subtop))))
  top)

(defun zsh/gnus-topic-sort-topics (&optional topic reverse)
  "Sort topics in TOPIC alphabeticaly by topic name.
If REVERSE, reverse the sorting order."
  (interactive 
   (list (completing-read "Sort topic: " gnus-topic-alist nil t 
			  (gnus-current-topic))
	 current-prefix-arg))
  (let ((topic-topology (or (and topic (cdr (gnus-topic-find-topology topic)))
			    gnus-topic-topology)))
    (zsh/gnus-topic-sort-topics-1 topic-topology reverse)
    (gnus-topic-enter-dribble)
    (gnus-group-list-groups)
    (gnus-topic-goto-topic topic)))


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

* Re: Topic sorting
  1999-10-21 20:41 ` Shenghuo ZHU
@ 1999-10-22  6:33   ` Norbert Koch
  0 siblings, 0 replies; 9+ messages in thread
From: Norbert Koch @ 1999-10-22  6:33 UTC (permalink / raw)
  Cc: ding

Shenghuo ZHU <zsh@cs.rochester.edu> writes:

> I just wrote the function. I'll put it into CVS if people like it.

Please do so. If Lars doesn't like it, he'll remove it anyway, though
I doubt it :-)

norbert.



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

* Re: Topic sorting
  1999-10-21 20:34     ` Robin S. Socha
@ 1999-10-22 14:16       ` Toni Drabik
  1999-10-22 15:13         ` Shenghuo ZHU
  0 siblings, 1 reply; 9+ messages in thread
From: Toni Drabik @ 1999-10-22 14:16 UTC (permalink / raw)


"Robin S. Socha" <robin@socha.net> writes:
[...]
> >> > manual explains only how to sort groups. I suppose that I should
> >> > manually edit `.newsrc.eld' file to change the order in which
> >> > topics appear in my *Group* buffer?
> 
> Ok. Just C-k and C-y them in the order you like.

Justin Sheehy <dworkin@ccs.neu.edu> writes:
[...]
> > I suppose that I should manually edit `.newsrc.eld' file to change
> > the order in which topics appear in my *Group* buffer?
> 
> You could... or you could kill and yank them with C-k and C-y


Thanks.


Shenghuo ZHU <zsh@cs.rochester.edu> writes:

> Toni> Wouldn't it be nice if this could be done in more elegant fashion?
> 
> [...]
> 
> I just wrote the function. I'll put it into CVS if people like it.

Yes, please.


-- 
Toni Drabik <tdrabik@public.srce.hr>
Warning: This article may be fatal if swallowed.


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

* Re: Topic sorting
  1999-10-22 14:16       ` Toni Drabik
@ 1999-10-22 15:13         ` Shenghuo ZHU
  0 siblings, 0 replies; 9+ messages in thread
From: Shenghuo ZHU @ 1999-10-22 15:13 UTC (permalink / raw)


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

>>>>> "Toni" == Toni Drabik <tdrabik@public.srce.hr> writes:

[...]

>> I just wrote the function. I'll put it into CVS if people like it.

Toni> Yes, please.

[...]

CVS'd (Topics Topics Sort). 

Another function, gnus-move-topic, will move topic itself by pressing
`T m' on a topic button while no groups are marked.

-- 
Shenghuo ZHU

1999-10-22 11:03:00  Shenghuo ZHU  <zsh@cs.rochester.edu>

	* gnus-topic.el (gnus-topic-sort-topics-1): New function.
	(gnus-topic-sort-topics): New function.
	(gnus-topic-make-menu-bar): Add sort-topics.
	(gnus-topic-move): New function.
	(gnus-topic-move-group): Move the topic if no group selected.


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

Index: gnus-topic.el
===================================================================
RCS file: /usr/local/cvsroot/gnus/lisp/gnus-topic.el,v
retrieving revision 5.8
diff -u -r5.8 gnus-topic.el
--- gnus-topic.el	1999/09/27 21:32:59	5.8
+++ gnus-topic.el	1999/10/22 15:08:22
@@ -982,6 +982,7 @@
 	["Create" gnus-topic-create-topic t]
 	["Mark" gnus-topic-mark-topic t]
 	["Indent" gnus-topic-indent t]
+	["Sort" gnus-topic-sort-topics t]
 	["Toggle hide empty" gnus-topic-toggle-display-empty-topics t]
 	["Edit parameters" gnus-topic-edit-parameters t])
        ["List active" gnus-topic-list-active t]))))
@@ -1120,23 +1121,25 @@
 	 (completing-read "Move to topic: " gnus-topic-alist nil t)))
   (let ((groups (gnus-group-process-prefix n))
 	(topicl (assoc topic gnus-topic-alist))
-	(start-group (progn (forward-line 1) (gnus-group-group-name)))
 	(start-topic (gnus-group-topic-name))
+	(start-group (progn (forward-line 1) (gnus-group-group-name)))
 	entry)
-    (mapcar
-     (lambda (g)
-       (gnus-group-remove-mark g)
-       (when (and
-	      (setq entry (assoc (gnus-current-topic) gnus-topic-alist))
-	      (not copyp))
-	 (setcdr entry (gnus-delete-first g (cdr entry))))
-       (nconc topicl (list g)))
-     groups)
-    (gnus-topic-enter-dribble)
-    (if start-group
-	(gnus-group-goto-group start-group)
-      (gnus-topic-goto-topic start-topic))
-    (gnus-group-list-groups)))
+    (if (and (not groups) (not copyp) start-topic)
+	(gnus-topic-move start-topic topic)
+      (mapcar
+       (lambda (g)
+	 (gnus-group-remove-mark g)
+	 (when (and
+		(setq entry (assoc (gnus-current-topic) gnus-topic-alist))
+		(not copyp))
+	   (setcdr entry (gnus-delete-first g (cdr entry))))
+	 (nconc topicl (list g)))
+       groups)
+      (gnus-topic-enter-dribble)
+      (if start-group
+	  (gnus-group-goto-group start-group)
+	(gnus-topic-goto-topic start-topic))
+      (gnus-group-list-groups))))
 
 (defun gnus-topic-remove-group (&optional arg)
   "Remove the current group from the topic."
@@ -1475,6 +1478,55 @@
 If REVERSE, sort in reverse order."
   (interactive "P")
   (gnus-topic-sort-groups 'gnus-group-sort-by-method reverse))
+
+(defun gnus-topic-sort-topics-1 (top reverse)
+  (if (cdr top)
+      (let ((subtop
+	     (mapcar `(lambda (top)
+			(gnus-topic-sort-topics-1 top ,reverse))
+		     (sort (cdr top)
+			   '(lambda (t1 t2) 
+			      (string-lessp (caar t1) (caar t2)))))))
+	(setcdr top (if reverse (reverse subtop) subtop))))
+  top)
+
+(defun gnus-topic-sort-topics (&optional topic reverse)
+  "Sort topics in TOPIC alphabeticaly by topic name.
+If REVERSE, reverse the sorting order."
+  (interactive 
+   (list (completing-read "Sort topics in : " gnus-topic-alist nil t 
+			  (gnus-current-topic))
+	 current-prefix-arg))
+  (let ((topic-topology (or (and topic (cdr (gnus-topic-find-topology topic)))
+			    gnus-topic-topology)))
+    (gnus-topic-sort-topics-1 topic-topology reverse)
+    (gnus-topic-enter-dribble)
+    (gnus-group-list-groups)
+    (gnus-topic-goto-topic topic)))
+
+(defun gnus-topic-move (current to)
+  "Move the CURRENT topic to TO."
+  (interactive 
+   (list 
+    (gnus-group-topic-name)
+    (completing-read "Move to topic: " gnus-topic-alist nil t)))
+  (unless (and current to)
+    (error "Can't find topic"))
+  (let ((current-top (cdr (gnus-topic-find-topology current)))
+	(to-top (cdr (gnus-topic-find-topology to))))
+    (unless current-top
+      (error "Can't find topic `%s'" current))
+    (unless to-top
+      (error "Can't find topic `%s'" to))
+    (if (gnus-topic-find-topology to current-top 0) ;; Don't care the level
+	(error "Can't move `%s' to its sub-level" current))
+    (gnus-topic-find-topology current nil nil 'delete)
+    (while (cdr to-top)
+      (setq to-top (cdr to-top)))
+    (setcdr to-top (list current-top))
+    (gnus-topic-enter-dribble)
+    (gnus-group-list-groups)
+    (gnus-topic-goto-topic current)))
 
 (provide 'gnus-topic)
 

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

end of thread, other threads:[~1999-10-22 15:13 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1999-10-21 17:35 Topic sorting Toni Drabik
1999-10-21 18:40 ` Robin S. Socha
1999-10-21 19:09   ` Hrvoje Niksic
1999-10-21 20:34     ` Robin S. Socha
1999-10-22 14:16       ` Toni Drabik
1999-10-22 15:13         ` Shenghuo ZHU
1999-10-21 20:07 ` Justin Sheehy
1999-10-21 20:41 ` Shenghuo ZHU
1999-10-22  6:33   ` Norbert Koch

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 NNTP newsgroup(s).