[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")))
- [elpa] externals/inspector updated (f04c60a5d3 -> 0b213e931c), ELPA Syncer, 2022/09/10
- [elpa] externals/inspector e2e56201a0 01/39: Starting a tree-inspector with treeview, ELPA Syncer, 2022/09/10
- [elpa] externals/inspector 06eb60bcff 03/39: tree-inspector: indentation, ELPA Syncer, 2022/09/10
- [elpa] externals/inspector 56579dae8a 05/39: tree-inspector: hash-table inspector, ELPA Syncer, 2022/09/10
- [elpa] externals/inspector 838b08706a 02/39: tree-inspector work, ELPA Syncer, 2022/09/10
- [elpa] externals/inspector faf590dded 06/39: tree-inspector: alist inspector,
ELPA Syncer <=
- [elpa] externals/inspector 068b754a0a 07/39: tree-inspector: vectors, ELPA Syncer, 2022/09/10
- [elpa] externals/inspector d43bb09ae9 11/39: tree-inspector: housekeeping, ELPA Syncer, 2022/09/10
- [elpa] externals/inspector 4066d7b441 13/39: Starting some tree-inspector tests, ELPA Syncer, 2022/09/10
- [elpa] externals/inspector 8b000e4e4e 15/39: tree-inspector: tests, ELPA Syncer, 2022/09/10
- [elpa] externals/inspector 130c43c6b6 19/39: tree-inspector: records, ELPA Syncer, 2022/09/10
- [elpa] externals/inspector 394fb22811 09/39: ..., ELPA Syncer, 2022/09/10
- [elpa] externals/inspector 98d3d56723 10/39: tree-inspector: provide, ELPA Syncer, 2022/09/10
- [elpa] externals/inspector 236ef196a0 24/39: tree-inspector: fixes, ELPA Syncer, 2022/09/10
- [elpa] externals/inspector fc9712651c 36/39: More complete package commentary, ELPA Syncer, 2022/09/10
- [elpa] externals/inspector 5828d49207 21/39: tree-inspector: inspect-last-sexp, ELPA Syncer, 2022/09/10