;;; my-elfeed.el --- Configure elfeed -*- lexical-binding: t -*- ;;; Commentary: ;;; Code: (require 'elfeed) (require 'elfeed-org) (with-eval-after-load 'elfeed-search '(define-key elfeed-search-mode-map (kbd "*") 'elfeed-toggle-star)) (add-hook 'after-init-hook 'elfeed-org) (customize-set-variable 'elfeed-search-filter "@4-months-ago +unread") (customize-set-variable '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)) ;; set colors for some specific tags (defface elfeed-face-tag-mustread '((t :foreground "#f00")) "This is a custom font face for the `mustread' tag in Elfeed." :group 'elfeed) (with-eval-after-load 'elfeed (setq elfeed-search-face-alist '((mustread elfeed-face-tag-mustread) (unread elfeed-search-unread-title-face)))) (defun my/elfeed-show-visit-eww () "Visit the current entry in eww." (interactive) (let ((link (elfeed-entry-link elfeed-show-entry))) (when link (eww link)))) ;; disable proportional fonts when displaying HTML content. (advice-add #'elfeed-insert-html :around (lambda (fun &rest r) (let ((shr-use-fonts nil)) (apply fun r)))) ;; (defun copy-elfeed-link-title-to-org (entry) ;; "Copy the ENTRY title and URL as org link to the clipboard." ;; (interactive) ;; (let* ((link (elfeed-entry-link entry)) ;; (title (elfeed-entry-title entry)) ;; (titlelink (concat "[[" link "][" title "]]"))) ;; (when titlelink ;; (kill-new titlelink) ;; (x-set-selection 'PRIMARY titlelink) ;; (message "Yanked: %s" titlelink)))) ;; (defun elfeed-show-quick-url-note () ;; "Fastest way to capture entry link to org agenda from elfeed show mode" ;; (interactive) ;; (copy-elfeed-link-title-to-org elfeed-show-entry) ;; (org-capture nil "n") ;; (yank) ;; (org-capture-finalize)) ;; (defun elfeed-search-quick-url-note () ;; "In search mode, capture the title and link for the selected ;; entry or entries in org aganda." ;; (interactive) ;; (let ((entries (elfeed-search-selected))) ;; (cl-loop for entry in entries ;; do (elfeed-untag entry 'unread) ;; when (elfeed-entry-link entry) ;; do (copy-elfeed-link-title-to-org entry) ;; do (org-capture nil "f") ;; do (yank) ;; do (org-capture-finalize) ;; (mapc #'elfeed-search-update-entry entries)) ;; (unless (use-region-p) (forward-line)))) ;; (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)))) (provide 'my-elfeed) ;;; my-elfeed.el ends here