Customizing Lisp Indentation
----------------------------
The indentation pattern for a Lisp expression can depend on the
function called by the expression. For each Lisp function, you can
choose among several predefined patterns of indentation, or define an
arbitrary one with a Lisp program.
The standard pattern of indentation is as follows: the second line
of the expression is indented under the first argument, if that is on
the same line as the beginning of the expression; otherwise, the second
line is indented underneath the function name. Each following line is
indented under the previous line whose nesting depth is the same.
If the variable `lisp-indent-offset' is non-`nil', it overrides the
usual indentation pattern for the second line of an expression, so that
such lines are always indented `lisp-indent-offset' more columns than
the containing list.
Certain functions override the standard pattern. Functions whose
names start with `def' treat the the second lines as the start of a
"body", by indenting the second line `lisp-body-indent' additional
columns beyond the open-parenthesis that starts the expression.
You can override the standard pattern in various ways for individual
functions, according to the `lisp-indent-function' property of the
function name. There are four possibilities for this property:
`nil'
This is the same as no property--use the standard indentation
pattern.
`defun'
Handle this function like a `def' construct: treat the second line
as the start of a "body".
a number, NUMBER
The first NUMBER arguments of the function are "distinguished"
arguments; the rest are considered the body of the expression. A
line in the expression is indented according to whether the first
argument on it is distinguished or not. If the argument is part
of the body, the line is indented `lisp-body-indent' more columns
than the open-parenthesis starting the containing expression. If
the argument is distinguished and is either the first or second
argument, it is indented _twice_ that many extra columns. If the
argument is distinguished and not the first or second argument,
the line uses the standard pattern.
a symbol, SYMBOL
SYMBOL should be a function name; that function is called to
calculate the indentation of a line within this expression. The
function receives two arguments:
STATE
The value returned by `parse-partial-sexp' (a Lisp primitive
for indentation and nesting computation) when it parses up to
the beginning of this line.
POS
The position at which the line being indented begins.
It should return either a number, which is the number of columns of
indentation for that line, or a list whose car is such a number.
The difference between returning a number and returning a list is
that a number says that all following lines at the same nesting
level should be indented just like this one; a list says that
following lines might call for different indentations. This makes
a difference when the indentation is being computed by `C-M-q'; if
the value is a number, `C-M-q' need not recalculate indentation
for the following lines until the end of the list.
automatically generated byinfo2wwwversion 1.2.2.9