summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/edebug.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/emacs-lisp/edebug.el')
-rw-r--r--lisp/emacs-lisp/edebug.el12
1 files changed, 8 insertions, 4 deletions
diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el
index 47b45614e71..394f47090ca 100644
--- a/lisp/emacs-lisp/edebug.el
+++ b/lisp/emacs-lisp/edebug.el
@@ -2207,14 +2207,12 @@ into `edebug--cl-macrolet-defs' which is checked in `edebug-list-form-args'."
;; `defun' and `defmacro' are not special forms (any more), but it's
;; more convenient to define their Edebug spec here.
(defun ( &define name lambda-list lambda-doc
- [&optional ("declare" &rest sexp)]
+ [&optional ("declare" def-declarations)]
[&optional ("interactive" &optional &or stringp def-form)]
def-body))
- ;; FIXME: Improve `declare' so we can Edebug gv-expander and
- ;; gv-setter declarations.
(defmacro ( &define name lambda-list lambda-doc
- [&optional ("declare" &rest sexp)]
+ [&optional ("declare" def-declarations)]
def-body))
;; function expects a symbol or a lambda or macro expression
@@ -2243,6 +2241,12 @@ into `edebug--cl-macrolet-defs' which is checked in `edebug-list-form-args'."
))
(put name 'edebug-form-spec spec))
+(defun edebug--get-declare-spec (head)
+ (get head 'edebug-declaration-spec))
+
+(def-edebug-elem-spec 'def-declarations
+ '(&rest &or (&lookup symbolp edebug--get-declare-spec) sexp))
+
(def-edebug-elem-spec 'lambda-list
'(([&rest arg]
[&optional ["&optional" arg &rest arg]]