diff options
author | Gemini Lasswell <gazally@runbox.com> | 2017-10-06 11:30:22 -0700 |
---|---|---|
committer | Gemini Lasswell <gazally@runbox.com> | 2017-10-06 11:31:12 -0700 |
commit | 238fbcb20e9281fc44f4029f52cf31e0dc5b6281 (patch) | |
tree | 0d9c6e9429fbb8fe43548135b1cb9b84db2161bd /lisp/emacs-lisp/generator.el | |
parent | 2d58d513290f08819699e933bb0fbe88362c2131 (diff) | |
download | emacs-238fbcb20e9281fc44f4029f52cf31e0dc5b6281.tar.gz emacs-238fbcb20e9281fc44f4029f52cf31e0dc5b6281.tar.bz2 emacs-238fbcb20e9281fc44f4029f52cf31e0dc5b6281.zip |
Create new Edebug spec for docstrings and use it in closures
Since (:documentation FORM) can be used to create a docstring
when lexical-binding is on, allow for that possibility in Edebug
specs (bug#24773).
* lisp/emacs-lisp/edebug.el: Define an Edebug spec for docstrings
called lambda-doc and modify the Edebug specs for defun and
defmacro to use it.
(edebug-instrument-function): Check for generic functions first,
to fix bug where edebug-step-in didn't work on methods now that
cl-defgeneric has an Edebug spec.
* lisp/subr.el (lambda): Modify Edebug spec to use lambda-doc.
* lisp/emacs-lisp/cl-generic.el (cl-defgeneric): Add Edebug spec
(bug#27747).
(cl-defmethod): Use lambda-doc in Edebug spec.
* lisp/emacs-lisp/cl-macs.el: Modify Edebug spec for
cl-declarations-or-string to use lambda-doc, and modify Edebug
spec for cl-lambda-expr to use cl-declarations-or-string.
* lisp/emacs-lisp/pcase.el (pcase-lambda): Modify Edebug spec to
use lambda-doc, as well as &define and def-body which are
necessary for using Edebug on code wrapped by lambda.
* lisp/emacs-lisp/generator.el (iter-defun, iter-lambda): Add
Edebug specs.
Diffstat (limited to 'lisp/emacs-lisp/generator.el')
-rw-r--r-- | lisp/emacs-lisp/generator.el | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/lisp/emacs-lisp/generator.el b/lisp/emacs-lisp/generator.el index 3e9885900cf..410e4edcc92 100644 --- a/lisp/emacs-lisp/generator.el +++ b/lisp/emacs-lisp/generator.el @@ -680,7 +680,8 @@ sub-iterator function returns via `iter-end-of-sequence'." When called as a function, NAME returns an iterator value that encapsulates the state of a computation that produces a sequence of values. Callers can retrieve each value using `iter-next'." - (declare (indent defun)) + (declare (indent defun) + (debug (&define name lambda-list lambda-doc def-body))) (cl-assert lexical-binding) (let* ((parsed-body (macroexp-parse-body body)) (declarations (car parsed-body)) @@ -692,7 +693,8 @@ of values. Callers can retrieve each value using `iter-next'." (defmacro iter-lambda (arglist &rest body) "Return a lambda generator. `iter-lambda' is to `iter-defun' as `lambda' is to `defun'." - (declare (indent defun)) + (declare (indent defun) + (debug (&define lambda-list lambda-doc def-body))) (cl-assert lexical-binding) `(lambda ,arglist ,(cps-generate-evaluator body))) |