How to do "not" searches in TaskPaper


Not searches can display unexpected results in TaskPaper because when TaskPaper displays search results it also includes the ancestors of those results.

Take this example outline:

My Big Project:
	- My Big Task. @done
		My big note.

Now search for not @done.

You may be surprised to find that “- my big tasks” is still visible. The reason for this is that “My big note” is not tagged with @done. So even though “- My big task” is marked done, it is still displayed because it’s the ancestor of "My big note.

Because of this in TaskPaper you’ll often want “not” searches to translate to: “not any of this item, or it’s descendants”. The good news is there’s a pretty easy pattern to follow in these cases. Do your “not” search. And then use “except” to remove the descendants of that same search from the results like this:

not @done except @done//*

How to show all items that don't have any tags?
Search returning items whose parents match "not" search