It's a news (NNTP) and Feeds (RSS/Atom) downloader and reader. It is organised as follows:
The usual NNTP servers is gmane. Feed servers may require an Elisp code to be supported (Atom particulary) and can be found in any Web page.
Groups have a DNS-like name, ex.: gmane.com.emacslife.planet (the name is inverted as the original DNS were thought).
! Important ? Dormant R Read r Marked as read O Old E Expirable Table 1: Mark reference table.
Keyboard in Group buffer:
L list-all-groups t topic-mode c catchup-current ----------------------------- u unsuscribe-current-group g get-new-news ----------------------------- ^ enter-server-mode s save-newsrc q exit R restart Table 2: Key bindings for the Group buffer.
Keyboard in Summary view:
D/d mark as read C-w mark region as read Table 3: Key binding sfor the Summary view.
The Server buffer lists the servers already suscribed and their connection status. The user can disconnect a server making it unabailable for retrieving new updates. A group list can be retrieved from this buffer by pressing `RET ` on any server name.
To access the Browse Server, on the Group buffer (the first one) press `^ ` key to enter the Server buffer, and the press `RET ` on any server hostname. If you know an NNTP server hostname, press `B ` on the Group buffer.
The Gnus Browse Server buffer lists all the groups registered on a particular server. It has the following elements in its list: A suscription key, number of messages, and the group name. The user can suscribe any group, but they can read the groups without suscribing to them at all. The following is an example of news.gmane.org server as displayed by the Gnus Browse Server buffer:
| 25628: gmane.announce
| K 41: gmane.comp.accessibility.tanaguru
| K 6492: gmane.comp.accessibility.vision
| K 409: gmane.comp.ai.alicebot.devel
| K 145: gmane.comp.ai.annevolve.devel
| K 218: gmane.comp.ai.case-based-reasoning
| K 3448: gmane.comp.ai.conceptual-graphs
The first line in the example shows the group `gmane.announce', with 25628 messages in it. The user is suscribed beacuse no suscription key is present. The second line state another group with ``K'' as suscription key, meaning no suscription by default, because the user has not set anything yet.
Suscription keys Meaning ----------------------------------------------------- Empty Suscribed K No suscription/nothing setted yet U Unsuscribed by user Table 4: Reference of suscription key of the Gnus Browse Server buffer.
Some hydra functions to guide and remember how to use Gnus.
(defun my/hydra-toggle-verbosity (hydra-name) "Toggle verbosity of HIDRA-NAME hydra" (hydra-set-property hydra-name :verbosity (if (or (null (hydra-get-property hydra-name :verbosity)) (eq 0 (hydra-get-property hydra-name :verbosity))) 1 0)))
(defhydra hydra-gnus-group (:hint nil :color pink) " gnus-group ╭─────────────────────────────────────────────────────────────────────────╯ _c_ Catchup current (mark all articles in current group as read) _RET_ Read group (enter Summary buffer) Visibility: _L_ Show all groups _t_ Show topics (group categories) Server management: _B_ Browse foreign server (when you know the host name) _\\^_ Enter server mode (registered server host names) Hydra: _h_ Toggle verbose _q_ Exit " ("RET" (progn (gnus-topic-select-group) (hydra-gnus-summary/body) (hydra-push '(hydra-gnus-group/body))) "Read group") ("c" gnus-group-catchup-current "Catch-up all current") ("L" gnus-group-list-all-groups "List all groups") ("t" gnus-topic-mode "Toggle view topics" ) ("B" gnus-group-browse-foreign-server "Browse foreign server" :exit t) ("^" gnus-group-enter-server-mode "Enter server buffer" :exit t) ("q" nil "Hydra, quit." :exit t) ("h" (my/hydra-toggle-verbosity 'hydra-gnus-group) "Hydra, toggle verbosity." :exit nil))
(defhydra hydra-gnus-summary (:hint nil :color pink) " gnus-summary ╭─────────────────────────────────────────────────────────────────────────╯ Mark | Previous/Next ... _d_/_D_ mark as read forward/backward | _P_/_N_ P/N article ^^_C-w_ mark region as read | _M-down_/_M-up_ P/N thread _q_ exit gnus-summary " ("d" gnus-summary-mark-as-read-forward) ("D" gnus-summary-mark-as-read-backward) ("C-w" gnus-summary-mark-region-as-read) ;; ("q" gnus-summary-exit) ("q" nil :exit t))