elisp: Function Documentation

 
 12.2.4 Documentation Strings of Functions
 -----------------------------------------
 
 A lambda expression may optionally have a “documentation string” just
 after the lambda list.  This string does not affect execution of the
 function; it is a kind of comment, but a systematized comment which
 actually appears inside the Lisp world and can be used by the Emacs help
 facilities.  SeeDocumentation, for how the documentation string is
 accessed.
 
    It is a good idea to provide documentation strings for all the
 functions in your program, even those that are called only from within
 your program.  Documentation strings are like comments, except that they
 are easier to access.
 
    The first line of the documentation string should stand on its own,
 because ‘apropos’ displays just this first line.  It should consist of
 one or two complete sentences that summarize the function’s purpose.
 
    The start of the documentation string is usually indented in the
 source file, but since these spaces come before the starting
 double-quote, they are not part of the string.  Some people make a
 practice of indenting any additional lines of the string so that the
 text lines up in the program source.  _That is a mistake._  The
 indentation of the following lines is inside the string; what looks nice
 in the source code will look ugly when displayed by the help commands.
 
    You may wonder how the documentation string could be optional, since
 there are required components of the function that follow it (the body).
 Since evaluation of a string returns that string, without any side
 effects, it has no effect if it is not the last form in the body.  Thus,
 in practice, there is no confusion between the first form of the body
 and the documentation string; if the only body form is a string then it
 serves both as the return value and as the documentation.
 
    The last line of the documentation string can specify calling
 conventions different from the actual function arguments.  Write text
 like this:
 
      \(fn ARGLIST)
 
 following a blank line, at the beginning of the line, with no newline
 following it inside the documentation string.  (The ‘\’ is used to avoid
 confusing the Emacs motion commands.)  The calling convention specified
 in this way appears in help messages in place of the one derived from
 the actual arguments of the function.
 
    This feature is particularly useful for macro definitions, since the
 arguments written in a macro definition often do not correspond to the
 way users think of the parts of the macro call.