Function: eieio-display-method-list
eieio-display-method-list is an interactive and byte-compiled function
defined in eieio-opt.el.gz.
Signature
(eieio-display-method-list)
Documentation
Display a list of all the methods and what features are used.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/eieio-opt.el.gz
;;; METHOD STATS
;;
;; Dump out statistics about all the active methods in a session.
(defun eieio-display-method-list ()
"Display a list of all the methods and what features are used."
(interactive)
(let* ((meth1 (cl-generic-all-functions))
(meth (sort meth1 (lambda (a b)
(string< (symbol-name a)
(symbol-name b)))))
(buff (get-buffer-create "*EIEIO Method List*"))
(methidx 0)
(standard-output buff)
(slots '(method-static
method-before
method-primary
method-after
method-generic-before
method-generic-primary
method-generic-after))
(slotn '("static"
"before"
"primary"
"after"
"G bef"
"G prim"
"G aft"))
(idxarray (make-vector (length slots) 0))
(primaryonly 0)
(oneprimary 0)
)
(switch-to-buffer-other-window buff)
(erase-buffer)
(dolist (S slotn)
(princ S)
(princ "\t")
)
(princ "Method Name")
(terpri)
(princ "--------------------------------------------------------------------")
(terpri)
(dolist (M meth)
(let ((mtree (get M 'eieio-method-tree))
(P nil) (numP)
(!P nil))
(dolist (S slots)
(let ((num (length (aref mtree (symbol-value S)))))
(aset idxarray (symbol-value S)
(+ num (aref idxarray (symbol-value S))))
(prin1 num)
(princ "\t")
(when (< 0 num)
(if (eq S 'method-primary)
(setq P t numP num)
(setq !P t)))
))
;; Is this a primary-only impl method?
(when (and P (not !P))
(setq primaryonly (1+ primaryonly))
(when (= numP 1)
(setq oneprimary (1+ oneprimary))
(princ "*"))
(princ "* ")
)
(prin1 M)
(terpri)
(setq methidx (1+ methidx))
)
)
(princ "--------------------------------------------------------------------")
(terpri)
(dolist (S slots)
(prin1 (aref idxarray (symbol-value S)))
(princ "\t")
)
(prin1 methidx)
(princ " Total symbols")
(terpri)
(dolist (S slotn)
(princ S)
(princ "\t")
)
(terpri)
(terpri)
(princ "Methods Primary Only: ")
(prin1 primaryonly)
(princ "\t")
(princ (format "%d" (floor (* 100.0 primaryonly) methidx)))
(princ "% of total methods")
(terpri)
(princ "Only One Primary Impl: ")
(prin1 oneprimary)
(princ "\t")
(princ (format "%d" (floor (* 100.0 oneprimary) primaryonly)))
(princ "% of total primary methods")
(terpri)
))