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