emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 27428d2: * lisp/emacs-lisp/cl-generic.el: Make `doc-string` prop


From: Stefan Monnier
Subject: master 27428d2: * lisp/emacs-lisp/cl-generic.el: Make `doc-string` prop work with qualifiers
Date: Thu, 4 Mar 2021 18:21:02 -0500 (EST)

branch: master
commit 27428d22c8fd4f53a268484d235827122752d68a
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Commit: Stefan Monnier <monnier@iro.umontreal.ca>

    * lisp/emacs-lisp/cl-generic.el: Make `doc-string` prop work with qualifiers
    
    (cl--defmethod-doc-pos): New function.
    (cl-defmethod): Use it.
---
 lisp/emacs-lisp/cl-generic.el | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/lisp/emacs-lisp/cl-generic.el b/lisp/emacs-lisp/cl-generic.el
index 89fc0b1..e78f88e 100644
--- a/lisp/emacs-lisp/cl-generic.el
+++ b/lisp/emacs-lisp/cl-generic.el
@@ -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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]