<commit_before>#+TITLE: Elfeed layer
#+HTML_HEAD_EXTRA: <link rel="stylesheet" type="text/css" href="../../../css/readtheorg.css" />

[[file:img/elfeed.png]]

* Table of Contents                                        :TOC_4_org:noexport:
 - [[Description][Description]]
 - [[Install][Install]]
   - [[Layer][Layer]]
   - [[Setup feeds][Setup feeds]]
     - [[With Org][With Org]]
     - [[Manually][Manually]]
   - [[Server][Server]]
 - [[Key Bindings][Key Bindings]]
 - [[Troubleshooting][Troubleshooting]]
   - [[Database empty at first start][Database empty at first start]]
   - [[Queue timeout exceeded][Queue timeout exceeded]]

* Description
This layer enables [[https://github.com/skeeto/elfeed][Elfeed]], a web feeds client which supports both Atom and RSS
feeds. It'll optionally enable supporting packages, such as =elfeed-web= and
=elfeed-org=.

* Install
** Layer
To use this configuration layer, add it to your =~/.spacemacs=. You will need to
add =elfeed= to the existing =dotspacemacs-configuration-layers= list in this
file.

By default, =elfeed= stores its database under =~/.elfeed=.

** Setup feeds
*** With Org
It is recommended to manage your feeds list and tags via org files, this is
possible thanks to [[https://github.com/remyhonig/elfeed-org][elfeed-org]] package. To define a list of org files:

#+BEGIN_SRC emacs-lisp
(elfeed :variables rmh-elfeed-org-files (list "~/.emacs.d/private/elfeed1.org"
                                              "~/.emacs.d/private/elfeed2.org"))
#+END_SRC

Checkout [[https://github.com/remyhonig/elfeed-org][elfeed-org]] documentation to see the format of that file.

Here is an example of such a file (note the usage of org tags to tag your feeds)

#+BEGIN_SRC org
 * Blogs                                                              :elfeed:
 ** entry-title: \(linux\|linus\|ubuntu\|kde\|gnome\)                  :linux:
 ** http://git-annex.branchable.com/design/assistant/blog/index.rss :mustread:
 ** http://feeds.feedburner.com/InformationIsBeautiful
 ** [[http://orgmode.org][Org Mode Links supported as well]]
 ** Software Development                                                 :dev:
 *** Emacs                                                    :emacs:mustread:
 **** http://www.terminally-incoherent.com/blog/feed
 **** http://nullprogram.com/feed
 **** entry-title: \(emacs\|org-mode\)
 **** http://planet.emacsen.org/atom.xml
 *** Web Development                                                     :web:
 **** http://planet.phpunit.de/atom.xml
 **** http://feeds.feedburner.com/symfony/blog
 **** http://feeds.feedburner.com/qooxdoo/blog/content
 *** Eclipse                                                         :eclipse:
 **** http://blog.eclipse-tips.com/feeds/posts/default?alt=rss
 **** http://ed-merks.blogspot.com/feeds/posts/default
 **** http://feeds.feedburner.com/eclipselive
 **** http://www.fosslc.org/drupal/rss.xml                             :video:
 #+END_SRC

*** Manually
To explicitly setup the list of feeds, set the value of =elfeed-feeds= variable
in your =.spacemacs= file.

#+BEGIN_SRC emacs-lisp
(elfeed :variables
   elfeed-feeds '(("http://nullprogram.com/feed/" blog emacs)
                  "http://www.50ply.com/atom.xml"  ; no autotagging
                  ("http://nedroid.com/feed/" webcomic))))
#+END_SRC

Check documentation for =elfeed-feeds= for more information about this variable
(~SPC h d v elfeed-feeds RET~).

** Server
Elfeed comes with a simple [[https://github.com/skeeto/elfeed#web-interface][web interface]] to browse its database. You can manually
start it by calling =elfeed-web-start= or by setting =elfeed-enable-web-interface=
to =t= which will start the web automatically when Emacs starts.

#+BEGIN_SRC emacs-lisp
(elfeed :variables elfeed-enable-web-interface t)
#+END_SRC

By default web interface is available on [[http://localhost:8080/elfeed/][localhost:8080/elfeed]]. You can change
the default port by changing the value of =httpd-port=.

* Key Bindings
| Key Binding | Description  |
|-------------+--------------|
| ~SPC a f~   | start elfeed |

Use =SPC ?= to discover major-mode key bindings.

| Key Binding | Description                                       |
|-------------+---------------------------------------------------|<commit_msg>Remove extra close paren in README<commit_after>#+TITLE: Elfeed layer
#+HTML_HEAD_EXTRA: <link rel="stylesheet" type="text/css" href="../../../css/readtheorg.css" />

[[file:img/elfeed.png]]

* Table of Contents                                        :TOC_4_org:noexport:
 - [[Description][Description]]
 - [[Install][Install]]
   - [[Layer][Layer]]
   - [[Setup feeds][Setup feeds]]
     - [[With Org][With Org]]
     - [[Manually][Manually]]
   - [[Server][Server]]
 - [[Key Bindings][Key Bindings]]
 - [[Troubleshooting][Troubleshooting]]
   - [[Database empty at first start][Database empty at first start]]
   - [[Queue timeout exceeded][Queue timeout exceeded]]

* Description
This layer enables [[https://github.com/skeeto/elfeed][Elfeed]], a web feeds client which supports both Atom and RSS
feeds. It'll optionally enable supporting packages, such as =elfeed-web= and
=elfeed-org=.

* Install
** Layer
To use this configuration layer, add it to your =~/.spacemacs=. You will need to
add =elfeed= to the existing =dotspacemacs-configuration-layers= list in this
file.

By default, =elfeed= stores its database under =~/.elfeed=.

** Setup feeds
*** With Org
It is recommended to manage your feeds list and tags via org files, this is
possible thanks to [[https://github.com/remyhonig/elfeed-org][elfeed-org]] package. To define a list of org files:

#+BEGIN_SRC emacs-lisp
(elfeed :variables rmh-elfeed-org-files (list "~/.emacs.d/private/elfeed1.org"
                                              "~/.emacs.d/private/elfeed2.org"))
#+END_SRC

Checkout [[https://github.com/remyhonig/elfeed-org][elfeed-org]] documentation to see the format of that file.

Here is an example of such a file (note the usage of org tags to tag your feeds)

#+BEGIN_SRC org
 * Blogs                                                              :elfeed:
 ** entry-title: \(linux\|linus\|ubuntu\|kde\|gnome\)                  :linux:
 ** http://git-annex.branchable.com/design/assistant/blog/index.rss :mustread:
 ** http://feeds.feedburner.com/InformationIsBeautiful
 ** [[http://orgmode.org][Org Mode Links supported as well]]
 ** Software Development                                                 :dev:
 *** Emacs                                                    :emacs:mustread:
 **** http://www.terminally-incoherent.com/blog/feed
 **** http://nullprogram.com/feed
 **** entry-title: \(emacs\|org-mode\)
 **** http://planet.emacsen.org/atom.xml
 *** Web Development                                                     :web:
 **** http://planet.phpunit.de/atom.xml
 **** http://feeds.feedburner.com/symfony/blog
 **** http://feeds.feedburner.com/qooxdoo/blog/content
 *** Eclipse                                                         :eclipse:
 **** http://blog.eclipse-tips.com/feeds/posts/default?alt=rss
 **** http://ed-merks.blogspot.com/feeds/posts/default
 **** http://feeds.feedburner.com/eclipselive
 **** http://www.fosslc.org/drupal/rss.xml                             :video:
 #+END_SRC

*** Manually
To explicitly setup the list of feeds, set the value of =elfeed-feeds= variable
in your =.spacemacs= file.

#+BEGIN_SRC emacs-lisp
(elfeed :variables
   elfeed-feeds '(("http://nullprogram.com/feed/" blog emacs)
                  "http://www.50ply.com/atom.xml"  ; no autotagging
                  ("http://nedroid.com/feed/" webcomic)))
#+END_SRC

Check documentation for =elfeed-feeds= for more information about this variable
(~SPC h d v elfeed-feeds RET~).

** Server
Elfeed comes with a simple [[https://github.com/skeeto/elfeed#web-interface][web interface]] to browse its database. You can manually
start it by calling =elfeed-web-start= or by setting =elfeed-enable-web-interface=
to =t= which will start the web automatically when Emacs starts.

#+BEGIN_SRC emacs-lisp
(elfeed :variables elfeed-enable-web-interface t)
#+END_SRC

By default web interface is available on [[http://localhost:8080/elfeed/][localhost:8080/elfeed]]. You can change
the default port by changing the value of =httpd-port=.

* Key Bindings
| Key Binding | Description  |
|-------------+--------------|
| ~SPC a f~   | start elfeed |

Use =SPC ?= to discover major-mode key bindings.

| Key Binding | Description                                       |
|-------------+---------------------------------------------------|
{'fraction_non_alphanumeric': 0.1598093909809391, 'fraction_numerical': 0.00302185030218503, 'mean_word_length': 2.4255573248407645, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 8, 'lorem ipsum': 0, 'www.': 6, 'xml': 8}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 33, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1340419', 'n_tokens_mistral': 2606, 'n_tokens_neox': 2466, 'n_words': 685}