1a1df6fb6d83acb715dd7a26b02079e4de44744b
[dragonfly.git] / contrib / texinfo / doc / info-stnd.texi
1 \input texinfo.tex    @c -*-texinfo-*-
2 @comment $Id: info-stnd.texi,v 1.9 2004/12/14 16:58:15 karl Exp $
3 @c We must \input texinfo.tex instead of texinfo, otherwise make
4 @c distcheck in the Texinfo distribution fails, because the texinfo Info
5 @c file is made first, and texi2dvi must include . first in the path.
6 @comment %**start of header
7 @setfilename info-stnd.info
8 @include version-stnd.texi
9 @settitle GNU Info @value{VERSION}
10 @syncodeindex vr cp
11 @syncodeindex fn cp
12 @syncodeindex ky cp
13 @comment %**end of header
14
15 @copying
16 This manual is for GNU Info (version @value{VERSION}, @value{UPDATED}),
17 a program for viewing documents in Info format (usually created from
18 Texinfo source files).
19
20 Copyright @copyright{} 1992, 1993, 1996, 1997, 1998, 1999, 2001, 2002,
21 2003, 2004 Free Software Foundation, Inc.
22
23 @quotation
24 Permission is granted to copy, distribute and/or modify this document
25 under the terms of the GNU Free Documentation License, Version 1.1 or
26 any later version published by the Free Software Foundation; with no
27 Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
28 and with the Back-Cover Texts as in (a) below.  A copy of the
29 license is included in the section entitled ``GNU Free Documentation
30 License.''
31
32 (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
33 this GNU Manual, like GNU software.  Copies published by the Free
34 Software Foundation raise funds for GNU development.''
35 @end quotation
36 @end copying
37
38 @dircategory Texinfo documentation system
39 @direntry
40 * info standalone: (info-stnd).            Read Info documents without Emacs.
41 * infokey: (info-stnd)Invoking infokey.    Compile Info customizations.
42 @end direntry
43
44 @titlepage
45 @title GNU Info
46 @subtitle for version @value{VERSION}, @value{UPDATED}
47 @author Brian J. Fox (bfox@@gnu.org)
48 @page
49 @vskip 0pt plus 1filll
50 @insertcopying
51 @end titlepage
52
53 @contents
54
55 @ifnottex
56 @node Top
57 @top GNU Info
58
59 @insertcopying
60
61 This documentation is different from the documentation for the Info
62 reader that is part of GNU Emacs.  If you do not know how to use Info,
63 but have a working Info reader, you should read the Emacs documentation
64 first, as it includes more background information and a thorough tutorial.
65 @end ifnottex
66
67 @menu
68 * What is Info::                What is Info?
69 * Invoking Info::               Options you can pass on the command line.
70 * Cursor Commands::             Commands which move the cursor within a node.
71 * Scrolling Commands::          Commands for reading the text within a node.
72 * Node Commands::               Commands for selecting a new node.
73 * Searching Commands::          Commands for searching an Info file.
74 * Xref Commands::               Commands for selecting cross references.
75 * Window Commands::             Commands which manipulate multiple windows.
76 * Printing Nodes::              How to print out the contents of a node.
77 * Miscellaneous Commands::      A few commands that defy categories.
78 * Variables::                   How to change the default behavior of Info.
79 * Custom Key Bindings::         How to define your own key-to-command bindings.
80 * Copying This Manual::         The GNU Free Documentation License.
81 * Index::                       Global index containing keystrokes,
82                                   command names, variable names,
83                                   and general concepts.
84 @end menu
85
86
87 @node What is Info
88 @chapter What is Info?
89
90 @dfn{Info} is a program which is used to view Info files on an ASCII
91 terminal.  @dfn{Info files} are the result of processing Texinfo files
92 with the program @code{makeinfo} or with one of the Emacs commands, such
93 as @code{M-x texinfo-format-buffer}.  Texinfo itself is a documentation
94 system that uses a single source file to produce both on-line
95 information and printed output.  You can typeset and print the files
96 that you read in Info.
97
98
99 @node Invoking Info
100 @chapter Invoking Info
101
102 @cindex Info, invoking
103 @cindex invoking Info
104 @cindex command line options
105 @cindex options, command line
106 @cindex arguments, command line
107
108 GNU Info accepts several options to control the initial node being
109 viewed, and to specify which directories to search for Info files.  Here
110 is a template showing an invocation of GNU Info from the shell:
111
112 @example
113 info [@var{option}]@dots{} [@var{menu-item}@dots{}]
114 @end example
115
116 The program accepts the following options:
117
118 @table @code
119 @anchor{--apropos}
120 @item --apropos=@var{string}
121 @cindex Searching all indices
122 @cindex Info files@r{, searching all indices}
123 @cindex Apropos@r{, in Info files}
124 Specify a string to search in every index of every Info file installed
125 on your system.  Info looks up the named @var{string} in all the indices
126 it can find, prints the results to standard output, and then exits.  If
127 you are not sure which Info file explains certain issues, this option is
128 your friend.  Note that if your system has a lot of Info files
129 installed, searching all of them might take some time.
130
131 You can invoke the apropos command from inside Info; see
132 @ref{Searching Commands}.
133
134 @cindex directory path
135 @item --directory @var{directory-path}
136 @itemx -d @var{directory-path}
137 Prepend @var{directory-path} to the list of directory paths searched
138 when Info needs to find a file.  You may issue @code{--directory}
139 multiple times; once for each directory which contains Info files.  The
140 list of directories searched by Info is constructed from the value of
141 the environment variable @code{INFOPATH}; @code{--directory} causes the
142 named @var{directory-path} to be prepended to that list.  The value of
143 @code{INFOPATH} is a list of directories usually separated by a colon;
144 on MS-DOS/MS-Windows systems, the semicolon is used.  If you do not
145 define @code{INFOPATH}, Info uses a default path defined when Info was
146 built as the initial list of directories.  If the value of
147 @code{INFOPATH} ends with a colon (or semicolon on MS-DOS/MS-Windows),
148 the initial list of directories is constructed by appending the
149 build-time default to the value of @code{INFOPATH}.
150
151 @cindex keystrokes, recording
152 @cindex remembering user keystrokes
153 @item --dribble=@var{dribble-file}
154 Specify a file where all user keystrokes will be recorded.  This file
155 can be used later to replay the same sequence of commands, see the
156 @samp{--restore} option below.
157
158 @item --file @var{filename}
159 @itemx -f @var{filename}
160 @cindex Info file, selecting
161 Specify a particular Info file to visit.  By default, Info visits
162 the file @code{dir}; if you use this option, Info will start with
163 @code{(@var{filename})Top} as the first file and node.
164
165 @cindex relative Info file names
166 @cindex file names, relative
167 @cindex Info files, relative
168 If @var{filename} is an absolute file name, or begins with @file{./} or
169 @file{../}, Info looks for @var{filename} only in the directory of the
170 specified @var{filename}, and adds the directory of @var{filename} to
171 the value of @code{INFOPATH}.  In contrast, if @var{filename} is in the
172 form of a relative file name, but without the @file{./} or @file{../}
173 prefix, Info will only look for it in the directories specified in
174 @code{INFOPATH}.  In other words, Info does @emph{not} treat file names
175 which lack @file{./} and @file{../} prefix as relative to the current
176 directory.
177
178 @cindex compressed Info files
179 @cindex files, compressed
180 @cindex Info files, compressed
181 In every directory Info tries, if @var{filename} is not found, Info
182 looks for it with a number of known extensions of Info files@footnote{
183 @file{.info}, @file{-info}, @file{/index}, and @file{.inf}.}.  For every
184 known extension, Info looks for a compressed file, if a regular file
185 isn't found.  Info supports files compressed with @code{gzip},
186 @code{bzip2}, @code{compress} and @code{yabba} programs; it calls
187 @code{gunzip}, @code{bunzip2}, @code{uncompress} and @code{unyabba},
188 accordingly, to decompress such files.  Compressed Info files are
189 assumed to have @file{.z}, @file{.gz}, @file{.bz2}, @file{.Z}, or
190 @file{.Y} extensions, possibly in addition to one of the known Info
191 files extensions@footnote{The MS-DOS version allows for the Info
192 extension, such as @code{.inf}, and the short compressed file
193 extensions, such as @file{.z} and @file{.gz}, to be merged into a single
194 extension, since DOS doesn't allow more than a single dot in the
195 basename of a file.  Thus, on MS-DOS, if Info looks for @file{bison},
196 file names like @file{bison.igz} and @file{bison.inz} will be found and
197 decompressed by @code{gunzip}.}.
198
199 @item --help
200 @itemx -h
201 Produces a relatively brief description of the available Info options.
202
203 @item --index-search @var{string}
204 @cindex index search, selecting from the command line
205 @cindex online help, using Info as
206 After processing all command-line arguments, go to the index in the Info
207 file and search for index entries which match @var{string}.  If such an
208 entry is found, the Info session begins with displaying the node pointed
209 to by the first matching index entry; press @kbd{,} to step through the
210 rest of the matching entries.  If no such entry exists, print @samp{no
211 entries found} and exit with nonzero status.  This can be used from
212 another program as a way to provide online help, or as a quick way of
213 starting to read an Info file at a certain node when you don't know the
214 exact name of that node.
215
216 This command can also be invoked from inside Info; see @ref{Searching
217 Commands}.
218
219 @item --node @var{nodename}
220 @itemx -n @var{nodename}
221 @cindex node, selecting from the command line
222 Specify a particular node to visit in the initial file that Info
223 loads.  This is especially useful in conjunction with
224 @code{--file}@footnote{Of course, you can specify both the file and node
225 in a @code{--node} command; but don't forget to escape the open and
226 close parentheses and whitespace from the shell as in: @code{info --node
227 "(emacs)Buffers"}.}.  You may specify @code{--node} multiple times; for
228 an interactive Info, each @var{nodename} is visited in its own window,
229 for a non-interactive Info (such as when @code{--output} is given) each
230 @var{nodename} is processed sequentially.
231
232 @item --output @var{filename}
233 @itemx -o @var{filename}
234 @cindex file, outputting to
235 @cindex outputting to a file
236 Specify @var{filename} as the name of a file to which to direct output.
237 Each node that Info visits will be output to @var{filename} instead of
238 interactively viewed.  A value of @code{-} for @var{filename} specifies
239 the standard output.
240
241 @cindex colors in documents
242 @cindex ANSI escape sequences in documents
243 @item --raw-escapes
244 @itemx --no-raw-escapes
245 @itemx -R
246 Do not remove ANSI escape sequences from documents.  Some versions of
247 Groff, the GNU document formatter, produce man pages with ANSI escape
248 sequences for bold, italics, and underlined characters, and for
249 colorized text.  By default, Info lets those escape sequences pass
250 through directly to the terminal.  If your terminal does not support
251 these escapes, use @code{--no-raw-escapes} to make Info remove them.
252
253 @cindex replaying recorded keystrokes
254 @item --restore=@var{dribble-file}
255 Read keystrokes from @var{dribble-file}, presumably recorded during
256 previous Info session (see the description of the @samp{--dribble}
257 option above).  When the keystrokes in the files are all read, Info
258 reverts its input to the usual interactive operation.
259
260 @anchor{--show-options}
261 @cindex command-line options, how to find
262 @cindex invocation description, how to find
263 @item --show-options
264 @itemx --usage
265 @itemx -O
266 This option causes Info to look for the node that describes how to
267 invoke the program and its command-line options, and begin the session
268 by displaying that node.  It is provided to make it easier to find the
269 most important usage information in a manual without the need to wade
270 through complex menu hierarchies.  The effect is similar to the
271 @code{M-x goto-invocation} command (@pxref{goto-invocation}) from inside
272 Info.
273
274 @cindex speech synthesizers
275 @item --speech-friendly
276 @itemx -b
277 On MS-DOS/MS-Windows only, this option causes Info to use standard file
278 I/O functions for screen writes.  (By default, Info uses direct writes
279 to the video memory on these systems, for faster operation and colored
280 display support.)  This allows the speech synthesizers used by blind
281 persons to catch the output and convert it to audible speech.
282
283 @item --subnodes
284 @cindex @code{--subnodes}, command line option
285 This option only has meaning when given in conjunction with
286 @code{--output}.  It means to recursively output the nodes appearing in
287 the menus of each node being output.  Menu items which resolve to
288 external Info files are not output, and neither are menu items which are
289 members of an index.  Each node is only output once.
290
291 @item --version
292 @cindex version information
293 Prints the version information of Info and exits.
294
295 @anchor{--vi-keys}
296 @cindex vi-like key bindings
297 @cindex Less-like key bindings
298 @item --vi-keys
299 This option binds functions to keys differently, to emulate the key
300 bindings of @code{vi} and Less.  The default key bindings are generally
301 modeled after Emacs.
302 (@xref{Custom Key Bindings},
303 for a more general way of altering GNU Info's key bindings.)
304
305 @cindex Info manual location
306 @cindex Where is an Info manual?
307 @item --where
308 @itemx --location
309 @itemx -w
310 Show the filename that would be read and exit, instead of actually
311 reading it and starting Info.
312
313 @item @var{menu-item}
314 @cindex menu, following
315 @anchor{command-line menu items}
316 Info treats its remaining arguments as the names of menu items.  The
317 first argument is a menu item in the initial node visited (generally
318 @code{dir}), the second argument is a menu item in the first argument's
319 node, etc.  You can easily move to the node of your choice by specifying
320 the menu names which describe the path to that node.  For example,
321
322 @example
323 info emacs buffers
324 @end example
325
326 @noindent
327 first selects the menu item @samp{Emacs} in the node @samp{(dir)Top},
328 and then selects the menu item @samp{Buffers} in the node
329 @samp{(emacs)Top}.
330 @end table
331
332 To avoid searching the @file{dir} files and just show some arbitrary
333 file, use @samp{-f} and the filename, as in @samp{info -f ./foo.info}.
334
335 The index search and the search for the node which describes program
336 invocation and command-line options begins @emph{after} processing all
337 the command-line menu items.  Therefore, the Info file searched for the
338 index or the invocation node is the file where Info finds itself after
339 following all the menu items given on the command line.  This is so
340 @samp{info emacs --show-options} does what you'd expect.
341
342 @c FIXME: the feature with lowercasing the file name isn't documented
343
344
345 @node Cursor Commands
346 @chapter Moving the Cursor
347 @cindex cursor, moving
348 @cindex moving the cursor
349
350 Many people find that reading screens of text page by page is made
351 easier when one is able to indicate particular pieces of text with
352 some kind of pointing device.  Since this is the case, GNU Info (both
353 the Emacs and standalone versions) have several commands which allow
354 you to move the cursor about the screen.  The notation used in this
355 manual to describe keystrokes is identical to the notation used within
356 the Emacs manual, and the GNU Readline manual.  @xref{User Input,,,
357 emacs, the GNU Emacs Manual}, if you are unfamiliar with the
358 notation.@footnote{Here's a short summary.  @kbd{C-@var{x}} means
359 press the @kbd{CTRL} key and the key @var{x}.  @kbd{M-@var{x}} means
360 press the @kbd{META} key and the key @var{x}.  On many terminals th
361 @kbd{META} key is known as the @kbd{ALT} key.  @kbd{SPC} is the space
362 bar.  The other keys are usually called by the names imprinted on
363 them.}
364
365 The following table lists the basic cursor movement commands in Info.
366 Each entry consists of the key sequence you should type to execute the
367 cursor movement, the @code{M-x}@footnote{@code{M-x} is also a command; it
368 invokes @code{execute-extended-command}.  @xref{M-x, , Executing an
369 extended command, emacs, the GNU Emacs Manual}, for more detailed
370 information.} command name (displayed in parentheses), and a short
371 description of what the command does.  All of the cursor motion commands
372 can take a @dfn{numeric} argument (see @ref{Miscellaneous Commands,
373 @code{universal-argument}, to find out how to supply them}.  With a
374 numeric argument, the motion commands are simply executed that
375 many times; for example, a numeric argument of 4 given to
376 @code{next-line} causes the cursor to move down 4 lines.  With a
377 negative numeric argument, the motion is reversed; an argument of -4
378 given to the @code{next-line} command would cause the cursor to move
379 @emph{up} 4 lines.
380
381 @table @asis
382 @item @key{C-n} (@code{next-line})
383 @itemx @key{DOWN} (an arrow key)
384 @kindex C-n
385 @kindex DOWN (an arrow key)
386 @findex next-line
387 Move the cursor down to the next line.
388
389 @item @key{C-p} (@code{prev-line})
390 @itemx @key{UP} (an arrow key)
391 @kindex C-p
392 @kindex UP (an arrow key)
393 @findex prev-line
394 Move the cursor up to the previous line.
395
396 @item @key{C-a} (@code{beginning-of-line})
397 @itemx @key{Home} (on DOS/Windows only)
398 @kindex C-a, in Info windows
399 @kindex Home
400 @findex beginning-of-line
401 Move the cursor to the start of the current line.
402
403 @item @key{C-e} (@code{end-of-line})
404 @itemx @key{End} (on DOS/Windows only)
405 @kindex C-e, in Info windows
406 @kindex End
407 @findex end-of-line
408 Move the cursor to the end of the current line.
409
410 @item @key{C-f} (@code{forward-char})
411 @itemx @key{RIGHT} (an arrow key)
412 @kindex C-f, in Info windows
413 @kindex RIGHT (an arrow key)
414 @findex forward-char
415 Move the cursor forward a character.
416
417 @item @key{C-b} (@code{backward-char})
418 @itemx @key{LEFT} (an arrow key)
419 @kindex C-b, in Info windows
420 @kindex LEFT (an arrow key)
421 @findex backward-char
422 Move the cursor backward a character.
423
424 @item @key{M-f} (@code{forward-word})
425 @itemx @kbd{C-@key{RIGHT}} (on DOS/Windows only)
426 @kindex M-f, in Info windows
427 @kindex C-RIGHT
428 @findex forward-word
429 Move the cursor forward a word.
430
431 @item @key{M-b} (@code{backward-word})
432 @itemx @kbd{C-@key{LEFT}} (on DOS/Windows only)
433 @kindex M-b, in Info windows
434 @kindex C-LEFT
435 @findex backward-word
436 Move the cursor backward a word.
437
438 @item @key{M-<} (@code{beginning-of-node})
439 @itemx @key{C-@key{Home}} (on DOS/Windows only)
440 @itemx @key{b}
441 @itemx @key{M-b}, vi-like operation
442 @kindex b, in Info windows
443 @kindex M-<
444 @kindex C-Home
445 @kindex M-b, vi-like operation
446 @findex beginning-of-node
447 Move the cursor to the start of the current node.
448
449 @item @key{M->} (@code{end-of-node})
450 @itemx @key{C-@key{End}} (on DOS/Windows only)
451 @itemx @key{e}
452 @kindex M->
453 @kindex e, in Info windows
454 @kindex C-End
455 @findex end-of-node
456 Move the cursor to the end of the current node.
457
458 @item @key{M-r} (@code{move-to-window-line})
459 @kindex M-r
460 @findex move-to-window-line
461 Move the cursor to a specific line of the window.  Without a numeric
462 argument, @code{M-r} moves the cursor to the start of the line in the
463 center of the window.  With a numeric argument of @var{n}, @code{M-r}
464 moves the cursor to the start of the @var{n}th line in the window.
465 @end table
466
467
468 @node Scrolling Commands
469 @chapter Moving Text Within a Window
470 @cindex scrolling
471
472 Sometimes you are looking at a screenful of text, and only part of the
473 current paragraph you are reading is visible on the screen.  The
474 commands detailed in this section are used to shift which part of the
475 current node is visible on the screen.
476
477 Scrolling commands are bound differently when @samp{--vi-keys} operation
478 is in effect (@pxref{--vi-keys}).  These key bindings are designated
479 with ``vi-like operation''.
480
481 @table @asis
482 @item @key{SPC} (@code{scroll-forward})
483 @kindex SPC, in Info windows
484 @findex scroll-forward
485 Shift the text in this window up.  That is, show more of the node which
486 is currently below the bottom of the window.  With a numeric argument,
487 show that many more lines at the bottom of the window; a numeric
488 argument of 4 would shift all of the text in the window up 4 lines
489 (discarding the top 4 lines), and show you four new lines at the bottom
490 of the window.  Without a numeric argument, @key{SPC} takes the bottom
491 two lines of the window and places them at the top of the window,
492 redisplaying almost a completely new screenful of lines.  If you are at
493 the end of a node, @key{SPC} takes you to the ``next'' node, so that you can
494 read an entire manual from start to finish by repeating @key{SPC}.
495
496 The default scroll size is one screen-full, but it can be changed by
497 invoking the (@code{scroll-forward-page-only-set-window}) command,
498 @samp{z} under @samp{--vi-keys}, with a numeric argument.
499
500 @item @key{NEXT} (an arrow key) (@code{scroll-forward-page-only})
501 @itemx @key{C-v}
502 @itemx @key{C-f}, vi-like operation
503 @itemx @key{f}, vi-like operation
504 @itemx @key{M-SPC}, vi-like operation
505 @kindex NEXT
506 @kindex C-v
507 @kindex C-f, vi-like operation
508 @kindex f, vi-like operation
509 @kindex M-SPC, vi-like operation
510 @findex scroll-forward-page-only
511 Shift the text in this window up.  This is identical to the @key{SPC}
512 operation above, except that it never scrolls beyond the end of the
513 current node.
514
515 @kindex PageDown
516 The @key{NEXT} key is known as the @key{PageDown} key on some
517 keyboards.
518
519 @item @key{z} (@code{scroll-forward-page-only-set-window}, vi-like operation)
520 @kindex z, vi-like operation
521 @findex scroll-forward-page-only-set-window
522 Scroll forward, like with @key{NEXT}, but if a numeric argument is
523 specified, it becomes the default scroll size for subsequent
524 @code{scroll-forward} and @code{scroll-backward} commands and their
525 ilk.
526
527 @item @key{DEL} (@code{scroll-backward})
528 @kindex DEL, in Info windows
529 @findex scroll-backward
530 Shift the text in this window down.  The inverse of
531 @code{scroll-forward}.
532 If you are at the start of a node, @key{DEL} takes you to the
533 ``previous'' node, so that you can read an entire manual from finish to
534 start by repeating @key{DEL}.  The default scroll size can be changed by
535 invoking the (@code{scroll-backward-page-only-set-window}) command,
536 @samp{w} under @samp{--vi-keys}, with a numeric argument.
537
538 @itemx @key{PREVIOUS} (arrow key) (@code{scroll-backward-page-only})
539 @itemx @key{PRIOR} (arrow key)
540 @itemx @key{M-v}
541 @itemx @key{b}, vi-like operation
542 @itemx @key{C-b}, vi-like operation
543 @kindex PREVIOUS
544 @kindex M-v
545 @kindex b, vi-like operation
546 @kindex C-b, vi-like operation
547 @findex scroll-backward-page-only
548 Shift the text in this window down.  The inverse of
549 @code{scroll-forward-page-only}.  Does not scroll beyond the start of
550 the current node.  The default scroll size can be changed by invoking
551 the(@code{scroll-backward-page-only-set-window}) command, @samp{w} under
552 @samp{--vi-keys}, with a numeric argument.
553
554 @item @key{w} (@code{scroll-backward-page-only-set-window}, vi-like operation)
555 @kindex w, vi-like operation
556 @findex scroll-backward-page-only-set-window
557 Scroll backward, like with @key{PREVIOUS}, but if a numeric argument is
558 specified, it becomes the default scroll size for subsequent
559 @code{scroll-forward} and @code{scroll-backward} commands.
560
561 @item @key{C-n} (@code{down-line}, vi-like operation)
562 @itemx @key{C-e}, vi-like operation
563 @itemx @key{RET}, vi-like operation
564 @itemx @key{LFD}, vi-like operation
565 @itemx @key{DOWN}, vi-like operation
566 @kindex C-n, vi-like operation
567 @kindex C-e, vi-like operation
568 @kindex RET, vi-like operation
569 @kindex LFD, vi-like operation
570 @kindex DOWN, vi-like operation
571 @findex down-line
572 Scroll forward by one line.  With a numeric argument, scroll forward
573 that many lines.
574
575 @item @key{C-p} (@code{up-line}, vi-like operation)
576 @itemx @key{UP}, vi-like operation
577 @itemx @key{y}, vi-like operation
578 @itemx @key{k}, vi-like operation
579 @itemx @key{C-k}, vi-like operation
580 @itemx @key{C-y}, vi-like operation
581 @kindex C-p, vi-like operation
582 @kindex UP, vi-like operation
583 @kindex y, vi-like operation
584 @kindex k, vi-like operation
585 @kindex C-k, vi-like operation
586 @kindex C-y, vi-like operation
587 @findex up-line
588 Scroll backward one line.  With a numeric argument, scroll backward that
589 many lines.
590
591 @item @key{d} (@code{scroll-half-screen-down}, vi-like operation)
592 @itemx @key{C-d}, vi-like operation
593 @kindex d, vi-like operation
594 @kindex C-d, vi-like operation
595 @findex scroll-half-screen-down
596 Scroll forward by half of the screen size.  With a numeric argument,
597 scroll that many lines.  If an argument is specified, it becomes the new
598 default number of lines to scroll for subsequent @samp{d} and @samp{u}
599 commands.
600
601 @item @key{u} (@code{scroll-half-screen-up}, vi-like operation)
602 @itemx @key{C-u}, vi-like operation
603 @kindex u, vi-like operation
604 @kindex C-u, vi-like operation
605 @findex scroll-half-screen-up
606 Scroll back by half of the screen size.  With a numeric argument,
607 scroll that many lines.  If an argument is specified, it becomes the new
608 default number of lines to scroll for subsequent @samp{u} and @samp{d}
609 commands.
610 @end table
611
612 @cindex scrolling through node structure
613 The @code{scroll-forward} and @code{scroll-backward} commands can also
614 move forward and backward through the node structure of the file.  If
615 you press @key{SPC} while viewing the end of a node, or @key{DEL} while
616 viewing the beginning of a node, what happens is controlled by the
617 variable @code{scroll-behavior}.  @xref{Variables,
618 @code{scroll-behavior}}, for more information.
619
620 The @code{scroll-forward-page-only} and @code{scroll-backward-page-only}
621 commands never scroll beyond the current node.
622
623 @kindex PageUp
624 The @key{PREVIOUS} key is the @key{PageUp} key on many keyboards.  Emacs
625 refers to it by the name @key{PRIOR}.  When you use @key{PRIOR} or
626 @key{PageUp} to scroll, Info never scrolls beyond the beginning of the
627 current node.
628
629 @kindex BS (backspace)
630 If your keyboard lacks the @key{DEL} key, look for a key called
631 @key{BS}, or @samp{BackSpace}, sometimes designated with an arrow which
632 points to the left, which should perform the same function.
633
634 @table @asis
635 @item @key{C-l} (@code{redraw-display})
636 @kindex C-l
637 @findex redraw-display
638 Redraw the display from scratch, or shift the line containing the cursor
639 to a specified location.  With no numeric argument, @samp{C-l} clears
640 the screen, and then redraws its entire contents.  Given a numeric
641 argument of @var{n}, the line containing the cursor is shifted so that
642 it is on the @var{n}th line of the window.
643
644 @item @kbd{C-x @key{w}} (@code{toggle-wrap})
645 @kindex C-w
646 @findex toggle-wrap
647 Toggles the state of line wrapping in the current window.  Normally,
648 lines which are longer than the screen width @dfn{wrap}, i.e., they are
649 continued on the next line.  Lines which wrap have a @samp{\} appearing
650 in the rightmost column of the screen.  You can cause such lines to be
651 terminated at the rightmost column by changing the state of line
652 wrapping in the window with @code{C-x w}.  When a line which needs more
653 space than one screen width to display is displayed, a @samp{$} appears
654 in the rightmost column of the screen, and the remainder of the line is
655 invisible.  When long lines are truncated, the modeline displays the
656 @samp{$} character near its left edge.
657 @end table
658
659
660 @node Node Commands
661 @chapter Selecting a Node
662 @cindex nodes, selection of
663
664 This section details the numerous Info commands which select a new node
665 to view in the current window.
666
667 The most basic node commands are @samp{n}, @samp{p}, @samp{u}, and
668 @samp{l}.  Note that the commands to select nodes are mapped differently
669 when @samp{--vi-keys} is in effect; these keybindings are designated
670 below as ``vi-like operation''.
671
672 When you are viewing a node, the top line of the node contains some Info
673 @dfn{pointers} which describe where the next, previous, and up nodes
674 are.  Info uses this line to move about the node structure of the file
675 when you use the following commands:
676
677 @table @asis
678 @item @key{n} (@code{next-node})
679 @itemx @kbd{C-@key{NEXT}} (on DOS/Windows only)
680 @itemx @kbd{C-x @key{n}}, vi-like operation
681 @kindex n
682 @kindex C-NEXT
683 @kindex C-x n, vi-like operation
684 @findex next-node
685 Select the `Next' node.
686
687 @kindex C-PgDn
688 The @key{NEXT} key is known as the @key{PgDn} key on some
689 keyboards.
690
691 @item @key{p} (@code{prev-node})
692 @itemx @kbd{C-@key{PREVIOUS}} (on DOS/Windows only)
693 @kindex p
694 @kindex C-PREVIOUS
695 @findex prev-node
696 Select the `Prev' node.
697
698 @kindex C-PgUp
699 The @key{PREVIOUS} key is known as the @key{PgUp} key on some
700 keyboards.
701
702 @item @key{u} (@code{up-node})
703 @itemx @kbd{C-@key{UP}} (an arrow key on DOS/Windows only)
704 @itemx @kbd{C-x @key{u}}, vi-like operation
705 @kindex u
706 @kindex C-UP
707 @kindex C-x u, vi-like operation
708 @findex up-node
709 Select the `Up' node.
710 @end table
711
712 You can easily select a node that you have already viewed in this window
713 by using the @samp{l} command---this name stands for ``last'', and
714 actually moves backwards through the history of visited nodes for this
715 window.  This is handy when you followed a reference to another node,
716 possibly to read about a related issue, and would like then to resume
717 reading at the same place where you started the excursion.
718
719 Each node where you press @samp{l} is discarded from the history.  Thus,
720 by the time you get to the first node you visited in a window, the
721 entire history of that window is discarded.
722
723 @table @asis
724 @item @key{l} (@code{history-node})
725 @itemx @key{C-@key{CENTER}} (on DOS/Windows only)
726 @itemx @key{'}, vi-like operation
727 @kindex l
728 @kindex C-CENTER
729 @kindex ', vi-like operation
730 @findex history-node
731 Pop the most recently selected node in this window from the node
732 history.
733 @end table
734
735 Two additional commands make it easy to select the most commonly
736 selected nodes; they are @samp{t} and @samp{d}.
737
738 @table @asis
739 @item @key{t} (@code{top-node})
740 @itemx @key{M-t}, vi-like operation
741 @kindex t
742 @kindex M-t, vi-like operation
743 @findex top-node
744 Select the node @samp{Top} in the current Info file.
745
746 @item @key{d} (@code{dir-node})
747 @itemx @key{M-d}, vi-like operation
748 @kindex d
749 @kindex M-d, vi-like operation
750 @findex dir-node
751 Select the directory node (i.e., the node @samp{(dir)}).
752 @end table
753
754 Here are some other commands which immediately result in the selection
755 of a different node in the current window:
756
757 @table @asis
758 @item @key{<} (@code{first-node})
759 @itemx @key{g}, vi-like operation
760 @kindex <
761 @kindex g, vi-like operation
762 @findex first-node
763 Selects the first node which appears in this file.  This node is most
764 often @samp{Top}, but it does not have to be.  With a numeric argument
765 @var{N}, select the @var{N}th node (the first node is node 1).  An
766 argument of zero is the same as the argument of 1.
767
768 @item @key{>} (@code{last-node})
769 @itemx @key{G}, vi-like operation
770 @kindex >
771 @kindex G, vi-like operation
772 @findex last-node
773 Select the last node which appears in this file.  With a numeric argument
774 @var{N}, select the @var{N}th node (the first node is node 1).  An
775 argument of zero is the same as no argument, i.e., it selects the last
776 node.
777
778 @item @key{]} (@code{global-next-node})
779 @kindex ]
780 @findex global-next-node
781 Move forward or down through node structure.  If the node that you are
782 currently viewing has a @samp{Next} pointer, that node is selected.
783 Otherwise, if this node has a menu, the first menu item is selected.  If
784 there is no @samp{Next} and no menu, the same process is tried with the
785 @samp{Up} node of this node.
786
787 @item @key{[} (@code{global-prev-node})
788 @kindex [
789 @findex global-prev-node
790 Move backward or up through node structure.  If the node that you are
791 currently viewing has a @samp{Prev} pointer, that node is selected.
792 Otherwise, if the node has an @samp{Up} pointer, that node is selected,
793 and if it has a menu, the last item in the menu is selected.
794 @end table
795
796 You can get the same behavior as @code{global-next-node} and
797 @code{global-prev-node} while simply scrolling through the file with
798 @key{SPC} and @key{DEL}; @xref{Variables, @code{scroll-behavior}}, for
799 more information.
800
801 @table @asis
802 @anchor{goto-node}
803 @item @key{g} (@code{goto-node})
804 @itemx @kbd{C-x @key{g}}, vi-like operation
805 @kindex g
806 @kindex C-x g, vi-like operation
807 @findex goto-node
808 Read the name of a node and select it.  While reading the node name,
809 completion (@pxref{The Echo Area, completion}) is only done for the
810 nodes which reside in one of the Info files that were loaded in the
811 current Info session; if the desired node resides in some other file,
812 you must type the node exactly as it appears in that Info file, and you
813 must include the Info file of the other file.  For example,
814
815 @example
816 @code{g(emacs)Buffers}
817 @end example
818
819 finds the node @samp{Buffers} in the Info file @file{emacs}.
820
821 @anchor{goto-invocation}
822 @item @key{O} (@code{goto-invocation}
823 @itemx @key{I}
824 @kindex O
825 @kindex I
826 @findex goto-invocation
827 @cindex finding the Invocation node
828 Read the name of a program and look for a node in the current Info file
829 which describes the invocation and the command-line options for that
830 program.  The default program name is derived from the name of the
831 current Info file.  This command does the same as the
832 @samp{--show-options} command-line option (@pxref{--show-options}), but
833 it also allows to specify the program name; this is important for those
834 manuals which describe several programs.
835
836 If you need to find the Invocation node of a program that is documented
837 in another Info file, you need to visit that file before invoking
838 @samp{I}.  For example, if you are reading the Emacs manual and want to
839 see the command-line options of the @code{makeinfo} program, type @kbd{g
840 (texinfo) @key{RET}} and then @kbd{I makeinfo @key{RET}}.  If you don't
841 know what Info file documents the command, or if invoking @samp{I}
842 doesn't display the right node, go to the @samp{(dir)} node (using the
843 @samp{d} command) and invoke @samp{I} from there.
844
845 @item @key{G} (@code{menu-sequence})
846 @kindex G
847 @findex menu-sequence
848 @cindex menu, following, from inside Info
849 Read a sequence of menu entries and follow it.  Info prompts for a
850 sequence of menu items separated by commas.  (Since commas are not
851 allowed in a node name, they are a natural choice for a delimiter in a
852 list of menu items.)  Info then looks up the first item in the menu of
853 the node @samp{(dir)} (if the @samp{(dir)} node cannot be found, Info
854 uses @samp{Top}).  If such an entry is found, Info goes to the node it
855 points to and looks up the second item in the menu of that node, etc.
856 In other words, you can specify a complete path which descends through
857 the menu hierarchy of a particular Info file starting at the
858 @samp{(dir)} node.  This has the same effect as if you typed the menu
859 item sequence on Info's command line, see @ref{command-line menu items,,
860 Info command-line arguments processing}.  For example,
861
862 @example
863  @kbd{G Texinfo,Overview,Reporting Bugs @key{RET}}
864 @end example
865
866 @noindent
867 displays the node @samp{Reporting Bugs} in the Texinfo manual.  (You
868 don't actually need to type the menu items in their full length, or in
869 their exact letter-case.  However, if you do type the menu items
870 exactly, Info will find it faster.)
871
872 If any of the menu items you type are not found, Info stops at the last
873 entry it did find and reports an error.
874
875 @item @kbd{C-x @key{k}} (@code{kill-node})
876 @kindex C-x k
877 @findex kill-node
878 Kill a node.  The node name is prompted for in the echo area, with a
879 default of the current node.  @dfn{Killing} a node means that Info tries
880 hard to forget about it, removing it from the list of history nodes kept
881 for the window where that node is found.  Another node is selected in
882 the window which contained the killed node.
883
884 @item @kbd{C-x C-f} (@code{view-file})
885 @kindex C-x C-f
886 @findex view-file
887 Read the name of a file and selects the entire file.  The command
888 @example
889 @code{C-x C-f @var{filename}}
890 @end example
891 is equivalent to typing
892 @example
893 @code{g(@var{filename})*}
894 @end example
895
896 @item @kbd{C-x C-b} (@code{list-visited-nodes})
897 @kindex C-x C-b
898 @findex list-visited-nodes
899 Make a window containing a menu of all of the currently visited nodes.
900 This window becomes the selected window, and you may use the standard
901 Info commands within it.
902
903 @item @kbd{C-x @key{b}} (@code{select-visited-node})
904 @kindex C-x b
905 @findex select-visited-node
906 Select a node which has been previously visited in a visible window.
907 This is similar to @samp{C-x C-b} followed by @samp{m}, but no window is
908 created.
909 @end table
910
911
912 @node Searching Commands
913 @chapter Searching an Info File
914 @cindex searching
915
916 GNU Info allows you to search for a sequence of characters throughout an
917 entire Info file, search through the indices of an Info file, or find
918 areas within an Info file which discuss a particular topic.
919
920 @table @asis
921 @item @key{s} (@code{search})
922 @itemx @key{/}
923 @kindex s
924 @kindex /
925 @findex search
926 Read a string in the echo area and search for it.  If the string
927 includes upper-case characters, the Info file is searched
928 case-sensitively; otherwise Info ignores the letter case.  With a
929 numeric argument of @var{N}, search for @var{N}th occurrence of the
930 string.  Negative arguments search backwards.
931
932 @item @key{?} (@code{search-backward}, vi-like operation)
933 @kindex ?, vi-like operation
934 @findex search-backward
935 Read a string in the echo area and search backward through the Info file
936 for that string.  If the string includes upper-case characters, the Info
937 file is searched case-sensitively; otherwise Info ignores the letter
938 case.  With a numeric argument of @var{N}, search for @var{N}th
939 occurrence of the string.  Negative arguments search forward.
940
941 @item @key{S} (@code{search-case-sensitively}
942 @kindex S
943 @findex search-case-sensitively
944 @cindex search, case-sensitive
945 @cindex case-sensitive search
946 Read a string in the echo area and search for it case-sensitively, even
947 if the string includes only lower-case letters.  With a numeric argument
948 of @var{N}, search for @var{N}th occurrence of the string.  Negative
949 arguments search backwards.
950
951 @item @kbd{C-x @key{n}} (@code{search-next})
952 @itemx @key{n}, vi-like operation
953 @kindex C-x n
954 @kindex n, vi-like operation
955 @findex search-next
956 @cindex repeated search
957 Search for the same string used in the last search command, in the same
958 direction, and with the same case-sensitivity option.  With a numeric
959 argument of @var{N}, search for @var{N}th next occurrence.
960
961 @item @kbd{C-x @key{N}} (@code{search-previous})
962 @itemx @key{N}, vi-like operation
963 @kindex C-x N
964 @kindex n, vi-like operation
965 @findex search-previous
966 Search for the same string used in the last search command, and with the
967 same case-sensitivity option, but in the reverse direction.  With a
968 numeric argument of @var{N}, search for @var{N}th previous occurrence.
969
970 @item @key{C-s} (@code{isearch-forward})
971 @kindex C-s
972 @findex isearch-forward
973 @cindex incremental search
974 Interactively search forward through the Info file for a string as you
975 type it.  If the string includes upper-case characters, the search is
976 case-sensitive; otherwise Info ignores the letter case.
977
978 @item @key{C-r} (@code{isearch-backward})
979 @kindex C-r
980 @findex isearch-backward
981 Interactively search backward through the Info file for a string as
982 you type it.  If the string includes upper-case characters, the search
983 is case-sensitive; otherwise Info ignores the letter case.
984
985 @item @key{i} (@code{index-search})
986 @kindex i
987 @findex index-search
988 @cindex index, searching
989 @cindex searching, in the indices
990 Look up a string in the indices for this Info file, and select a node
991 to which the found index entry points.
992
993 @item @key{,} (@code{next-index-match})
994 @kindex ,
995 @findex next-index-match
996 Move to the node containing the next matching index item from the last
997 @samp{i} command.
998
999 @item @kbd{M-x index-apropos}
1000 @findex index-apropos
1001 Grovel the indices of all the known Info files on your system for a
1002 string, and build a menu of the possible matches.
1003 @end table
1004
1005 The most basic searching command is @samp{s} or @samp{/}
1006 (@code{search}).  The @samp{s} command prompts you for a string in the
1007 echo area, and then searches the remainder of the Info file for an
1008 occurrence of that string.  If the string is found, the node containing
1009 it is selected, and the cursor is left positioned at the start of the
1010 found string.  Subsequent @samp{s} commands show you the default search
1011 string within @samp{[} and @samp{]}; pressing @key{RET} instead of
1012 typing a new string will use the default search string.  Under
1013 @samp{--vi-keys} (@pxref{--vi-keys}), using the @samp{n} or @samp{N}
1014 commands is a faster way of searching for the same string.
1015
1016 @dfn{Incremental searching} is similar to basic searching, but the
1017 string is looked up while you are typing it, instead of waiting until
1018 the entire search string has been specified.
1019
1020 @cindex search, and case-sensitivity
1021 @cindex case-sensitivity, and search
1022 Both incremental and non-incremental search by default ignore the case
1023 of letters when comparing the Info file text with the search string.
1024 However, an uppercase letter in the search string makes the search
1025 case-sensitive.  You can force a case-sensitive non-incremental search,
1026 even for a string that includes only lower-case letters, by using the
1027 @samp{S} command (@code{search-case-sensitively}).  The @samp{n} and
1028 @samp{N} commands operate case-sensitively if the last search command
1029 was @samp{S}.
1030
1031 The most efficient means of finding something quickly in a manual is
1032 the @samp{i} command (@code{index-search}).  This command prompts for
1033 a string, and then looks for that string in all the indices of the
1034 current Info manual.  If it finds a matching index entry, it displays
1035 the node to which that entry refers and prints the full text of the
1036 entry in the echo area.  You can press @samp{,}
1037 (@code{next-index-match}) to find more matches.  A good Info manual
1038 has all of its important concepts indexed, so the @samp{i} command
1039 lets you use a manual as a reference.
1040
1041 If you don't know what manual documents something, try the @kbd{M-x
1042 index-apropos} command.  It prompts for a string and then looks up
1043 that string in all the indices of all the Info documents installed on
1044 your system.  It can also be invoked from the command line; see
1045 @ref{--apropos}.
1046
1047
1048 @node Xref Commands
1049 @chapter Selecting Cross References
1050
1051 We have already discussed the @samp{Next}, @samp{Prev}, and @samp{Up}
1052 pointers which appear at the top of a node.  In addition to these
1053 pointers, a node may contain other pointers which refer you to a
1054 different node, perhaps in another Info file.  Such pointers are called
1055 @dfn{cross references}, or @dfn{xrefs} for short.
1056
1057 @menu
1058 * Parts of an Xref::            What a cross reference is made of.
1059 * Selecting Xrefs::             Commands for selecting menu or note items.
1060 @end menu
1061
1062 @node Parts of an Xref
1063 @section Parts of an Xref
1064
1065 Cross references have two major parts: the first part is called the
1066 @dfn{label}; it is the name that you can use to refer to the cross
1067 reference, and the second is the @dfn{target}; it is the full name of
1068 the node that the cross reference points to.
1069
1070 The target is separated from the label by a colon @samp{:}; first the
1071 label appears, and then the target.  For example, in the sample menu
1072 cross reference below, the single colon separates the label from the
1073 target.
1074
1075 @example
1076 * Foo Label: Foo Target.        More information about Foo.
1077 @end example
1078
1079 Note the @samp{.} which ends the name of the target.  The @samp{.} is
1080 not part of the target; it serves only to let Info know where the target
1081 name ends.
1082
1083 A shorthand way of specifying references allows two adjacent colons to
1084 stand for a target name which is the same as the label name:
1085
1086 @example
1087 * Foo Commands::                Commands pertaining to Foo.
1088 @end example
1089
1090 In the above example, the name of the target is the same as the name of
1091 the label, in this case @code{Foo Commands}.
1092
1093 You will normally see two types of cross reference while viewing nodes:
1094 @dfn{menu} references, and @dfn{note} references.  Menu references
1095 appear within a node's menu; they begin with a @samp{*} at the beginning
1096 of a line, and continue with a label, a target, and a comment which
1097 describes what the contents of the node pointed to contains.
1098
1099 Note references appear within the body of the node text; they begin with
1100 @code{*Note}, and continue with a label and a target.
1101
1102 Like @samp{Next}, @samp{Prev}, and @samp{Up} pointers, cross references
1103 can point to any valid node.  They are used to refer you to a place
1104 where more detailed information can be found on a particular subject.
1105 Here is a cross reference which points to a node within the Texinfo
1106 documentation:  @xref{xref, , Writing an Xref, texinfo, the Texinfo
1107 Manual}, for more information on creating your own texinfo cross
1108 references.
1109
1110 @node Selecting Xrefs
1111 @section Selecting Xrefs
1112
1113 The following table lists the Info commands which operate on menu items.
1114
1115 @table @asis
1116 @item @key{1} (@code{menu-digit})
1117 @itemx @key{2} @dots{} @key{9}
1118 @itemx @key{M-1}, vi-like operation
1119 @itemx @key{M-2} @dots{} @key{M-9}, vi-like operation
1120 @cindex 1 @dots{} 9, in Info windows
1121 @cindex M-1 @dots{} M-9, vi-like operation
1122 @kindex 1 @dots{} 9, in Info windows
1123 @kindex M-1 @dots{} M-9, vi-like operation
1124 @findex menu-digit
1125 Within an Info window, pressing a single digit, (such as @samp{1}),
1126 selects that menu item, and places its node in the current window.
1127 For convenience, there is one exception; pressing @samp{0} selects the
1128 @emph{last} item in the node's menu.  When @samp{--vi-keys} is in
1129 effect, digits set the numeric argument, so these commands are remapped
1130 to their @samp{M-} varieties.  For example, to select the last menu
1131 item, press @key{M-0}.
1132
1133 @item @key{0} (@code{last-menu-item})
1134 @itemx @key{M-0}, vi-like operation
1135 @kindex 0, in Info windows
1136 @kindex M-0, vi-like operation
1137 @findex last-menu-item
1138 Select the last item in the current node's menu.
1139
1140 @item @key{m} (@code{menu-item})
1141 @kindex m
1142 @findex menu-item
1143 Reads the name of a menu item in the echo area and selects its node.
1144 Completion is available while reading the menu label.  @xref{The Echo
1145 Area, completion}.
1146
1147 @item @kbd{M-x find-menu}
1148 @findex find-menu
1149 Move the cursor to the start of this node's menu.
1150 @end table
1151
1152 This table lists the Info commands which operate on cross references.
1153
1154 @table @asis
1155 @item @key{f} (@code{xref-item})
1156 @itemx @key{r}
1157 @item @key{M-f}, vi-like operation
1158 @itemx @kbd{C-x @key{r}}, vi-like operation
1159 @kindex f
1160 @kindex r
1161 @kindex M-f, vi-like operation
1162 @kindex C-x r, vi-like operation
1163 @findex xref-item
1164 Reads the name of a note cross reference in the echo area and selects
1165 its node.  Completion is available while reading the cross reference
1166 label.  @xref{The Echo Area, completion}.
1167 @end table
1168
1169 Finally, the next few commands operate on menu or note references alike:
1170
1171 @table @asis
1172 @item @key{TAB} (@code{move-to-next-xref})
1173 @kindex TAB, in Info windows
1174 @findex move-to-next-xref
1175 Move the cursor to the start of the next nearest menu item or note
1176 reference in this node.  You can then use @key{RET}
1177 (@code{select-reference-this-line}) to select the menu or note reference.
1178
1179 @item @key{M-TAB} (@code{move-to-prev-xref})
1180 @itemx @key{Shift-@key{TAB}} (on DOS/Windows only)
1181 @kindex M-TAB, in Info windows
1182 @findex move-to-prev-xref
1183 Move the cursor the start of the nearest previous menu item or note
1184 reference in this node.
1185
1186 @kindex Shift-TAB, in Info windows
1187 @kindex BackTab, in Info windows
1188 On DOS/Windows only, the @kbd{Shift-@key{TAB}} key is an alias for
1189 @kbd{M-@key{TAB}}.  This key is sometimes called @samp{BackTab}.
1190
1191 @item @key{RET} (@code{select-reference-this-line})
1192 @itemx @key{M-g}, vi-like operation
1193 @kindex RET, in Info windows
1194 @kindex M-g, vi-like operation
1195 @findex select-reference-this-line
1196 Select the menu item or note reference appearing on this line.
1197 @end table
1198
1199
1200 @node Window Commands
1201 @chapter Manipulating Multiple Windows
1202 @cindex windows, manipulating
1203
1204 A @dfn{window} is a place to show the text of a node.  Windows have a
1205 view area where the text of the node is displayed, and an associated
1206 @dfn{mode line}, which briefly describes the node being viewed.
1207
1208 GNU Info supports multiple windows appearing in a single screen; each
1209 window is separated from the next by its modeline.  At any time, there
1210 is only one @dfn{active} window, that is, the window in which the cursor
1211 appears.  There are commands available for creating windows, changing
1212 the size of windows, selecting which window is active, and for deleting
1213 windows.
1214
1215 @menu
1216 * The Mode Line::               What appears in the mode line?
1217 * Basic Windows::               Manipulating windows in Info.
1218 * The Echo Area::               Used for displaying errors and reading input.
1219 @end menu
1220
1221 @node The Mode Line
1222 @section The Mode Line
1223
1224 A @dfn{mode line} is a line of inverse video which appears at the bottom
1225 of an Info window.  It describes the contents of the window just above
1226 it; this information includes the name of the file and node appearing in
1227 that window, the number of screen lines it takes to display the node,
1228 and the percentage of text that is above the top of the window.  It can
1229 also tell you if the indirect tags table for this Info file needs to be
1230 updated, and whether or not the Info file was compressed when stored on
1231 disk.
1232
1233 Here is a sample mode line for a window containing an uncompressed file
1234 named @file{dir}, showing the node @samp{Top}.
1235
1236 @example
1237 @group
1238 -----Info: (dir)Top, 40 lines --Top-------------------------------------
1239             ^^   ^   ^^^        ^^
1240           (file)Node #lines    where
1241 @end group
1242 @end example
1243
1244 When a node comes from a file which is compressed on disk, this is
1245 indicated in the mode line with two small @samp{z}'s.  In addition, if
1246 the Info file containing the node has been split into subfiles, the name
1247 of the subfile containing the node appears in the modeline as well:
1248
1249 @example
1250 --zz-Info: (emacs)Top, 291 lines --Top-- Subfile: emacs-1.Z-------------
1251 @end example
1252
1253 Truncation of long lines (as opposed to wrapping them to the next
1254 display line, @pxref{Scrolling Commands, toggle-wrap}) is indicated by a
1255 @samp{$} at the left edge of the mode line:
1256
1257 @example
1258 --$--Info: (texinfo)Top, 480 lines --Top-- Subfile: texinfo-1-----------
1259 @end example
1260
1261 When Info makes a node internally, such that there is no corresponding
1262 info file on disk, the name of the node is surrounded by asterisks
1263 (@samp{*}).  The name itself tells you what the contents of the window
1264 are; the sample mode line below shows an internally constructed node
1265 showing possible completions:
1266
1267 @example
1268 -----Info: *Completions*, 7 lines --All---------------------------------
1269 @end example
1270
1271 @node Basic Windows
1272 @section Window Commands
1273
1274 It can be convenient to view more than one node at a time.  To allow
1275 this, Info can display more than one @dfn{window}.  Each window has its
1276 own mode line (@pxref{The Mode Line}) and history of nodes viewed in that
1277 window (@pxref{Node Commands, , @code{history-node}}).
1278
1279 @table @asis
1280 @item @kbd{C-x @key{o}} (@code{next-window})
1281 @cindex windows, selecting
1282 @kindex C-x o
1283 @findex next-window
1284 Select the next window on the screen.  Note that the echo area can only be
1285 selected if it is already in use, and you have left it temporarily.
1286 Normally, @samp{C-x o} simply moves the cursor into the next window on
1287 the screen, or if you are already within the last window, into the first
1288 window on the screen.  Given a numeric argument, @samp{C-x o} moves over
1289 that many windows.  A negative argument causes @samp{C-x o} to select
1290 the previous window on the screen.
1291
1292 @item @kbd{M-x prev-window}
1293 @findex prev-window
1294 Select the previous window on the screen.  This is identical to
1295 @samp{C-x o} with a negative argument.
1296
1297 @item @kbd{C-x @key{2}} (@code{split-window})
1298 @cindex windows, creating
1299 @kindex C-x 2
1300 @findex split-window
1301 Split the current window into two windows, both showing the same node.
1302 Each window is one half the size of the original window, and the cursor
1303 remains in the original window.  The variable @code{automatic-tiling}
1304 can cause all of the windows on the screen to be resized for you
1305 automatically (@pxref{Variables, , automatic-tiling}).
1306
1307 @item @kbd{C-x @key{0}} (@code{delete-window})
1308 @cindex windows, deleting
1309 @kindex C-x 0
1310 @findex delete-window
1311 Delete the current window from the screen.  If you have made too many
1312 windows and your screen appears cluttered, this is the way to get rid of
1313 some of them.
1314
1315 @item @kbd{C-x @key{1}} (@code{keep-one-window})
1316 @kindex C-x 1
1317 @findex keep-one-window
1318 Delete all of the windows excepting the current one.
1319
1320 @item @kbd{ESC @key{C-v}} (@code{scroll-other-window})
1321 @kindex ESC C-v, in Info windows
1322 @findex scroll-other-window
1323 Scroll the other window, in the same fashion that @samp{C-v} might
1324 scroll the current window.  Given a negative argument, scroll the
1325 ``other'' window backward.
1326
1327 @item @kbd{C-x @key{^}} (@code{grow-window})
1328 @kindex C-x ^
1329 @findex grow-window
1330 Grow (or shrink) the current window.  Given a numeric argument, grow
1331 the current window that many lines; with a negative numeric argument,
1332 shrink the window instead.
1333
1334 @item @kbd{C-x @key{t}} (@code{tile-windows})
1335 @cindex tiling
1336 @kindex C-x t
1337 @findex tile-windows
1338 Divide the available screen space among all of the visible windows.
1339 Each window is given an equal portion of the screen in which to display
1340 its contents.  The variable @code{automatic-tiling} can cause
1341 @code{tile-windows} to be called when a window is created or deleted.
1342 @xref{Variables, , @code{automatic-tiling}}.
1343 @end table
1344
1345 @node The Echo Area
1346 @section The Echo Area
1347 @cindex echo area
1348
1349 The @dfn{echo area} is a one line window which appears at the bottom of
1350 the screen.  It is used to display informative or error messages, and to
1351 read lines of input from you when that is necessary.  Almost all of the
1352 commands available in the echo area are identical to their Emacs
1353 counterparts, so please refer to that documentation for greater depth of
1354 discussion on the concepts of editing a line of text.  The following
1355 table briefly lists the commands that are available while input is being
1356 read in the echo area:
1357
1358 @table @asis
1359 @item @key{C-f} (@code{echo-area-forward})
1360 @itemx @key{RIGHT} (an arrow key)
1361 @itemx @key{M-h}, vi-like operation
1362 @kindex C-f, in the echo area
1363 @kindex RIGHT, in the echo area
1364 @kindex M-h, in the echo area, vi-like operation
1365 @findex echo-area-forward
1366 Move forward a character.
1367
1368 @item @key{C-b} (@code{echo-area-backward})
1369 @itemx @key{LEFT} (an arrow key)
1370 @itemx @key{M-l}, vi-like operation
1371 @kindex LEFT, in the echo area
1372 @kindex C-b, in the echo area
1373 @kindex M-l, in the echo area, vi-like operation
1374 @findex echo-area-backward
1375 Move backward a character.
1376
1377 @item @key{C-a} (@code{echo-area-beg-of-line})
1378 @itemx @key{M-0}, vi-like operation
1379 @kindex C-a, in the echo area
1380 @kindex M-0, in the echo area, vi-like operation
1381 @findex echo-area-beg-of-line
1382 Move to the start of the input line.
1383
1384 @item @key{C-e} (@code{echo-area-end-of-line})
1385 @itemx @key{M-$}, vi-like operation
1386 @kindex C-e, in the echo area
1387 @kindex M-$, vi-like operation
1388 @findex echo-area-end-of-line
1389 Move to the end of the input line.
1390
1391 @item @key{M-f} (@code{echo-area-forward-word})
1392 @itemx @key{C-@key{RIGHT}} (DOS/Windows only)
1393 @itemx @key{M-w}, vi-like operation
1394 @kindex M-f, in the echo area
1395 @kindex M-w, in the echo area, vi-like operation
1396 @findex echo-area-forward-word
1397 Move forward a word.
1398
1399 @kindex C-RIGHT, in the echo area
1400 On DOS/Windows, @kbd{C-@key{RIGHT}} moves forward by words.
1401
1402 @item @key{M-b} (@code{echo-area-backward-word})
1403 @itemx @key{C-@key{LEFT}} (DOS/Windows only)
1404 @kindex M-b, in the echo area
1405 @findex echo-area-backward-word
1406 Move backward a word.
1407
1408 @kindex C-LEFT, in the echo area
1409 On DOS/Windows, @kbd{C-@key{LEFT}} moves backward by words.
1410
1411 @item @key{C-d} (@code{echo-area-delete})
1412 @itemx @key{M-x}, vi-like operation
1413 @kindex C-d, in the echo area
1414 @kindex M-x, in the echo area, vi-like operation
1415 @findex echo-area-delete
1416 Delete the character under the cursor.
1417
1418 @item @key{DEL} (@code{echo-area-rubout})
1419 @kindex DEL, in the echo area
1420 @findex echo-area-rubout
1421 Delete the character behind the cursor.
1422
1423 On some keyboards, this key is designated @key{BS}, for
1424 @samp{BackSpace}.  Those keyboards will usually bind @key{DEL} in the
1425 echo area to @code{echo-area-delete}.
1426
1427 @item @key{C-g} (@code{echo-area-abort})
1428 @itemx @key{C-u}, vi-like operation
1429 @kindex C-g, in the echo area
1430 @kindex C-u, in the echo area, vi-like operation
1431 @findex echo-area-abort
1432 Cancel or quit the current operation.  If completion is being read, this
1433 command discards the text of the input line which does not match any
1434 completion.  If the input line is empty, it aborts the calling function.
1435
1436 @item @key{RET} (@code{echo-area-newline})
1437 @kindex RET, in the echo area
1438 @findex echo-area-newline
1439 Accept (or forces completion of) the current input line.
1440
1441 @item @key{C-q} (@code{echo-area-quoted-insert})
1442 @itemx @key{C-v}, vi-like operation
1443 @kindex C-q, in the echo area
1444 @kindex C-v, in the echo area, vi-like operation
1445 @findex echo-area-quoted-insert
1446 Insert the next character verbatim.  This is how you can insert control
1447 characters into a search string, for example, or the @samp{?} character
1448 when Info prompts with completion.
1449
1450 @item @var{printing character} (@code{echo-area-insert})
1451 @kindex printing characters, in the echo area
1452 @findex echo-area-insert
1453 Insert the character.  Characters that have their 8th bit set, and not
1454 bound to @samp{M-} commands, are also inserted verbatim; this is useful
1455 for terminals which support Latin scripts.
1456
1457 @item @key{M-TAB} (@code{echo-area-tab-insert})
1458 @itemx @key{Shift-@key{TAB}} (on DOS/Windows only)
1459 @kindex M-TAB, in the echo area
1460 @kindex Shift-TAB, in the echo area
1461 @findex echo-area-tab-insert
1462 Insert a TAB character.
1463
1464 @kindex Shift-TAB, in the echo area
1465 @kindex BackTab, in the echo area
1466 On DOS/Windows only, the @kbd{Shift-@key{TAB}} key is an alias for
1467 @kbd{M-@key{TAB}}.  This key is sometimes called @samp{BackTab}.
1468
1469 @item @key{C-t} (@code{echo-area-transpose-chars})
1470 @kindex C-t, in the echo area
1471 @findex echo-area-transpose-chars
1472 Transpose the characters at the cursor.
1473 @end table
1474
1475 The next group of commands deal with @dfn{killing}, and @dfn{yanking}
1476 text@footnote{
1477 Some people are used to calling these operations @dfn{cut} and
1478 @dfn{paste}, respectively.}.   For an in-depth discussion of killing and
1479 yanking, see @ref{Killing, , Killing and Deleting, emacs, the GNU Emacs
1480 Manual}.
1481
1482 @table @asis
1483 @item @key{M-d} (@code{echo-area-kill-word})
1484 @itemx @key{M-X}, vi-like operation
1485 @kindex M-d, in the echo area
1486 @kindex M-X, in the echo area, vi-like operation
1487 @findex echo-area-kill-word
1488 Kill the word following the cursor.
1489
1490 @item @key{M-DEL} (@code{echo-area-backward-kill-word})
1491 @itemx @key{M-@key{BS}}
1492 @kindex M-DEL, in the echo area
1493 @findex echo-area-backward-kill-word
1494 Kill the word preceding the cursor.
1495
1496 @kindex M-BS, in the echo area
1497 On some keyboards, the @code{Backspace} key is used instead of
1498 @code{DEL}, so @code{M-@key{Backspace}} has the same effect as
1499 @code{M-@key{DEL}}.
1500
1501 @item @key{C-k} (@code{echo-area-kill-line})
1502 @kindex C-k, in the echo area
1503 @findex echo-area-kill-line
1504 Kill the text from the cursor to the end of the line.
1505
1506 @item @kbd{C-x @key{DEL}} (@code{echo-area-backward-kill-line})
1507 @kindex C-x DEL, in the echo area
1508 @findex echo-area-backward-kill-line
1509 Kill the text from the cursor to the beginning of the line.
1510
1511 @item @key{C-y} (@code{echo-area-yank})
1512 @kindex C-y, in the echo area
1513 @findex echo-area-yank
1514 Yank back the contents of the last kill.
1515
1516 @item @key{M-y} (@code{echo-area-yank-pop})
1517 @kindex M-y, in the echo area
1518 @findex echo-area-yank-pop
1519 Yank back a previous kill, removing the last yanked text first.
1520 @end table
1521
1522 @cindex completion
1523 Sometimes when reading input in the echo area, the command that needed
1524 input will only accept one of a list of several choices.  The choices
1525 represent the @dfn{possible completions}, and you must respond with one
1526 of them.  Since there are a limited number of responses you can make,
1527 Info allows you to abbreviate what you type, only typing as much of the
1528 response as is necessary to uniquely identify it.  In addition, you can
1529 request Info to fill in as much of the response as is possible; this
1530 is called @dfn{completion}.
1531
1532 The following commands are available when completing in the echo area:
1533
1534 @table @asis
1535 @item @key{TAB} (@code{echo-area-complete})
1536 @itemx @key{SPC}
1537 @kindex TAB, in the echo area
1538 @kindex SPC, in the echo area
1539 @findex echo-area-complete
1540 Insert as much of a completion as is possible.
1541
1542 @item @key{?} (@code{echo-area-possible-completions})
1543 @kindex ?, in the echo area
1544 @findex echo-area-possible-completions
1545 Display a window containing a list of the possible completions of what
1546 you have typed so far.  For example, if the available choices are:
1547
1548 @example
1549 @group
1550 bar
1551 foliate
1552 food
1553 forget
1554 @end group
1555 @end example
1556
1557 @noindent
1558 and you have typed an @samp{f}, followed by @samp{?}, Info will pop up a
1559 window showing a node called @samp{*Completions*} which lists the
1560 possible completions like this:
1561
1562 @example
1563 @group
1564 3 completions:
1565 foliate         food
1566 forget
1567 @end group
1568 @end example
1569
1570 @noindent
1571 i.e., all of the choices which begin with @samp{f}.  Pressing @key{SPC}
1572 or @key{TAB} would result in @samp{fo} appearing in the echo area, since
1573 all of the choices which begin with @samp{f} continue with @samp{o}.
1574 Now, typing @samp{l} followed by @samp{TAB} results in @samp{foliate}
1575 appearing in the echo area, since that is the only choice which begins
1576 with @samp{fol}.
1577
1578 @item @key{ESC C-v} (@code{echo-area-scroll-completions-window})
1579 @kindex ESC C-v, in the echo area
1580 @findex echo-area-scroll-completions-window
1581 Scroll the completions window, if that is visible, or the ``other''
1582 window if not.
1583 @end table
1584
1585
1586 @node Printing Nodes
1587 @chapter Printing Nodes
1588 @cindex printing
1589
1590 In general, we recommend that you use @TeX{} to format the document and
1591 print sections of it, by running @code{tex} on the Texinfo source file.
1592 However, you may wish to print out the contents of a node as a quick
1593 reference document for later use, or if you don't have @TeX{} installed.
1594 Info provides you with a command for doing this.
1595
1596 @table @asis
1597 @item @kbd{M-x print-node}
1598 @findex print-node
1599 @cindex INFO_PRINT_COMMAND, environment variable
1600 Pipe the contents of the current node through the command in the
1601 environment variable @code{INFO_PRINT_COMMAND}.  If the variable does not
1602 exist, the node is simply piped to @code{lpr} (on DOS/Windows, the
1603 default is to print the node to the local printer device, @file{PRN}).
1604
1605 @cindex printing nodes to the local printer
1606 @cindex local printer device
1607 The value of @code{INFO_PRINT_COMMAND} may begin with the @samp{>}
1608 character, as in @samp{>/dev/printer}, in which case Info treats the
1609 rest as the name of a file or a device.  Instead of piping to a command,
1610 Info opens the file, writes the node contents, and closes the file,
1611 under the assumption that text written to that file will be printed by
1612 the underlying OS.
1613 @end table
1614
1615
1616 @node Miscellaneous Commands
1617 @chapter Miscellaneous Commands
1618
1619 GNU Info contains several commands which self-document GNU Info:
1620
1621 @table @asis
1622 @item @kbd{M-x describe-command}
1623 @cindex functions, describing
1624 @cindex commands, describing
1625 @findex describe-command
1626 Read the name of an Info command in the echo area and then display a
1627 brief description of what that command does.
1628
1629 @item @kbd{M-x describe-key}
1630 @cindex keys, describing
1631 @findex describe-key
1632 Read a key sequence in the echo area, and then display the name and
1633 documentation of the Info command that the key sequence invokes.
1634
1635 @item @kbd{M-x describe-variable}
1636 Read the name of a variable in the echo area and then display a brief
1637 description of what the variable affects.
1638
1639 @item @kbd{M-x where-is}
1640 @findex where-is
1641 Read the name of an Info command in the echo area, and then display
1642 a key sequence which can be typed in order to invoke that command.
1643
1644 @item @key{C-h} (@code{get-help-window})
1645 @itemx @key{?}
1646 @itemx @key{F1} (on DOS/Windows only)
1647 @itemx h, vi-like operation
1648 @kindex C-h
1649 @kindex ?, in Info windows
1650 @kindex F1
1651 @kindex h, vi-like operation
1652 @findex get-help-window
1653 Create (or Move into) the window displaying @code{*Help*}, and place
1654 a node containing a quick reference card into it.  This window displays
1655 the most concise information about GNU Info available.
1656
1657 @item @key{h} (@code{get-info-help-node})
1658 @itemx @key{M-h}, vi-like operation
1659 @kindex h
1660 @kindex M-h, vi-like operation
1661 @findex get-info-help-node
1662 Try hard to visit the node @code{(info)Help}.  The Info file
1663 @file{info.texi} distributed with GNU Info contains this node.  Of
1664 course, the file must first be processed with @code{makeinfo}, and then
1665 placed into the location of your Info directory.
1666 @end table
1667
1668 Here are the commands for creating a numeric argument:
1669
1670 @table @asis
1671 @item @key{C-u} (@code{universal-argument})
1672 @cindex numeric arguments
1673 @kindex C-u
1674 @findex universal-argument
1675 Start (or multiply by 4) the current numeric argument.  @samp{C-u} is
1676 a good way to give a small numeric argument to cursor movement or
1677 scrolling commands; @samp{C-u C-v} scrolls the screen 4 lines, while
1678 @samp{C-u C-u C-n} moves the cursor down 16 lines.  @samp{C-u} followed
1679 by digit keys sets the numeric argument to the number thus typed:
1680 @kbd{C-u 1 2 0} sets the argument to 120.
1681
1682 @item @key{M-1} (@code{add-digit-to-numeric-arg})
1683 @itemx @key{1}, vi-like operation
1684 @itemx @key{M-2} @dots{} @key{M-9}
1685 @itemx @key{2} @dots{} @key{9}, vi-like operation
1686 @itemx @key{M-0}
1687 @itemx @key{0}, vi-like operation
1688 @kindex M-0 @dots{} M-9
1689 @kindex 0 @dots{} 9, vi-like operation
1690 @findex add-digit-to-numeric-arg
1691 Add the digit value of the invoking key to the current numeric
1692 argument.  Once Info is reading a numeric argument, you may just type
1693 the digits of the argument, without the Meta prefix.  For example, you
1694 might give @samp{C-l} a numeric argument of 32 by typing:
1695
1696 @example
1697 @kbd{C-u 3 2 C-l}
1698 @end example
1699
1700 @noindent
1701 or
1702
1703 @example
1704 @kbd{M-3 2 C-l}
1705 @end example
1706
1707 @item @key{M--} (@code{add-digit-to-numeric-arg}
1708 @itemx @key{-}
1709 @kindex M--
1710 @kindex -
1711 @cindex negative arguments
1712 @cindex arguments, negative
1713 @cindex numeric arguments, negative
1714 To make a negative argument, type @kbd{-}.  Typing @kbd{-} alone makes a
1715 negative argument with a value of -1.  If you continue to type digit or
1716 Meta-digit keys after @kbd{-}, the result is a negative number produced
1717 by those digits.
1718
1719 @kbd{-} doesn't work when you type in the echo area, because you need to
1720 be able to insert the @samp{-} character itself; use @kbd{M--} instead,
1721 if you need to specify negative arguments in the echo area.
1722 @end table
1723
1724 @samp{C-g} is used to abort the reading of a multi-character key
1725 sequence, to cancel lengthy operations (such as multi-file searches) and
1726 to cancel reading input in the echo area.
1727
1728 @table @asis
1729 @item @key{C-g} (@code{abort-key})
1730 @itemx @key{C-u}, vi-like operation
1731 @cindex cancelling typeahead
1732 @cindex cancelling the current operation
1733 @kindex C-g, in Info windows
1734 @kindex C-u cancels typeahead, vi-like operation
1735 @findex abort-key
1736 Cancel current operation.
1737 @end table
1738
1739 The @samp{q} command of Info simply quits running Info.  Under
1740 @samp{--vi-keys} (@pxref{--vi-keys}), you can also exit with @samp{:q}
1741 or @samp{ZZ}.
1742
1743 @table @asis
1744 @item @key{q} (@code{quit})
1745 @itemx @kbd{C-x C-c}
1746 @itemx @kbd{:q}, vi-like operation
1747 @itemx @kbd{ZZ}, vi-like operation
1748 @cindex quitting
1749 @kindex q
1750 @kindex C-x C-c
1751 @kindex ZZ, vi-like operation
1752 @findex quit
1753 Exit GNU Info.
1754 @end table
1755
1756 If the operating system tells GNU Info that the screen is 60 lines tall,
1757 and it is actually only 40 lines tall, here is a way to tell Info that
1758 the operating system is correct.
1759
1760 @table @asis
1761 @item @kbd{M-x set-screen-height}
1762 @findex set-screen-height
1763 @cindex screen, changing the height of
1764 Read a height value in the echo area and set the height of the
1765 displayed screen to that value.
1766 @end table
1767
1768 On MS-DOS/MS-Windows, this command actually tries to change the
1769 dimensions of the visible screen to the value you type in the echo
1770 area.
1771
1772 Finally, Info provides a convenient way to display footnotes which might
1773 be associated with the current node that you are viewing:
1774
1775 @table @asis
1776 @item @key{ESC C-f} (@code{show-footnotes})
1777 @kindex ESC C-f
1778 @findex show-footnotes
1779 @cindex footnotes, displaying
1780 Show the footnotes (if any) associated with the current node in another
1781 window.  You can have Info automatically display the footnotes
1782 associated with a node when the node is selected by setting the variable
1783 @code{automatic-footnotes}.  @xref{Variables, , @code{automatic-footnotes}}.
1784 @end table
1785
1786
1787 @node Variables
1788 @chapter Manipulating Variables
1789
1790 GNU Info contains several @dfn{variables} whose values are looked at by
1791 various Info commands.  You can change the values of these variables,
1792 and thus change the behavior of Info to more closely match your
1793 environment and Info file reading manner.
1794
1795 There are two ways to set the value of a variable: interactively, using
1796 the @code{set-variable} command described below, or in the @code{#var}
1797 section of the @code{.infokey} file.  @xref{Custom Key Bindings}.
1798
1799 @table @asis
1800 @item @kbd{M-x set-variable}
1801 @cindex variables, setting
1802 @findex set-variable
1803 Read the name of a variable, and the value for it, in the echo area and
1804 then set the variable to that value.  Completion is available when
1805 reading the variable name (@pxref{The Echo Area, completion}); often,
1806 completion is available when reading the value to give to the variable,
1807 but that depends on the variable itself.  If a variable does @emph{not}
1808 supply multiple choices to complete over, it expects a numeric value.
1809
1810 @item @kbd{M-x describe-variable}
1811 @cindex variables, describing
1812 @findex describe-variable
1813 Read the name of a variable in the echo area and then display a brief
1814 description of what the variable affects.
1815 @end table
1816
1817 Here is a list of the variables that you can set in Info.
1818
1819 @table @code
1820 @item automatic-footnotes
1821 @vindex automatic-footnotes
1822 When set to @code{On}, footnotes appear and disappear automatically;
1823 else, they appear at the bottom of the node text.  This variable is
1824 @code{Off} by default.  When a node is selected, a window containing
1825 the footnotes which appear in that node is created, and the footnotes
1826 are displayed within the new window.  The window that Info creates to
1827 contain the footnotes is called @samp{*Footnotes*}.  If a node is
1828 selected which contains no footnotes, and a @samp{*Footnotes*} window
1829 is on the screen, the @samp{*Footnotes*} window is deleted.  Footnote
1830 windows created in this fashion are not automatically tiled so that
1831 they can use as little of the display as is possible.
1832
1833 @item automatic-tiling
1834 @vindex automatic-tiling
1835 When set to @code{On}, creating or deleting a window resizes other
1836 windows.  This variable is @code{Off} by default.  Normally, typing
1837 @samp{C-x 2} divides the current window into two equal parts.  When
1838 @code{automatic-tiling} is set to @code{On}, all of the windows are
1839 resized automatically, keeping an equal number of lines visible in each
1840 window.  There are exceptions to the automatic tiling; specifically, the
1841 windows @samp{*Completions*} and @samp{*Footnotes*} are @emph{not}
1842 resized through automatic tiling; they remain their original size.
1843
1844 @item errors-ring-bell
1845 @vindex errors-ring-bell
1846 When set to @code{On}, errors cause the bell to ring.  The default
1847 setting of this variable is @code{On}.
1848
1849 @item gc-compressed-files
1850 @vindex gc-compressed-files
1851 When set to @code{On}, Info garbage collects files which had to be
1852 uncompressed.  The default value of this variable is @code{Off}.
1853 Whenever a node is visited in Info, the Info file containing that node
1854 is read into core, and Info reads information about the tags and nodes
1855 contained in that file.  Once the tags information is read by Info, it
1856 is never forgotten.  However, the actual text of the nodes does not need
1857 to remain in core unless a particular Info window needs it.  For
1858 non-compressed files, the text of the nodes does not remain in core when
1859 it is no longer in use.  But de-compressing a file can be a time
1860 consuming operation, and so Info tries hard not to do it twice.
1861 @code{gc-compressed-files} tells Info it is okay to garbage collect the
1862 text of the nodes of a file which was compressed on disk.
1863
1864 @item ISO-Latin
1865 @cindex ISO Latin characters
1866 @vindex ISO-Latin
1867 When set to @code{On}, Info accepts and displays ISO Latin characters.
1868 By default, Info assumes an ASCII character set.  @code{ISO-Latin} tells
1869 Info that it is running in an environment where the European standard
1870 character set is in use, and allows you to input such characters to
1871 Info, as well as display them.
1872
1873 @item scroll-behavior
1874 @vindex scroll-behavior
1875 Control what happens when forward scrolling is requested at the end of
1876 a node, or when backward scrolling is requested at the beginning of a
1877 node.  The default value for this variable is @code{Continuous}.  There
1878 are three possible values for this variable:
1879
1880 @table @code
1881 @item Continuous
1882 Try to get the first item in this node's menu, or failing that, the
1883 @samp{Next} node, or failing that, the @samp{Next} of the @samp{Up}.
1884 This behavior is identical to using the @samp{]}
1885 (@code{global-next-node}) and @samp{[} (@code{global-prev-node})
1886 commands.
1887
1888 @item Next Only
1889 Only try to get the @samp{Next} node.
1890
1891 @item Page Only
1892 Simply give up, changing nothing.  If @code{scroll-behavior} is
1893 @code{Page Only}, no scrolling command can change the node that is being
1894 viewed.
1895 @end table
1896
1897 @item scroll-step
1898 @vindex scroll-step
1899 The number of lines to scroll when the cursor moves out of the window.
1900 Scrolling happens automatically if the cursor has moved out of the
1901 visible portion of the node text when it is time to display.  Usually
1902 the scrolling is done so as to put the cursor on the center line of the
1903 current window.  However, if the variable @code{scroll-step} has a
1904 nonzero value, Info attempts to scroll the node text by that many lines;
1905 if that is enough to bring the cursor back into the window, that is what
1906 is done.  The default value of this variable is 0, thus placing the
1907 cursor (and the text it is attached to) in the center of the window.
1908 Setting this variable to 1 causes a kind of ``smooth scrolling'' which
1909 some people prefer.
1910
1911 @item show-index-match
1912 @vindex show-index-match
1913 When set to @code{On}, the portion of the matched search string is
1914 highlighted in the message which explains where the matched search
1915 string was found.  The default value of this variable is @code{On}.
1916 When Info displays the location where an index match was found,
1917 (@pxref{Searching Commands, , @code{next-index-match}}), the portion of the
1918 string that you had typed is highlighted by displaying it in the inverse
1919 case from its surrounding characters.
1920
1921 @item visible-bell
1922 @vindex visible-bell
1923 When set to @code{On}, GNU Info attempts to flash the screen instead of
1924 ringing the bell.  This variable is @code{Off} by default.  Of course,
1925 Info can only flash the screen if the terminal allows it; in the case
1926 that the terminal does not allow it, the setting of this variable has no
1927 effect.  However, you can make Info perform quietly by setting the
1928 @code{errors-ring-bell} variable to @code{Off}.
1929
1930 @end table
1931
1932
1933 @node Custom Key Bindings
1934 @chapter Customizing Key Bindings and Variables
1935
1936 @cindex default key bindings, overriding
1937 @cindex overriding default key bindings
1938 @cindex customizing key bindings
1939 @cindex key bindings, customizing
1940 @cindex infokey
1941 @cindex .info
1942 @cindex .infokey
1943 @cindex _info file (MS-DOS)
1944
1945 For those whose editor/pager of choice is not Emacs and who are not
1946 entirely satisfied with the --vi-keys option (@pxref{--vi-keys}), GNU
1947 Info provides a way to define different key-to-command bindings and
1948 variable settings from the defaults described in this document.
1949
1950 On startup, GNU Info looks for a configuration file in the invoker's
1951 HOME directory called @file{.info}@footnote{Due to the limitations of
1952 DOS filesystems, the MS-DOS version of Info looks for a file
1953 @file{_info} instead.  If the @env{HOME} variable is not defined, Info
1954 additionally looks in the current directory.}.  If it is present, and
1955 appears to contain Info configuration data, and was created with the
1956 current version of the @code{infokey} command, then Info adopts the
1957 key bindings and variable settings contained therein.
1958
1959 The @file{.info} file contains compact, non-textual data for reasons of
1960 efficiency and because its design was lifted wholesale from the GNU Less
1961 program, which also does it that way.  It must be created by compiling a
1962 textual source file using the @code{infokey} command.
1963
1964 @menu
1965 * Invoking infokey::
1966 * infokey source format::
1967 @end menu
1968
1969
1970 @node Invoking infokey
1971 @section Invoking @command{infokey}
1972
1973 @cindex invoking infokey
1974 @cindex infokey, invoking
1975 @cindex _infokey file (MS-DOS)
1976
1977 @command{infokey} compiles a source file
1978 (@file{$HOME/.infokey}@footnote{This file is named @file{_infokey} in
1979 the MS-DOS version, and is looked for in the current directory if
1980 @env{HOME} is undefined.} by default) containing Info customizations
1981 into a binary format (@file{$HOME/.info} by default).  GNU Info reads
1982 the binary file at startup to override the default key bindings and
1983 variable definitions.  Synopsis:
1984
1985 @example
1986 infokey [@var{option}@dots{}] [@var{input-file}]
1987 @end example
1988
1989 Besides the standard @option{--help} and @option{--version}, the only
1990 option is @option{--output @var{file}}.  This tells @command{infokey} to
1991 write the binary data to @var{file} instead of @file{$HOME/.info}.
1992
1993
1994 @node infokey source format
1995 @section @command{infokey} source format
1996
1997 @cindex infokey source format
1998 @cindex .infokey source format
1999 @cindex format of .infokey source
2000
2001 The format of the source file read by @command{infokey} is most easily
2002 illustrated by example.  For instance, here is a sample @file{.infokey}
2003 source file suitable for aficionados of @command{vi} or @command{less}:
2004
2005 @example
2006 #info
2007 j       next-line
2008 k       prev-line
2009 l       forward-char
2010 h       backward-char
2011 \kd     next-line
2012 \ku     prev-line
2013 \kr     forward-char
2014 \kl     backward-char
2015 \       scroll-forward
2016 \kD     scroll-forward-page-only
2017 b       scroll-backward
2018 \kU     scroll-backward-page-only
2019 g       beginning-of-node
2020 \kh     beginning-of-node
2021 G       end-of-node
2022 \ke     end-of-node
2023 \t      select-reference-this-line
2024 -       history-node
2025 n       next-node
2026 p       prev-node
2027 u       up-node
2028 t       top-node
2029 d       dir-node
2030 #var
2031 scroll-step=1
2032 @end example
2033
2034 The source file consists of one or more @dfn{sections}.
2035 Each section starts with a line that identifies the type of section.
2036 Possible sections are:
2037
2038 @table @code
2039 @item #info
2040 Key bindings for Info windows.
2041 The start of this section is indicated by a line containing just
2042 @code{#info} by itself.  If this is the first section in the source
2043 file, the @code{#info} line can be omitted.  The rest of this section
2044 consists of lines of the form:
2045
2046 @example
2047 @var{string} whitespace @var{action} [ whitespace [ # comment ] ] newline
2048 @end example
2049
2050 Whitespace is any sequence of one or more spaces and/or tabs.  Comment
2051 is any sequence of any characters, excluding newline.  @var{string} is
2052 the key sequence which invokes the action.  @var{action} is the name of
2053 an Info command.  The characters in @var{string} are interpreted
2054 literally or prefixed by a caret (@code{^}) to indicate a control
2055 character.  A backslash followed by certain characters specifies input
2056 keystrokes as follows:
2057
2058 @table @code
2059 @item \b
2060 Backspace
2061 @item \e
2062 Escape (ESC)
2063 @item \n
2064 Newline
2065 @item \r
2066 Return
2067 @item \t
2068 Tab
2069 @item \ku
2070 Up arrow
2071 @item \kd
2072 Down arrow
2073 @item \kl
2074 Left arrow
2075 @item \kr
2076 Right arrow
2077 @item \kU
2078 Page Up
2079 @item \kD
2080 Page Down
2081 @item \kh
2082 HOME
2083 @item \ke
2084 END
2085 @item \kx
2086 Delete (DEL)
2087 @item \m@var{x}
2088 Meta-@var{x} where @var{x} is any character as described above.
2089 @end table
2090
2091 Backslash followed by any other character indicates that character is to
2092 be taken literally.  Characters which must be preceded by a backslash
2093 include caret, space, tab, and backslash itself.
2094
2095 @item #echo-area
2096 Key bindings for the echo area.
2097 The start of this section is indicated by a line containing just
2098 @code{#echo-area} by itself.  The rest of this section has a syntax
2099 identical to that for the key definitions for the Info area, described
2100 above.
2101
2102 @item #var
2103 Variable initializations.
2104 The start of this section is indicated by a line containing just
2105 @code{#var} by itself.  Following this line is a list of variable
2106 assignments, one per line.  Each line consists of a variable name
2107 (@xref{Variables},) followed by @code{=} followed by a value.
2108 There may be no white space between the variable name and the @code{=},
2109 and all characters following the @code{=}, including white space,
2110 are included in the value.
2111 @end table
2112
2113 Blank lines and lines starting with @code{#} are ignored, except for
2114 the special section header lines.
2115
2116 Key bindings defined in the @file{.info} file take precedence over GNU
2117 Info's default key bindings, whether or not @samp{--vi-keys} is used.  A
2118 default key binding may be disabled by overriding it in the @file{.info}
2119 file with the action @code{invalid}.  In addition, @emph{all} default
2120 key bindings can be disabled by adding this line @emph{anywhere} in the
2121 relevant section:
2122
2123 @example
2124 #stop
2125 @end example
2126
2127 This will cause GNU Info to ignore all the default key commands for that
2128 section.
2129
2130 Beware: @code{#stop} can be dangerous.  Since it disables all default
2131 key bindings, you must supply enough new key bindings to enable all
2132 necessary actions.  Failure to bind any key to the @code{quit} command,
2133 for example, can lead to frustration.
2134
2135 The order in which key bindings are defined in the @file{.info} file is
2136 not important, except that the command summary produced by the
2137 @code{get-help-window} command only displays the @emph{first} key that
2138 is bound to each command.
2139
2140
2141 @c the following is incomplete
2142 @ignore
2143 @c node Info for Sys Admins
2144 @c chapter Info for System Administrators
2145
2146 This text describes some common ways of setting up an Info hierarchy
2147 from scratch, and details the various options that are available when
2148 installing Info.  This text is designed for the person who is installing
2149 GNU Info on the system; although users may find the information present
2150 in this section interesting, none of it is vital to understanding how to
2151 use GNU Info.
2152
2153 @menu
2154 * Setting the INFOPATH::        Where are my Info files kept?
2155 * Editing the DIR node::        What goes in `DIR', and why?
2156 * Storing Info files::          Alternate formats allow flexibility in setups.
2157 * Using `localdir'::            Building DIR on the fly.
2158 * Example setups::              Some common ways to organize Info files.
2159 @end menu
2160
2161 @c node Setting the INFOPATH
2162 @c section Setting the INFOPATH
2163
2164 Where are my Info files kept?
2165
2166 @c node Editing the DIR node
2167 @c section Editing the DIR node
2168
2169 What goes in `DIR', and why?
2170
2171 @c node Storing Info files
2172 @c section Storing Info files
2173
2174 Alternate formats allow flexibility in setups.
2175
2176 @c node Using `localdir'
2177 @c section Using `localdir'
2178
2179 Building DIR on the fly.
2180
2181 @c node Example setups
2182 @c section Example setups
2183
2184 Some common ways to organize Info files.
2185 @end ignore
2186
2187
2188 @node Copying This Manual
2189 @appendix Copying This Manual
2190
2191 @menu
2192 * GNU Free Documentation License::  License for copying this manual.
2193 @end menu
2194
2195 @include fdl.texi
2196
2197
2198 @node Index
2199 @appendix Index
2200
2201 @printindex cp
2202
2203 @bye