From 3c5a1b28106f6e8891576482e94a106188b9f571 Mon Sep 17 00:00:00 2001
From: Raúl Benencia <id@rbenencia.name>
Date: Wed, 17 May 2023 08:55:40 -0700
Subject: emacs: add function for skipping by tag in org-agenda

---
 .emacs.local.d/lisp/packages/rul-org-agenda.el | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/.emacs.local.d/lisp/packages/rul-org-agenda.el b/.emacs.local.d/lisp/packages/rul-org-agenda.el
index 7a6e787..8122afb 100644
--- a/.emacs.local.d/lisp/packages/rul-org-agenda.el
+++ b/.emacs.local.d/lisp/packages/rul-org-agenda.el
@@ -365,6 +365,23 @@ as the default task."
 
 (defvar bh/organization-task-id "eb155a82-92b2-4f25-a3c6-0304591af2f9")
 
+;; https://stackoverflow.com/a/10091330
+(defun zin/org-agenda-skip-tag (tag &optional others)
+  "Skip all entries that correspond to TAG.
+
+If OTHERS is true, skip all entries that do not correspond to TAG."
+  (let ((next-headline (save-excursion (or (outline-next-heading) (point-max))))
+        (current-headline (or (and (org-at-heading-p)
+                                   (point))
+                              (save-excursion (org-back-to-heading)))))
+    (if others
+        (if (not (member tag (org-get-tags-at current-headline)))
+            next-headline
+          nil)
+      (if (member tag (org-get-tags-at current-headline))
+          next-headline
+        nil))))
+
 (defun bh/clock-in-organization-task-as-default ()
   (interactive)
   (org-with-point-at (org-id-find bh/organization-task-id 'marker)
-- 
cgit v1.2.3