emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[elpa] externals/inspector 2b7721c678 25/39: tree-inspector: clos object


From: ELPA Syncer
Subject: [elpa] externals/inspector 2b7721c678 25/39: tree-inspector: clos objects and structures inspectors
Date: Sat, 10 Sep 2022 17:57:48 -0400 (EDT)

branch: externals/inspector
commit 2b7721c678288ab8e2b121ae52ca5f97edd875da
Author: Mariano Montone <marianomontone@gmail.com>
Commit: Mariano Montone <marianomontone@gmail.com>

    tree-inspector: clos objects and structures inspectors
---
 tree-inspector.el | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/tree-inspector.el b/tree-inspector.el
index 45817fa622..756c1f9bc4 100644
--- a/tree-inspector.el
+++ b/tree-inspector.el
@@ -220,6 +220,30 @@ in a format understood by `kbd'.  Commands a names of Lisp 
functions."
 
 (cl-defmethod tree-inspector--make-node ((object t))
   (cond
+   ((eieio-object-p object)
+    (let ((node (treeview-new-node)))
+      (treeview-set-node-name node (tree-inspector--print-object object))
+      (tree-inspector--set-node-children
+       node (mapcar (lambda (slot)
+                     (let ((child-node (tree-inspector--make-node
+                                        (slot-value object 
(cl--slot-descriptor-name slot)))))
+                       (treeview-set-node-name
+                        child-node (format "%s: %s" (cl--slot-descriptor-name 
slot) (treeview-get-node-name child-node)))
+                       child-node))
+                   (eieio-class-slots (eieio-object-class object))))
+      node))
+   ((cl-struct-p object)
+    (let ((node (treeview-new-node)))
+      (treeview-set-node-name node (tree-inspector--print-object object))
+      (tree-inspector--set-node-children
+       node (mapcar (lambda (slot)
+                     (let ((child-node (tree-inspector--make-node
+                                        (cl-struct-slot-value (type-of object) 
(car slot) object))))
+                       (treeview-set-node-name
+                        child-node (format "%s: %s" (car slot) 
(treeview-get-node-name child-node)))
+                       child-node))
+                   (cdr (cl-struct-slot-info (type-of object)))))
+      node))
    ((recordp object)
     (let ((node (treeview-new-node)))
       (treeview-set-node-name node (tree-inspector--print-object object))



reply via email to

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