6.1 Tag Inheritance
Tags make use of the hierarchical structure of outline trees. If a heading has a certain tag, all subheadings inherit the tag as well. For example, in the list
* Meeting with the French group :work:
** Summary by Frank :boss:notes:
*** TODO Prepare slides for him :action:
the final heading has the tags ‘work
’, ‘boss
’, ‘notes
’, and ‘action
’ even though the final heading is not explicitly marked with those tags. You can also set tags that all entries in a file should inherit just as if these tags were defined in a hypothetical level zero that surrounds the entire file. Use a line like this1
#+FILETAGS: :Peter:Boss:Secret:
To limit tag inheritance to specific tags, or to turn it off entirely, use the variables org-use-tag-inheritance
and org-tags-exclude-from-inheritance
.
When a headline matches during a tags search while tag inheritance is turned on, all the sublevels in the same tree—for a simple match form—match as well2. The list of matches may then become very long. If you only want to see the first tags match in a subtree, configure the variable org-tags-match-list-sublevels
(not recommended).
Tag inheritance is relevant when the agenda search tries to match a tag, either in the tags
or tags-todo
agenda types. In other agenda types, org-use-tag-inheritance
has no effect. Still, you may want to have your tags correctly set in the agenda, so that tag filtering works fine, with inherited tags. Set org-agenda-use-tag-inheritance
to control this: the default value includes all agenda types, but setting this to nil
can really speed up agenda generation.
- As with all these in-buffer settings, pressing
C-c C-c
activates any changes in the line.↩ - This is only true if the search does not involve more complex tests including properties (see Property Searches).↩