(cl--describe-class): Improve based on dicussion in bug#70077

* lisp/emacs-lisp/cl-extra.el (cl--describe-class): Move docstring
after the class' slots.
(cl--describe-class-slots): Buttonize the types.
This commit is contained in:
Stefan Monnier 2024-04-08 13:59:33 -04:00
parent 600ac35cc6
commit dc5fe95a48

View file

@ -807,13 +807,19 @@ Call `cl--find-class' to get TYPE's propname `cl--class'"
(insert (substitute-command-keys (if ch "', " "'"))))
(insert ".\n")))
;; Describe all the slots in this class.
;; Put it before the docstring, since the docstring may want
;; to refer to the slots.
(cl--describe-class-slots class)
;; Type's documentation.
(let ((doc (cl--class-docstring class)))
(when doc
(insert "\n" doc "\n\n")))
;; Describe all the slots in this class.
(cl--describe-class-slots class)
(insert (if (save-excursion
(or (< (skip-chars-backward "\n") -1) (bobp)))
""
"\n")
doc "\n\n")))
;; Describe all the methods specific to this class.
(let ((generics (cl-generic-all-functions type)))
@ -910,7 +916,12 @@ Outputs to the current buffer."
(mapcar
(lambda (slot)
(list (cl-prin1-to-string (cl--slot-descriptor-name slot))
(cl-prin1-to-string (cl--slot-descriptor-type slot))
(let ((type (cl--slot-descriptor-type slot)))
(if (and type (symbolp type) (cl--find-class type))
(make-text-button (symbol-name type) nil
'type 'help-type
'help-args (list type))
(cl-prin1-to-string type)))
(cl-prin1-to-string (cl--slot-descriptor-initform slot))
(let ((doc (alist-get :documentation
(cl--slot-descriptor-props slot))))