[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/inspector 019019c3b5 30/39: tree-inspector: housekeepin
From: |
ELPA Syncer |
Subject: |
[elpa] externals/inspector 019019c3b5 30/39: tree-inspector: housekeeping |
Date: |
Sat, 10 Sep 2022 17:57:48 -0400 (EDT) |
branch: externals/inspector
commit 019019c3b522fb799808e4d22b20cec40f80ec66
Author: Mariano Montone <marianomontone@gmail.com>
Commit: Mariano Montone <marianomontone@gmail.com>
tree-inspector: housekeeping
---
tree-inspector.el | 136 +++++++++++++++++++++++++++++++-----------------------
1 file changed, 78 insertions(+), 58 deletions(-)
diff --git a/tree-inspector.el b/tree-inspector.el
index 65c897dba3..3ef7b878e1 100644
--- a/tree-inspector.el
+++ b/tree-inspector.el
@@ -163,79 +163,44 @@ in a format understood by `kbd'. Commands a names of
Lisp functions."
(let ((indent ())
(parent nil))
(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)
- tree-inspector-indent-unit
- indent)
+ (setq indent (cons tree-inspector-indent-unit indent)
node parent))
indent))
(defun tree-inspector--set-node-children (node children)
+ "Set the CHILDREN of NODE.
+Assigns NODE as parent to CHILDREN nodes."
(mapc (lambda (child)
(treeview-set-node-parent child node))
children)
(treeview-set-node-children node children))
(defun tree-inspector--update-node-children (node)
+ "Update the children of NODE.
+This calls `tree-inspector--set-node-children' generic function,
+that can be specialized for different types of objects."
(let ((object (treeview-get-node-prop node 'object)))
(when object
(let ((children (tree-inspector--node-children object)))
(when children
(tree-inspector--set-node-children node children))))))
+(cl-defgeneric tree-inspector--make-node (object)
+ "Create treeview node for Emacs Lisp OBJECT.
+This is the main node creation function in tree-inspector.
+Can be specialized for user's custom object types.")
+
(cl-defgeneric tree-inspector--node-children (object)
- (:documentation "Return the OBJECT children treeview nodes."))
+ "Return the OBJECT children treeview nodes.
+This generic function should be specialized for different type of objects,
+to specify their children in the tree-inspector.")
-(cl-defmethod tree-inspector--node-children ((object t))
+(cl-defmethod tree-inspector--node-children ((_object t))
"Objects have no children by default."
nil)
-(cl-defmethod tree-inspector--node-children ((object cons))
- (cond
- ;; alists
- ((and tree-inspector-use-specialized-inspectors-for-lists
- (tree-inspector--alistp object))
- (mapcar (lambda (cons)
- (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))))
- (tree-inspector--set-node-children
- child (list (tree-inspector--make-node (car cons))
- (tree-inspector--make-node (cdr cons))))
- child))
- object))
- ;; plists
- ((and tree-inspector-use-specialized-inspectors-for-lists
- (tree-inspector--plistp object))
- (mapcar (lambda (cons)
- (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))))
- (tree-inspector--set-node-children
- child (list (tree-inspector--make-node (car cons))
- (tree-inspector--make-node (cdr cons))))
- child))
- (cl--plist-to-alist object)))
- ;; proper lists
- ((tree-inspector--proper-list-p object)
- (mapcar #'tree-inspector--make-node object))
- ;; a cons
- (t (list (tree-inspector--make-node (car object))
- (tree-inspector--make-node (cdr object))))))
-
-(cl-defmethod tree-inspector--node-children ((object vector))
- (cl-map 'list #'tree-inspector--make-node object))
-
-(cl-defgeneric tree-inspector--make-node (object)
- (:documentation "Create treeview node for Emacs Lisp OBJECT."))
-
(cl-defmethod tree-inspector--make-node ((object t))
+ "Children nodes for EIEIO instances, structures, records."
(cond
((eieio-object-p object)
(let ((node (treeview-new-node)))
@@ -274,16 +239,19 @@ in a format understood by `kbd'. Commands a names of
Lisp functions."
(error "Implement tree-inspector--make-node for %s" (type-of object)))))
(cl-defmethod tree-inspector--make-node ((object subr))
+ "Child nodes for subr function objects."
(let ((node (treeview-new-node)))
(treeview-set-node-name node (prin1-to-string object))
node))
(cl-defmethod tree-inspector--make-node ((object (eql t)))
+ "Child nodes for T."
(let ((node (treeview-new-node)))
(treeview-set-node-name node (prin1-to-string object))
node))
-(cl-defmethod tree-inspector--make-node ((object null))
+(cl-defmethod tree-inspector--make-node ((_object null))
+ "Child no"
(let ((node (treeview-new-node)))
(treeview-set-node-name node "nil")
node))
@@ -344,6 +312,48 @@ in a format understood by `kbd'. Commands a names of Lisp
functions."
(tree-inspector--make-node (cdr object))))
node))))
+;;--------- cons -------------------------------------------
+
+(cl-defmethod tree-inspector--node-children ((object cons))
+ "Child nodes of CONS objects."
+ (cond
+ ;; alists
+ ((and tree-inspector-use-specialized-inspectors-for-lists
+ (tree-inspector--alistp object))
+ (mapcar (lambda (cons)
+ (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))))
+ (tree-inspector--set-node-children
+ child (list (tree-inspector--make-node (car cons))
+ (tree-inspector--make-node (cdr cons))))
+ child))
+ object))
+ ;; plists
+ ((and tree-inspector-use-specialized-inspectors-for-lists
+ (tree-inspector--plistp object))
+ (mapcar (lambda (cons)
+ (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))))
+ (tree-inspector--set-node-children
+ child (list (tree-inspector--make-node (car cons))
+ (tree-inspector--make-node (cdr cons))))
+ child))
+ (cl--plist-to-alist object)))
+ ;; proper lists
+ ((tree-inspector--proper-list-p object)
+ (mapcar #'tree-inspector--make-node object))
+ ;; a cons
+ (t (list (tree-inspector--make-node (car object))
+ (tree-inspector--make-node (cdr object))))))
+
+;;---- vector -----------------------------------------------
+
(cl-defmethod tree-inspector--make-node ((object bool-vector))
(let ((node (treeview-new-node)))
(treeview-set-node-name
@@ -366,6 +376,13 @@ in a format understood by `kbd'. Commands a names of Lisp
functions."
(treeview-set-node-prop node 'object object)
node))
+(cl-defmethod tree-inspector--node-children ((object vector))
+ "Child nodes of vector objects."
+ (cl-map 'list #'tree-inspector--make-node object))
+
+
+;;---- hash-table ------------------------------------------
+
(cl-defmethod tree-inspector--make-node ((object hash-table))
"tree-inspector node for hash-tables."
(let ((node (treeview-new-node)))
@@ -382,6 +399,8 @@ in a format understood by `kbd'. Commands a names of Lisp
functions."
(tree-inspector--set-node-children node children)
node)))
+;;----- buffers, windows, frames ----------------------------
+
(cl-defmethod tree-inspector--make-node ((object buffer))
"tree-inspector for buffers."
(let ((node (treeview-new-node)))
@@ -436,14 +455,15 @@ in a format understood by `kbd'. Commands a names of
Lisp functions."
(list (tree-inspector--make-node (overlay-buffer object))
(tree-inspector--make-node (overlay-properties object))))
+;;------ api ----------------------------------------------------
+
(defun tree-inspector-inspect (data)
"Inspect DATA with a tree-inspector."
(let ((buffer (get-buffer-create
(format "*tree-inspector: %s*"
(tree-inspector--print-object data)))))
(with-current-buffer buffer
- (setq-local treeview-get-indent-function
- (lambda (node) (list " ")))
+ (setq-local treeview-get-indent-function (cl-constantly (list " ")))
(setq-local treeview-get-label-function #'cl-first)
(setq-local treeview-get-indent-function #'tree-inspector--get-indent)
(setq-local treeview-get-control-function
@@ -461,11 +481,11 @@ in a format understood by `kbd'. Commands a names of
Lisp functions."
(setq-local treeview-after-node-folded-function
(cl-constantly nil))
(setq-local treeview-get-control-keymap-function
- (lambda (node)
- (treeview-make-keymap tree-inspector-control-keymap)))
+ (cl-constantly
+ (treeview-make-keymap tree-inspector-control-keymap)))
(setq-local treeview-get-label-keymap-function
- (lambda (node)
- (treeview-make-keymap tree-inspector-label-keymap)))
+ (cl-constantly
+ (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)
- [elpa] externals/inspector 8b000e4e4e 15/39: tree-inspector: tests, (continued)
- [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
- [elpa] externals/inspector 49586fc18b 23/39: tree-inspector: buffers, windows, overlays, frames, ELPA Syncer, 2022/09/10
- [elpa] externals/inspector 1ea746c8e0 27/39: tree-inspector: better window inspector, ELPA Syncer, 2022/09/10
- [elpa] externals/inspector 019019c3b5 30/39: tree-inspector: housekeeping,
ELPA Syncer <=
- [elpa] externals/inspector 7f6530dc2d 14/39: inspector-tests: command for running tests, ELPA Syncer, 2022/09/10
- [elpa] externals/inspector f5b136d169 16/39: tree-inspector: cons, ELPA Syncer, 2022/09/10
- [elpa] externals/inspector 060af64376 04/39: tree-inspector: switch-to-buffer, ELPA Syncer, 2022/09/10
- [elpa] externals/inspector c1f50d8c69 12/39: Function for running inspector tests, ELPA Syncer, 2022/09/10
- [elpa] externals/inspector 683313d9bd 20/39: tree-inspector: records test, ELPA Syncer, 2022/09/10
- [elpa] externals/inspector 35fa3fc224 26/39: Housekeeping, ELPA Syncer, 2022/09/10
- [elpa] externals/inspector 4744b6ef92 28/39: tree-inspector: Use inspector to inspect objects at event and at point., ELPA Syncer, 2022/09/10
- [elpa] externals/inspector b95e058a72 31/39: tree-inspector: docstrings, ELPA Syncer, 2022/09/10
- [elpa] externals/inspector 15da8e2052 32/39: tree-inspector: refactoring, ELPA Syncer, 2022/09/10
- [elpa] externals/inspector cc661085b1 34/39: Adjustments, ELPA Syncer, 2022/09/10