summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/cl-generic.el
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2021-03-04 18:20:56 -0500
committerStefan Monnier <monnier@iro.umontreal.ca>2021-03-04 18:20:56 -0500
commit27428d22c8fd4f53a268484d235827122752d68a (patch)
tree600340e08cd4692a8887b02a50ee5d08a8e44c57 /lisp/emacs-lisp/cl-generic.el
parent0981712e5764c9e553d2160139cca6c83afb0946 (diff)
downloademacs-27428d22c8fd4f53a268484d235827122752d68a.tar.gz
emacs-27428d22c8fd4f53a268484d235827122752d68a.tar.bz2
emacs-27428d22c8fd4f53a268484d235827122752d68a.zip
* lisp/emacs-lisp/cl-generic.el: Make `doc-string` prop work with qualifiers
(cl--defmethod-doc-pos): New function. (cl-defmethod): Use it.
Diffstat (limited to 'lisp/emacs-lisp/cl-generic.el')
-rw-r--r--lisp/emacs-lisp/cl-generic.el12
1 files changed, 11 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/cl-generic.el b/lisp/emacs-lisp/cl-generic.el
index 89fc0b16d02..e78f88e30cf 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.