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

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

[elpa] externals/inspector faf590dded 06/39: tree-inspector: alist inspe


From: ELPA Syncer
Subject: [elpa] externals/inspector faf590dded 06/39: tree-inspector: alist inspector
Date: Sat, 10 Sep 2022 17:57:46 -0400 (EDT)

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

    tree-inspector: alist inspector
---
 tree-inspector.el | 58 ++++++++++++++++++++++++++++++++++++++++++-------------
 1 file changed, 45 insertions(+), 13 deletions(-)

diff --git a/tree-inspector.el b/tree-inspector.el
index 2a8e52c993..a67c60c25f 100644
--- a/tree-inspector.el
+++ b/tree-inspector.el
@@ -44,6 +44,11 @@
 (cl-defgeneric tree-inspector--make-node (object)
   (:documentation "Create treeview node for Emacs Lisp OBJECT."))
 
+(cl-defmethod tree-inspector--make-node ((object null))
+  (let ((node (treeview-new-node)))
+    (treeview-set-node-name node "nil")
+    node))
+
 (cl-defmethod tree-inspector--make-node ((object number))
   (let ((node (treeview-new-node)))
     (treeview-set-node-name node (prin1-to-string object))
@@ -62,19 +67,41 @@
     node))
 
 (cl-defmethod tree-inspector--make-node  ((object cons))
+  "tree-inspector for cons and lists."
   (cond
+   ;; alists
+   ((and tree-inspector-use-specialized-inspectors-for-lists
+        (tree-inspector--alistp object))
+    (let ((node (treeview-new-node)))
+      (treeview-set-node-name
+       node
+       (truncate-string-to-width (prin1-to-string object) 30 nil nil "..."))
+      (treeview-set-node-children
+       node
+       (mapcar (lambda (cons)
+                (let ((child (treeview-new-node)))
+                  (treeview-set-node-name
+                   child (format "(%s . %s)" (car cons) (cdr cons)))
+                  (treeview-set-node-children
+                   child (list (tree-inspector--make-node (car cons))
+                               (tree-inspector--make-node (cdr cons))))
+                  child))
+              object))
+      node))    
+   ;; proper lists
    ((tree-inspector--proper-list-p object)
     (let ((node (treeview-new-node)))
       (treeview-set-node-name node
-       (truncate-string-to-width (prin1-to-string object)
-                                30 nil nil "..."))
+                             (truncate-string-to-width (prin1-to-string object)
+                                                       30 nil nil "..."))
       (treeview-set-node-children node
-       (mapcar (lambda (item)
-                (let ((child (tree-inspector--make-node item)))
-                  (treeview-set-node-parent child node)
-                  child))
-              object))
-      node))))
+                                 (mapcar (lambda (item)
+                                           (let ((child 
(tree-inspector--make-node item)))
+                                             (treeview-set-node-parent child 
node)
+                                             child))
+                                         object))
+      node))
+   (t (error "Implement inspector for: %s" object))))
 
 (cl-defmethod tree-inspector--make-node ((object hash-table))
   "tree-inspector node for hash-tables."
@@ -138,6 +165,11 @@ in a format understood by `kbd'.  Commands a names of Lisp 
functions."
   :group 'tree-inspector
   :type '(repeat (cons (string :tag "Key    ") (function :tag "Command"))))
 
+(defcustom tree-inspector-use-specialized-inspectors-for-lists t
+  "Whether to use specialized inspectors for plists and alists."
+  :type 'boolean
+  :group 'inspector)
+
 (defcustom tree-inspector-indent-unit "  |  "
   "Symbol to indent directories when the parent is not the last child."
   :group 'tree-inspector
@@ -193,9 +225,9 @@ in a format understood by `kbd'.  Commands a names of Lisp 
functions."
 ;; (tree-inspector-inspect 2)
 ;; (tree-inspector-inspect (list 1 2 3))
 ;; (tree-inspector-inspect (list 1 2 3 (list "lala" "sf")))
- ;; (tree-inspector-inspect (let ((tab (make-hash-table)))
- ;;                           (puthash 'a 22 tab)
- ;;                       (puthash 'b 44 tab)
- ;;                       tab))
-
+;; (tree-inspector-inspect (let ((tab (make-hash-table)))
+;;                           (puthash 'a 22 tab)
+;;                        (puthash 'b 44 tab)
+;;                        tab))
+;; (tree-inspector-inspect '((a . 22) (b . "lala")))
 



reply via email to

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