]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/emacs-lisp/cl-generic.el: Make `doc-string` prop work with qualifiers
authorStefan Monnier <monnier@iro.umontreal.ca>
Thu, 4 Mar 2021 23:20:56 +0000 (18:20 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Thu, 4 Mar 2021 23:20:56 +0000 (18:20 -0500)
(cl--defmethod-doc-pos): New function.
(cl-defmethod): Use it.

lisp/emacs-lisp/cl-generic.el

index 89fc0b16d021b40feb82e681deeeb144639ec5c3..e78f88e30cf7ae643ae4bb452f07a229e68acb66 100644 (file)
@@ -425,6 +425,16 @@ the specializer used will be the one returned by BODY."
 (defun cl-generic--method-qualifier-p (x)
   (not (listp x)))
 
+(defun cl--defmethod-doc-pos ()
+  "Return the index of the docstring for a `cl-defmethod'.
+Presumes point is at the end of the `cl-defmethod' symbol."
+  (save-excursion
+    (let ((n 2))
+      (while (and (ignore-errors (forward-sexp 1) t)
+                  (not (eq (char-before) ?\))))
+        (cl-incf n))
+      n)))
+
 ;;;###autoload
 (defmacro cl-defmethod (name args &rest body)
   "Define a new method for generic function NAME.
@@ -464,7 +474,7 @@ The set of acceptable TYPEs (also called \"specializers\") is defined
 \(and can be extended) by the various methods of `cl-generic-generalizers'.
 
 \(fn NAME [QUALIFIER] ARGS &rest [DOCSTRING] BODY)"
-  (declare (doc-string 3) (indent defun)
+  (declare (doc-string cl--defmethod-doc-pos) (indent defun)
            (debug
             (&define                    ; this means we are defining something
              [&name [sexp   ;Allow (setf ...) additionally to symbols.