@node Help, Mark, M-x, Top
@chapter Help
+@kindex Help
@cindex help
@cindex self-documentation
+@findex help-command
+@kindex C-h
+@kindex F1
- Emacs provides extensive help features which revolve around a single
+ XEmacs provides extensive help features accessible through a single
character, @kbd{C-h}. @kbd{C-h} is a prefix key that is used only for
-documentation-printing commands. The characters you can type after
+documentation-printing commands. The characters that you can type after
@kbd{C-h} are called @dfn{help options}. One help option is @kbd{C-h};
-you use it to ask for help about using @kbd{C-h}.
+that is how you ask for help about using @kbd{C-h}. To cancel, type
+@kbd{C-g}. The function key @key{F1} is equivalent to @kbd{C-h}.
- @kbd{C-h C-h} prints a list of the possible help options, and then asks
-you to type the desired option. It prompts with the string:
+@kindex C-h C-h
+@findex help-for-help
+ @kbd{C-h C-h} (@code{help-for-help}) displays a list of the possible
+help options, and then asks you to type the desired option. It prompts
+with the string:
@smallexample
-A, B, C, F, I, K, L, M, N, S, T, V, W, C-c, C-d, C-n, C-w or C-h for more help:
+A B C F I K L M N P S T V W C-c C-d C-f C-i C-k C-n C-w; ? for more help:
@end smallexample
@noindent
Typing a third @kbd{C-h} displays a description of what the options mean;
Emacs still waits for you to type an option. To cancel, type @kbd{C-g}.
+ Most help buffers use a special major mode, Help mode, which lets you
+scroll conveniently with @key{SPC} and @key{DEL} or @key{BS}.
+
+@menu
+* Help Summary:: Brief list of all Help commands.
+* Key Help:: Asking what a key does in XEmacs.
+* Name Help:: Asking about a command, variable or function name.
+* Apropos:: Asking what pertains to a given topic.
+* Library Keywords:: Finding Lisp libraries by keywords (topics).
+* Help Mode:: Special features of Help mode and Help buffers.
+* Misc Help:: Other help commands.
+@end menu
+
+@iftex
+@node Help Summary, Help Summary, Help, Help
+@end iftex
+@ifinfo
+@node Help Summary, Key Help, Help, Help
+@section Help Summary
+@end ifinfo
+
Here is a summary of the defined help commands.
@table @kbd
-@item C-h a @var{string} @key{RET}
-Display a list of commands whose names contain @var{string}
-(@code{command-@*apropos}).@refill
+@item C-h a @var{regexp} @key{RET}
+Display a list of functions and variables whose names match @var{regexp}
+(@code{hyper-apropos}).
+@item C-h A @var{regexp}
+Show all commands whose names contain matches for @var{regexp}
+(@code{command-apropos}).
@item C-h b
-Display a table of all key bindings currently in effect, with local bindings of
-the current major mode first, followed by all global bindings
-(@code{describe-bindings}).
+Display a table of all key bindings currently in effect, with local
+bindings of the current major mode first, followed by all global
+bindings (@code{describe-bindings}).
@item C-h c @var{key}
-Print the name of the command that @var{key} runs (@code{describe-key-@*briefly}).
-@kbd{c} is for `character'. For more extensive information on @var{key},
-use @kbd{C-h k}.
-@item C-h f @var{function} @key{RET}
+Print the name of the command that @var{key} runs
+(@code{describe-key-briefly}). Here @kbd{c} stands for `character'. For more
+extensive information on @var{key}, use @kbd{C-h k}.
+@item C-h d @var{function} @key{RET}
+@itemx C-h f @var{function} @key{RET}
Display documentation on the Lisp function named @var{function}
-(@code{describe-function}). Note that commands are Lisp functions, so
+(@code{describe-function}). Since commands are Lisp functions,
a command name may be used.
@item C-h i
Run Info, the program for browsing documentation files (@code{info}).
-The complete Emacs manual is available online in Info.
+The complete XEmacs manual is available online in Info.
@item C-h k @var{key}
-Display name and documentation of the command @var{key} runs (@code{describe-key}).
+Display the name and documentation of the command that @var{key} runs
+(@code{describe-key}).
@item C-h l
Display a description of the last 100 characters you typed
(@code{view-lossage}).
@item C-h m
Display documentation of the current major mode (@code{describe-mode}).
@item C-h n
-Display documentation of Emacs changes, most recent first
+@itemx C-h C-n
+Display documentation of XEmacs changes, most recent first
(@code{view-emacs-news}).
@item C-h p
+Find packages by topic keyword (@code{finder-by-keyword}).
+@item C-h C-p
Display a table of all mouse bindings currently in effect now, with
-local bindings of the current major mode first, followed by all global bindings
-(@code{describe-pointer}).
+local bindings of the current major mode first, followed by all global
+bindings (@code{describe-pointer}).
@item C-h s
Display current contents of the syntax table, plus an explanation of
-what they mean (@code{describe-syntax}).
+what they mean (@code{describe-syntax}). @xref{Syntax}.
@item C-h t
-Display the Emacs tutorial (@code{help-with-tutorial}).
+Enter the XEmacs interactive tutorial (@code{help-with-tutorial}).
@item C-h v @var{var} @key{RET}
Display the documentation of the Lisp variable @var{var}
-(@code{describe-@*variable}).
+(@code{describe-variable}).
@item C-h w @var{command} @key{RET}
Print which keys run the command named @var{command} (@code{where-is}).
-@item M-x apropos @var{regexp}
-Show all symbols whose names contain matches for @var{regexp}.
+@item C-h B @key{RET}
+Display info on how to deal with Beta versions of XEmacs
+(@code{describe-beta}).
+@item C-h C @var{group} @key{RET}
+Select customization buffer for @var{group} (@code{customize}).
+@item C-h F @key{RET}
+View the local copy of the XEmacs FAQ (@code{xemacs-local-faq}).
+@item C-h C-i @var{file} @key{RET}
+Read Info file @var{file} with Info browser (@code{Info-query}).
+@item C-h C-c @var{command} @key{RET}
+Look up an Emacs command @var{command} in the Emacs manual in the Info
+system (@code{Info-goto-emacs-command-node}).
+@item C-h C-f @var{function} @key{RET}
+Look up an Emacs Lisp function @var{function} in the Elisp manual in the
+Info system (@code{Info-elisp-ref}).
@end table
+@node Key Help, Name Help, Help Summary, Help
@section Documentation for a Key
@kindex C-h c
@findex describe-key-briefly
The most basic @kbd{C-h} options are @kbd{C-h c}
-(@code{describe-key-briefly}) and @kbd{C-h k}@*(@code{describe-key}).
-@kbd{C-h c @var{key}} prints the name of the command that @var{key} is
-bound to in the echo area. For example, @kbd{C-h c C-f} prints
+(@code{describe-key-briefly}) and @w{@kbd{C-h k}} (@code{describe-key}).
+@kbd{C-h c @var{key}} prints in the echo area the name of the command
+that @var{key} is bound to. For example, @kbd{C-h c C-f} prints
@samp{forward-char}. Since command names are chosen to describe what
-the command does, using this option is a good way to get a somewhat cryptic
-description of what @var{key} does.@refill
+the commands do, this is a good way to get a very brief description of
+what @var{key} does.
@kindex C-h k
@findex describe-key
selection. This information does not usually fit into the echo area, so a
window is used for the display.
+ @kbd{C-h c} and @kbd{C-h k} work for any sort of key sequences,
+including function keys and mouse events.
+
+@node Name Help, Apropos, Key Help, Help
@section Help by Command or Variable Name
@kindex C-h f
@code{describe-function} shows its arglist if the @var{function} is not
an autoload function.
- @kbd{C-h f} is also useful for Lisp functions you are planning to
-use in a Lisp program. For example, if you have just written the code
-@code{(make-vector len)} and want to make sure you are using
-@code{make-vector} properly, type @kbd{C-h f make-vector @key{RET}}. Because
-@kbd{C-h f} allows all function names, not just command names, you may find
-that some of your favorite abbreviations that work in @kbd{M-x} don't work
-in @kbd{C-h f}. An abbreviation may be unique among command names, yet fail
-to be unique when other function names are allowed.
-
-
-If you type @key{RET}, leaving the minibuffer empty, @kbd{C-h f} by
-default describes the function called by the innermost Lisp expression
-in the buffer around point, @i{provided} that that is a valid, defined Lisp
-function name. For example, if point is located following the text
+ @kbd{C-h f} is also useful for Lisp functions that you are planning to
+use in a Lisp program. For example, if you have just written the
+expression @code{(make-vector len)} and want to make sure you are using
+@code{make-vector} properly, type @kbd{C-h f make-vector @key{RET}}.
+Because @kbd{C-h f} allows all function names, not just command names,
+you may find that some of your favorite abbreviations that work in
+@kbd{M-x} don't work in @kbd{C-h f}. An abbreviation may be unique
+among command names, yet fail to be unique when other function names are
+allowed.
+
+ The function name for @kbd{C-h f} to describe has a default which is
+used if you type @key{RET} leaving the minibuffer empty. The default is
+the function called by the innermost Lisp expression in the buffer
+around point, @emph{provided} that is a valid, defined Lisp function
+name. For example, if point is located following the text
@samp{(make-vector (car x)}, the innermost list containing point is the
-one starting with @samp{(make-vector}, so the default is to describe
-the function @code{make-vector}.
+one that starts with @samp{(make-vector}, so the default is to describe the
+function @code{make-vector}.
@kbd{C-h f} is often useful just to verify that you have the right
-spelling for the function name. If @kbd{C-h f} mentions a default in the
-prompt, you have typed the name of a defined Lisp function. If that is
-what you wanted to know, just type @kbd{C-g} to cancel the @kbd{C-h f}
-command and continue editing.
+spelling for the function name. If @kbd{C-h f} mentions a name from the
+buffer as the default, that name must be defined as a Lisp function. If
+that is all you want to know, just type @kbd{C-g} to cancel the @kbd{C-h
+f} command, then go on editing.
@kindex C-h w
@findex where-is
- @kbd{C-h w @var{command} @key{RET}} (@code{where-s}) tells you what
+ @kbd{C-h w @var{command} @key{RET}} (@code{where-is}) tells you what
keys are bound to @var{command}. It prints a list of the keys in the
-echo area. Alternatively, it informs you that a command is not bound to
-any keys, which implies that you must use @kbd{M-x} to call the
-command.@refill
+echo area. Alternatively, it informs you that a command is not bound to
+any keys, which implies that you must use @kbd{M-x} to call the
+command.
@kindex C-h v
@findex describe-variable
@kbd{C-h v} (@code{describe-variable}) is like @kbd{C-h f} but
describes Lisp variables instead of Lisp functions. Its default is the
Lisp symbol around or before point, if that is the name of a known Lisp
-variable. @xref{Variables}.@refill
+variable. @xref{Variables}.
+@node Apropos, Library Keywords, Name Help, Help
@section Apropos
-@kindex C-h a
+@kindex C-h A
@findex command-apropos
-@cindex apropos
+@cindex apropos
@table @kbd
-@item C-h a
+@item C-h A
Show only symbols that are names of commands
-(@code{command-apropos}).@refill
+(@code{command-apropos}).
@item M-x apropos @var{regexp}
-Show all symbols whose names comtain matches for @var{regexp}.
+Show all symbols whose names contain matches for @var{regexp}.
@end table
- It is possible to ask a question like, ``What are the commands for
-working with files?'' To do this, type @kbd{C-h a file @key{RET}},
-which displays a list of all command names that contain @samp{file},
-such as @code{copy-file}, @code{find-file}, and so on. With each
-command name a brief description of its use and information on the keys
-you can use to invoke it is displayed. For example, you would be
-informed that you can invoke @code{find-file} by typing @kbd{C-x C-f}.
-The @kbd{a} in @kbd{C-h a} stands for `Apropos'; @kbd{C-h a} runs the
-Lisp function @code{command-apropos}.@refill
-
- Because @kbd{C-h a} looks only for functions whose names contain the
+ A more sophisticated sort of question to ask is, ``What are the
+commands for working with files?'' To ask this question, type @kbd{C-h
+a file @key{RET}}, which displays a list of all command names that
+contain @samp{file}, including @code{copy-file}, @code{find-file}, and
+so on. With each command name appears a brief description of how to use
+the command, and what keys you can currently invoke it with. For
+example, it would say that you can invoke @code{find-file} by typing
+@kbd{C-x C-f}. The @kbd{A} in @kbd{C-h A} stands for `Apropos';
+@kbd{C-h A} runs the command @code{command-apropos}. This command
+normally checks only commands (interactive functions); if you specify a
+prefix argument, it checks noninteractive functions as well.
+
+ Because @kbd{C-h A} looks only for functions whose names contain the
string you specify, you must use ingenuity in choosing the string. If
you are looking for commands for killing backwards and @kbd{C-h a
-kill-backwards @key{RET}} doesn't reveal any commands, don't give up.
-Try just @kbd{kill}, or just @kbd{backwards}, or just @kbd{back}. Be
-persistent. Pretend you are playing Adventure. Also note that you can
-use a regular expression as the argument (@pxref{Regexps}).
+kill-backwards @key{RET}} doesn't reveal any, don't give up. Try just
+@kbd{kill}, or just @kbd{backwards}, or just @kbd{back}. Be persistent.
+Pretend you are playing Adventure. Also note that you can use a regular
+expression as the argument, for more flexibility (@pxref{Regexps}).
Here is a set of arguments to give to @kbd{C-h a} that covers many
-classes of Emacs commands, since there are strong conventions for naming
-standard Emacs commands. By giving you a feeling for the naming
-conventions, this set of arguments can also help you develop a
-technique for picking @code{apropos} strings.
+classes of XEmacs commands, since there are strong conventions for
+naming the standard XEmacs commands. By giving you a feel for the
+naming conventions, this set should also serve to aid you in developing
+a technique for picking @code{apropos} strings.
@quotation
char, line, word, sentence, paragraph, region, page, sexp, list, defun,
-buffer, frame, window, file, dir, register, mode,
-beginning, end, forward, backward, next, previous, up, down, search, goto,
-kill, delete, mark, insert, yank, fill, indent, case,
-change, set, what, list, find, view, describe.
+rect, buffer, frame, window, face, file, dir, register, mode, beginning,
+end, forward, backward, next, previous, up, down, search, goto, kill,
+delete, mark, insert, yank, fill, indent, case, change, set, what, list,
+find, view, describe, default.
@end quotation
@findex apropos
To list all Lisp symbols that contain a match for a regexp, not just
the ones that are defined as commands, use the command @kbd{M-x apropos}
-instead of @kbd{C-h a}.
+instead of @kbd{C-h A}. This command does not check key bindings by
+default; specify a numeric argument if you want it to check them.
+
+@findex apropos-documentation
+ The @code{apropos-documentation} command is like @code{apropos} except
+that it searches documentation strings for matches for the specified
+regular expression.
+
+@findex apropos-value
+ The @code{apropos-value} command is like @code{apropos} except that it
+searches symbols' values for matches for the specified regular
+expression. This command does not check function definitions or
+property lists by default; specify a numeric argument if you want it to
+check them.
+
+@vindex apropos-do-all
+ If the variable @code{apropos-do-all} is non-@code{nil}, the commands
+above all behave as if they had been given a prefix argument.
+
+ If you want more information about a function definition, variable or
+symbol property listed in the Apropos buffer, you can click on it with
+@kbd{Mouse-2} or move there and type @key{RET}.
+
+@node Library Keywords, Help Mode, Apropos, Help
+@section Keyword Search for Lisp Libraries
+
+@kindex C-h p
+@findex finder-by-keyword
+The @kbd{C-h p} command lets you search the standard Emacs Lisp
+libraries by topic keywords. Here is a partial list of keywords you can
+use:
+
+@display
+abbrev abbreviation handling, typing shortcuts, macros
+bib code related to the `bib' bibliography processor
+c C, C++, and Objective-C language support
+calendar calendar and time management support
+comm communications, networking, remote access to files
+data support for editing files of data
+docs support for Emacs documentation
+dumped files preloaded into Emacs
+emulations emulations of other editors
+extensions Emacs Lisp language extensions
+faces support for multiple fonts
+frames support for Emacs frames and window systems
+games games, jokes and amusements
+hardware support for interfacing with exotic hardware
+help support for on-line help systems
+hypermedia support for links between text or other media types
+i18n internationalization and alternate character-set support
+internal code for Emacs internals, build process, defaults
+languages specialized modes for editing programming languages
+lisp Lisp support, including Emacs Lisp
+local code local to your site
+maint maintenance aids for the Emacs development group
+mail modes for electronic-mail handling
+matching various sorts of searching and matching
+mouse mouse support
+mule multi-language extensions
+news support for netnews reading and posting
+oop support for object-oriented programming
+outlines support for hierarchical outlining
+processes process, subshell, compilation, and job control support
+terminals support for terminal types
+tex code related to the TeX formatter
+tools programming tools
+unix front-ends/assistants for, or emulators of, UNIX features
+vms support code for vms
+wp word processing
+@end display
+
+@node Help Mode, Misc Help, Library Keywords, Help
+@section Help Mode Commands
+
+ Help buffers provide the commands of View mode (@pxref{Misc File
+Ops}), plus a few special commands of their own.
+@table @kbd
+@item @key{SPC}
+Scroll forward.
+@item @key{DEL}
+@itemx @key{BS}
+Scroll backward.
+@c @item @key{RET}
+@c Follow a cross reference at point.
+@c @item @key{TAB}
+@c Move point forward to the next cross reference.
+@c @item S-@key{TAB}
+@c Move point back to the previous cross reference.
+@c @item Mouse-2
+@c Follow a cross reference that you click on.
+@end table
+
+ When a command name (@pxref{M-x,, Running Commands by Name}) or
+variable name (@pxref{Variables}) appears in the documentation, it
+normally appears inside paired single-quotes.
+
+@node Misc Help, , Help Mode, Help
@section Other Help Commands
@kindex C-h i
@findex info
+@cindex Info
+@cindex manuals, on-line
+@cindex on-line manuals
@kbd{C-h i} (@code{info}) runs the Info program, which is used for
-browsing through structured documentation files. The entire Emacs manual
+browsing through structured documentation files. The entire XEmacs manual
is available within Info. Eventually all the documentation of the GNU
system will be available. Type @kbd{h} after entering Info to run
a tutorial on using Info.
+ If you specify a numeric argument, @kbd{C-h i} prompts for the name of
+a documentation file. This way, you can browse a file which doesn't
+have an entry in the top-level Info menu. It is also handy when you
+need to get to the documentation quickly, and you know the exact name of
+the file.
+
+@kindex C-h C-f
+@kindex C-h C-k
+@findex Info-elisp-ref
+@findex Info-goto-emacs-command-node
+@findex Info-goto-emacs-key-command-node
+ There are two special help commands for accessing XEmacs documentation
+through Info. @kbd{C-h C-f @var{function} @key{RET}} enters Info and
+goes straight to the documentation of the XEmacs function
+@var{function}. @kbd{C-h C-k @var{key}} enters Info and goes straight
+to the documentation of the key @var{key}. These two keys run the
+commands @code{Info-elisp-ref} and
+@code{Info-goto-emacs-key-command-node}. (GNU Emacs binds @kbd{C-h C-f}
+to @code{Info-goto-emacs-command-node}, but this is less helpful to
+programmers.)
+
@kindex C-h l
@findex view-lossage
If something surprising happens, and you are not sure what commands you
typed, use @kbd{C-h l} (@code{view-lossage}). @kbd{C-h l} prints the last
-100 command characters you typed. If you see commands you don't
-know, use @kbd{C-h c} to find out what they do.
+100 command characters you typed in. If you see commands that you don't
+know, you can use @kbd{C-h c} to find out what they do.
@kindex C-h m
@findex describe-mode
- Emacs has several major modes. Each mode redefines a few keys and
+ XEmacs has several major modes. Each mode redefines a few keys and
makes a few other changes in how editing works. @kbd{C-h m}
(@code{describe-mode}) prints documentation on the current major mode,
which normally describes all the commands that are changed in this mode.
@kindex C-h b
@findex describe-bindings
@kbd{C-h b} (@code{describe-bindings}) and @kbd{C-h s}
-(@code{describe-syntax}) present information about the current Emacs
+(@code{describe-syntax}) present information about the current XEmacs
mode that is not covered by @kbd{C-h m}. @kbd{C-h b} displays a list of
-all key bindings currently in effect, with the local bindings of the current
-major mode first, followed by the global bindings (@pxref{Key
+all the key bindings currently in effect, with the local bindings of the
+current major mode first, followed by the global bindings (@pxref{Key
Bindings}). @kbd{C-h s} displays the contents of the syntax table with
-explanations of each character's syntax (@pxref{Syntax}).@refill
+explanations of each character's syntax (@pxref{Syntax}).
+
+ You can get a similar list for a particular prefix key by typing
+@kbd{C-h} after the prefix key. (There are a few prefix keys for which
+this does not work---those that provide their own bindings for
+@kbd{C-h}. One of these is @key{ESC}, because @kbd{@key{ESC} C-h} is
+actually @kbd{C-M-h}, which marks a defun.)
+@kindex C-h F
+@findex xemacs-local-faq
@kindex C-h n
@findex view-emacs-news
@kindex C-h t
@kindex C-h C-w
@findex describe-no-warranty
The other @kbd{C-h} options display various files of useful
-information. @kbd{C-h C-w} (@code{describe-no-warranty}) displays
-details on the complete absence of warranty for XEmacs. @kbd{C-h n}
-(@code{view-emacs-news}) displays the file @file{emacs/etc/NEWS}, which
-contains documentation on Emacs changes arranged chronologically.
-@kbd{C-h t} (@code{help-with-tutorial}) displays the learn-by-doing
-Emacs tutorial. @kbd{C-h C-c} (@code{describe-copying}) displays the file
-@file{emacs/etc/COPYING}, which tells you the conditions you must obey
-in distributing copies of Emacs. @kbd{C-h C-d}
+information. @kbd{C-h C-w} (@code{describe-no-warranty}) displays the
+full details on the complete absence of warranty for XEmacs. @kbd{C-h
+n} (@code{view-emacs-news}) displays the file @file{xemacs/etc/NEWS},
+which contains documentation on XEmacs changes arranged chronologically.
+@kbd{C-h F} (@code{xemacs-local-faq}) displays local version of the
+XEmacs frequently-answered-questions-list. @kbd{C-h t}
+(@code{help-with-tutorial}) displays the learn-by-doing XEmacs
+tutorial. @kbd{C-h C-c} (@code{describe-copying}) displays the file
+@file{xemacs/etc/COPYING}, which tells you the conditions you must obey
+in distributing copies of XEmacs. @kbd{C-h C-d}
(@code{describe-distribution}) displays another file named
-@file{emacs/etc/DISTRIB}, which tells you how you can order a copy of
-the latest version of Emacs.@refill
+@file{xemacs/etc/DISTRIB}, which tells you how you can order a copy of
+the latest version of XEmacs.