Docstring fixes.
[emacs.git] / man / help.texi
blob751280920846be392bd2e5eafb1614b044de5b27
1 @c This is part of the Emacs manual.
2 @c Copyright (C) 1985, 86, 87, 93, 94, 95, 97, 2000
3 @c   Free Software Foundation, Inc.
4 @c See file emacs.texi for copying conditions.
5 @node Help, Mark, M-x, Top
6 @chapter Help
7 @kindex Help
8 @cindex help
9 @cindex self-documentation
10 @findex help-command
11 @kindex C-h
12 @kindex F1
14   Emacs provides extensive help features accessible through a single
15 character, @kbd{C-h}.  @kbd{C-h} is a prefix key that is used only for
16 documentation-printing commands.  The characters that you can type after
17 @kbd{C-h} are called @dfn{help options}.  One help option is @kbd{C-h};
18 that is how you ask for help about using @kbd{C-h}.  To cancel, type
19 @kbd{C-g}.  The function key @key{F1} is equivalent to @kbd{C-h}.
21 @kindex C-h C-h
22 @findex help-for-help
23   @kbd{C-h C-h} (@code{help-for-help}) displays a list of the possible
24 help options, each with a brief description.  Before you type a help
25 option, you can use @key{SPC} or @key{DEL} to scroll through the list.
27   @kbd{C-h} or @key{F1} means ``help'' in various other contexts as
28 well.  For example, in the middle of @code{query-replace}, it describes
29 the options available for how to operate on the current match.  After a
30 prefix key, it displays a list of the alternatives that can follow the
31 prefix key.  (A few prefix keys don't support @kbd{C-h}, because they
32 define other meanings for it, but they all support @key{F1}.)
34   Most help buffers use a special major mode, Help mode, which lets you
35 scroll conveniently with @key{SPC} and @key{DEL}.  It also offers
36 hyperlinks to more help on cross-referenced names, Info nodes,
37 customization buffers and the like.  @xref{Help Mode}.
39 @cindex searching documentation efficiently
40 @cindex looking for a subject in documentation
41   If you are looking for a certain feature, but don't know where exactly
42 it is documented, and aren't even sure what is the name of the related
43 command or option, we recommend the following procedure:
45 @table @kbd
46 @item C-h a @var{topic} @key{RET}
47 This searches the built-in short documentation of each command for
48 strings which match @var{topic}.  @var{topic} can be a regular
49 expression (@pxref{Regexps}).  Browse the buffer popped up by Emacs, to
50 find what you are looking for.
52 @item M-x apropos @var{topic} @key{RET}
53 This works like @kbd{C-h a}, but it also searches the documentation of
54 user options and other variables, in case the feature you are looking
55 for is controlled by an option, not a command.
57 @item C-h i emacs @key{RET} i @var{topic} @key{RET}
58 This looks up @var{topic} in the indices of the Emacs on-line manual.
59 Press @key{,} repetitively until you find what you are looking for.
61 @item C-h i emacs @key{RET} s @var{topic} @key{RET}
62 This works like the previous command, but it searches for @var{topic}
63 (which can be a regular expression) in the @emph{text} of the manual
64 rather than in its indices.
66 @item C-h F
67 This brings up the Emacs FAQ, where you can use the usual search
68 commands (@pxref{Search}) to find the information.
70 @item M-x finder-by-keyword
71 Finally, you can try looking up a suitable package using keywords
72 pertinent to the feature you need.
73 @end table
75 @menu
76 * Help Summary::        Brief list of all Help commands.
77 * Key Help::            Asking what a key does in Emacs.
78 * Name Help::           Asking about a command, variable or function name.
79 * Apropos::             Asking what pertains to a given topic.
80 * Library Keywords::    Finding Lisp libraries by keywords (topics).
81 * Language Help::       Help relating to international language support.
82 * Help Mode::           Special features of Help mode and Help buffers.
83 * Misc Help::           Other help commands.
84 * Help Echo::           Help on active text and tooltips (`balloon help')
85 @end menu
87 @iftex
88 @node Help Summary
89 @end iftex
90 @ifinfo
91 @node Help Summary
92 @section Help Summary
93 @end ifinfo
95   Here is a summary of the defined help commands.
97 @table @kbd
98 @item C-h a @var{regexp} @key{RET}
99 Display a list of commands whose names match @var{regexp}
100 (@code{apropos-command}).
101 @item C-h b
102 Display a table of all key bindings in effect now, in this order: minor
103 mode bindings, major mode bindings, and global bindings
104 (@code{describe-bindings}).
105 @item C-h c @var{key}
106 Print the name of the command that @var{key} runs
107 (@code{describe-key-briefly}).  Here @kbd{c} stands for `character'.  For more
108 extensive information on @var{key}, use @kbd{C-h k}.
109 @item C-h f @var{function} @key{RET}
110 Display documentation on the Lisp function named @var{function}
111 (@code{describe-function}).  Since commands are Lisp functions,
112 a command name may be used.
113 @item C-h h
114 Display the @file{hello} file, which shows examples of various character
115 sets.
116 @item C-h i
117 Run Info, the program for browsing documentation files (@code{info}).
118 The complete Emacs manual is available on-line in Info.
119 @item C-h k @var{key}
120 Display the name and documentation of the command that @var{key} runs
121 (@code{describe-key}).
122 @item C-h l
123 Display a description of the last 100 characters you typed
124 (@code{view-lossage}).
125 @item C-h m
126 Display documentation of the current major mode (@code{describe-mode}).
127 @item C-h n
128 Display documentation of Emacs changes, most recent first
129 (@code{view-emacs-news}).
130 @item C-h P
131 Display info on known problems with Emacs and possible workarounds
132 (@code{view-emacs-problems}).
133 @item C-h p
134 Find packages by topic keyword (@code{finder-by-keyword}).
135 @item C-h s
136 Display current contents of the syntax table, plus an explanation of
137 what they mean (@code{describe-syntax}).  @xref{Syntax}.
138 @item C-h t
139 Enter the Emacs interactive tutorial (@code{help-with-tutorial}).
140 @item C-h v @var{var} @key{RET}
141 Display the documentation of the Lisp variable @var{var}
142 (@code{describe-variable}).
143 @item C-h w @var{command} @key{RET}
144 Print which keys run the command named @var{command} (@code{where-is}).
145 @item C-h C @var{coding} @key{RET}
146 Describe coding system @var{coding}
147 (@code{describe-coding-system}).
148 @item C-h C @key{RET}
149 Describe the coding systems currently in use.
150 @item C-h I @var{method} @key{RET}
151 Describe an input method (@code{describe-input-method}).
152 @item C-h L @var{language-env} @key{RET}
153 Describe information on the character sets, coding systems and input
154 methods used for language environment @var{language-env}
155 (@code{describe-language-environment}).
156 @item C-h C-c
157 Display the copying conditions for GNU Emacs.
158 @item C-h C-d
159 Display information about getting new versions of GNU Emacs.
160 @item C-h C-f @var{function} @key{RET}
161 Enter Info and go to the node documenting the Emacs function @var{function}
162 (@code{Info-goto-emacs-command-node}).
163 @item C-h C-k @var{key}
164 Enter Info and go to the node where the key sequence @var{key} is
165 documented (@code{Info-goto-emacs-key-command-node}).
166 @item C-h C-p
167 Display information about the GNU Project.
168 @item C-h @key{TAB} @var{symbol} @key{RET}
169 Display the Info documentation on symbol @var{symbol} according to the
170 programming language you are editing (@code{info-lookup-symbol}).
171 @end table
173 @node Key Help
174 @section Documentation for a Key
176 @kindex C-h c
177 @findex describe-key-briefly
178   The most basic @kbd{C-h} options are @kbd{C-h c}
179 (@code{describe-key-briefly}) and @w{@kbd{C-h k}} (@code{describe-key}).
180 @kbd{C-h c @var{key}} prints in the echo area the name of the command
181 that @var{key} is bound to.  For example, @kbd{C-h c C-f} prints
182 @samp{forward-char}.  Since command names are chosen to describe what
183 the commands do, this is a good way to get a very brief description of
184 what @var{key} does.
186 @kindex C-h k
187 @findex describe-key
188   @kbd{C-h k @var{key}} is similar but gives more information: it
189 displays the documentation string of the command as well as its name.
190 This is too big for the echo area, so a window is used for the display.
192   @kbd{C-h c} and @kbd{C-h k} work for any sort of key sequences,
193 including function keys and mouse events.
195 @node Name Help
196 @section Help by Command or Variable Name
198 @kindex C-h f
199 @findex describe-function
200   @kbd{C-h f} (@code{describe-function}) reads the name of a Lisp function
201 using the minibuffer, then displays that function's documentation string
202 in a window.  Since commands are Lisp functions, you can use this to get
203 the documentation of a command that you know by name.  For example,
205 @example
206 C-h f auto-fill-mode @key{RET}
207 @end example
209 @noindent
210 displays the documentation of @code{auto-fill-mode}.  This is the only
211 way to get the documentation of a command that is not bound to any key
212 (one which you would normally run using @kbd{M-x}).
214   @kbd{C-h f} is also useful for Lisp functions that you are planning to
215 use in a Lisp program.  For example, if you have just written the
216 expression @code{(make-vector len)} and want to check that you are using
217 @code{make-vector} properly, type @kbd{C-h f make-vector @key{RET}}.
218 Because @kbd{C-h f} allows all function names, not just command names,
219 you may find that some of your favorite abbreviations that work in
220 @kbd{M-x} don't work in @kbd{C-h f}.  An abbreviation may be unique
221 among command names yet fail to be unique when other function names are
222 allowed.
224   The function name for @kbd{C-h f} to describe has a default which is
225 used if you type @key{RET} leaving the minibuffer empty.  The default is
226 the function called by the innermost Lisp expression in the buffer around
227 point, @emph{provided} that is a valid, defined Lisp function name.  For
228 example, if point is located following the text @samp{(make-vector (car
229 x)}, the innermost list containing point is the one that starts with
230 @samp{(make-vector}, so the default is to describe the function
231 @code{make-vector}.
233   @kbd{C-h f} is often useful just to verify that you have the right
234 spelling for the function name.  If @kbd{C-h f} mentions a name from the
235 buffer as the default, that name must be defined as a Lisp function.  If
236 that is all you want to know, just type @kbd{C-g} to cancel the @kbd{C-h
237 f} command, then go on editing.
239 @kindex C-h w
240 @findex where-is
241   @kbd{C-h w @var{command} @key{RET}} tells you what keys are bound to
242 @var{command}.  It prints a list of the keys in the echo area.  If it
243 says the command is not on any key, you must use @kbd{M-x} to run it.
244 @kbd{C-h w} runs the command @code{where-is}.
246   @kbd{C-h v} (@code{describe-variable}) is like @kbd{C-h f} but describes
247 Lisp variables instead of Lisp functions.  Its default is the Lisp symbol
248 around or before point, but only if that is the name of a known Lisp
249 variable.  @xref{Variables}.@refill
251 Help buffers describing variables or functions defined in Lisp normally
252 have hyperlinks to their definitions if you have the Lisp source files
253 installed.  If you can read Lisp, this provides the ultimate
254 documentation.
255   
256 @node Apropos
257 @section Apropos
259 @kindex C-h a
260 @findex apropos-command
261 @cindex apropos
262   A more sophisticated sort of question to ask is, ``What are the
263 commands for working with files?''  To ask this question, type @kbd{C-h
264 a file @key{RET}}, which displays a list of all command names that
265 contain @samp{file}, including @code{copy-file}, @code{find-file}, and
266 so on.  With each command name appears a brief description of how to use
267 the command, and what keys you can currently invoke it with.  For
268 example, it would say that you can invoke @code{find-file} by typing
269 @kbd{C-x C-f}.  The @kbd{a} in @kbd{C-h a} stands for `Apropos';
270 @kbd{C-h a} runs the command @code{apropos-command}.  This command
271 normally checks only commands (interactive functions); if you specify a
272 prefix argument, it checks noninteractive functions as well.
274   Because @kbd{C-h a} looks only for functions whose names contain the
275 string you specify, you must use ingenuity in choosing the
276 string.  If you are looking for commands for killing backwards and
277 @kbd{C-h a kill-backwards @key{RET}} doesn't reveal any, don't give up.
278 Try just @kbd{kill}, or just @kbd{backwards}, or just @kbd{back}.  Be
279 persistent.  Also note that you can use a regular expression as the
280 argument, for more flexibility (@pxref{Regexps}).
282   Here is a set of arguments to give to @kbd{C-h a} that covers many
283 classes of Emacs commands, since there are strong conventions for naming
284 the standard Emacs commands.  By giving you a feel for the naming
285 conventions, this set should also serve to aid you in developing a
286 technique for picking @code{apropos} strings.
288 @quotation
289 char, line, word, sentence, paragraph, region, page, sexp, list, defun,
290 rect, buffer, frame, window, face, file, dir, register, mode, beginning, end,
291 forward, backward, next, previous, up, down, search, goto, kill, delete,
292 mark, insert, yank, fill, indent, case, change, set, what, list, find,
293 view, describe, default.
294 @end quotation
296 @findex apropos-variable
297   To list all user variables that match a regexp, use the command
298 @kbd{M-x apropos-variable}. This command shows only user variables and
299 customization options by default; if you specify a prefix argument, it
300 checks all variables.
302 @findex apropos
303   To list all Lisp symbols that contain a match for a regexp, not just
304 the ones that are defined as commands, use the command @kbd{M-x apropos}
305 instead of @kbd{C-h a}.  This command does not check key bindings by
306 default; specify a numeric argument if you want it to check them.
308 @findex apropos-documentation
309   The @code{apropos-documentation} command is like @code{apropos} except
310 that it searches documentation strings as well as symbol names for
311 matches for the specified regular expression.
313 @findex apropos-value
314   The @code{apropos-value} command is like @code{apropos} except that it
315 searches symbols' values for matches for the specified regular
316 expression.  This command does not check function definitions or
317 property lists by default; specify a numeric argument if you want it to
318 check them.
320 @vindex apropos-do-all
321   If the variable @code{apropos-do-all} is non-@code{nil}, the commands
322 above all behave as if they had been given a prefix argument.
324   If you want more information about a function definition, variable or
325 symbol property listed in the Apropos buffer, you can click on it with
326 @kbd{Mouse-2} or move there and type @key{RET}.
328 @node Library Keywords
329 @section Keyword Search for Lisp Libraries
331 @kindex C-h p
332 @findex finder-by-keyword
333 The @kbd{C-h p} command lets you search the standard Emacs Lisp
334 libraries by topic keywords.  Here is a partial list of keywords you can
335 use:
337 @display
338 abbrev --- abbreviation handling, typing shortcuts, macros.
339 bib --- support for the bibliography processor @code{bib}.
340 c --- C and C++ language support.
341 calendar --- calendar and time management support.
342 comm --- communications, networking, remote access to files.
343 data --- support for editing files of data.
344 docs --- support for Emacs documentation.
345 emulations --- emulations of other editors.
346 extensions --- Emacs Lisp language extensions.
347 faces --- support for using faces (fonts and colors; @pxref{Faces}).
348 frames --- support for Emacs frames and window systems.
349 games --- games, jokes and amusements.
350 hardware --- support for interfacing with exotic hardware.
351 help --- support for on-line help systems.
352 hypermedia --- support for links within text, or other media types.
353 i18n --- internationalization and alternate character-set support.
354 internal --- code for Emacs internals, build process, defaults.
355 languages --- specialized modes for editing programming languages.
356 lisp --- support for using Lisp (including Emacs Lisp).
357 local --- libraries local to your site.
358 maint --- maintenance aids for the Emacs development group.
359 mail --- modes for electronic-mail handling.
360 matching --- searching and matching.
361 news --- support for netnews reading and posting.
362 non-text --- support for editing files that are not ordinary text.
363 oop --- support for object-oriented programming.
364 outlines --- hierarchical outlining.
365 processes --- process, subshell, compilation, and job control support.
366 terminals --- support for terminal types.
367 tex --- support for the @TeX{} formatter.
368 tools --- programming tools.
369 unix --- front-ends/assistants for, or emulators of, Unix features.
370 vms --- support code for VMS.
371 wp --- word processing.
372 @end display
374 @node Language Help
375 @section Help for International Language Support
377   You can use the command @kbd{C-h L}
378 (@code{describe-language-environment}) to find out the support for a
379 specific language environment.  @xref{Language Environments}.  This
380 tells you which languages this language environment is useful for, and
381 lists the character sets, coding systems, and input methods that go with
382 it.  It also shows some sample text to illustrate scripts.
384   The command @kbd{C-h h} (@code{view-hello-file}) displays the file
385 @file{etc/HELLO}, which shows how to say ``hello'' in many languages.
387   The command @kbd{C-h I} (@code{describe-input-method}) describes
388 information about input methods---either a specified input method, or by
389 default the input method in use.  @xref{Input Methods}.
391   The command @kbd{C-h C} (@code{describe-coding-system}) describes
392 information about coding systems---either a specified coding system, or
393 the ones currently in use.  @xref{Coding Systems}.
395 @node Help Mode
396 @section Help Mode Commands
398   Help buffers provide the commands of View mode (@pxref{Misc File
399 Ops}), plus a few special commands of their own.
401 @table @kbd
402 @item @key{SPC}
403 Scroll forward.
404 @item @key{DEL}
405 Scroll backward.
406 @item @key{RET}
407 Follow a cross reference at point.
408 @item @key{TAB}
409 Move point forward to the next cross reference.
410 @item S-@key{TAB}
411 Move point back to the previous cross reference.
412 @item Mouse-2
413 Follow a cross reference that you click on.
414 @end table
416   When a command name (@pxref{M-x,, Running Commands by Name}) or
417 variable name (@pxref{Variables}) appears in the documentation, it
418 normally appears inside paired single-quotes.  You can click on the name
419 with @kbd{Mouse-2}, or move point there and type @key{RET}, to view the
420 documentation of that command or variable.  Use @kbd{C-c C-b} to retrace
421 your steps.
423 @kindex @key{TAB} @r{(Help mode)}
424 @findex help-next-ref
425 @kindex S-@key{TAB} @r{(Help mode)}
426 @findex help-previous-ref
427   There are convenient commands for moving point to cross references in
428 the help text.  @key{TAB} (@code{help-next-ref}) moves point down to the
429 next cross reference.  Use @kbd{S-@key{TAB}} to move point up to the
430 previous cross reference (@code{help-previous-ref}).
432 @node Misc Help
433 @section Other Help Commands
435 @kindex C-h i
436 @findex info
437 @cindex Info
438 @cindex manuals, on-line
439 @cindex on-line manuals
440   @kbd{C-h i} (@code{info}) runs the Info program, which is used for
441 browsing through structured documentation files.  The entire Emacs manual
442 is available within Info.  Eventually all the documentation of the GNU
443 system will be available.  Type @kbd{h} after entering Info to run
444 a tutorial on using Info.
446   If you specify a numeric argument, @kbd{C-h i} prompts for the name of
447 a documentation file.  This way, you can browse a file which doesn't
448 have an entry in the top-level Info menu.  It is also handy when you
449 need to get to the documentation quickly, and you know the exact name of
450 the file.
452 @kindex C-h C-f
453 @kindex C-h C-k
454 @findex Info-goto-emacs-key-command-node
455 @findex Info-goto-emacs-command-node
456   There are two special help commands for accessing Emacs documentation
457 through Info.  @kbd{C-h C-f @var{function} @key{RET}} enters Info and
458 goes straight to the documentation of the Emacs function
459 @var{function}.  @kbd{C-h C-k @var{key}} enters Info and goes straight
460 to the documentation of the key @var{key}.  These two keys run the
461 commands @code{Info-goto-emacs-command-node} and
462 @code{Info-goto-emacs-key-command-node}.
464   When editing a program, if you have an Info version of the manual for
465 the programming language, you can use the command @kbd{C-h C-i} to refer
466 to the manual documentation for a symbol (keyword, function or
467 variable).  The details of how this command works depend on the major
468 mode.
470 @kindex C-h l
471 @findex view-lossage
472   If something surprising happens, and you are not sure what commands you
473 typed, use @kbd{C-h l} (@code{view-lossage}).  @kbd{C-h l} prints the last
474 100 command characters you typed in.  If you see commands that you don't
475 know, you can use @kbd{C-h c} to find out what they do.
477 @kindex C-h m
478 @findex describe-mode
479   Emacs has numerous major modes, each of which redefines a few keys and
480 makes a few other changes in how editing works.  @kbd{C-h m}
481 (@code{describe-mode}) prints documentation on the current major mode,
482 which normally describes all the commands that are changed in this
483 mode.
485 @kindex C-h b
486 @findex describe-bindings
487   @kbd{C-h b} (@code{describe-bindings}) and @kbd{C-h s}
488 (@code{describe-syntax}) present other information about the current
489 Emacs mode.  @kbd{C-h b} displays a list of all the key bindings now in
490 effect; the local bindings defined by the current minor modes first,
491 then the local bindings defined by the current major mode, and finally
492 the global bindings (@pxref{Key Bindings}).  @kbd{C-h s} displays the
493 contents of the syntax table, with explanations of each character's
494 syntax (@pxref{Syntax}).
496   You can get a similar list for a particular prefix key by typing
497 @kbd{C-h} after the prefix key.  (There are a few prefix keys for which
498 this does not work---those that provide their own bindings for
499 @kbd{C-h}.  One of these is @key{ESC}, because @kbd{@key{ESC} C-h} is
500 actually @kbd{C-M-h}, which marks a defun.)
502 @kindex C-h F
503 @findex view-emacs-FAQ
504 @kindex C-h n
505 @findex view-emacs-news
506 @kindex C-h C-c
507 @findex describe-copying
508 @kindex C-h C-d
509 @findex describe-distribution
510 @kindex C-h C-w
511 @findex describe-no-warranty
512 @kindex C-h C-p
513 @findex describe-project
514 @kindex C-h P
515 @findex view-emacs-problems
516   The other @kbd{C-h} options display various files of useful
517 information.  @kbd{C-h C-w} displays the full details on the complete
518 absence of warranty for GNU Emacs.  @kbd{C-h n} (@code{view-emacs-news})
519 displays the file @file{emacs/etc/NEWS}, which contains documentation on
520 Emacs changes arranged chronologically.  @kbd{C-h F}
521 (@code{view-emacs-FAQ}) displays the Emacs frequently-answered-questions
522 list.  @kbd{C-h t} (@code{help-with-tutorial}) displays the
523 learn-by-doing Emacs tutorial.  @kbd{C-h C-c} (@code{describe-copying})
524 displays the file @file{emacs/etc/COPYING}, which tells you the
525 conditions you must obey in distributing copies of Emacs.  @kbd{C-h C-d}
526 (@code{describe-distribution}) displays the file
527 @file{emacs/etc/DISTRIB}, which tells you how you can order a copy of
528 the latest version of Emacs.  @kbd{C-h C-p} (@code{describe-project})
529 displays general information about the GNU Project.  @kbd{C-h P}
530 (@code{view-emacs-problems}) displays the file
531 @file{emacs/etc/PROBLEMS}, which lists known problems with Emacs in
532 various situations with solutions or workarounds in many cases.
534 @node Help Echo
535 @section Help on Active Text and Tooltips
537 @cindex tooltips
538 @cindex ballon help
539 Often when a region of text is `active' so that you can select it with
540 the mouse or a key like @kbd{RET}, it has associated help text.  Areas
541 of the mode line are examples.  This help will normally be printed in
542 the echo area when you move point into the active text.  In a window
543 system you can display the help text as `tooltips'.  @xref{Tooltips}.