texinfo-show-structureNext: Using occur Prev: Catching Errors with TEX Formatting
It is not always easy to keep track of the nodes, chapters, sections, and subsections of a Texinfo file. This is especially true if you are revising or adding to a Texinfo file that someone else has written.
In GNU Emacs, in Texinfo mode, the texinfo-show-structure command lists all the lines that begin with the @-commands that specify the structure: @chapter, @section, @appendix, and so on. With an argument (@node lines. The texinfo-show-structure command is bound to C-c C-s in Texinfo mode, by default.
The lines are displayed in a buffer called the `*Occur*' buffer, indented by hierarchical level. For example, here is a part of what was produced by running texinfo-show-structure on this manual:
Lines matching "^@\\(chapter \\|sect\\|subs\\|subh\\|
unnum\\|major\\|chapheading \\|heading \\|appendix\\)"
in buffer texinfo.texi.
...
4177:@chapter Nodes
4198: @heading Two Paths
4231: @section Node and Menu Illustration
4337: @section The @code{@@node} Command
4393: @subheading Choosing Node and Pointer Names
4417: @subsection How to Write an @code{@@node} Line
4469: @subsection @code{@@node} Line Tips
...
This says that lines 4337, 4393, and 4417 of `texinfo.texi' begin with the @section, @subheading, and @subsection commands respectively. If you move your cursor into the `*Occur*' window, you can position the cursor over one of the lines and use the C-c C-c command (occur-mode-goto-occurrence), to jump to the corresponding spot in the Texinfo file. See emacs:Other Repeating Search, Using Occur, for more information about occur-mode-goto-occurrence.
The first line in the `*Occur*' window describes the regular expression specified by texinfo-heading-pattern. This regular expression is the pattern that texinfo-show-structure looks for. See emacs:Regexps, Using Regular Expressions, for more information.
When you invoke the texinfo-show-structure command, Emacs will display the structure of the whole buffer. If you want to see the structure of just a part of the buffer, of one chapter, for example, use the C-x n n (narrow-to-region) command to mark the region. (See emacs:Narrowing.) This is how the example used above was generated. (To see the whole buffer again, use C-x n w (widen).)
If you call texinfo-show-structure with a prefix argument by typing @node as well as the lines beginning with the @-sign commands for @chapter, @section, and the like.
You can remind yourself of the structure of a Texinfo file by looking at the list in the `*Occur*' window; and if you have mis-named a node or left out a section, you can correct the mistake.