]> git.eshelyaron.com Git - emacs.git/commit
Edebug: Overload `edebug-form-spec` even less
authorStefan Monnier <monnier@iro.umontreal.ca>
Sat, 13 Feb 2021 00:28:25 +0000 (19:28 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Sat, 13 Feb 2021 00:28:25 +0000 (19:28 -0500)
commitd1be48fdedabb451d5c6cf315fd5f09a632e771f
tree4ebe615e7843913a58596f36929d3f69fb501ae3
parentbdd8d5b6a45bb66e230473fe221f8c1832bebb6c
Edebug: Overload `edebug-form-spec` even less

The `edebug-form-spec` symbol property was used both to map forms's
head symbol to the corresponding spec, and to map spec element names
to their expansion.

This lead to name conflicts which break instrumentation of examples such as

    (cl-flet ((gate (x) x)) (gate 4))

because of the Edebug spec element `gate`.
So introduce a new symbol property `edebug-elem-spec`.

* lisp/subr.el (def-edebug-elem-spec): New function.

* lisp/emacs-lisp/edebug.el (edebug--get-elem-spec): New function.
(edebug-match-symbol): Use it.
(Core Edebug elems): Put them on `edebug-elem-spec` instead of
`edebug-form-spec`.
(ELisp special forms): Set their `edebug-form-spec` via dolist.
(Other non-core Edebug elems): Use `def-edebug-elem-spec`.
(edebug-\`): Use `declare`.

* lisp/emacs-lisp/pcase.el (pcase-PAT, pcase-FUN, pcase-QPAT):
* lisp/skeleton.el (skeleton-edebug-spec):
* lisp/emacs-lisp/cl-macs.el: Use `def-edebug-elem-spec`.

* test/lisp/emacs-lisp/edebug-tests.el
(edebug-tests--conflicting-internal-names): New test.
* test/lisp/emacs-lisp/edebug-resources/edebug-test-code.el
(edebug-test-code-cl-flet1): New test case.

* doc/lispref/edebug.texi (Specification List): Add `def-edebug-elem-spec`.
(Specification Examples): Use it.

* doc/lispref/loading.texi (Hooks for Loading): Avoid the use of
`def-edebug-spec` in example (better use `debug` declaration).
doc/lispref/edebug.texi
doc/lispref/loading.texi
etc/NEWS
lisp/emacs-lisp/cl-macs.el
lisp/emacs-lisp/edebug.el
lisp/emacs-lisp/pcase.el
lisp/skeleton.el
lisp/subr.el
test/lisp/emacs-lisp/edebug-resources/edebug-test-code.el
test/lisp/emacs-lisp/edebug-tests.el