Is this a bug or a misusing by myself?

I’m not very sure about how the tag system works.
My problem here is I have a reading list (a project), and I plan to read them in the future.
So every time I open taskpaper, I don’t want see the project of my reading list.
I choose to use not tag to ignore them, but there always left the title and subtitle of this project.
Is this suppose to be like this?

What’s happening is not @future is matching the URL note that’s the last line in your above screenshot. And then the two above lines are included in the results because when there’s a matching item it’s ancestors are always show so that the match has some context.

If you had a flat list your search would have worked well. But when the items you are notting have children removing them gets more complicated. I think what you want is something like this:

//* except (@future union @future//*)

That says:

  1. Match everything in your outline: //*

  2. Then remove everything that’s tagged with @future or that is a descendent of an item that’s tagged with future: except (@future union @future//*)

Thanks so much, it works just like what I expected…