]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/emacs-lisp/cl-macs.el (cl-defstruct): Implement docstrings
authorArtur Malabarba <bruce.connor.am@gmail.com>
Mon, 13 Apr 2015 12:13:36 +0000 (13:13 +0100)
committerArtur Malabarba <bruce.connor.am@gmail.com>
Mon, 13 Apr 2015 19:51:14 +0000 (20:51 +0100)
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).

lisp/emacs-lisp/cl-macs.el

index 41435b8b7b14cc64e43dd7a1afce32f6d53c95e4..5bab84ed312aa962c1408eb2bc15ea2bbc39b6d1 100644 (file)
@@ -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))