aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGemini Lasswell2017-11-13 13:22:39 -0800
committerGemini Lasswell2017-11-13 13:22:39 -0800
commit93304e31159ac4e123b26349429cdce0fbd23685 (patch)
tree6463d02239eef15d2c458d3ae406c3cc67502f78
parent79108894dbcd642121466bb6af6c98c6a56e9233 (diff)
downloademacs-93304e31159ac4e123b26349429cdce0fbd23685.tar.gz
emacs-93304e31159ac4e123b26349429cdce0fbd23685.zip
Improve documentation of Edebug and macros
* doc/lispref/edebug.texi (Instrumenting Macro Calls): Improve discussion of when it might be necessary to find and evaluate macro specifications before instrumenting. (Specification List): Clarify what "defining form" means to Edebug and when 'def-form' or 'def-body' should be used instead of 'form' or 'body'.
-rw-r--r--doc/lispref/edebug.texi32
1 files changed, 22 insertions, 10 deletions
diff --git a/doc/lispref/edebug.texi b/doc/lispref/edebug.texi
index cebf0a3af3d..62fd9f38cb6 100644
--- a/doc/lispref/edebug.texi
+++ b/doc/lispref/edebug.texi
@@ -1144,9 +1144,12 @@ the @code{declare} form.
1144@c automatically load the entire source file containing the function 1144@c automatically load the entire source file containing the function
1145@c being instrumented. That would avoid this. 1145@c being instrumented. That would avoid this.
1146 Take care to ensure that the specifications are known to Edebug when 1146 Take care to ensure that the specifications are known to Edebug when
1147you instrument code. If you are instrumenting a function from a file 1147you instrument code. If you are instrumenting a function which uses a
1148that uses @code{eval-when-compile} to require another file containing 1148macro defined in another file, you may first need to either evaluate
1149macro definitions, you may need to explicitly load that file. 1149the @code{require} forms in the file containing your function, or
1150explicitly load the file containing the macro. If the definition of a
1151macro is wrapped by @code{eval-when-compile}, you may need to evaluate
1152it.
1150 1153
1151 You can also define an edebug specification for a macro separately 1154 You can also define an edebug specification for a macro separately
1152from the macro definition with @code{def-edebug-spec}. Adding 1155from the macro definition with @code{def-edebug-spec}. Adding
@@ -1231,13 +1234,17 @@ A single unevaluated Lisp object, which is not instrumented.
1231@c an "expression" is not necessarily intended for evaluation. 1234@c an "expression" is not necessarily intended for evaluation.
1232 1235
1233@item form 1236@item form
1234A single evaluated expression, which is instrumented. 1237A single evaluated expression, which is instrumented. If your macro
1238wraps the expression with @code{lambda} before it is evaluated, use
1239@code{def-form} instead. See @code{def-form} below.
1235 1240
1236@item place 1241@item place
1237A generalized variable. @xref{Generalized Variables}. 1242A generalized variable. @xref{Generalized Variables}.
1238 1243
1239@item body 1244@item body
1240Short for @code{&rest form}. See @code{&rest} below. 1245Short for @code{&rest form}. See @code{&rest} below. If your macro
1246wraps its body of code with @code{lambda} before it is evaluated, use
1247@code{def-body} instead. See @code{def-body} below.
1241 1248
1242@item function-form 1249@item function-form
1243A function form: either a quoted function symbol, a quoted lambda 1250A function form: either a quoted function symbol, a quoted lambda
@@ -1292,11 +1299,16 @@ succeeds.
1292 1299
1293@item &define 1300@item &define
1294@c @kindex &define @r{(Edebug)} 1301@c @kindex &define @r{(Edebug)}
1295Indicates that the specification is for a defining form. The defining 1302
1296form itself is not instrumented (that is, Edebug does not stop before and 1303Indicates that the specification is for a defining form. Edebug's
1297after the defining form), but forms inside it typically will be 1304definition of a defining form is a form containing one or more code
1298instrumented. The @code{&define} keyword should be the first element in 1305forms which are saved and executed later, after the execution of the
1299a list specification. 1306defining form.
1307
1308The defining form itself is not instrumented (that is, Edebug does not
1309stop before and after the defining form), but forms inside it
1310typically will be instrumented. The @code{&define} keyword should be
1311the first element in a list specification.
1300 1312
1301@item nil 1313@item nil
1302This is successful when there are no more arguments to match at the 1314This is successful when there are no more arguments to match at the