aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChong Yidong2012-02-19 13:54:33 +0800
committerChong Yidong2012-02-19 13:54:33 +0800
commit8376d7c25a3d73cc516e9ef9537194e702474a52 (patch)
tree91f6ec7f1d2b5f16dc7474826449f5eae735a85d
parent0b19b281212ccb1253088afaaa196f69b21a5a6d (diff)
downloademacs-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-RELEASE4
-rw-r--r--doc/lispref/ChangeLog14
-rw-r--r--doc/lispref/elisp.texi3
-rw-r--r--doc/lispref/help.texi126
-rw-r--r--doc/lispref/macros.texi3
-rw-r--r--doc/lispref/modes.texi8
-rw-r--r--doc/lispref/tips.texi4
-rw-r--r--doc/lispref/vol1.texi3
-rw-r--r--doc/lispref/vol2.texi3
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
197frames.texi 197frames.texi
198functions.texi cyd 198functions.texi cyd
199hash.texi cyd 199hash.texi cyd
200help.texi 200help.texi cyd
201hooks.texi 201hooks.texi
202index.texi 202index.texi
203internals.texi 203internals.texi
@@ -210,7 +210,7 @@ macros.texi cyd
210maps.texi 210maps.texi
211markers.texi 211markers.texi
212minibuf.texi 212minibuf.texi
213modes.texi 213modes.texi cyd
214nonascii.texi 214nonascii.texi
215numbers.texi cyd 215numbers.texi cyd
216objects.texi cyd 216objects.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 @@
12012-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
12012-02-18 Chong Yidong <cyd@gnu.org> 152012-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
828Documentation 828Documentation
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
12derive their information from the documentation strings associated with 12derive their information from documentation strings associated with
13functions and variables. This chapter describes how to write good 13functions and variables. This chapter describes how to access
14documentation strings for your Lisp programs, as well as how to write 14documentation strings in Lisp programs. @xref{Documentation Tips},
15programs to access documentation. 15for 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
18as the Emacs manual. Manuals have their own source files, written in 18as 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
23topics of discussion. 23topics of discussion.
24 24
25 For commands to display documentation strings, see @ref{Help, , 25 For commands to display documentation strings, see @ref{Help, ,
26Help, emacs, The GNU Emacs Manual}. For the conventions for writing 26Help, emacs, The GNU Emacs Manual}.
27documentation 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
52documentation string follows the initial value of the variable. 50documentation 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
55complete sentence (or two complete sentences) since some commands, 53complete sentence (or two complete sentences) that briefly describes
56such as @code{apropos}, show only the first line of a multi-line 54what the function or variable does. Some commands, such as
57documentation string. Also, you should not indent the second line of 55@code{apropos}, show only the first line of a multi-line documentation
58a documentation string, if it has one, because that looks odd when you 56string. Also, you should not indent the second line of a
57documentation string, if it has one, because that looks odd when you
59use @kbd{C-h f} (@code{describe-function}) or @kbd{C-h v} 58use @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
61are many other conventions for doc strings; see @ref{Documentation 60are many other conventions for documentation strings; see
62Tips}. 61@ref{Documentation Tips}.
63 62
64 Documentation strings can contain several special substrings, which 63 Documentation strings can contain several special substrings, which
65stand for key bindings to be looked up in the current keymaps when the 64stand 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
72specified by @code{emacs-lisp-docstring-fill-column}. 71specified 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
75function or variable that it describes: 74function 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
80The documentation for a function is usually stored in the function 79When you define a function (@pxref{Lambda Expressions}, and
81definition itself (@pxref{Lambda Expressions} and @pxref{Function 80@pxref{Function Documentation}), the documentation string is stored in
82Documentation}). The function @code{documentation} knows how to 81the function definition itself. You can also put function
83extract it. You can also put function documentation in the 82documentation in the @code{function-documentation} property of a
84@code{function-documentation} property of the function name. That is 83function name. That is useful for function definitions which can't
85useful with definitions such as keyboard macros that can't hold a 84hold a documentation string, such as keyboard macros.
86documentation string.
87 85
88@item 86@item
89@kindex variable-documentation 87@kindex variable-documentation
90The documentation for a variable is stored in the variable's property 88When you define a variable with a @code{defvar} or related form
91list under the property name @code{variable-documentation}. The 89(@pxref{Defining Variables}), the documentation is stored in the
92function @code{documentation-property} knows how to retrieve it. 90variable'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
96To save space, the documentation for preloaded functions and variables 93@item
97(including primitive functions and autoloaded functions) is stored in 94To save memory, the documentation for preloaded functions and
98the file @file{emacs/etc/DOC-@var{version}}---not inside Emacs. The 95variables (including primitive functions and autoloaded functions) is
99documentation strings for functions and variables loaded during the 96not kept in memory, but in the file
100Emacs 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}). 98version number (@pxref{Version Info}).
102 99
103The data structure inside Emacs has an integer offset into the file, or 100@item
104a list containing a file name and an integer, in place of the 101When a function or variable is loaded from a byte-compiled file during
105documentation string. The functions @code{documentation} and 102the Emacs session, its documentation string is not loaded into memory.
106@code{documentation-property} use that information to fetch the 103Instead, Emacs looks it up in the byte-compiled file as needed.
107documentation string from the appropriate file; this is transparent to 104@xref{Docs and Compilation}.
108the user. 105@end itemize
106
107@noindent
108Regardless of where the documentation string is stored, you can
109retrieve 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
114This function returns the documentation string that is recorded in 116This 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
116retrieves the text from a file if the value calls for that. If the 118most often used to look up the documentation strings of variables, for
117property value isn't @code{nil}, isn't a string, and doesn't refer to 119which @var{property} is @code{variable-documentation}. However, it
118text in a file, then it is evaluated to obtain a string. 120can also be used to look up other kinds of documentation, such as for
121customization groups (but for function documentation, use the
122@code{documentation} command, below).
123
124If the value recorded in the property list refers to a documentation
125string stored in a @file{DOC-@var{version}} file or a byte-compiled
126file, it looks up that string and returns it. If the property value
127isn't @code{nil}, isn't a string, and doesn't refer to text in a file,
128then it is evaluated as a Lisp expression to obtain a string.
119 129
120The last thing this function does is pass the string through 130The 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
122unless @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}
275This function is used only during Emacs initialization, just before 285@defun Snarf-documentation filename
276the runnable Emacs is dumped. It finds the file offsets of the 286This function is used when building Emacs, just before the runnable
277documentation strings stored in the file @var{filename}, and records 287Emacs is dumped. It finds the positions of the documentation strings
278them in the in-core function definitions and variable property lists in 288stored in the file @var{filename}, and records those positions into
279place of the actual strings. @xref{Building Emacs}. 289memory in the function definitions and variable property lists.
290@xref{Building Emacs}.
280 291
281Emacs reads the file @var{filename} from the @file{emacs/etc} directory. 292Emacs reads the file @var{filename} from the @file{emacs/etc} directory.
282When the dumped Emacs is later executed, the same file will be looked 293When 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.
515The function returns a list of elements that look like this: 526The 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
522Here, @var{score} is an integer measure of how important the symbol 533Here, @var{score} is an integer measure of how important the symbol
523seems to be as a match, and the remaining elements are documentation 534seems to be as a match. Each of the remaining elements is a
524strings for @var{symbol}'s various roles (or @code{nil}). 535documentation string, or @code{nil}, for @var{symbol} as a function,
536variable, etc.
525 537
526It also displays the symbols in a buffer named @samp{*Apropos*}, each 538It also displays the symbols in a buffer named @samp{*Apropos*}, each
527with a one-line description taken from the beginning of its 539with 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},
258for more details. 258for more details.
259 259
260@item (doc-string @var{number}) 260@item (doc-string @var{number})
261Specify which element of the macro is the doc string, if any. 261Specify which element of the macro is the documentation string, if
262any.
262@end table 263@end table
263 264
264A @code{declare} form only has its special effect in the body of a 265A @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
800mode no parent. Then @code{define-derived-mode} behaves as described 800mode no parent. Then @code{define-derived-mode} behaves as described
801above, but, of course, omits all actions connected with @var{parent}. 801above, but, of course, omits all actions connected with @var{parent}.
802 802
803The argument @var{docstring} specifies the documentation string for 803The argument @var{docstring} specifies the documentation string for the
804the new mode. @code{define-derived-mode} adds some general 804new mode. @code{define-derived-mode} adds some general information
805information about the mode's hook, followed by the mode's keymap, at 805about the mode's hook, followed by the mode's keymap, at the end of this
806the end of this docstring. If you omit @var{docstring}, 806documentation 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
809The @var{keyword-args} are pairs of keywords and values. The values 809The @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
828When you define a variable that users ought to set interactively, you 828When you define a variable that users ought to set interactively, you
829normally should use @code{defcustom}. However, if for some reason you 829should use @code{defcustom}. @xref{Defining Variables}.
830use @code{defvar} instead, start the doc string with a @samp{*}.
831@xref{Defining Variables}.
832 830
833@item 831@item
834The documentation string for a variable that is a yes-or-no flag should 832The 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
849Documentation 849Documentation
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
848Documentation 848Documentation
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