I grow under the sun. When I am not writing code, I am either drinking wine or drinking tea (with these little cups). Cheese is my bread and tracking everything in Emacs is my cheese.
P.S. d12frosted means dice with 12 sides from the Chessex™ frosted series. I used to play. Just a little bit.
In one of the previous articles (Vol 3 to be precise) we talked about automatic setup of FILETAGS
, so each of the task in note related to a person is automatically tagged thanks to tag inheritance. Then, in Vol 4 we talked about automatic tagging of tasks whenever a person is mentioned either in the title or the body of some task. This all makes org-agenda
matching capabilities really useful for when we want to see the list of all tasks related to specific person.
In this article, we are going to write a small utility function that asks user to select a person and then presents and org-agenda
buffer with tasks related to selected person.
Believe me, intro is longer than the content!
In previous articles (Vol 1 and Vol 2) we talked about moving tasks from regular org-mode
files to org-roam
notes. This relied upon adding all org-roam
files to org-agenda-files
, which doesn’t scale well, as when you build an agenda buffer, it needs to traverse each file. Once you have more than 1k notes, things become sluggish.
In my experience, once I reached 1200 note files, org-agenda
constantly took more than 50 seconds to build, rendering this tool completely useless. But then I realised that only 3% of those files actually contain any TODO
entries, so there is no need to traverse whole org-roam-directory
!
In this article we are going to optimise org-agenda
back to less than 1 second by dynamically building org-agenda-files
list to include only files with TODO
entries. All thanks to the power of org-roam
and some hooks I am going to describe.
In the previous article we covered automatic tagging of notes related to a specific person, and today we are going to cover automatic tagging of an org-mode heading upon insertion of link related to a person. To put it simple, when I mention someone in the task, I would love this task to be automatically tagged with that persons name. As they say, it’s better to see once, than imagine multiple times, so here is a screencast.
[2021-01-24 Sun] Since some of the functionality mentioned in the original article was merged to org-roam
, all code is updated to reflect the current state of affairs.
In the previous articles (vol1 and vol2) we walked the path to org-roam and solved the issue with garbage in the category column of agenda. Today we are going to explore meta projects dedicated to specific person, tag inheritance and moving such projects to separate org-roam
files. As result, we will have code for automatic tagging based on the title.
Aside from regular meta projects (like personal blog) I also create meta projects for people and locations. This is helpful, because some of the tasks are really related to someone specifically. For example, when I need to return a borrowed book, I just create a task for this.
* Frodo Baggins :@FrodoBaggins:
** TODO Return 'The Lord of the Rings' book
** TODO Farewell party :PROJECT:
It feels like Mr. Frodo is about to live Shire. So we are going to setup a
farewell party for him.
*** TODO Talk to Samwise Gamgee :@SamwiseGamgee:
*** TODO Talk to Meriadoc Brandybuck :@MeriadocBrandybuck:
*** TODO Talk to Peregrin Took :@PeregrinTook:
*** TODO Tie a pair of wool socks
I am not sure where he is going, so a pair of warm wool socks should be good.
At least they can be used to protect bottles of wine during journey. That is in
case Frodo doesn't wear socks. But how could it be? Everyone does!
[2021-01-24 Sun] Since some of the functionality mentioned in the original article was merged to org-roam
, all code is updated to reflect the current state of affairs.
In the previous article we set a ground for moving tasks to org-roam, and encountered an issue with visual garbage in the agenda buffer. Namely, org-roam
file id as part of the category. In this article, we are going to explore the means to overcome this issue.
org-mode is a simple outliner for note taking and list management. It doesn’t impose any complex features on users. This is something users excel at by themselves. My suggestion is to continue this tradition and discover task management capabilities in org-roam, an org-mode extension for non-hierarchical notes management.
Org-roam is a note-taking tool built on top of Emacs and Org. Essentially, it’s a replica of Roam Research. These tools provide an easy way to create and manage non-hierarchical notes. If you wish to learn more, just take a look at the Org-roam manual or watch Making Connections in your Notes video by Matt Williams. Believe me, Org-roam and Roam Research are game-changers. Or even better, don’t believe me and validate my claim by yourself.
Since I am already addicted, it was only natural to prefer org-roam
over some web application. Apart from being developed on top of mature Org ecosystem, Emacs brings many merits and extensibility is one of them. Once org-roam
introduced tags system in v1.1.1 I felt the lack of functions to manage them. Adding and removing them by hand is not nice. So in this article I am sharing a snippet that I’ve forged to ease the unbearable lightness of being.
[2020-10-12 Mon]: Functionality described in this post (and similar functionality to manage aliases) is merged to the upstream. Now simply use one of the following functions:
org-roam-tag-add
org-roam-tag-delete
org-roam-alias-add
org-roam-alias-delete