123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572 |
- @c This is part of the Emacs manual.
- @c Copyright (C) 1985, 86, 87, 93, 94, 95, 97, 2000, 2001
- @c Free Software Foundation, Inc.
- @c See file emacs.texi for copying conditions.
- @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 accessible through a single
- character, @kbd{C-h}. @kbd{C-h} is a prefix key that is used for
- commands that display documentation. The characters that you can type after
- @kbd{C-h} are called @dfn{help options}. One help option is @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}.
- @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, each with a brief description. Before you type a help
- option, you can use @key{SPC} or @key{DEL} to scroll through the list.
- @kbd{C-h} or @key{F1} means ``help'' in various other contexts as
- well. For example, in the middle of @code{query-replace}, it describes
- the options available for how to operate on the current match. After a
- prefix key, it displays a list of the alternatives that can follow the
- prefix key. (A few prefix keys don't support @kbd{C-h}, because they
- define other meanings for it, but they all support @key{F1}.)
- Most help buffers use a special major mode, Help mode, which lets you
- scroll conveniently with @key{SPC} and @key{DEL}. It also offers
- hyperlinks to further help regarding cross-referenced names, Info nodes,
- customization buffers and the like. @xref{Help Mode}.
- @cindex searching documentation efficiently
- @cindex looking for a subject in documentation
- If you are looking for a certain feature, but don't know where
- exactly it is documented, and aren't sure of the name of a
- related command or option, we recommend trying these methods. Usually
- it is best to start with an apropos command, then try searching the
- manual index, then finally look in the FAQ and the package keywords.
- @table @kbd
- @item C-h a @var{topic} @key{RET}
- This searches for commands whose names match @var{topic}, which should
- be a regular expression (@pxref{Regexps}). Browse the buffer that this
- command displays to find what you are looking for. @xref{Apropos}.
- @item M-x apropos @key{RET} @var{topic} @key{RET}
- This works like @kbd{C-h a}, but it also searches for user options and
- other variables, in case the feature you are looking for is controlled
- by an option, not a command. @xref{Apropos}.
- @item M-x apropos-documentation @key{RET} @var{topic} @key{RET}
- This searches the @emph{documentation strings} (the built-in short
- descriptions) of all variables and functions (not their names) for a
- match for @var{topic}, a regular expression. @xref{Apropos}.
- @item C-h i d m emacs @key{RET} i @var{topic} @key{RET}
- This looks up @var{topic} in the indices of the Emacs on-line manual.
- If there are several matches, Emacs displays the first one. You can then
- press @key{,} to move to other matches, until you find what you are
- looking for.
- @item C-h i d m emacs @key{RET} s @var{topic} @key{RET}
- Similar, but searches for @var{topic} (which can be a regular
- expression) in the @emph{text} of the manual rather than in its
- indices.
- @item C-h F
- This brings up the Emacs FAQ, where you can use the usual search
- commands (@pxref{Search}) to find the information.
- @item C-h p
- Finally, you can try looking up a suitable package using keywords
- pertinent to the feature you need. @xref{Library Keywords}.
- @end table
- To find the documentation of a key sequence or a menu item, type
- @kbd{C-h C-k} and then type that key sequence or select the menu
- item. This looks up the description of the command invoked by the key
- or the menu in the appropriate manual (not necessarily the Emacs
- manual). Likewise, use @kbd{C-h C-f} for reading documentation of a
- command.
- @menu
- * Help Summary:: Brief list of all Help commands.
- * Key Help:: Asking what a key does in Emacs.
- * 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).
- * Language Help:: Help relating to international language support.
- * Help Mode:: Special features of Help mode and Help buffers.
- * Misc Help:: Other help commands.
- * Help Echo:: Help on active text and tooltips (`balloon help')
- @end menu
- @iftex
- @node Help Summary
- @end iftex
- @ifinfo
- @node Help Summary
- @section Help Summary
- @end ifinfo
- Here is a summary of the defined help commands.
- @table @kbd
- @item C-h a @var{regexp} @key{RET}
- Display a list of commands whose names match @var{regexp}
- (@code{apropos-command}).
- @item C-h b
- Display a table of all key bindings in effect now, in this order: minor
- mode bindings, major mode bindings, and global bindings
- (@code{describe-bindings}).
- @item C-h c @var{key}
- Show 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 f @var{function} @key{RET}
- Display documentation on the Lisp function named @var{function}
- (@code{describe-function}). Since commands are Lisp functions,
- a command name may be used.
- @item C-h h
- Display the @file{HELLO} file, which shows examples of various character
- sets.
- @item C-h i
- Run Info, the program for browsing documentation files (@code{info}).
- The complete Emacs manual is available on-line in Info.
- @item C-h k @var{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
- (@code{view-emacs-news}).
- @item C-h P
- Display info on known problems with Emacs and possible workarounds
- (@code{view-emacs-problems}).
- @item C-h p
- Find packages by topic keyword (@code{finder-by-keyword}).
- @item C-h s
- Display the current contents of the syntax table, plus an explanation of
- what they mean (@code{describe-syntax}). @xref{Syntax}.
- @item C-h t
- Enter the Emacs 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}).
- @item C-h w @var{command} @key{RET}
- Show which keys run the command named @var{command} (@code{where-is}).
- @item C-h C @var{coding} @key{RET}
- Describe coding system @var{coding}
- (@code{describe-coding-system}).
- @item C-h C @key{RET}
- Describe the coding systems currently in use.
- @item C-h I @var{method} @key{RET}
- Describe an input method (@code{describe-input-method}).
- @item C-h L @var{language-env} @key{RET}
- Display information on the character sets, coding systems, and input
- methods used for language environment @var{language-env}
- (@code{describe-language-environment}).
- @item C-h C-c
- Display the copying conditions for GNU Emacs.
- @item C-h C-d
- Display information about getting new versions of GNU Emacs.
- @item C-h C-f @var{function} @key{RET}
- Enter Info and go to the node documenting the Emacs function @var{function}
- (@code{Info-goto-emacs-command-node}).
- @item C-h C-k @var{key}
- Enter Info and go to the node where the key sequence @var{key} is
- documented (@code{Info-goto-emacs-key-command-node}).
- @item C-h C-p
- Display information about the GNU Project.
- @item C-h @key{TAB} @var{symbol} @key{RET}
- Display the Info documentation on symbol @var{symbol} according to the
- programming language you are editing (@code{info-lookup-symbol}).
- @end table
- @node Key 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 @w{@kbd{C-h k}} (@code{describe-key}).
- @kbd{C-h c @var{key}} displays in the echo area the name of the command
- that @var{key} is bound to. For example, @kbd{C-h c C-f} displays
- @samp{forward-char}. Since command names are chosen to describe what
- 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
- @kbd{C-h k @var{key}} is similar but gives more information: it
- displays the documentation string of the command as well as its name.
- This is too big for 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
- @section Help by Command or Variable Name
- @kindex C-h f
- @findex describe-function
- @kbd{C-h f} (@code{describe-function}) reads the name of a Lisp function
- using the minibuffer, then displays that function's documentation string
- in a window. Since commands are Lisp functions, you can use this to get
- the documentation of a command that you know by name. For example,
- @example
- C-h f auto-fill-mode @key{RET}
- @end example
- @noindent
- displays the documentation of @code{auto-fill-mode}. This is the only
- way to get the documentation of a command that is not bound to any key
- (one which you would normally run using @kbd{M-x}).
- @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 check that 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 default function name for @kbd{C-h f} to describe, if you type
- just @key{RET}, is the name of 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 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 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}} tells you what keys are bound to
- @var{command}. It displays a list of the keys in the echo area. If it
- says the command is not on any key, you must use @kbd{M-x} to run it.
- @kbd{C-h w} runs the command @code{where-is}.
- @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, but only if that is the name of a known Lisp
- variable. @xref{Variables}.@refill
- Help buffers describing variables or functions defined in Lisp
- normally have hyperlinks to the Lisp definition, if you have the Lisp
- source files installed. If you know Lisp, this provides the ultimate
- documentation. If you don't know Lisp, you should learn it. If you
- are treating Emacs as an object file, then you are just @emph{using}
- Emacs. For real intimacy with Emacs, you must read the source code.
- @node Apropos
- @section Apropos
- @kindex C-h a
- @findex apropos-command
- @cindex apropos
- 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{apropos-command}. 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, don't give up.
- Try just @kbd{kill}, or just @kbd{backwards}, or just @kbd{back}. Be
- persistent. 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
- the standard Emacs 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,
- 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-variable
- To list all user variables that match a regexp, use the command
- @kbd{M-x apropos-variable}. This command shows only user variables and
- customization options by default; if you specify a prefix argument, it
- checks all variables.
- @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}. 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 as well as symbol names 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
- @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 --- support for the bibliography processor @code{bib}.
- c --- C and 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.
- emulations --- emulations of other editors.
- extensions --- Emacs Lisp language extensions.
- faces --- support for using faces (fonts and colors; @pxref{Faces}).
- 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 within 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 --- support for using Lisp (including Emacs Lisp).
- local --- libraries local to your site.
- maint --- maintenance aids for the Emacs development group.
- mail --- modes for electronic-mail handling.
- matching --- searching and matching.
- news --- support for netnews reading and posting.
- non-text --- support for editing files that are not ordinary text.
- oop --- support for object-oriented programming.
- outlines --- hierarchical outlining.
- processes --- process, subshell, compilation, and job control support.
- terminals --- support for terminal types.
- tex --- support for the @TeX{} formatter.
- tools --- programming tools.
- unix --- front-ends/assistants for, or emulators of, system features.
- vms --- support code for VMS.
- wp --- word processing.
- @end display
- @node Language Help
- @section Help for International Language Support
- You can use the command @kbd{C-h L}
- (@code{describe-language-environment}) to find out information about
- the support for a specific language environment. @xref{Language
- Environments}. This tells you which languages this language
- environment is useful for, and lists the character sets, coding
- systems, and input methods that go with it. It also shows some sample
- text to illustrate scripts.
- The command @kbd{C-h h} (@code{view-hello-file}) displays the file
- @file{etc/HELLO}, which shows how to say ``hello'' in many languages.
- The command @kbd{C-h I} (@code{describe-input-method}) describes
- information about input methods---either a specified input method, or by
- default the input method in use. @xref{Input Methods}.
- The command @kbd{C-h C} (@code{describe-coding-system}) describes
- information about coding systems---either a specified coding system, or
- the ones currently in use. @xref{Coding Systems}.
- @node Help Mode
- @section Help Mode Commands
- Help buffers provide the same commands as 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. On some keyboards, this key is known as @key{BS} or
- @key{backspace}.
- @item @key{RET}
- Follow a cross reference at point.
- @item @key{TAB}
- Move point forward to the next cross reference.
- @item S-@key{TAB}
- Move point back to the previous cross reference.
- @item Mouse-2
- 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. You can click on the name
- with @kbd{Mouse-2}, or move point there and type @key{RET}, to view the
- documentation of that command or variable. Use @kbd{C-c C-b} to retrace
- your steps.
- @kindex @key{TAB} @r{(Help mode)}
- @findex help-next-ref
- @kindex S-@key{TAB} @r{(Help mode)}
- @findex help-previous-ref
- There are convenient commands for moving point to cross references in
- the help text. @key{TAB} (@code{help-next-ref}) moves point down to the
- next cross reference. Use @kbd{S-@key{TAB}} to move point up to the
- previous cross reference (@code{help-previous-ref}).
- @node Misc 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
- 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-goto-emacs-key-command-node
- @findex Info-goto-emacs-command-node
- There are two special help commands for accessing Emacs documentation
- through Info. @kbd{C-h C-f @var{function} @key{RET}} enters Info and
- goes straight to the documentation of the Emacs 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-goto-emacs-command-node} and
- @code{Info-goto-emacs-key-command-node}. You can use @kbd{C-h C-k} to
- find the documentation of a menu item: just select that menu item when
- @kbd{C-h C-k} prompts for a key.
- @kbd{C-h C-f} and @kbd{C-h C-k} know about commands and keys
- described in manuals other than the Emacs manual. Thus, they make it
- easier to find the documentation of commands and keys when you are not
- sure which manual describes them, like when using some specialized
- mode.
- When editing a program, if you have an Info version of the manual for
- the programming language, you can use the command @kbd{C-h C-i} to refer
- to the manual documentation for a symbol (keyword, function or
- variable). The details of how this command works depend on the major
- mode.
- @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} displays the last
- 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 numerous major modes, each of which redefines a few keys and
- makes a few other changes in how editing works. @kbd{C-h m}
- (@code{describe-mode}) displays 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 other information about the current
- Emacs mode. @kbd{C-h b} displays a list of all the key bindings now in
- effect, showing the local bindings defined by the current minor modes first,
- then the local bindings defined by the current major mode, and finally
- 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}).
- 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 view-emacs-FAQ
- @kindex C-h n
- @findex view-emacs-news
- @kindex C-h C-c
- @findex describe-copying
- @kindex C-h C-d
- @findex describe-distribution
- @kindex C-h C-w
- @findex describe-no-warranty
- @kindex C-h C-p
- @findex describe-project
- @kindex C-h P
- @findex view-emacs-problems
- The other @kbd{C-h} options display various files containing useful
- information. @kbd{C-h C-w} displays the full details on the complete
- absence of warranty for GNU Emacs. @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 F}
- (@code{view-emacs-FAQ}) displays the Emacs frequently-answered-questions
- list. @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}
- (@code{describe-distribution}) displays the file
- @file{emacs/etc/DISTRIB}, which tells you how you can order a copy of
- the latest version of Emacs. @kbd{C-h C-p} (@code{describe-project})
- displays general information about the GNU Project. @kbd{C-h P}
- (@code{view-emacs-problems}) displays the file
- @file{emacs/etc/PROBLEMS}, which lists known problems with Emacs in
- various situations with solutions or workarounds in many cases.
- @node Help Echo
- @section Help on Active Text and Tooltips
- @cindex tooltips
- @cindex balloon help
- When a region of text is ``active,'' so that you can select it with
- the mouse or a key like @kbd{RET}, it often has associated help text.
- Areas of the mode line are examples. This help will normally be
- shown in the echo area when you move point into the active text. In
- a window system you can display the help text as a ``tooltip''
- (sometimes known as ``balloon help''). @xref{Tooltips}.
|