diff options
| author | Gemini Lasswell | 2017-11-13 13:22:39 -0800 |
|---|---|---|
| committer | Gemini Lasswell | 2017-11-13 13:22:39 -0800 |
| commit | 93304e31159ac4e123b26349429cdce0fbd23685 (patch) | |
| tree | 6463d02239eef15d2c458d3ae406c3cc67502f78 | |
| parent | 79108894dbcd642121466bb6af6c98c6a56e9233 (diff) | |
| download | emacs-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.texi | 32 |
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 |
| 1147 | you instrument code. If you are instrumenting a function from a file | 1147 | you instrument code. If you are instrumenting a function which uses a |
| 1148 | that uses @code{eval-when-compile} to require another file containing | 1148 | macro defined in another file, you may first need to either evaluate |
| 1149 | macro definitions, you may need to explicitly load that file. | 1149 | the @code{require} forms in the file containing your function, or |
| 1150 | explicitly load the file containing the macro. If the definition of a | ||
| 1151 | macro is wrapped by @code{eval-when-compile}, you may need to evaluate | ||
| 1152 | it. | ||
| 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 |
| 1152 | from the macro definition with @code{def-edebug-spec}. Adding | 1155 | from 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 |
| 1234 | A single evaluated expression, which is instrumented. | 1237 | A single evaluated expression, which is instrumented. If your macro |
| 1238 | wraps 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 |
| 1237 | A generalized variable. @xref{Generalized Variables}. | 1242 | A generalized variable. @xref{Generalized Variables}. |
| 1238 | 1243 | ||
| 1239 | @item body | 1244 | @item body |
| 1240 | Short for @code{&rest form}. See @code{&rest} below. | 1245 | Short for @code{&rest form}. See @code{&rest} below. If your macro |
| 1246 | wraps 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 |
| 1243 | A function form: either a quoted function symbol, a quoted lambda | 1250 | A 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)} |
| 1295 | Indicates that the specification is for a defining form. The defining | 1302 | |
| 1296 | form itself is not instrumented (that is, Edebug does not stop before and | 1303 | Indicates that the specification is for a defining form. Edebug's |
| 1297 | after the defining form), but forms inside it typically will be | 1304 | definition of a defining form is a form containing one or more code |
| 1298 | instrumented. The @code{&define} keyword should be the first element in | 1305 | forms which are saved and executed later, after the execution of the |
| 1299 | a list specification. | 1306 | defining form. |
| 1307 | |||
| 1308 | The defining form itself is not instrumented (that is, Edebug does not | ||
| 1309 | stop before and after the defining form), but forms inside it | ||
| 1310 | typically will be instrumented. The @code{&define} keyword should be | ||
| 1311 | the first element in a list specification. | ||
| 1300 | 1312 | ||
| 1301 | @item nil | 1313 | @item nil |
| 1302 | This is successful when there are no more arguments to match at the | 1314 | This is successful when there are no more arguments to match at the |