From cb12fc2cfdeeb25377fd9b6e98a2dd8d4e50cc35 Mon Sep 17 00:00:00 2001 From: Benson Chu Date: Sat, 24 Sep 2022 13:33:17 -0500 Subject: [PATCH] Refactor A LITTLE BIT the skip function Still not perfect, should be something macroexpandible --- lisp/org-config/my-org-agenda-commands.el | 35 +++++++++++------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/lisp/org-config/my-org-agenda-commands.el b/lisp/org-config/my-org-agenda-commands.el index 6e6d323..23fba41 100644 --- a/lisp/org-config/my-org-agenda-commands.el +++ b/lisp/org-config/my-org-agenda-commands.el @@ -168,6 +168,21 @@ ((org-ql-block-header "Hold projects") (org-ql-indent-levels t))))) + (defun my/org-agenda-skip-function (tag) + (let ((skip-fun-name (intern (format "my/org-agenda-skip-unless-%s-tag" tag)))) + (eval + `(defun ,skip-fun-name () + (let ((tags (org-get-tags))) + (unless (and (or (member ,tag tags) + (member "PLAN" tags)) + (let ((delayed (org-entry-get (point) "DELAYED"))) + (or (null delayed) + (org-time< delayed (org-matcher-time "")))) + (not (member (org-get-todo-state) '("HOLD" "TICKLER")))) + (outline-next-heading) + (point))))) + (eval `(function ,skip-fun-name)))) + (defun org-agenda-minimal-view (tag) `((org-ql-block '(and (tags ,tag) (todo "TODO" "ONE" "META" "META1" "EMPTY" "SEQ") @@ -182,15 +197,7 @@ (org-ql-indent-levels t))) (agenda "" ((org-agenda-show-log '(closed clock)) - (org-agenda-skip-function (lambda () - (let ((tags (org-get-tags))) - (unless (and (or (member ,tag tags) - (member "PLAN" tags)) - (let ((delayed (org-entry-get (point) "DELAYED"))) - (or (null delayed) - (org-time< delayed (org-matcher-time "")))) - (not (member (org-get-todo-state) '("HOLD" "TICKLER")))) - (outline-next-heading))))) + (org-agenda-skip-function #',(my/org-agenda-skip-function tag)) (org-super-agenda-groups '((:name "Delayed" :pred ((lambda (item) (when-let (marker (or (get-text-property 0 'org-marker item) @@ -230,15 +237,7 @@ (org-ql-indentor-function #'my/pinned-indent-level))) (agenda "" ((org-agenda-show-log '(closed clock)) - (org-agenda-skip-function (lambda () - (let ((tags (org-get-tags))) - (unless (and (or (member ,tag tags) - (member "PLAN" tags)) - (let ((delayed (org-entry-get (point) "DELAYED"))) - (or (null delayed) - (org-time< delayed (org-matcher-time "")))) - (not (member (org-get-todo-state) '("HOLD" "TICKLER")))) - (outline-next-heading))))) + (org-agenda-skip-function #',(my/org-agenda-skip-function tag)) (org-super-agenda-groups '((:name "Delayed" :pred ((lambda (item) (when-let (marker (or (get-text-property 0 'org-marker item)