aboutsummaryrefslogtreecommitdiff
path: root/Emacs/.config/emacs/elisp
diff options
context:
space:
mode:
authorAryadev Chavali <aryadev@aryadevchavali.com>2025-02-17 14:53:54 +0000
committerAryadev Chavali <aryadev@aryadevchavali.com>2025-02-17 15:02:13 +0000
commit70940c79bde48b9c9102f5e829953dbc6913bdce (patch)
treee58c318b2f7db0152bb13d9c4d69297d6a95ed06 /Emacs/.config/emacs/elisp
parentcd58595d2e4a59f6fa733ca25faf29aaae5a1968 (diff)
downloaddotfiles-70940c79bde48b9c9102f5e829953dbc6913bdce.tar.gz
dotfiles-70940c79bde48b9c9102f5e829953dbc6913bdce.tar.bz2
dotfiles-70940c79bde48b9c9102f5e829953dbc6913bdce.zip
Rework elfeed
All my feeds are stored in a separate org file. I've written a parser `elfeed-org` which parses the headings-as-links with the overarching tags into a format for `elfeed-feeds`. Why didn't I use the third-party elfeed-org package? It uses an older version of org which straight will clone entirely. Don't want two versions of org, and its a task just simple enough for me to do myself.
Diffstat (limited to 'Emacs/.config/emacs/elisp')
-rw-r--r--Emacs/.config/emacs/elisp/elfeed-org.el56
1 files changed, 56 insertions, 0 deletions
diff --git a/Emacs/.config/emacs/elisp/elfeed-org.el b/Emacs/.config/emacs/elisp/elfeed-org.el
new file mode 100644
index 0000000..2b68acc
--- /dev/null
+++ b/Emacs/.config/emacs/elisp/elfeed-org.el
@@ -0,0 +1,56 @@
+;;; elfeed-org.el --- Org integration with elfeed -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2025 Aryadev Chavali
+
+;; Author: Aryadev Chavali <aryadev@aryadevchavali.com>
+;; Keywords:
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;
+
+;;; Code:
+
+(defvar elfeed-org/file nil)
+
+(defun elfeed-org/--parse-link (context)
+ (thread-last (org-element-property :title context)
+ search-forward)
+ (let ((title-context (org-element-context)))
+ (org-element-property :raw-link title-context)))
+
+(defun elfeed-org/--parse-tags ()
+ (mapcar #'intern (org-get-tags)))
+
+(defun elfeed-org/--parse-headline ()
+ (if-let* ((ctx (org-element-context))
+ (link (elfeed-org/--parse-link ctx))
+ (tags (elfeed-org/--parse-tags)))
+ (cons link tags)
+ nil))
+
+(defun elfeed-org/--parse-headlines ()
+ (cl-remove-if
+ #'null
+ (org-map-entries #'elfeed-org/--parse-headline t)))
+
+(defun elfeed-org ()
+ (setq elfeed-feeds
+ (with-current-buffer (find-file-noselect elfeed-org/file)
+ (elfeed-org/--parse-headlines))))
+
+(provide 'elfeed-org)
+;;; elfeed-org.el ends here