Under a given task I have a list of lines, some of which are done sub-tasks which I have tagged with :done
. For example:
- this thing I completed earlier :done
- this is stuff I did this week
- I might have a sublist with a link in it
- and other stuff this week
- and stuff for next week :todo
When I export this to my report I want to hide the :done
line. I think the solution for this is to use filters but:
(defun my-filter-out-done-lines (s backend info)
"Filter out lines ending in :done"
(apply 'concat
(--remove (s-matches? (rx ":done" (zero-or-more blank) eol) it)
(s-slice-at (rx bol (one-or-more blank) "-") s))))
(org-export-define-derived-backend 'my-status-report 'ascii
:filters-alist
'((:filter-plain-list . my-filter-out-done-lines)))
But I'm still removing lines that don't end in :done
(I think it's being greedy) and links in removed lines are being rendered at the bottom.
Am I on the right path or is there a simpler way? I don't really want all these additional notes to become full subtasks.
concat
withapply 'concat
.--remove
returns a list of strings andconcat
should get the strings as arguments. It should not get the list of strings as argument. – Tobias Jan 20 '18 at 22:33