GNU Emacs Manual - Outline Format

Go to the first, previous, next, last section, table of contents.

### Format of Outlines

Outline mode assumes that the lines in the buffer are of two types: heading lines and body lines. A heading line represents a topic in the outline. Heading lines start with one or more stars; the number of stars determines the depth of the heading in the outline structure. Thus, a heading line with one star is a major topic; all the heading lines with two stars between it and the next one-star heading are its subtopics; and so on. Any line that is not a heading line is a body line. Body lines belong with the preceding heading line. Here is an example:

    * Food
    This is the body,
    which says something about the topic of food.

    ** Delicious Food
    This is the body of the second-level header.

    ** Distasteful Food
    This could have
    a body too, with
    several lines.

    *** Dormitory Food

    * Shelter
    Another first-level topic with its header line.

A heading line together with all following body lines is called collectively an entry. A heading line together with all following deeper heading lines and their body lines is called a subtree.

You can customize the criterion for distinguishing heading lines by setting the variable `outline-regexp`. Any line whose beginning has a match for this regexp is considered a heading line. Matches that start within a line (not at the left margin) do not count. The length of the matching text determines the level of the heading; longer matches make a more deeply nested level. Thus, for example, if a text formatter has commands ``@chapter'`, ``@section'` and ``@subsection'` to divide the document into chapters and sections, you could make those lines count as heading lines by setting `outline-regexp` to ``"@chap\\|@\\(sub\\)*section"'`. Note the trick: the two words ``chapter'` and ``section'` are equally long, but by defining the regexp to match only ``chap'` we ensure that the length of the text matched on a chapter heading is shorter, so that Outline mode will know that sections are contained in chapters. This works as long as no other command starts with ``@chap'`.

It is possible to change the rule for calculating the level of a heading line by setting the variable `outline-level`. The value of `outline-level` should be a function that takes no arguments and returns the level of the current heading. Some major modes such as C, Nroff, and Emacs Lisp mode set this variable in order to work with Outline minor mode.

Go to the first, previous, next, last section, table of contents.