Next: , Previous: Tags, Up: Tags

6.1 Tag inheritance

Tags make use of the hierarchical structure of outline trees. If a heading has a certain tag, all subheadings will 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 will have 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, use org-tags-exclude-from-inheritance. To turn it off entirely, use org-use-tag-inheritance.

When a headline matches during a tags search while tag inheritance is turned on, all the sublevels in the same tree will (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.


Footnotes

[1] As with all these in-buffer settings, pressing C-c C-c activates any changes in the line.

[2] This is only true if the search does not involve more complex tests including properties (see Property searches).