summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
authorAlan Mackenzie <acm@muc.de>2019-09-24 17:04:12 +0000
committerAlan Mackenzie <acm@muc.de>2019-09-24 17:06:20 +0000
commitef0fc0bed1c97a1c803fa83bee438ca9cfd238b0 (patch)
treebc97c718d5724058d161475e6856a241e5fdf964 /lisp/emacs-lisp
parent9a82195cfcafd3003fc971b71ab401b37ecc0930 (diff)
downloademacs-ef0fc0bed1c97a1c803fa83bee438ca9cfd238b0.tar.gz
emacs-ef0fc0bed1c97a1c803fa83bee438ca9cfd238b0.tar.bz2
emacs-ef0fc0bed1c97a1c803fa83bee438ca9cfd238b0.zip
New edebug-spec, nested-backquote-form. This fixes bug #31090
* lisp/emacs-lisp/edebug.el: (nested-backquote-form): a new edebug-spec which handles nested backquote structures without a , or ,@ "between" the outer and inner backquotes. (backquote-form): Use nested-backquote-form.
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r--lisp/emacs-lisp/edebug.el13
1 files changed, 13 insertions, 0 deletions
diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el
index c898da3d39f..717026995a3 100644
--- a/lisp/emacs-lisp/edebug.el
+++ b/lisp/emacs-lisp/edebug.el
@@ -2165,6 +2165,9 @@ into `edebug--cl-macrolet-defs' which is checked in `edebug-list-form-args'."
;; but only at the top level inside unquotes.
(def-edebug-spec backquote-form
(&or
+ ;; Disallow instrumentation of , and ,@ inside a nested backquote, since
+ ;; these are likely to be forms generated by a macro being debugged.
+ ("`" nested-backquote-form)
([&or "," ",@"] &or ("quote" backquote-form) form)
;; The simple version:
;; (backquote-form &rest backquote-form)
@@ -2180,6 +2183,16 @@ into `edebug--cl-macrolet-defs' which is checked in `edebug-list-form-args'."
(vector &rest backquote-form)
sexp))
+(def-edebug-spec nested-backquote-form
+ (&or
+ ;; Allow instrumentation of any , or ,@ contained within the (\, ...) or
+ ;; (\,@ ...) matched on the next line.
+ ([&or "," ",@"] backquote-form)
+ (nested-backquote-form [&rest [&not "," ",@"] nested-backquote-form]
+ . [&or nil nested-backquote-form])
+ (vector &rest nested-backquote-form)
+ sexp))
+
;; Special version of backquote that instruments backquoted forms
;; destined to be evaluated, usually as the result of a
;; macroexpansion. Backquoted code can only have unquotes (, and ,@)