[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/inspector 068b754a0a 07/39: tree-inspector: vectors
From: |
ELPA Syncer |
Subject: |
[elpa] externals/inspector 068b754a0a 07/39: tree-inspector: vectors |
Date: |
Sat, 10 Sep 2022 17:57:46 -0400 (EDT) |
branch: externals/inspector
commit 068b754a0a6b1ae9311f4ab7f320e65f6d652704
Author: Mariano Montone <marianomontone@gmail.com>
Commit: Mariano Montone <marianomontone@gmail.com>
tree-inspector: vectors
---
tree-inspector.el | 122 +++++++++++++++++++++++++++++++++---------------------
1 file changed, 74 insertions(+), 48 deletions(-)
diff --git a/tree-inspector.el b/tree-inspector.el
index a67c60c25f..16abd3c69b 100644
--- a/tree-inspector.el
+++ b/tree-inspector.el
@@ -41,9 +41,22 @@
(push (car cons) plist))
plist))
+(defun tree-inspector--print-object (object)
+ (truncate-string-to-width
+ (prin1-to-string object)
+ 30 nil nil "..."))
+
(cl-defgeneric tree-inspector--make-node (object)
(:documentation "Create treeview node for Emacs Lisp OBJECT."))
+(cl-defmethod tree-inspector--make-node ((object t))
+ (error "Implement tree-inspector--make-node for %s" (type-of object)))
+
+(cl-defmethod tree-inspector--make-node ((object (eql t)))
+ (let ((node (treeview-new-node)))
+ (treeview-set-node-name node (prin1-to-string object))
+ node))
+
(cl-defmethod tree-inspector--make-node ((object null))
(let ((node (treeview-new-node)))
(treeview-set-node-name node "nil")
@@ -62,8 +75,7 @@
(cl-defmethod tree-inspector--make-node ((object string))
(let ((node (treeview-new-node)))
(treeview-set-node-name node
- (truncate-string-to-width object
- 30 nil nil "..."))
+ (tree-inspector--print-object object))
node))
(cl-defmethod tree-inspector--make-node ((object cons))
@@ -71,52 +83,67 @@
(cond
;; alists
((and tree-inspector-use-specialized-inspectors-for-lists
- (tree-inspector--alistp object))
+ (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 "..."))
+ (tree-inspector--print-object object))
(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))
+ (let ((child (treeview-new-node)))
+ (treeview-set-node-name
+ child (format "(%s . %s)"
+ (tree-inspector--print-object (car cons))
+ (tree-inspector--print-object (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 "..."))
- (treeview-set-node-children node
- (mapcar (lambda (item)
- (let ((child
(tree-inspector--make-node item)))
- (treeview-set-node-parent child
node)
- child))
- object))
+ (treeview-set-node-name
+ node (tree-inspector--print-object object))
+ (treeview-set-node-children
+ 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 vector))
+ (let ((node (treeview-new-node)))
+ (treeview-set-node-name
+ node (tree-inspector--print-object object))
+ (treeview-set-node-children
+ node
+ (cl-map 'list
+ (lambda (item)
+ (let ((child (tree-inspector--make-node item)))
+ (treeview-set-node-parent child node)
+ child))
+ object))
+ node))
+
(cl-defmethod tree-inspector--make-node ((object hash-table))
"tree-inspector node for hash-tables."
(let ((node (treeview-new-node)))
(treeview-set-node-name node (prin1-to-string object))
(let (children)
(dolist (key (hash-table-keys object))
- (let ((child (treeview-new-node))
- (value (gethash key object)))
- (treeview-set-node-name child (format "%s=%s" key value))
- (treeview-set-node-children child
- (list
- (tree-inspector--make-node key)
- (tree-inspector--make-node value)))
- (push child children)))
+ (let ((child (treeview-new-node))
+ (value (gethash key object)))
+ (treeview-set-node-name child (format "%s=%s" key value))
+ (treeview-set-node-children child
+ (list
+ (tree-inspector--make-node key)
+ (tree-inspector--make-node value)))
+ (push child children)))
(treeview-set-node-children node children)
node)))
@@ -127,7 +154,7 @@
(while (setq parent (treeview-get-node-parent node))
(setq indent (cons (if (treeview-last-child-p parent)
dir-treeview-indent-last-unit
- dir-treeview-indent-unit)
+ dir-treeview-indent-unit)
indent)
node parent))
indent))
@@ -194,29 +221,29 @@ in a format understood by `kbd'. Commands a names of
Lisp functions."
(let ((buffer (get-buffer-create (format "*tree-inspector: %s*" data))))
(with-current-buffer buffer
;; (setq-local treeview-get-root-node-function
- ;; (lambda () (tree-inspector--make-node data)))
+ ;; (lambda () (tree-inspector--make-node data)))
(setq-local treeview-get-indent-function
- (lambda (node) (list " ")))
+ (lambda (node) (list " ")))
(setq-local treeview-get-label-function #'first)
(setq-local treeview-get-indent-function #'tree-inspector--get-indent)
(setq-local treeview-get-control-function
- (lambda (node)
- (when (treeview-get-node-children node)
- (if (treeview-node-folded-p node)
- tree-inspector-folded-node-control
- tree-inspector-expanded-node-control))))
+ (lambda (node)
+ (when (treeview-get-node-children node)
+ (if (treeview-node-folded-p node)
+ tree-inspector-folded-node-control
+ tree-inspector-expanded-node-control))))
(setq-local treeview-update-node-children-function
- (cl-constantly nil))
+ (cl-constantly nil))
(setq-local treeview-after-node-expanded-function
- (cl-constantly nil))
+ (cl-constantly nil))
(setq-local treeview-after-node-folded-function
- (cl-constantly nil))
+ (cl-constantly nil))
(setq-local treeview-get-control-keymap-function
- (lambda (node)
- (treeview-make-keymap tree-inspector-control-keymap)))
+ (lambda (node)
+ (treeview-make-keymap tree-inspector-control-keymap)))
(setq-local treeview-get-label-keymap-function
- (lambda (node)
- (treeview-make-keymap tree-inspector-label-keymap)))
+ (lambda (node)
+ (treeview-make-keymap tree-inspector-label-keymap)))
(treeview-display-node (tree-inspector--make-node data))
(setq buffer-read-only t)
(local-set-key (kbd "q") #'kill-current-buffer)
@@ -227,7 +254,6 @@ in a format understood by `kbd'. Commands a names of Lisp
functions."
;; (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))
+;; (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, 2022/09/10
- [elpa] externals/inspector 068b754a0a 07/39: tree-inspector: vectors,
ELPA Syncer <=
- [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
- [elpa] externals/inspector 1f1469ec9d 22/39: tree-inspector: buffers, windows, frames, ELPA Syncer, 2022/09/10