Introduce element &error into edebug specification lists for macros
This fixes bug #37540. * lisp/emacs-lisp/edebug.el (top level): New entry for &error in alist used to associate elements with their handling functions. (edebug-match-&error): New function. (nested-backquote-form): Use the new element &error to abort instrumentation on encountering a three deep nesting of backquotes (without intervening commas). * doc/lispref/edebug.texi (Specification List): Add an entry for &error. * etc/NEWS: Add an entry for &error.
This commit is contained in:
parent
d97a77c481
commit
8d2fecdf6c
3 changed files with 24 additions and 0 deletions
|
@ -1714,6 +1714,7 @@ contains a circular object."
|
|||
(cl-macrolet-body . edebug-match-cl-macrolet-body)
|
||||
(¬ . edebug-match-¬)
|
||||
(&key . edebug-match-&key)
|
||||
(&error . edebug-match-&error)
|
||||
(place . edebug-match-place)
|
||||
(gate . edebug-match-gate)
|
||||
;; (nil . edebug-match-nil) not this one - special case it.
|
||||
|
@ -1847,6 +1848,15 @@ contains a circular object."
|
|||
(car (cdr pair))))
|
||||
specs))))
|
||||
|
||||
(defun edebug-match-&error (cursor specs)
|
||||
;; Signal an error, using the following string in the spec as argument.
|
||||
(let ((error-string (car specs))
|
||||
(edebug-error-point (edebug-before-offset cursor)))
|
||||
(goto-char edebug-error-point)
|
||||
(error "%s"
|
||||
(if (stringp error-string)
|
||||
error-string
|
||||
"String expected after &error in edebug-spec"))))
|
||||
|
||||
(defun edebug-match-gate (_cursor)
|
||||
;; Simply set the gate to prevent backtracking at this level.
|
||||
|
@ -2216,6 +2226,8 @@ into `edebug--cl-macrolet-defs' which is checked in `edebug-list-form-args'."
|
|||
|
||||
(def-edebug-spec nested-backquote-form
|
||||
(&or
|
||||
("`" &error "Triply nested backquotes (without commas \"between\" them) \
|
||||
are too difficult to instrument")
|
||||
;; Allow instrumentation of any , or ,@ contained within the (\, ...) or
|
||||
;; (\,@ ...) matched on the next line.
|
||||
([&or "," ",@"] backquote-form)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue