[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
When Edebug instruments an expression that calls a Lisp macro, it needs additional information about the macro to do the job properly. This is because there is no a-priori way to tell which subexpressions of the macro call are forms to be evaluated. (Evaluation may occur explicitly in the macro body, or when the resulting expansion is evaluated, or any time later.)
Therefore, you must define an Edebug specification for each macro that
Edebug will encounter, to explain the format of calls to that macro. To
do this, use def-edebug-spec
.
The macro argument can actually be any symbol, not just a macro name.
Here is a simple example that defines the specification for the
for
example macro (see section 13.6.2 Evaluating Macro Arguments Repeatedly), followed by an
alternative, equivalent specification.
(def-edebug-spec for (symbolp "from" form "to" form "do" &rest form)) (def-edebug-spec for (symbolp ['from form] ['to form] ['do body])) |
Here is a table of the possibilities for specification and how each directs processing of arguments.
t
0
18.2.15.1 Specification List How to specify complex patterns of evaluation. 18.2.15.2 Backtracking in Specifications What Edebug does when matching fails. 18.2.15.3 Specification Examples To help understand specifications.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |