doomemacs/modules/app/rss/config.el
Henrik Lissner 1e81a35461
Minimize dependence on map!
This is in preparation for general.el integration coming in 2.1.1. It is
very likely that map! will change (and even more, be split into several
macros). Not much, but change none-the-less. Specifically, the state
keywords (e.g. :nvi, :n, :i) will be removed in favor of a :state
property that takes a list, e.g. (normal visual insert).

In any case, both map! and general are also relatively expensive
compared to define-key and evil-define-key* (and the new define-key!
macro), so use that when we can.

This also means changes to either API won't affect Doom's modules in the
long term.
2018-06-03 15:46:00 +02:00

69 lines
2.2 KiB
EmacsLisp

;;; app/rss/config.el -*- lexical-binding: t; -*-
;; This is an opinionated workflow that turns Emacs into an RSS reader, inspired
;; by apps Reeder and Readkit. It can be invoked via `=rss'. Otherwise, if you
;; don't care for the UI you can invoke elfeed directly with `elfeed'.
(defvar +rss-elfeed-files (list "elfeed.org")
"Where to look for elfeed.org files, relative to `+org-dir'. Can be absolute
paths.")
(defvar +rss-split-direction 'below
"What direction to pop up the entry buffer in elfeed.")
;;
;; Packages
;;
(def-package! elfeed
:commands elfeed
:config
(setq elfeed-search-filter "@2-week-ago "
elfeed-db-directory (concat doom-local-dir "elfeed/db/")
elfeed-enclosure-default-dir (concat doom-local-dir "elfeed/enclosures/")
elfeed-show-entry-switch #'pop-to-buffer
elfeed-show-entry-delete #'+rss/delete-pane
shr-max-image-proportion 0.6)
(set! :popup "^\\*elfeed-entry"
'((size . 0.75) (side . bottom))
'((select . t) (quit) (transient . t)))
(make-directory elfeed-db-directory t)
;; Ensure elfeed buffers are treated as real
(push (lambda (buf) (string-match-p "^\\*elfeed" (buffer-name buf)))
doom-real-buffer-functions)
;; Enhance readability of a post
(add-hook 'elfeed-show-mode-hook #'+rss|elfeed-wrap)
(define-key! (elfeed-search-mode-map elfeed-show-mode-map)
[remap kill-this-buffer] #'+rss/quit
[remap kill-buffer] #'+rss/quit)
(define-key! elfeed-show-mode-map
[remap next-buffer] #'+rss/next
[remap previous-buffer] #'+rss/previous)
(when (featurep 'evil)
(evil-define-key* 'normal elfeed-search-mode-map
"q" #'+rss/quit
"r" #'elfeed-update
"s" #'elfeed-search-live-filter
(kbd "RET") #'elfeed-search-show-entry
(kbd "M-RET") #'elfeed-search-browse-url)
(evil-define-key* 'normal elfeed-show-mode-map
"q" #'elfeed-kill-buffer)
(evil-define-key* 'motion elfeed-show-mode-map
"j" #'evil-next-visual-line
"k" #'evil-previous-visual-line)))
(def-package! elfeed-org
:when (featurep! +org)
:after elfeed
:config
(setq rmh-elfeed-org-files
(let ((default-directory +org-dir))
(mapcar #'expand-file-name +rss-elfeed-files)))
(elfeed-org))