# Gnus contribution layer for Spacemacs
![gnus](img/gnus.gif)
**Table of Contents**
- [Gnus contribution layer for Spacemacs](#gnus-contribution-layer-for-spacemacs)
- [Basic Concepts](#basic-concepts)
- [Adding news sources](#adding-news-sources)
- [Configuring gmail](#configuring-gmail)
- [Org MIME integration](#org-mime-integration)
- [Keybindings](#keybindings)
## Basic Concepts
Gnus is a news reading application. The Gnus terminology can be confusing for
new users so the basics are listed here:
- Group: A Newsgroup but can also be a RSS Feed or a mail directory
- Topic: Newsgroups can be assigned to topics which will be used to structure
the Group Buffer if Topic Mode is enabled(default).
## Adding news sources
Adding news sources can be done in your `.spacemacs` file by adding the
following:
```elisp
;; Get email, and store in nnml
(setq gnus-secondary-select-methods
'(
(nntp "gmane"
(nntp-address "news.gmane.org"))
(nntp "news.eternal-september.org")
(nntp "nntp.aioe.org")
(nntp "news.gwene.org")
))
```
For adding RSS Feeds please see the [keybindings section](#Keybindings).
## Configuring gmail
To configure Gnus with gmail support you can add the following to your
`.spacemacs` file.
```elisp
;; Get email, and store in nnml
(setq gnus-secondary-select-methods
'(
(nnimap "gmail"
(nnimap-address
"imap.gmail.com")
(nnimap-server-port 993)
(nnimap-stream ssl))
))
;; Send email via Gmail:
(setq message-send-mail-function 'smtpmail-send-it
smtpmail-default-smtp-server "smtp.gmail.com")
;; Archive outgoing email in Sent folder on imap.gmail.com:
(setq gnus-message-archive-method '(nnimap "imap.gmail.com")
gnus-message-archive-group "[Gmail]/Sent Mail")
;; set return email address based on incoming email address
(setq gnus-posting-styles
'(((header "to" "address@outlook.com")
(address "address@outlook.com"))
((header "to" "address@gmail.com")
(address "address@gmail.com"))))
;; store email in ~/gmail directory
(setq nnml-directory "~/gmail")
(setq message-directory "~/gmail")
```
Authentication for your gmail account is best stored in an `authinfo` or
`authinfo.pgp` file. It must be of the form:
```
machine smtp.gmail.com login name@gmail.com password SUPER_SECRET_PASS
machine imap.gmail.com login name@gmail.com port 993 password SUPER_SECRET_PASS
```
If you use two-step verification the password has to be an
[application specific password][].
## Org MIME integration
It is possible to send beautiful HTML emails using org mode.
Pressing SPC m o in a message buffer will convert the current message
from org mode to html. A org mode buffer can be sent via html email by pressing
SPC m h in any org mode buffer.
## Keybindings
Gnus has very modal default keybindings.
Please see the [manual](http://www.gnus.org/manual.html) for a complete list.
Basic and Spacemacs specific keybindings can be found in the following table.
Key Binding | Gnus mode - Description
-------------|------------------------------------------------------------
` a g` | Starts Gnus
`m` | New Message
`G R` | Group Buffer - Add RSS feed
`^` | Open Server Buffer. Browse Newsgroups.
`T n` | Group Buffer - new Topic
`T m` | Group Buffer - Move Group to Topic
`K` | Article Buffer - Previous article
`J` | Article Buffer - Next article
`` | Summary Buffer(RSS) - Open article Link in browser
`` | Summary Buffer(RSS) - Open article and switch to it
` m o` | Message Buffer - Use org mode to convert into html email
` m h` | Org Mode - Send current buffer as email message
[application specific password]: https://support.google.com/accounts/answer/185833?hl=en