info-gnus-english
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUS] Displaying available news-groups, sorted by name


From: Emanuele Santoro
Subject: [GNUS] Displaying available news-groups, sorted by name
Date: Fri, 12 Feb 2016 20:49:08 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4 (gnu/linux)

Hi all!

I recently configured Gnus on GNU Emacs 24.4.1 as newsreader. In order
to subscribe to newsgroups, I type M-d, bound to the
gnus-group-describe-all-groups.

The problem is that newsgroups shown are not sorted by name, making
quite anooying to browse.

I tried to edit the gnus-group-describe-all-groups function as follows:


(defun gnus-group-describe-all-groups (&optional force)
  "Pop up a buffer with descriptions of all newsgroups."
  (interactive "P")
  (when force
    (setq gnus-description-hashtb nil))
  (when (not (or gnus-description-hashtb
                 (gnus-read-all-descriptions-files)))
    (error "Couldn't request descriptions file"))

  ;; MODIFCATIONS START HERE
  ;; remove newsgroups with strange names that make sorting fail
  (setq gnus-description-hashtb (remove-if 'numberp gnus-description-hashtb))
  ;; sort the gnus-description-hashtb
  (setq gnus-description-hashtb
        (cl-sort gnus-description-hashtb (lambda (x y)
                                           (string< (symbol-name y) 
(symbol-name x)))))
  ;; MODIFICATIONS END HERE


  (let ((buffer-read-only nil)
        b)
    (erase-buffer)
    (mapatoms
     (lambda (group)
       (setq b (point))
       (let ((charset (gnus-group-name-charset nil (symbol-name group))))
         (insert (format "      *: %-20s %s\n"
                         (gnus-group-name-decode
                          (symbol-name group) charset)
                         (gnus-group-name-decode
                          (symbol-value group) charset))))
       (gnus-add-text-properties
        b (1+ b) (list 'gnus-group group
                       'gnus-unread t 'gnus-marked nil
                       'gnus-level (1+ gnus-level-subscribed))))
     gnus-description-hashtb)
    (goto-char (point-min))
    (gnus-group-position-point)))

Basically, since gnus-description-hashtb is a vector (not an hash-table
as the name would suggest) of symbol whose name is the name of the
newsgroup, my approach is to sort such vector and then let the mapatoms
function work.

I placed this function in my *scratch* buffer and evaluated it after
loading Gnus, but reloading the newsgroup list shows no effect: the
newsgroup list is still unsorted.

Please note that I am not an expert Lisp programmer nor an expert GNU
Emacs user.

How could I solve this problem?

Thanks in advance,
--
Emanuele Santoro


reply via email to

[Prev in Thread] Current Thread [Next in Thread]