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