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.
69 lines
2.2 KiB
EmacsLisp
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))
|