(Overlay Properties): Clarify how priorities affect use of the properties.
[bpt/emacs.git] / lispref / macros.texi
CommitLineData
73804d4b
RS
1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual.
177c0ea7 3@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998 Free Software Foundation, Inc.
73804d4b
RS
4@c See the file elisp.texi for copying conditions.
5@setfilename ../info/macros
f9f59935 6@node Macros, Customization, Functions, Top
73804d4b
RS
7@chapter Macros
8@cindex macros
9
10 @dfn{Macros} enable you to define new control constructs and other
11language features. A macro is defined much like a function, but instead
12of telling how to compute a value, it tells how to compute another Lisp
13expression which will in turn compute the value. We call this
14expression the @dfn{expansion} of the macro.
15
16 Macros can do this because they operate on the unevaluated expressions
17for the arguments, not on the argument values as functions do. They can
18therefore construct an expansion containing these argument expressions
19or parts of them.
20
21 If you are using a macro to do something an ordinary function could
22do, just for the sake of speed, consider using an inline function
23instead. @xref{Inline Functions}.
24
25@menu
26* Simple Macro:: A basic example.
27* Expansion:: How, when and why macros are expanded.
28* Compiling Macros:: How macros are expanded by the compiler.
29* Defining Macros:: How to write a macro definition.
30* Backquote:: Easier construction of list structure.
31* Problems with Macros:: Don't evaluate the macro arguments too many times.
32 Don't hide the user's variables.
d5c99c9e 33* Indenting Macros:: Specifying how to indent macro calls.
73804d4b
RS
34@end menu
35
36@node Simple Macro
37@section A Simple Example of a Macro
38
39 Suppose we would like to define a Lisp construct to increment a
40variable value, much like the @code{++} operator in C. We would like to
41write @code{(inc x)} and have the effect of @code{(setq x (1+ x))}.
42Here's a macro definition that does the job:
43
44@findex inc
45@example
46@group
47(defmacro inc (var)
48 (list 'setq var (list '1+ var)))
49@end group
50@end example
51
969fe9b5
RS
52 When this is called with @code{(inc x)}, the argument @var{var} is the
53symbol @code{x}---@emph{not} the @emph{value} of @code{x}, as it would
54be in a function. The body of the macro uses this to construct the
55expansion, which is @code{(setq x (1+ x))}. Once the macro definition
56returns this expansion, Lisp proceeds to evaluate it, thus incrementing
57@code{x}.
73804d4b
RS
58
59@node Expansion
60@section Expansion of a Macro Call
61@cindex expansion of macros
62@cindex macro call
63
64 A macro call looks just like a function call in that it is a list which
65starts with the name of the macro. The rest of the elements of the list
66are the arguments of the macro.
67
68 Evaluation of the macro call begins like evaluation of a function call
69except for one crucial difference: the macro arguments are the actual
70expressions appearing in the macro call. They are not evaluated before
71they are given to the macro definition. By contrast, the arguments of a
72function are results of evaluating the elements of the function call
73list.
74
75 Having obtained the arguments, Lisp invokes the macro definition just
76as a function is invoked. The argument variables of the macro are bound
77to the argument values from the macro call, or to a list of them in the
78case of a @code{&rest} argument. And the macro body executes and
79returns its value just as a function body does.
80
81 The second crucial difference between macros and functions is that the
82value returned by the macro body is not the value of the macro call.
83Instead, it is an alternate expression for computing that value, also
84known as the @dfn{expansion} of the macro. The Lisp interpreter
85proceeds to evaluate the expansion as soon as it comes back from the
86macro.
87
88 Since the expansion is evaluated in the normal manner, it may contain
89calls to other macros. It may even be a call to the same macro, though
90this is unusual.
91
92 You can see the expansion of a given macro call by calling
93@code{macroexpand}.
94
95@defun macroexpand form &optional environment
96@cindex macro expansion
97This function expands @var{form}, if it is a macro call. If the result
98is another macro call, it is expanded in turn, until something which is
99not a macro call results. That is the value returned by
100@code{macroexpand}. If @var{form} is not a macro call to begin with, it
101is returned as given.
102
103Note that @code{macroexpand} does not look at the subexpressions of
104@var{form} (although some macro definitions may do so). Even if they
105are macro calls themselves, @code{macroexpand} does not expand them.
106
107The function @code{macroexpand} does not expand calls to inline functions.
108Normally there is no need for that, since a call to an inline function is
109no harder to understand than a call to an ordinary function.
110
111If @var{environment} is provided, it specifies an alist of macro
112definitions that shadow the currently defined macros. Byte compilation
113uses this feature.
114
115@smallexample
116@group
117(defmacro inc (var)
118 (list 'setq var (list '1+ var)))
119 @result{} inc
120@end group
121
122@group
123(macroexpand '(inc r))
124 @result{} (setq r (1+ r))
125@end group
126
127@group
128(defmacro inc2 (var1 var2)
129 (list 'progn (list 'inc var1) (list 'inc var2)))
130 @result{} inc2
131@end group
132
133@group
134(macroexpand '(inc2 r s))
135 @result{} (progn (inc r) (inc s)) ; @r{@code{inc} not expanded here.}
136@end group
137@end smallexample
138@end defun
139
140@node Compiling Macros
141@section Macros and Byte Compilation
142@cindex byte-compiling macros
143
144 You might ask why we take the trouble to compute an expansion for a
145macro and then evaluate the expansion. Why not have the macro body
146produce the desired results directly? The reason has to do with
147compilation.
148
149 When a macro call appears in a Lisp program being compiled, the Lisp
150compiler calls the macro definition just as the interpreter would, and
151receives an expansion. But instead of evaluating this expansion, it
152compiles the expansion as if it had appeared directly in the program.
153As a result, the compiled code produces the value and side effects
154intended for the macro, but executes at full compiled speed. This would
155not work if the macro body computed the value and side effects
156itself---they would be computed at compile time, which is not useful.
157
f9f59935
RS
158 In order for compilation of macro calls to work, the macros must
159already be defined in Lisp when the calls to them are compiled. The
160compiler has a special feature to help you do this: if a file being
161compiled contains a @code{defmacro} form, the macro is defined
162temporarily for the rest of the compilation of that file. To make this
163feature work, you must put the @code{defmacro} in the same file where it
164is used, and before its first use.
73804d4b
RS
165
166 Byte-compiling a file executes any @code{require} calls at top-level
167in the file. This is in case the file needs the required packages for
168proper compilation. One way to ensure that necessary macro definitions
bfe721d1
KH
169are available during compilation is to require the files that define
170them (@pxref{Named Features}). To avoid loading the macro definition files
171when someone @emph{runs} the compiled program, write
172@code{eval-when-compile} around the @code{require} calls (@pxref{Eval
173During Compile}).
73804d4b
RS
174
175@node Defining Macros
176@section Defining Macros
177
178 A Lisp macro is a list whose @sc{car} is @code{macro}. Its @sc{cdr} should
179be a function; expansion of the macro works by applying the function
180(with @code{apply}) to the list of unevaluated argument-expressions
181from the macro call.
182
183 It is possible to use an anonymous Lisp macro just like an anonymous
184function, but this is never done, because it does not make sense to pass
bfe721d1
KH
185an anonymous macro to functionals such as @code{mapcar}. In practice,
186all Lisp macros have names, and they are usually defined with the
187special form @code{defmacro}.
73804d4b
RS
188
189@defspec defmacro name argument-list body-forms@dots{}
190@code{defmacro} defines the symbol @var{name} as a macro that looks
191like this:
192
193@example
194(macro lambda @var{argument-list} . @var{body-forms})
195@end example
196
969fe9b5 197(Note that the @sc{cdr} of this list is a function---a lambda expression.)
73804d4b
RS
198This macro object is stored in the function cell of @var{name}. The
199value returned by evaluating the @code{defmacro} form is @var{name}, but
200usually we ignore this value.
201
202The shape and meaning of @var{argument-list} is the same as in a
203function, and the keywords @code{&rest} and @code{&optional} may be used
204(@pxref{Argument List}). Macros may have a documentation string, but
205any @code{interactive} declaration is ignored since macros cannot be
206called interactively.
207@end defspec
208
d5c99c9e
RS
209 The body of the macro definition can include a @code{declare} form,
210which can specify how @key{TAB} should indent macro calls, and how to
211step through them for Edebug.
212
213@defspec declare @var{specs}...
214This special form is used at top level in a macro definition to
215specify various additional information about it. Two kinds of
216specification are currently supported:
217
218@table @code
219@item (edebug @var{edebug-form-spec})
220Specify how to step through macro calls for Edebug.
221@xref{Instrumenting Macro Calls}, for more details.
222
223@item (indent @var{indent-spec})
224Specify how to indent calls to this macro. @xref{Indenting Macros},
225for more details.
226@end table
227@end defspec
228
229 No macro absolutely needs a @code{declare} form, because that form
230has no effect on how the macro expands, on what the macro means in the
231program. It only affects secondary features: indentation and Edebug.
232
73804d4b
RS
233@node Backquote
234@section Backquote
235@cindex backquote (list substitution)
236@cindex ` (list substitution)
22697dac 237@findex `
73804d4b
RS
238
239 Macros often need to construct large list structures from a mixture of
969fe9b5
RS
240constants and nonconstant parts. To make this easier, use the @samp{`}
241syntax (usually called @dfn{backquote}).
73804d4b
RS
242
243 Backquote allows you to quote a list, but selectively evaluate
244elements of that list. In the simplest case, it is identical to the
245special form @code{quote} (@pxref{Quoting}). For example, these
246two forms yield identical results:
247
248@example
249@group
22697dac 250`(a list of (+ 2 3) elements)
73804d4b
RS
251 @result{} (a list of (+ 2 3) elements)
252@end group
253@group
22697dac 254'(a list of (+ 2 3) elements)
73804d4b
RS
255 @result{} (a list of (+ 2 3) elements)
256@end group
257@end example
258
f57ddf67 259@findex , @r{(with Backquote)}
bfe721d1 260The special marker @samp{,} inside of the argument to backquote
73804d4b 261indicates a value that isn't constant. Backquote evaluates the
bfe721d1 262argument of @samp{,} and puts the value in the list structure:
73804d4b
RS
263
264@example
265@group
266(list 'a 'list 'of (+ 2 3) 'elements)
267 @result{} (a list of 5 elements)
268@end group
269@group
22697dac 270`(a list of ,(+ 2 3) elements)
73804d4b
RS
271 @result{} (a list of 5 elements)
272@end group
f9f59935
RS
273@end example
274
275 Substitution with @samp{,} is allowed at deeper levels of the list
276structure also. For example:
277
278@example
279@group
280(defmacro t-becomes-nil (variable)
281 `(if (eq ,variable t)
282 (setq ,variable nil)))
283@end group
284
285@group
286(t-becomes-nil foo)
287 @equiv{} (if (eq foo t) (setq foo nil))
288@end group
73804d4b
RS
289@end example
290
f57ddf67 291@findex ,@@ @r{(with Backquote)}
73804d4b 292@cindex splicing (with backquote)
f9f59935 293 You can also @dfn{splice} an evaluated value into the resulting list,
bfe721d1 294using the special marker @samp{,@@}. The elements of the spliced list
73804d4b 295become elements at the same level as the other elements of the resulting
bfe721d1 296list. The equivalent code without using @samp{`} is often unreadable.
73804d4b
RS
297Here are some examples:
298
299@example
300@group
301(setq some-list '(2 3))
302 @result{} (2 3)
303@end group
304@group
305(cons 1 (append some-list '(4) some-list))
306 @result{} (1 2 3 4 2 3)
307@end group
308@group
22697dac 309`(1 ,@@some-list 4 ,@@some-list)
73804d4b
RS
310 @result{} (1 2 3 4 2 3)
311@end group
312
313@group
314(setq list '(hack foo bar))
315 @result{} (hack foo bar)
316@end group
317@group
318(cons 'use
319 (cons 'the
320 (cons 'words (append (cdr list) '(as elements)))))
321 @result{} (use the words foo bar as elements)
322@end group
323@group
22697dac 324`(use the words ,@@(cdr list) as elements)
73804d4b
RS
325 @result{} (use the words foo bar as elements)
326@end group
327@end example
328
969fe9b5
RS
329In old Emacs versions, before version 19.29, @samp{`} used a different
330syntax which required an extra level of parentheses around the entire
331backquote construct. Likewise, each @samp{,} or @samp{,@@} substitution
332required an extra level of parentheses surrounding both the @samp{,} or
333@samp{,@@} and the following expression. The old syntax required
334whitespace between the @samp{`}, @samp{,} or @samp{,@@} and the
335following expression.
22697dac 336
f9f59935
RS
337This syntax is still accepted, for compatibility with old Emacs
338versions, but we recommend not using it in new programs.
73804d4b
RS
339
340@node Problems with Macros
341@section Common Problems Using Macros
342
343 The basic facts of macro expansion have counterintuitive consequences.
344This section describes some important consequences that can lead to
345trouble, and rules to follow to avoid trouble.
346
347@menu
0bae67ad 348* Wrong Time:: Do the work in the expansion, not in the macro.
73804d4b
RS
349* Argument Evaluation:: The expansion should evaluate each macro arg once.
350* Surprising Local Vars:: Local variable bindings in the expansion
351 require special care.
352* Eval During Expansion:: Don't evaluate them; put them in the expansion.
353* Repeated Expansion:: Avoid depending on how many times expansion is done.
354@end menu
355
0bae67ad
RS
356@node Wrong Time
357@subsection Wrong Time
358
359 The most common problem in writing macros is doing too some of the
360real work prematurely---while expanding the macro, rather than in the
361expansion itself. For instance, one real package had this nmacro
362definition:
363
364@example
365(defmacro my-set-buffer-multibyte (arg)
366 (if (fboundp 'set-buffer-multibyte)
367 (set-buffer-multibyte arg)))
368@end example
369
370With this erroneous macro definition, the program worked fine when
371interpreted but failed when compiled. This macro definition called
372@code{set-buffer-multibyte} during compilation, which was wrong, and
373then did nothing when the compiled package was run. The definition
374that the programmer really wanted was this:
375
376@example
377(defmacro my-set-buffer-multibyte (arg)
378 (if (fboundp 'set-buffer-multibyte)
379 `(set-buffer-multibyte ,arg)))
380@end example
381
382@noindent
383This macro expands, if appropriate, into a call to
384@code{set-buffer-multibyte} that will be executed when the compiled
385program is actually run.
386
73804d4b
RS
387@node Argument Evaluation
388@subsection Evaluating Macro Arguments Repeatedly
389
390 When defining a macro you must pay attention to the number of times
391the arguments will be evaluated when the expansion is executed. The
392following macro (used to facilitate iteration) illustrates the problem.
393This macro allows us to write a simple ``for'' loop such as one might
394find in Pascal.
395
396@findex for
397@smallexample
398@group
399(defmacro for (var from init to final do &rest body)
400 "Execute a simple \"for\" loop.
401For example, (for i from 1 to 10 do (print i))."
402 (list 'let (list (list var init))
403 (cons 'while (cons (list '<= var final)
404 (append body (list (list 'inc var)))))))
405@end group
406@result{} for
407
408@group
409(for i from 1 to 3 do
410 (setq square (* i i))
411 (princ (format "\n%d %d" i square)))
412@expansion{}
413@end group
414@group
415(let ((i 1))
416 (while (<= i 3)
417 (setq square (* i i))
418 (princ (format "%d %d" i square))
419 (inc i)))
420@end group
421@group
422
423 @print{}1 1
424 @print{}2 4
425 @print{}3 9
426@result{} nil
427@end group
428@end smallexample
429
430@noindent
969fe9b5 431The arguments @code{from}, @code{to}, and @code{do} in this macro are
73804d4b
RS
432``syntactic sugar''; they are entirely ignored. The idea is that you
433will write noise words (such as @code{from}, @code{to}, and @code{do})
969fe9b5 434in those positions in the macro call.
73804d4b 435
f57ddf67
RS
436Here's an equivalent definition simplified through use of backquote:
437
438@smallexample
439@group
440(defmacro for (var from init to final do &rest body)
441 "Execute a simple \"for\" loop.
442For example, (for i from 1 to 10 do (print i))."
bfe721d1
KH
443 `(let ((,var ,init))
444 (while (<= ,var ,final)
445 ,@@body
446 (inc ,var))))
f57ddf67
RS
447@end group
448@end smallexample
449
450Both forms of this definition (with backquote and without) suffer from
451the defect that @var{final} is evaluated on every iteration. If
452@var{final} is a constant, this is not a problem. If it is a more
453complex form, say @code{(long-complex-calculation x)}, this can slow
454down the execution significantly. If @var{final} has side effects,
455executing it more than once is probably incorrect.
73804d4b
RS
456
457@cindex macro argument evaluation
458A well-designed macro definition takes steps to avoid this problem by
459producing an expansion that evaluates the argument expressions exactly
460once unless repeated evaluation is part of the intended purpose of the
461macro. Here is a correct expansion for the @code{for} macro:
462
463@smallexample
464@group
465(let ((i 1)
466 (max 3))
467 (while (<= i max)
468 (setq square (* i i))
469 (princ (format "%d %d" i square))
470 (inc i)))
471@end group
472@end smallexample
473
177c0ea7 474Here is a macro definition that creates this expansion:
73804d4b
RS
475
476@smallexample
477@group
478(defmacro for (var from init to final do &rest body)
479 "Execute a simple for loop: (for i from 1 to 10 do (print i))."
bfe721d1
KH
480 `(let ((,var ,init)
481 (max ,final))
482 (while (<= ,var max)
483 ,@@body
484 (inc ,var))))
73804d4b
RS
485@end group
486@end smallexample
487
969fe9b5
RS
488 Unfortunately, this fix introduces another problem,
489described in the following section.
73804d4b
RS
490
491@node Surprising Local Vars
492@subsection Local Variables in Macro Expansions
493
37680279 494@ifnottex
73804d4b
RS
495 In the previous section, the definition of @code{for} was fixed as
496follows to make the expansion evaluate the macro arguments the proper
497number of times:
498
499@smallexample
500@group
501(defmacro for (var from init to final do &rest body)
502 "Execute a simple for loop: (for i from 1 to 10 do (print i))."
503@end group
504@group
bfe721d1
KH
505 `(let ((,var ,init)
506 (max ,final))
507 (while (<= ,var max)
508 ,@@body
509 (inc ,var))))
73804d4b
RS
510@end group
511@end smallexample
37680279 512@end ifnottex
73804d4b
RS
513
514 The new definition of @code{for} has a new problem: it introduces a
515local variable named @code{max} which the user does not expect. This
516causes trouble in examples such as the following:
517
ec221d13 518@smallexample
73804d4b
RS
519@group
520(let ((max 0))
521 (for x from 0 to 10 do
522 (let ((this (frob x)))
523 (if (< max this)
524 (setq max this)))))
525@end group
ec221d13 526@end smallexample
73804d4b
RS
527
528@noindent
529The references to @code{max} inside the body of the @code{for}, which
530are supposed to refer to the user's binding of @code{max}, really access
531the binding made by @code{for}.
532
533The way to correct this is to use an uninterned symbol instead of
534@code{max} (@pxref{Creating Symbols}). The uninterned symbol can be
f57ddf67
RS
535bound and referred to just like any other symbol, but since it is
536created by @code{for}, we know that it cannot already appear in the
537user's program. Since it is not interned, there is no way the user can
538put it into the program later. It will never appear anywhere except
539where put by @code{for}. Here is a definition of @code{for} that works
540this way:
73804d4b
RS
541
542@smallexample
543@group
544(defmacro for (var from init to final do &rest body)
545 "Execute a simple for loop: (for i from 1 to 10 do (print i))."
546 (let ((tempvar (make-symbol "max")))
bfe721d1
KH
547 `(let ((,var ,init)
548 (,tempvar ,final))
549 (while (<= ,var ,tempvar)
550 ,@@body
551 (inc ,var)))))
73804d4b
RS
552@end group
553@end smallexample
554
555@noindent
556This creates an uninterned symbol named @code{max} and puts it in the
557expansion instead of the usual interned symbol @code{max} that appears
558in expressions ordinarily.
559
560@node Eval During Expansion
561@subsection Evaluating Macro Arguments in Expansion
562
a9f0a989 563 Another problem can happen if the macro definition itself
f9f59935 564evaluates any of the macro argument expressions, such as by calling
73804d4b
RS
565@code{eval} (@pxref{Eval}). If the argument is supposed to refer to the
566user's variables, you may have trouble if the user happens to use a
567variable with the same name as one of the macro arguments. Inside the
568macro body, the macro argument binding is the most local binding of this
f9f59935
RS
569variable, so any references inside the form being evaluated do refer to
570it. Here is an example:
73804d4b
RS
571
572@example
573@group
574(defmacro foo (a)
575 (list 'setq (eval a) t))
576 @result{} foo
577@end group
578@group
579(setq x 'b)
580(foo x) @expansion{} (setq b t)
581 @result{} t ; @r{and @code{b} has been set.}
582;; @r{but}
583(setq a 'c)
584(foo a) @expansion{} (setq a t)
585 @result{} t ; @r{but this set @code{a}, not @code{c}.}
586
587@end group
588@end example
589
590 It makes a difference whether the user's variable is named @code{a} or
591@code{x}, because @code{a} conflicts with the macro argument variable
592@code{a}.
593
969fe9b5 594 Another problem with calling @code{eval} in a macro definition is that
73804d4b
RS
595it probably won't do what you intend in a compiled program. The
596byte-compiler runs macro definitions while compiling the program, when
597the program's own computations (which you might have wished to access
598with @code{eval}) don't occur and its local variable bindings don't
599exist.
600
969fe9b5 601 To avoid these problems, @strong{don't evaluate an argument expression
a9f0a989 602while computing the macro expansion}. Instead, substitute the
969fe9b5
RS
603expression into the macro expansion, so that its value will be computed
604as part of executing the expansion. This is how the other examples in
605this chapter work.
73804d4b
RS
606
607@node Repeated Expansion
608@subsection How Many Times is the Macro Expanded?
609
610 Occasionally problems result from the fact that a macro call is
611expanded each time it is evaluated in an interpreted function, but is
612expanded only once (during compilation) for a compiled function. If the
613macro definition has side effects, they will work differently depending
614on how many times the macro is expanded.
615
969fe9b5
RS
616 Therefore, you should avoid side effects in computation of the
617macro expansion, unless you really know what you are doing.
618
619 One special kind of side effect can't be avoided: constructing Lisp
620objects. Almost all macro expansions include constructed lists; that is
621the whole point of most macros. This is usually safe; there is just one
622case where you must be careful: when the object you construct is part of a
623quoted constant in the macro expansion.
624
625 If the macro is expanded just once, in compilation, then the object is
626constructed just once, during compilation. But in interpreted
627execution, the macro is expanded each time the macro call runs, and this
628means a new object is constructed each time.
629
630 In most clean Lisp code, this difference won't matter. It can matter
631only if you perform side-effects on the objects constructed by the macro
632definition. Thus, to avoid trouble, @strong{avoid side effects on
633objects constructed by macro definitions}. Here is an example of how
634such side effects can get you into trouble:
73804d4b
RS
635
636@lisp
637@group
638(defmacro empty-object ()
639 (list 'quote (cons nil nil)))
640@end group
641
642@group
643(defun initialize (condition)
644 (let ((object (empty-object)))
645 (if condition
646 (setcar object condition))
647 object))
648@end group
649@end lisp
650
651@noindent
652If @code{initialize} is interpreted, a new list @code{(nil)} is
653constructed each time @code{initialize} is called. Thus, no side effect
654survives between calls. If @code{initialize} is compiled, then the
655macro @code{empty-object} is expanded during compilation, producing a
656single ``constant'' @code{(nil)} that is reused and altered each time
657@code{initialize} is called.
658
659One way to avoid pathological cases like this is to think of
660@code{empty-object} as a funny kind of constant, not as a memory
661allocation construct. You wouldn't use @code{setcar} on a constant such
662as @code{'(nil)}, so naturally you won't use it on @code{(empty-object)}
663either.
d5c99c9e
RS
664
665@node Indenting Macros
666@section Indenting Macros
667
668 You can use the @code{declare} form in the macro definition to
669specify how to @key{TAB} should indent indent calls to the macro. You
670write it like this:
671
672@example
673(declare (indent @var{indent-spec}))
674@end example
675
676@noindent
677Here are the possibilities for @var{indent-spec}:
678
679@table @asis
680@item @code{nil}
681This is the same as no property---use the standard indentation pattern.
682@item @code{defun}
683Handle this function like a @samp{def} construct: treat the second
684line as the start of a @dfn{body}.
685@item a number, @var{number}
686The first @var{number} arguments of the function are
687@dfn{distinguished} arguments; the rest are considered the body
688of the expression. A line in the expression is indented according to
689whether the first argument on it is distinguished or not. If the
690argument is part of the body, the line is indented @code{lisp-body-indent}
691more columns than the open-parenthesis starting the containing
692expression. If the argument is distinguished and is either the first
693or second argument, it is indented @emph{twice} that many extra columns.
694If the argument is distinguished and not the first or second argument,
695the line uses the standard pattern.
696@item a symbol, @var{symbol}
697@var{symbol} should be a function name; that function is called to
698calculate the indentation of a line within this expression. The
699function receives two arguments:
700@table @asis
701@item @var{state}
702The value returned by @code{parse-partial-sexp} (a Lisp primitive for
703indentation and nesting computation) when it parses up to the
704beginning of this line.
705@item @var{pos}
706The position at which the line being indented begins.
707@end table
708@noindent
709It should return either a number, which is the number of columns of
710indentation for that line, or a list whose car is such a number. The
711difference between returning a number and returning a list is that a
712number says that all following lines at the same nesting level should
713be indented just like this one; a list says that following lines might
714call for different indentations. This makes a difference when the
715indentation is being computed by @kbd{C-M-q}; if the value is a
716number, @kbd{C-M-q} need not recalculate indentation for the following
717lines until the end of the list.
718@end table