Commit 13634dec authored by Artur Malabarba's avatar Artur Malabarba
Browse files

* lisp/emacs-lisp/cl-macs.el (cl-defstruct): Implement docstrings

Adding a string after a constructor's argument list will use
that string as the constructor function docstring.  If this string
is absent but the struct itself was given a docstring, use that as
the constructor's docstring.

Fixes (bug#17284).
parent 84e0b7da
......@@ -2726,12 +2726,16 @@ non-nil value, that slot cannot be set via `setf'.
(while constrs
(let* ((name (caar constrs))
(args (cadr (pop constrs)))
(rest (cdr (pop constrs)))
(args (car rest))
(doc (cadr rest))
(anames (cl--arglist-args args))
(make (cl-mapcar (function (lambda (s d) (if (memq s anames) s d)))
slots defaults)))
(push `(cl-defsubst ,name
(&cl-defs (nil ,@descs) ,@args)
,@(if (stringp doc) (list doc)
(if (stringp docstring) (list docstring)))
,@(if (cl--safe-expr-p `(progn ,@(mapcar #'cl-second descs)))
'((declare (side-effect-free t))))
(,(or type #'vector) ,@make))
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment