I’ve become pretty addicted to the Elfeed RSS reader. However, I haven’t made much use of its tagging capabilities until recently. I noticed that, whenever I thought I might want to keep track of the content of a blog, I would mark it “unread” after I’d read it, to make sure I didn’t lose it in the deep mists of time. This worked for the first 4 months or so, but now my list of unreads is growing enormously. So I wanted to have a “starred” tag which would do this work for me. I also wanted a keybinding that would apply the tag right away.
The code below does that for me.
(eval-after-load 'elfeed-search '(define-key elfeed-search-mode-map (kbd "<tab>") 'mwp/elfeed-star)) (defun mwp/elfeed-star () "add a star tag to marked" (interactive) (elfeed-search-tag-all (list starred)) ) (defun mwp/elfeed-star () "Apply TAG to all selected entries." (interactive ) (let* ((entries (elfeed-search-selected)) (tag (intern "starred"))) (cl-loop for entry in entries do (elfeed-tag entry tag)) (mapc #'elfeed-search-update-entry entries) (unless (use-region-p) (forward-line))))
I also wanted a visual cue to tell me the tagging had been successful – now easy to do, thanks to a very recent commit. I filed an issue as a question – can I do this? – and within 24 hours skeeto had added the functionality. First you have to define an appropriate face for the tag:
(defface elfeed-search-starred-title-face '((t :foreground "#f77")) "Marks a starred Elfeed entry.")
And then simply add an entry to
elfeed-search-face-alist. You can do this via
Customize, or follow the instructions in the README, which instruct you to
(push '(starred elfeed-search-starred-title-face) elfeed-search-face-alist).
All of this works great for me, and simplifies things quite a bit.