diff options
| author | Chong Yidong | 2012-02-19 13:54:33 +0800 |
|---|---|---|
| committer | Chong Yidong | 2012-02-19 13:54:33 +0800 |
| commit | 8376d7c25a3d73cc516e9ef9537194e702474a52 (patch) | |
| tree | 91f6ec7f1d2b5f16dc7474826449f5eae735a85d | |
| parent | 0b19b281212ccb1253088afaaa196f69b21a5a6d (diff) | |
| download | emacs-8376d7c25a3d73cc516e9ef9537194e702474a52.tar.gz emacs-8376d7c25a3d73cc516e9ef9537194e702474a52.zip | |
Updates to Documentation chapter of Lisp manual.
* doc/lispref/help.texi (Documentation, Documentation Basics, Help Functions):
Minor clarifications.
(Accessing Documentation): Clarify what documentation-property is
for. Add xref to Keys in Documentation.
* doc/lispref/macros.texi (Defining Macros):
* doc/lispref/modes.texi (Derived Modes): Say "documentation string" instead
of docstring.
* doc/lispref/tips.texi (Documentation Tips): Don't recommend using * in
docstrings.
| -rw-r--r-- | admin/FOR-RELEASE | 4 | ||||
| -rw-r--r-- | doc/lispref/ChangeLog | 14 | ||||
| -rw-r--r-- | doc/lispref/elisp.texi | 3 | ||||
| -rw-r--r-- | doc/lispref/help.texi | 126 | ||||
| -rw-r--r-- | doc/lispref/macros.texi | 3 | ||||
| -rw-r--r-- | doc/lispref/modes.texi | 8 | ||||
| -rw-r--r-- | doc/lispref/tips.texi | 4 | ||||
| -rw-r--r-- | doc/lispref/vol1.texi | 3 | ||||
| -rw-r--r-- | doc/lispref/vol2.texi | 3 |
9 files changed, 95 insertions, 73 deletions
diff --git a/admin/FOR-RELEASE b/admin/FOR-RELEASE index 1b4666bae9a..dcaea46d2de 100644 --- a/admin/FOR-RELEASE +++ b/admin/FOR-RELEASE | |||
| @@ -197,7 +197,7 @@ files.texi | |||
| 197 | frames.texi | 197 | frames.texi |
| 198 | functions.texi cyd | 198 | functions.texi cyd |
| 199 | hash.texi cyd | 199 | hash.texi cyd |
| 200 | help.texi | 200 | help.texi cyd |
| 201 | hooks.texi | 201 | hooks.texi |
| 202 | index.texi | 202 | index.texi |
| 203 | internals.texi | 203 | internals.texi |
| @@ -210,7 +210,7 @@ macros.texi cyd | |||
| 210 | maps.texi | 210 | maps.texi |
| 211 | markers.texi | 211 | markers.texi |
| 212 | minibuf.texi | 212 | minibuf.texi |
| 213 | modes.texi | 213 | modes.texi cyd |
| 214 | nonascii.texi | 214 | nonascii.texi |
| 215 | numbers.texi cyd | 215 | numbers.texi cyd |
| 216 | objects.texi cyd | 216 | objects.texi cyd |
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index 33aaa61ed93..ef8cbf04757 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog | |||
| @@ -1,3 +1,17 @@ | |||
| 1 | 2012-02-19 Chong Yidong <cyd@gnu.org> | ||
| 2 | |||
| 3 | * help.texi (Documentation, Documentation Basics, Help Functions): | ||
| 4 | Minor clarifications. | ||
| 5 | (Accessing Documentation): Clarify what documentation-property is | ||
| 6 | for. Add xref to Keys in Documentation. | ||
| 7 | |||
| 8 | * tips.texi (Documentation Tips): Don't recommend using * in | ||
| 9 | docstrings. | ||
| 10 | |||
| 11 | * macros.texi (Defining Macros): | ||
| 12 | * modes.texi (Derived Modes): Say "documentation string" instead | ||
| 13 | of docstring. | ||
| 14 | |||
| 1 | 2012-02-18 Chong Yidong <cyd@gnu.org> | 15 | 2012-02-18 Chong Yidong <cyd@gnu.org> |
| 2 | 16 | ||
| 3 | * modes.texi (Tabulated List Mode): New node. | 17 | * modes.texi (Tabulated List Mode): New node. |
diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi index efd250c06f3..14ad624da86 100644 --- a/doc/lispref/elisp.texi +++ b/doc/lispref/elisp.texi | |||
| @@ -827,8 +827,7 @@ Multiline Font Lock Constructs | |||
| 827 | 827 | ||
| 828 | Documentation | 828 | Documentation |
| 829 | 829 | ||
| 830 | * Documentation Basics:: Good style for doc strings. | 830 | * Documentation Basics:: Where doc strings are defined and stored. |
| 831 | Where to put them. How Emacs stores them. | ||
| 832 | * Accessing Documentation:: How Lisp programs can access doc strings. | 831 | * Accessing Documentation:: How Lisp programs can access doc strings. |
| 833 | * Keys in Documentation:: Substituting current key bindings. | 832 | * Keys in Documentation:: Substituting current key bindings. |
| 834 | * Describing Characters:: Making printable descriptions of | 833 | * Describing Characters:: Making printable descriptions of |
diff --git a/doc/lispref/help.texi b/doc/lispref/help.texi index f6556639e98..cb853f82a7c 100644 --- a/doc/lispref/help.texi +++ b/doc/lispref/help.texi | |||
| @@ -8,11 +8,11 @@ | |||
| 8 | @chapter Documentation | 8 | @chapter Documentation |
| 9 | @cindex documentation strings | 9 | @cindex documentation strings |
| 10 | 10 | ||
| 11 | GNU Emacs Lisp has convenient on-line help facilities, most of which | 11 | GNU Emacs has convenient built-in help facilities, most of which |
| 12 | derive their information from the documentation strings associated with | 12 | derive their information from documentation strings associated with |
| 13 | functions and variables. This chapter describes how to write good | 13 | functions and variables. This chapter describes how to access |
| 14 | documentation strings for your Lisp programs, as well as how to write | 14 | documentation strings in Lisp programs. @xref{Documentation Tips}, |
| 15 | programs to access documentation. | 15 | for how to write good documentation strings. |
| 16 | 16 | ||
| 17 | Note that the documentation strings for Emacs are not the same thing | 17 | Note that the documentation strings for Emacs are not the same thing |
| 18 | as the Emacs manual. Manuals have their own source files, written in | 18 | as the Emacs manual. Manuals have their own source files, written in |
| @@ -23,12 +23,10 @@ manual is not organized in that fashion; it is organized in terms of | |||
| 23 | topics of discussion. | 23 | topics of discussion. |
| 24 | 24 | ||
| 25 | For commands to display documentation strings, see @ref{Help, , | 25 | For commands to display documentation strings, see @ref{Help, , |
| 26 | Help, emacs, The GNU Emacs Manual}. For the conventions for writing | 26 | Help, emacs, The GNU Emacs Manual}. |
| 27 | documentation strings, see @ref{Documentation Tips}. | ||
| 28 | 27 | ||
| 29 | @menu | 28 | @menu |
| 30 | * Documentation Basics:: Good style for doc strings. | 29 | * Documentation Basics:: Where doc strings are defined and stored. |
| 31 | Where to put them. How Emacs stores them. | ||
| 32 | * Accessing Documentation:: How Lisp programs can access doc strings. | 30 | * Accessing Documentation:: How Lisp programs can access doc strings. |
| 33 | * Keys in Documentation:: Substituting current key bindings. | 31 | * Keys in Documentation:: Substituting current key bindings. |
| 34 | * Describing Characters:: Making printable descriptions of | 32 | * Describing Characters:: Making printable descriptions of |
| @@ -52,14 +50,15 @@ string follows the argument list. In a variable definition, the | |||
| 52 | documentation string follows the initial value of the variable. | 50 | documentation string follows the initial value of the variable. |
| 53 | 51 | ||
| 54 | When you write a documentation string, make the first line a | 52 | When you write a documentation string, make the first line a |
| 55 | complete sentence (or two complete sentences) since some commands, | 53 | complete sentence (or two complete sentences) that briefly describes |
| 56 | such as @code{apropos}, show only the first line of a multi-line | 54 | what the function or variable does. Some commands, such as |
| 57 | documentation string. Also, you should not indent the second line of | 55 | @code{apropos}, show only the first line of a multi-line documentation |
| 58 | a documentation string, if it has one, because that looks odd when you | 56 | string. Also, you should not indent the second line of a |
| 57 | documentation string, if it has one, because that looks odd when you | ||
| 59 | use @kbd{C-h f} (@code{describe-function}) or @kbd{C-h v} | 58 | use @kbd{C-h f} (@code{describe-function}) or @kbd{C-h v} |
| 60 | (@code{describe-variable}) to view the documentation string. There | 59 | (@code{describe-variable}) to view the documentation string. There |
| 61 | are many other conventions for doc strings; see @ref{Documentation | 60 | are many other conventions for documentation strings; see |
| 62 | Tips}. | 61 | @ref{Documentation Tips}. |
| 63 | 62 | ||
| 64 | Documentation strings can contain several special substrings, which | 63 | Documentation strings can contain several special substrings, which |
| 65 | stand for key bindings to be looked up in the current keymaps when the | 64 | stand for key bindings to be looked up in the current keymaps when the |
| @@ -71,55 +70,67 @@ rearranges the key bindings. (@xref{Keys in Documentation}.) | |||
| 71 | Emacs Lisp mode fills documentation strings to the width | 70 | Emacs Lisp mode fills documentation strings to the width |
| 72 | specified by @code{emacs-lisp-docstring-fill-column}. | 71 | specified by @code{emacs-lisp-docstring-fill-column}. |
| 73 | 72 | ||
| 74 | In Emacs Lisp, a documentation string is accessible through the | 73 | Exactly where a documentation string is stored depends on how its |
| 75 | function or variable that it describes: | 74 | function or variable was defined or loaded into memory: |
| 76 | 75 | ||
| 77 | @itemize @bullet | 76 | @itemize @bullet |
| 78 | @item | 77 | @item |
| 79 | @kindex function-documentation | 78 | @kindex function-documentation |
| 80 | The documentation for a function is usually stored in the function | 79 | When you define a function (@pxref{Lambda Expressions}, and |
| 81 | definition itself (@pxref{Lambda Expressions} and @pxref{Function | 80 | @pxref{Function Documentation}), the documentation string is stored in |
| 82 | Documentation}). The function @code{documentation} knows how to | 81 | the function definition itself. You can also put function |
| 83 | extract it. You can also put function documentation in the | 82 | documentation in the @code{function-documentation} property of a |
| 84 | @code{function-documentation} property of the function name. That is | 83 | function name. That is useful for function definitions which can't |
| 85 | useful with definitions such as keyboard macros that can't hold a | 84 | hold a documentation string, such as keyboard macros. |
| 86 | documentation string. | ||
| 87 | 85 | ||
| 88 | @item | 86 | @item |
| 89 | @kindex variable-documentation | 87 | @kindex variable-documentation |
| 90 | The documentation for a variable is stored in the variable's property | 88 | When you define a variable with a @code{defvar} or related form |
| 91 | list under the property name @code{variable-documentation}. The | 89 | (@pxref{Defining Variables}), the documentation is stored in the |
| 92 | function @code{documentation-property} knows how to retrieve it. | 90 | variable's @code{variable-documentation} property. |
| 93 | @end itemize | ||
| 94 | 91 | ||
| 95 | @cindex @file{DOC-@var{version}} (documentation) file | 92 | @cindex @file{DOC-@var{version}} (documentation) file |
| 96 | To save space, the documentation for preloaded functions and variables | 93 | @item |
| 97 | (including primitive functions and autoloaded functions) is stored in | 94 | To save memory, the documentation for preloaded functions and |
| 98 | the file @file{emacs/etc/DOC-@var{version}}---not inside Emacs. The | 95 | variables (including primitive functions and autoloaded functions) is |
| 99 | documentation strings for functions and variables loaded during the | 96 | not kept in memory, but in the file |
| 100 | Emacs session from byte-compiled files are stored in those files | 97 | @file{emacs/etc/DOC-@var{version}}, where @var{version} is the Emacs |
| 101 | (@pxref{Docs and Compilation}). | 98 | version number (@pxref{Version Info}). |
| 102 | 99 | ||
| 103 | The data structure inside Emacs has an integer offset into the file, or | 100 | @item |
| 104 | a list containing a file name and an integer, in place of the | 101 | When a function or variable is loaded from a byte-compiled file during |
| 105 | documentation string. The functions @code{documentation} and | 102 | the Emacs session, its documentation string is not loaded into memory. |
| 106 | @code{documentation-property} use that information to fetch the | 103 | Instead, Emacs looks it up in the byte-compiled file as needed. |
| 107 | documentation string from the appropriate file; this is transparent to | 104 | @xref{Docs and Compilation}. |
| 108 | the user. | 105 | @end itemize |
| 106 | |||
| 107 | @noindent | ||
| 108 | Regardless of where the documentation string is stored, you can | ||
| 109 | retrieve it using the @code{documentation} or | ||
| 110 | @code{documentation-property} function, described in the next section. | ||
| 109 | 111 | ||
| 110 | @node Accessing Documentation | 112 | @node Accessing Documentation |
| 111 | @section Access to Documentation Strings | 113 | @section Access to Documentation Strings |
| 112 | 114 | ||
| 113 | @defun documentation-property symbol property &optional verbatim | 115 | @defun documentation-property symbol property &optional verbatim |
| 114 | This function returns the documentation string that is recorded in | 116 | This function returns the documentation string recorded in |
| 115 | @var{symbol}'s property list under property @var{property}. It | 117 | @var{symbol}'s property list under property @var{property}. It is |
| 116 | retrieves the text from a file if the value calls for that. If the | 118 | most often used to look up the documentation strings of variables, for |
| 117 | property value isn't @code{nil}, isn't a string, and doesn't refer to | 119 | which @var{property} is @code{variable-documentation}. However, it |
| 118 | text in a file, then it is evaluated to obtain a string. | 120 | can also be used to look up other kinds of documentation, such as for |
| 121 | customization groups (but for function documentation, use the | ||
| 122 | @code{documentation} command, below). | ||
| 123 | |||
| 124 | If the value recorded in the property list refers to a documentation | ||
| 125 | string stored in a @file{DOC-@var{version}} file or a byte-compiled | ||
| 126 | file, it looks up that string and returns it. If the property value | ||
| 127 | isn't @code{nil}, isn't a string, and doesn't refer to text in a file, | ||
| 128 | then it is evaluated as a Lisp expression to obtain a string. | ||
| 119 | 129 | ||
| 120 | The last thing this function does is pass the string through | 130 | The last thing this function does is pass the string through |
| 121 | @code{substitute-command-keys} to substitute actual key bindings, | 131 | @code{substitute-command-keys} to substitute actual key bindings |
| 122 | unless @var{verbatim} is non-@code{nil}. | 132 | (@pxref{Keys in Documentation}). However, it skips this step if |
| 133 | @var{verbatim} is non-@code{nil}. | ||
| 123 | 134 | ||
| 124 | @smallexample | 135 | @smallexample |
| 125 | @group | 136 | @group |
| @@ -270,13 +281,13 @@ When the `track-eol' feature is doing its job, the value is 9999. | |||
| 270 | @end group | 281 | @end group |
| 271 | @end smallexample | 282 | @end smallexample |
| 272 | 283 | ||
| 273 | @defun Snarf-documentation filename | ||
| 274 | @anchor{Definition of Snarf-documentation} | 284 | @anchor{Definition of Snarf-documentation} |
| 275 | This function is used only during Emacs initialization, just before | 285 | @defun Snarf-documentation filename |
| 276 | the runnable Emacs is dumped. It finds the file offsets of the | 286 | This function is used when building Emacs, just before the runnable |
| 277 | documentation strings stored in the file @var{filename}, and records | 287 | Emacs is dumped. It finds the positions of the documentation strings |
| 278 | them in the in-core function definitions and variable property lists in | 288 | stored in the file @var{filename}, and records those positions into |
| 279 | place of the actual strings. @xref{Building Emacs}. | 289 | memory in the function definitions and variable property lists. |
| 290 | @xref{Building Emacs}. | ||
| 280 | 291 | ||
| 281 | Emacs reads the file @var{filename} from the @file{emacs/etc} directory. | 292 | Emacs reads the file @var{filename} from the @file{emacs/etc} directory. |
| 282 | When the dumped Emacs is later executed, the same file will be looked | 293 | When the dumped Emacs is later executed, the same file will be looked |
| @@ -515,13 +526,14 @@ definition as a function, variable, or face, or has properties. | |||
| 515 | The function returns a list of elements that look like this: | 526 | The function returns a list of elements that look like this: |
| 516 | 527 | ||
| 517 | @example | 528 | @example |
| 518 | (@var{symbol} @var{score} @var{fn-doc} @var{var-doc} | 529 | (@var{symbol} @var{score} @var{functionn-doc} @var{variable-doc} |
| 519 | @var{plist-doc} @var{widget-doc} @var{face-doc} @var{group-doc}) | 530 | @var{plist-doc} @var{widget-doc} @var{face-doc} @var{group-doc}) |
| 520 | @end example | 531 | @end example |
| 521 | 532 | ||
| 522 | Here, @var{score} is an integer measure of how important the symbol | 533 | Here, @var{score} is an integer measure of how important the symbol |
| 523 | seems to be as a match, and the remaining elements are documentation | 534 | seems to be as a match. Each of the remaining elements is a |
| 524 | strings for @var{symbol}'s various roles (or @code{nil}). | 535 | documentation string, or @code{nil}, for @var{symbol} as a function, |
| 536 | variable, etc. | ||
| 525 | 537 | ||
| 526 | It also displays the symbols in a buffer named @samp{*Apropos*}, each | 538 | It also displays the symbols in a buffer named @samp{*Apropos*}, each |
| 527 | with a one-line description taken from the beginning of its | 539 | with a one-line description taken from the beginning of its |
diff --git a/doc/lispref/macros.texi b/doc/lispref/macros.texi index de9e1c405f0..a71d3379b80 100644 --- a/doc/lispref/macros.texi +++ b/doc/lispref/macros.texi | |||
| @@ -258,7 +258,8 @@ Specify how to indent calls to this macro. @xref{Indenting Macros}, | |||
| 258 | for more details. | 258 | for more details. |
| 259 | 259 | ||
| 260 | @item (doc-string @var{number}) | 260 | @item (doc-string @var{number}) |
| 261 | Specify which element of the macro is the doc string, if any. | 261 | Specify which element of the macro is the documentation string, if |
| 262 | any. | ||
| 262 | @end table | 263 | @end table |
| 263 | 264 | ||
| 264 | A @code{declare} form only has its special effect in the body of a | 265 | A @code{declare} form only has its special effect in the body of a |
diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi index ad0010adf38..09a96f23c5e 100644 --- a/doc/lispref/modes.texi +++ b/doc/lispref/modes.texi | |||
| @@ -800,10 +800,10 @@ You can also specify @code{nil} for @var{parent}. This gives the new | |||
| 800 | mode no parent. Then @code{define-derived-mode} behaves as described | 800 | mode no parent. Then @code{define-derived-mode} behaves as described |
| 801 | above, but, of course, omits all actions connected with @var{parent}. | 801 | above, but, of course, omits all actions connected with @var{parent}. |
| 802 | 802 | ||
| 803 | The argument @var{docstring} specifies the documentation string for | 803 | The argument @var{docstring} specifies the documentation string for the |
| 804 | the new mode. @code{define-derived-mode} adds some general | 804 | new mode. @code{define-derived-mode} adds some general information |
| 805 | information about the mode's hook, followed by the mode's keymap, at | 805 | about the mode's hook, followed by the mode's keymap, at the end of this |
| 806 | the end of this docstring. If you omit @var{docstring}, | 806 | documentation string. If you omit @var{docstring}, |
| 807 | @code{define-derived-mode} generates a documentation string. | 807 | @code{define-derived-mode} generates a documentation string. |
| 808 | 808 | ||
| 809 | The @var{keyword-args} are pairs of keywords and values. The values | 809 | The @var{keyword-args} are pairs of keywords and values. The values |
diff --git a/doc/lispref/tips.texi b/doc/lispref/tips.texi index c0f6c0355e5..ad1f622bfac 100644 --- a/doc/lispref/tips.texi +++ b/doc/lispref/tips.texi | |||
| @@ -826,9 +826,7 @@ In Dired, visit the file or directory named on this line. | |||
| 826 | 826 | ||
| 827 | @item | 827 | @item |
| 828 | When you define a variable that users ought to set interactively, you | 828 | When you define a variable that users ought to set interactively, you |
| 829 | normally should use @code{defcustom}. However, if for some reason you | 829 | should use @code{defcustom}. @xref{Defining Variables}. |
| 830 | use @code{defvar} instead, start the doc string with a @samp{*}. | ||
| 831 | @xref{Defining Variables}. | ||
| 832 | 830 | ||
| 833 | @item | 831 | @item |
| 834 | The documentation string for a variable that is a yes-or-no flag should | 832 | The documentation string for a variable that is a yes-or-no flag should |
diff --git a/doc/lispref/vol1.texi b/doc/lispref/vol1.texi index 703ade3aac4..759c83dfe2b 100644 --- a/doc/lispref/vol1.texi +++ b/doc/lispref/vol1.texi | |||
| @@ -848,8 +848,7 @@ Multiline Font Lock Constructs | |||
| 848 | 848 | ||
| 849 | Documentation | 849 | Documentation |
| 850 | 850 | ||
| 851 | * Documentation Basics:: Good style for doc strings. | 851 | * Documentation Basics:: Where doc strings are defined and stored. |
| 852 | Where to put them. How Emacs stores them. | ||
| 853 | * Accessing Documentation:: How Lisp programs can access doc strings. | 852 | * Accessing Documentation:: How Lisp programs can access doc strings. |
| 854 | * Keys in Documentation:: Substituting current key bindings. | 853 | * Keys in Documentation:: Substituting current key bindings. |
| 855 | * Describing Characters:: Making printable descriptions of | 854 | * Describing Characters:: Making printable descriptions of |
diff --git a/doc/lispref/vol2.texi b/doc/lispref/vol2.texi index 7c1e2adbf81..c70dfd8c6f8 100644 --- a/doc/lispref/vol2.texi +++ b/doc/lispref/vol2.texi | |||
| @@ -847,8 +847,7 @@ Multiline Font Lock Constructs | |||
| 847 | 847 | ||
| 848 | Documentation | 848 | Documentation |
| 849 | 849 | ||
| 850 | * Documentation Basics:: Good style for doc strings. | 850 | * Documentation Basics:: Where doc strings are defined and stored. |
| 851 | Where to put them. How Emacs stores them. | ||
| 852 | * Accessing Documentation:: How Lisp programs can access doc strings. | 851 | * Accessing Documentation:: How Lisp programs can access doc strings. |
| 853 | * Keys in Documentation:: Substituting current key bindings. | 852 | * Keys in Documentation:: Substituting current key bindings. |
| 854 | * Describing Characters:: Making printable descriptions of | 853 | * Describing Characters:: Making printable descriptions of |