Sorry I missed this thread earlier.
First the reason this happens is because when TaskPaper does a search it:
- Finds all the matches
- Inserts any missing ancestors from the match set
The reason that it does this second step is so that matches have some context. So "Review vent diameter" is shown because "Phone cons with jon" is "not @done".
The good news is that you can solve this by using search set operations. What we'll do is take the original search, and then remove the descendants of all items that are marked done. Like this:
not @done except @done///*
Or as a saved search:
Not Done @search(not @done except @done///*)