(Coding System Basics): Describe about rondtrip
[bpt/emacs.git] / lispref / help.texi
... / ...
CommitLineData
1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual.
3@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2004
4@c Free Software Foundation, Inc.
5@c See the file elisp.texi for copying conditions.
6@setfilename ../info/help
7@node Documentation, Files, Modes, Top
8@chapter Documentation
9@cindex documentation strings
10
11 GNU Emacs Lisp has convenient on-line help facilities, most of which
12derive their information from the documentation strings associated with
13functions and variables. This chapter describes how to write good
14documentation strings for your Lisp programs, as well as how to write
15programs to access documentation.
16
17 Note that the documentation strings for Emacs are not the same thing
18as the Emacs manual. Manuals have their own source files, written in
19the Texinfo language; documentation strings are specified in the
20definitions of the functions and variables they apply to. A collection
21of documentation strings is not sufficient as a manual because a good
22manual is not organized in that fashion; it is organized in terms of
23topics of discussion.
24
25@menu
26* Documentation Basics:: Good style for doc strings.
27 Where to put them. How Emacs stores them.
28* Accessing Documentation:: How Lisp programs can access doc strings.
29* Keys in Documentation:: Substituting current key bindings.
30* Describing Characters:: Making printable descriptions of
31 non-printing characters and key sequences.
32* Help Functions:: Subroutines used by Emacs help facilities.
33@end menu
34
35@node Documentation Basics
36@comment node-name, next, previous, up
37@section Documentation Basics
38@cindex documentation conventions
39@cindex writing a documentation string
40@cindex string, writing a doc string
41
42 A documentation string is written using the Lisp syntax for strings,
43with double-quote characters surrounding the text of the string. This
44is because it really is a Lisp string object. The string serves as
45documentation when it is written in the proper place in the definition
46of a function or variable. In a function definition, the documentation
47string follows the argument list. In a variable definition, the
48documentation string follows the initial value of the variable.
49
50 When you write a documentation string, make the first line a complete
51sentence (or two complete sentences) since some commands, such as
52@code{apropos}, show only the first line of a multi-line documentation
53string. Also, you should not indent the second line of a documentation
54string, if it has one, because that looks odd when you use @kbd{C-h f}
55(@code{describe-function}) or @kbd{C-h v} (@code{describe-variable}) to
56view the documentation string. @xref{Documentation Tips}.
57
58 Documentation strings can contain several special substrings, which
59stand for key bindings to be looked up in the current keymaps when the
60documentation is displayed. This allows documentation strings to refer
61to the keys for related commands and be accurate even when a user
62rearranges the key bindings. (@xref{Keys in Documentation}.)
63
64 In Emacs Lisp, a documentation string is accessible through the
65function or variable that it describes:
66
67@itemize @bullet
68@item
69@kindex function-documentation
70The documentation for a function is usually stored in the function
71definition itself (@pxref{Lambda Expressions}). The function
72@code{documentation} knows how to extract it. You can also put
73function documentation in the @code{function-documentation} property
74of the function name. That is useful with definitions such as
75keyboard macros that can't hold a documentation string.
76
77@item
78@kindex variable-documentation
79The documentation for a variable is stored in the variable's property
80list under the property name @code{variable-documentation}. The
81function @code{documentation-property} knows how to retrieve it.
82@end itemize
83
84@cindex @file{DOC} (documentation) file
85@cindex @file{emacs/etc/DOC-@var{version}}
86@cindex @file{etc/DOC-@var{version}}
87To save space, the documentation for preloaded functions and variables
88(including primitive functions and autoloaded functions) is stored in
89the file @file{emacs/etc/DOC-@var{version}}---not inside Emacs. The
90documentation strings for functions and variables loaded during the
91Emacs session from byte-compiled files are stored in those files
92(@pxref{Docs and Compilation}).
93
94The data structure inside Emacs has an integer offset into the file, or
95a list containing a file name and an integer, in place of the
96documentation string. The functions @code{documentation} and
97@code{documentation-property} use that information to fetch the
98documentation string from the appropriate file; this is transparent to
99the user.
100
101 For information on the uses of documentation strings, see @ref{Help, ,
102Help, emacs, The GNU Emacs Manual}.
103
104@c Wordy to prevent overfull hbox. --rjc 15mar92
105 The @file{emacs/lib-src} directory contains two utilities that you can
106use to print nice-looking hardcopy for the file
107@file{emacs/etc/DOC-@var{version}}. These are @file{sorted-doc} and
108@file{digest-doc}.
109
110@node Accessing Documentation
111@section Access to Documentation Strings
112
113@defun documentation-property symbol property &optional verbatim
114This function returns the documentation string that is recorded in
115@var{symbol}'s property list under property @var{property}. It
116retrieves the text from a file if the value calls for that. If the
117property value isn't @code{nil}, isn't a string, and doesn't refer to
118text in a file, then it is evaluated to obtain a string.
119
120Finally, @code{documentation-property} passes the string through
121@code{substitute-command-keys} to substitute actual key bindings,
122unless @var{verbatim} is non-@code{nil}.
123
124@smallexample
125@group
126(documentation-property 'command-line-processed
127 'variable-documentation)
128 @result{} "Non-nil once command line has been processed"
129@end group
130@group
131(symbol-plist 'command-line-processed)
132 @result{} (variable-documentation 188902)
133@end group
134@end smallexample
135@end defun
136
137@defun documentation function &optional verbatim
138This function returns the documentation string of @var{function}.
139
140If @var{function} is a symbol, this function first looks for the
141@code{function-documentation} property of that symbol; if that has a
142non-@code{nil} value, the documentation comes from that value (if the
143value is not a string, it is evaluated). If @var{function} is not a
144symbol, or if it has no @code{function-documentation} property, then
145@code{documentation} extracts the documentation string from the actual
146function definition, reading it from a file if called for.
147
148Finally, unless @var{verbatim} is non-@code{nil}, it calls
149@code{substitute-command-keys} so as to return a value containing the
150actual (current) key bindings.
151
152The function @code{documentation} signals a @code{void-function} error
153if @var{function} has no function definition. However, it is OK if
154the function definition has no documentation string. In that case,
155@code{documentation} returns @code{nil}.
156@end defun
157
158@c Wordy to prevent overfull hboxes. --rjc 15mar92
159Here is an example of using the two functions, @code{documentation} and
160@code{documentation-property}, to display the documentation strings for
161several symbols in a @samp{*Help*} buffer.
162
163@anchor{describe-symbols example}
164@smallexample
165@group
166(defun describe-symbols (pattern)
167 "Describe the Emacs Lisp symbols matching PATTERN.
168All symbols that have PATTERN in their name are described
169in the `*Help*' buffer."
170 (interactive "sDescribe symbols matching: ")
171 (let ((describe-func
172 (function
173 (lambda (s)
174@end group
175@group
176 ;; @r{Print description of symbol.}
177 (if (fboundp s) ; @r{It is a function.}
178 (princ
179 (format "%s\t%s\n%s\n\n" s
180 (if (commandp s)
181 (let ((keys (where-is-internal s)))
182 (if keys
183 (concat
184 "Keys: "
185 (mapconcat 'key-description
186 keys " "))
187 "Keys: none"))
188 "Function")
189@end group
190@group
191 (or (documentation s)
192 "not documented"))))
193
194 (if (boundp s) ; @r{It is a variable.}
195@end group
196@group
197 (princ
198 (format "%s\t%s\n%s\n\n" s
199 (if (user-variable-p s)
200 "Option " "Variable")
201@end group
202@group
203 (or (documentation-property
204 s 'variable-documentation)
205 "not documented")))))))
206 sym-list)
207@end group
208
209@group
210 ;; @r{Build a list of symbols that match pattern.}
211 (mapatoms (function
212 (lambda (sym)
213 (if (string-match pattern (symbol-name sym))
214 (setq sym-list (cons sym sym-list))))))
215@end group
216
217@group
218 ;; @r{Display the data.}
219 (with-output-to-temp-buffer "*Help*"
220 (mapcar describe-func (sort sym-list 'string<))
221 (print-help-return-message))))
222@end group
223@end smallexample
224
225 The @code{describe-symbols} function works like @code{apropos},
226but provides more information.
227
228@smallexample
229@group
230(describe-symbols "goal")
231
232---------- Buffer: *Help* ----------
233goal-column Option
234*Semipermanent goal column for vertical motion, as set by @dots{}
235@end group
236@c Do not blithely break or fill these lines.
237@c That makes them incorrect.
238
239@group
240set-goal-column Keys: C-x C-n
241Set the current horizontal position as a goal for C-n and C-p.
242@end group
243@c DO NOT put a blank line here! That is factually inaccurate!
244@group
245Those commands will move to this position in the line moved to
246rather than trying to keep the same horizontal position.
247With a non-nil argument, clears out the goal column
248so that C-n and C-p resume vertical motion.
249The goal column is stored in the variable `goal-column'.
250@end group
251
252@group
253temporary-goal-column Variable
254Current goal column for vertical motion.
255It is the column where point was
256at the start of current run of vertical motion commands.
257When the `track-eol' feature is doing its job, the value is 9999.
258---------- Buffer: *Help* ----------
259@end group
260@end smallexample
261
262The asterisk @samp{*} as the first character of a variable's doc string,
263as shown above for the @code{goal-column} variable, means that it is a
264user option; see the description of @code{defvar} in @ref{Defining
265Variables}.
266
267@defun Snarf-documentation filename
268@anchor{Definition of Snarf-documentation}
269This function is used only during Emacs initialization, just before
270the runnable Emacs is dumped. It finds the file offsets of the
271documentation strings stored in the file @var{filename}, and records
272them in the in-core function definitions and variable property lists in
273place of the actual strings. @xref{Building Emacs}.
274
275Emacs reads the file @var{filename} from the @file{emacs/etc} directory.
276When the dumped Emacs is later executed, the same file will be looked
277for in the directory @code{doc-directory}. Usually @var{filename} is
278@code{"DOC-@var{version}"}.
279@end defun
280
281@c Emacs 19 feature
282@defvar doc-directory
283This variable holds the name of the directory which should contain the
284file @code{"DOC-@var{version}"} that contains documentation strings for
285built-in and preloaded functions and variables.
286
287In most cases, this is the same as @code{data-directory}. They may be
288different when you run Emacs from the directory where you built it,
289without actually installing it. @xref{Definition of data-directory}.
290
291In older Emacs versions, @code{exec-directory} was used for this.
292@end defvar
293
294@node Keys in Documentation
295@section Substituting Key Bindings in Documentation
296@cindex documentation, keys in
297@cindex keys in documentation strings
298@cindex substituting keys in documentation
299
300 When documentation strings refer to key sequences, they should use the
301current, actual key bindings. They can do so using certain special text
302sequences described below. Accessing documentation strings in the usual
303way substitutes current key binding information for these special
304sequences. This works by calling @code{substitute-command-keys}. You
305can also call that function yourself.
306
307 Here is a list of the special sequences and what they mean:
308
309@table @code
310@item \[@var{command}]
311stands for a key sequence that will invoke @var{command}, or @samp{M-x
312@var{command}} if @var{command} has no key bindings.
313
314@item \@{@var{mapvar}@}
315stands for a summary of the keymap which is the value of the variable
316@var{mapvar}. The summary is made using @code{describe-bindings}.
317
318@item \<@var{mapvar}>
319stands for no text itself. It is used only for a side effect: it
320specifies @var{mapvar}'s value as the keymap for any following
321@samp{\[@var{command}]} sequences in this documentation string.
322
323@item \=
324quotes the following character and is discarded; thus, @samp{\=\[} puts
325@samp{\[} into the output, and @samp{\=\=} puts @samp{\=} into the
326output.
327@end table
328
329@strong{Please note:} Each @samp{\} must be doubled when written in a
330string in Emacs Lisp.
331
332@defun substitute-command-keys string
333This function scans @var{string} for the above special sequences and
334replaces them by what they stand for, returning the result as a string.
335This permits display of documentation that refers accurately to the
336user's own customized key bindings.
337@end defun
338
339 Here are examples of the special sequences:
340
341@smallexample
342@group
343(substitute-command-keys
344 "To abort recursive edit, type: \\[abort-recursive-edit]")
345@result{} "To abort recursive edit, type: C-]"
346@end group
347
348@group
349(substitute-command-keys
350 "The keys that are defined for the minibuffer here are:
351 \\@{minibuffer-local-must-match-map@}")
352@result{} "The keys that are defined for the minibuffer here are:
353@end group
354
355? minibuffer-completion-help
356SPC minibuffer-complete-word
357TAB minibuffer-complete
358C-j minibuffer-complete-and-exit
359RET minibuffer-complete-and-exit
360C-g abort-recursive-edit
361"
362
363@group
364(substitute-command-keys
365 "To abort a recursive edit from the minibuffer, type\
366\\<minibuffer-local-must-match-map>\\[abort-recursive-edit].")
367@result{} "To abort a recursive edit from the minibuffer, type C-g."
368@end group
369@end smallexample
370
371@node Describing Characters
372@section Describing Characters for Help Messages
373
374 These functions convert events, key sequences, or characters to
375textual descriptions. These descriptions are useful for including
376arbitrary text characters or key sequences in messages, because they
377convert non-printing and whitespace characters to sequences of printing
378characters. The description of a non-whitespace printing character is
379the character itself.
380
381@defun key-description sequence &optional prefix
382@cindex Emacs event standard notation
383This function returns a string containing the Emacs standard notation
384for the input events in @var{sequence}. If @var{prefix} is
385non-@code{nil}, it is a sequence of input events leading up to
386@var{sequence} and is included in the return value. Both arguments
387may be strings, vectors or lists. @xref{Input Events}, for more
388information about valid events.
389
390@smallexample
391@group
392(key-description [?\M-3 delete])
393 @result{} "M-3 <delete>"
394@end group
395@group
396(key-description [delete] "\M-3")
397 @result{} "M-3 <delete>"
398@end group
399@end smallexample
400
401 See also the examples for @code{single-key-description}, below.
402@end defun
403
404@defun single-key-description event &optional no-angles
405@cindex event printing
406@cindex character printing
407@cindex control character printing
408@cindex meta character printing
409This function returns a string describing @var{event} in the standard
410Emacs notation for keyboard input. A normal printing character
411appears as itself, but a control character turns into a string
412starting with @samp{C-}, a meta character turns into a string starting
413with @samp{M-}, and space, tab, etc.@: appear as @samp{SPC},
414@samp{TAB}, etc. A function key symbol appears inside angle brackets
415@samp{<@dots{}>}. An event that is a list appears as the name of the
416symbol in the @sc{car} of the list, inside angle brackets.
417
418If the optional argument @var{no-angles} is non-@code{nil}, the angle
419brackets around function keys and event symbols are omitted; this is
420for compatibility with old versions of Emacs which didn't use the
421brackets.
422
423@smallexample
424@group
425(single-key-description ?\C-x)
426 @result{} "C-x"
427@end group
428@group
429(key-description "\C-x \M-y \n \t \r \f123")
430 @result{} "C-x SPC M-y SPC C-j SPC TAB SPC RET SPC C-l 1 2 3"
431@end group
432@group
433(single-key-description 'delete)
434 @result{} "<delete>"
435@end group
436@group
437(single-key-description 'C-mouse-1)
438 @result{} "<C-mouse-1>"
439@end group
440@group
441(single-key-description 'C-mouse-1 t)
442 @result{} "C-mouse-1"
443@end group
444@end smallexample
445@end defun
446
447@defun text-char-description character
448This function returns a string describing @var{character} in the
449standard Emacs notation for characters that appear in text---like
450@code{single-key-description}, except that control characters are
451represented with a leading caret (which is how control characters in
452Emacs buffers are usually displayed). Another difference is that
453@code{text-char-description} recognizes the 2**7 bit as the Meta
454character, whereas @code{single-key-description} uses the 2**27 bit
455for Meta.
456
457@smallexample
458@group
459(text-char-description ?\C-c)
460 @result{} "^C"
461@end group
462@group
463(text-char-description ?\M-m)
464 @result{} "\xed"
465@end group
466@group
467(text-char-description ?\C-\M-m)
468 @result{} "\x8d"
469@end group
470@group
471(text-char-description (+ 128 ?m))
472 @result{} "M-m"
473@end group
474@group
475(text-char-description (+ 128 ?\C-m))
476 @result{} "M-^M"
477@end group
478@end smallexample
479@end defun
480
481@defun read-kbd-macro string &optional need-vector
482This function is used mainly for operating on keyboard macros, but it
483can also be used as a rough inverse for @code{key-description}. You
484call it with a string containing key descriptions, separated by spaces;
485it returns a string or vector containing the corresponding events.
486(This may or may not be a single valid key sequence, depending on what
487events you use; @pxref{Keymap Terminology}.) If @var{need-vector} is
488non-@code{nil}, the return value is always a vector.
489@end defun
490
491@node Help Functions
492@section Help Functions
493
494 Emacs provides a variety of on-line help functions, all accessible to
495the user as subcommands of the prefix @kbd{C-h}. For more information
496about them, see @ref{Help, , Help, emacs, The GNU Emacs Manual}. Here
497we describe some program-level interfaces to the same information.
498
499@deffn Command apropos regexp &optional do-all
500This function finds all ``meaningful'' symbols whose names contain a
501match for the regular expression @var{regexp}, and returns a list of
502them, with associated documentation (@pxref{Regular Expressions}). It
503also displays the symbols in a buffer named @samp{*Apropos*}, each
504with a one-line description taken from the beginning of its
505documentation string. A symbol is ``meaningful'' if it has a
506definition as a function, variable, or face, or has properties.
507
508@c Emacs 19 feature
509If @var{do-all} is non-@code{nil}, or if the user option
510@code{apropos-do-all} is non-@code{nil}, then @code{apropos} also
511shows key bindings for the functions that are found; it also shows
512@emph{all} interned symbols, not just meaningful ones (and it lists
513them in the return value as well).
514@end deffn
515
516@defvar help-map
517The value of this variable is a local keymap for characters following the
518Help key, @kbd{C-h}.
519@end defvar
520
521@deffn {Prefix Command} help-command
522This symbol is not a function; its function definition cell holds the
523keymap known as @code{help-map}. It is defined in @file{help.el} as
524follows:
525
526@smallexample
527@group
528(define-key global-map (char-to-string help-char) 'help-command)
529(fset 'help-command help-map)
530@end group
531@end smallexample
532@end deffn
533
534@defun print-help-return-message &optional function
535This function builds a string that explains how to restore the previous
536state of the windows after a help command. After building the message,
537it applies @var{function} to it if @var{function} is non-@code{nil}.
538Otherwise it calls @code{message} to display it in the echo area.
539
540This function expects to be called inside a
541@code{with-output-to-temp-buffer} special form, and expects
542@code{standard-output} to have the value bound by that special form.
543For an example of its use, see the long example in @ref{Accessing
544Documentation}.
545@end defun
546
547@defvar help-char
548The value of this variable is the help character---the character that
549Emacs recognizes as meaning Help. By default, its value is 8, which
550stands for @kbd{C-h}. When Emacs reads this character, if
551@code{help-form} is a non-@code{nil} Lisp expression, it evaluates that
552expression, and displays the result in a window if it is a string.
553
554Usually the value of @code{help-form} is @code{nil}. Then the
555help character has no special meaning at the level of command input, and
556it becomes part of a key sequence in the normal way. The standard key
557binding of @kbd{C-h} is a prefix key for several general-purpose help
558features.
559
560The help character is special after prefix keys, too. If it has no
561binding as a subcommand of the prefix key, it runs
562@code{describe-prefix-bindings}, which displays a list of all the
563subcommands of the prefix key.
564@end defvar
565
566@defvar help-event-list
567The value of this variable is a list of event types that serve as
568alternative ``help characters.'' These events are handled just like the
569event specified by @code{help-char}.
570@end defvar
571
572@defvar help-form
573If this variable is non-@code{nil}, its value is a form to evaluate
574whenever the character @code{help-char} is read. If evaluating the form
575produces a string, that string is displayed.
576
577A command that calls @code{read-event} or @code{read-char} probably
578should bind @code{help-form} to a non-@code{nil} expression while it
579does input. (The time when you should not do this is when @kbd{C-h} has
580some other meaning.) Evaluating this expression should result in a
581string that explains what the input is for and how to enter it properly.
582
583Entry to the minibuffer binds this variable to the value of
584@code{minibuffer-help-form} (@pxref{Definition of minibuffer-help-form}).
585@end defvar
586
587@defvar prefix-help-command
588This variable holds a function to print help for a prefix key. The
589function is called when the user types a prefix key followed by the help
590character, and the help character has no binding after that prefix. The
591variable's default value is @code{describe-prefix-bindings}.
592@end defvar
593
594@defun describe-prefix-bindings
595This function calls @code{describe-bindings} to display a list of all
596the subcommands of the prefix key of the most recent key sequence. The
597prefix described consists of all but the last event of that key
598sequence. (The last event is, presumably, the help character.)
599@end defun
600
601 The following two functions are meant for modes that want to provide
602help without relinquishing control, such as the ``electric'' modes.
603Their names begin with @samp{Helper} to distinguish them from the
604ordinary help functions.
605
606@deffn Command Helper-describe-bindings
607This command pops up a window displaying a help buffer containing a
608listing of all of the key bindings from both the local and global keymaps.
609It works by calling @code{describe-bindings}.
610@end deffn
611
612@deffn Command Helper-help
613This command provides help for the current mode. It prompts the user
614in the minibuffer with the message @samp{Help (Type ? for further
615options)}, and then provides assistance in finding out what the key
616bindings are, and what the mode is intended for. It returns @code{nil}.
617
618This can be customized by changing the map @code{Helper-help-map}.
619@end deffn
620
621@c Emacs 19 feature
622@defvar data-directory
623@anchor{Definition of data-directory}
624This variable holds the name of the directory in which Emacs finds
625certain documentation and text files that come with Emacs. In older
626Emacs versions, @code{exec-directory} was used for this.
627@end defvar
628
629@c Emacs 19 feature
630@defmac make-help-screen fname help-line help-text help-map
631This macro defines a help command named @var{fname} that acts like a
632prefix key that shows a list of the subcommands it offers.
633
634When invoked, @var{fname} displays @var{help-text} in a window, then
635reads and executes a key sequence according to @var{help-map}. The
636string @var{help-text} should describe the bindings available in
637@var{help-map}.
638
639The command @var{fname} is defined to handle a few events itself, by
640scrolling the display of @var{help-text}. When @var{fname} reads one of
641those special events, it does the scrolling and then reads another
642event. When it reads an event that is not one of those few, and which
643has a binding in @var{help-map}, it executes that key's binding and
644then returns.
645
646The argument @var{help-line} should be a single-line summary of the
647alternatives in @var{help-map}. In the current version of Emacs, this
648argument is used only if you set the option @code{three-step-help} to
649@code{t}.
650
651This macro is used in the command @code{help-for-help} which is the
652binding of @kbd{C-h C-h}.
653@end defmac
654
655@defopt three-step-help
656If this variable is non-@code{nil}, commands defined with
657@code{make-help-screen} display their @var{help-line} strings in the
658echo area at first, and display the longer @var{help-text} strings only
659if the user types the help character again.
660@end defopt
661
662@ignore
663 arch-tag: ba36b4c2-e60f-49e2-bc25-61158fdcd815
664@end ignore