Next: Version Control, Previous: Frames and Faces, Up: Customizing

### 6.2 Tag Hierarchy Methods

When listing tags within a file, it is possible to get an annoyingly long list of entries. Imenu (which generates the tag list in Emacs) will group some classes of items automatically. Even here, however, some tag groups can be quite large.

To solve this problem, tags can be grouped into logical units through a hierarchy processor. The specific variable to use is `speedbar-tag-hierarchy-method`. There are several methods that can be applied in any order. They are:

`speedbar-trim-words-tag-hierarchy`
  Find a common prefix for all elements of a group, and trim it off.
`speedbar-prefix-group-tag-hierarchy`
  If a group is too large, place sets of tags into bins based on common prefixes.
`speedbar-simple-group-tag-hierarchy`
  Take all items in the top level list not in a group, and stick them into a ‘`Tags`’ group.
`speedbar-sort-tag-hierarchy`
  Sort all items, leaving groups on top.

You can also add your own functions to reorganize tags as you see fit.

Some other control variables are:

`speedbar-tag-group-name-minimum-length`
  Default value: 4.

  The minimum length of a prefix group name before expanding. Thus, if the `speedbar-tag-hierarchy-method` includes `speedbar-prefix-group-tag-hierarchy` and one such group's common characters is less than this number of characters, then the group name will be changed to the form of:

                worda to wordb

  instead of just

                word

  This way we won't get silly looking listings.

`speedbar-tag-split-minimum-length`
  Default value: 20.

  Minimum length before we stop trying to create sub-lists in tags. This is used by all tag-hierarchy methods that break large lists into sub-lists.

`speedbar-tag-regroup-maximum-length`
  Default value: 10.

  Maximum length of submenus that are regrouped. If the regrouping option is used, then if two or more short subgroups are next to each other, then they are combined until this number of items is reached.