;;; my-elfeed.el --- Configure elfeed -*- lexical-binding: t -*- ;;; Commentary: ;;; Code: (require 'use-package) (use-package elfeed :ensure t :init (setq elfeed-db-directory (expand-file-name "var/elfeed" user-emacs-directory)) :config (eval-after-load 'elfeed-search '(define-key elfeed-search-mode-map (kbd "*") 'elfeed-toggle-star))) (use-package elfeed-org :ensure t :config (elfeed-org) (setq rmh-elfeed-org-files (list (expand-file-name "etc/elfeed.org" user-emacs-directory)))) (defalias 'elfeed-toggle-star (elfeed-expose #'elfeed-search-toggle-all 'star)) (defface elfeed-search-mustread-title-face '((t :foreground "red")) "Marks a mustread Elfeed entry.") (defun my/elfeed-eww-open (&optional use-generic-p) "open with eww" (interactive "P") (let ((entries (elfeed-search-selected))) (cl-loop for entry in entries do (elfeed-untag entry 'unread) when (elfeed-entry-link entry) do (eww-browse-url it)) (mapc #'elfeed-search-update-entry entries) (unless (use-region-p) (forward-line)))) (defun my/yt-dlp-it (url) "Downloads the URL in an async shell" (let ((default-directory "~/media/videos")) (async-shell-command (format "yt-dlp %s" (shell-quote-argument url))))) (defun my/elfeed-youtube-dl (&optional use-generic-p) "Youtube-DL link" (interactive "P") (let ((entries (elfeed-search-selected))) (cl-loop for entry in entries do (elfeed-untag entry 'unread) when (elfeed-entry-link entry) do (my/yt-dlp-it it)) (mapc #'elfeed-search-update-entry entries) (unless (use-region-p) (forward-line)))) (define-key elfeed-search-mode-map (kbd "d") 'my/elfeed-youtube-dl) (define-key elfeed-search-mode-map (kbd "t") 'my/elfeed-eww-open) (push '(mustread elfeed-search-must-read-title-face) elfeed-search-face-alist) (provide 'my-elfeed) ;;; my-elfeed.el ends here