From: Artur Malabarba Date: Mon, 13 Apr 2015 12:13:36 +0000 (+0100) Subject: * lisp/emacs-lisp/cl-macs.el (cl-defstruct): Implement docstrings X-Git-Tag: emacs-25.0.90~2441 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=13634dec038d613c3b618d70cd64d6d63561f2eb;p=emacs.git * 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). --- diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el index 41435b8b7b1..5bab84ed312 100644 --- a/lisp/emacs-lisp/cl-macs.el +++ b/lisp/emacs-lisp/cl-macs.el @@ -2726,12 +2726,16 @@ non-nil value, that slot cannot be set via `setf'. constrs)) (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))