#+title:    :app rss
#+subtitle: An RSS reader that Google can't shut down
#+created:  May 12, 2020
#+since:    2.0.9

* Description :unfold:
Read RSS feeds in the comfort of Emacs.

** Maintainers
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]

** Module flags
- +org ::
  Enable [[doom-package:elfeed-org]], so you can configure your feeds with an org file
  (={org-directory}/elfeed.org=) rather than Elisp.
- +youtube ::
  Enable [[doom-package:elfeed-tube]], for tighter integration between elfeed and
  your Youtube subscriptions.

** Packages
- [[doom-package:elfeed]]
- [[doom-package:elfeed-goodies]]
- [[doom-package:elfeed-org]] if [[doom-module:+org]]
- [[doom-package:elfeed-tube]] if [[doom-module:+youtube]]

** Hacks
- By default ~elfeed-search-filter~ is set to ~@2-weeks-ago~ and makes the last
  2 weeks of entries visible. This needs to be set after elfeed has loaded like
  so in your =$DOOMDIR/config.el=:
  #+begin_src emacs-lisp
  (after! elfeed
    (setq elfeed-search-filter "@1-month-ago +unread"))
  #+end_src

** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./

* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]

/This module has no external requirements./

* TODO Usage
#+begin_quote
 󱌣 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote

- As there isn't currently binding for ~elfeed-update~ you can run it with ~M-x
  elfeed-update~

* TODO Configuration
#+begin_quote
 󱌣 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote

** Without +org
When you don't want to use org mode to manage your elfeed feeds you can put your
subscriptions in =$DOOMDIR/config.el=:
#+begin_src emacs-lisp
(setq elfeed-feeds
      '("https://this-week-in-rust.org/rss.xml"
        "http://feeds.bbci.co.uk/news/rss.xml"))
#+end_src

** With +org
When using ~+org~ flag then configuration is easier. You can use ~org-mode~ to
configure feeds to follow:
#+begin_src org
,* root :elfeed:
,** Programming :programming:
,*** [[https://this-week-in-rust.org/rss.xml][This Week in Rust]] :rust:
,** News :news:
,*** Top news :tops:
,**** http://feeds.bbci.co.uk/news/rss.xml
#+end_src
- Root of ~elfeed-org~ needs to have ~:elfeed:~ tag. This is where ~elfeed-org~
  starts to read.
- You can have subheaders as in example ~:programming:~, and ~elfeed-org~
  applies that tag to all subheader feeds, in example it adds it to ~This Week
  in Rust~.
- You can "name" feeds as you please with ~org-mode~ ~org-insert-link~ ([[kbd:][C-c C-l]])
  and put name as you want into ~description~.
- If you don't want to use ~org-directory/elfeed.org~ file you can specify it
  with ~(setq rmh-elfeed-org-files '("path/to/your/elfeed/file.org"))~

** Keybindings
+ General
  | Key   | Mode               | Description            |
  |-------+--------------------+------------------------|
  | [[kbd:][S-RET]] | elfeed-search-mode | Open link into browser |
  | [[kbd:][RET]]   | elfeed-search-mode | Open item              |
  | [[kbd:][s]]     | elfeed-search-mode | Filter                 |
  | [[kbd:][C-j]]   | elfeed-show-mode   | Move to next item      |
  | [[kbd:][C-k]]   | elfeed-show-mode   | Move to previous item  |

+ If ~:editor evil +everywhere~
  | Key | Description                 |
  |-----+-----------------------------|
  | [[kbd:][q]]   | elfeed-kill-buffer          |
  | [[kbd:][r]]   | elfeed-search-update--force |
  | [[kbd:][g c]] | Copy link of current entry  |

** News filtering
+ Time filtering
  + ~@2-days-ago~ Past two days
  + ~@2-weeks-ago~ Past two weeks
  + ~@2-years-ago~ Past two years
  + ~@2020-06-19~ To show specific day
  + ~@2020-06-19--2020-03-10~ Span of time
+ Tag filtering
  + Include ~+news~
  + Exclude ~-rust~
  + Both ~+news -rust~
+ String filtering, this is case insensitive
  + Include
    + ~DOOM~
    + ~Linu[sx]~ Search for both ~Linus~ and ~Linux~
  + Exclude ~!something~

** Automatically updating feed when opening elfeed
Hook ~elfeed-update~ to ~elfeed-search-mode-hook~:
#+begin_src emacs-lisp
(add-hook 'elfeed-search-mode-hook #'elfeed-update)
#+end_src

* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]

* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]

* TODO Appendix
#+begin_quote
 󱌣 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote
