branch: externals/dape
commit 41cfcc3ce34e0eb1879a7422b2fdd444dd983e8d
Author: Daniel Pettersson <[email protected]>
Commit: Daniel Pettersson <[email protected]>
Variety of dape--tree-widget performance "hacks"
---
dape.el | 21 ++++++++++++++++++++-
1 file changed, 20 insertions(+), 1 deletion(-)
diff --git a/dape.el b/dape.el
index 39e573800f..87844bf83e 100644
--- a/dape.el
+++ b/dape.el
@@ -1806,25 +1806,36 @@ Search is bounded to BEG and END."
;;; Info buffer
+(defun dape--tree-widget-icon-create (icon)
+ "Create dape--tree-widget ICON."
+ ;; HACK Simplified version of icon create
+ (widget-default-create icon)
+ (insert-char ? 1))
+
(define-widget 'dape--tree-widget-open 'tree-widget-open-icon
"Icon for an expanded dape--tree-widget node."
+ :create 'dape--tree-widget-icon-create
:tag "-")
(define-widget 'dape--tree-widget-close 'tree-widget-close-icon
"Icon for a collapsed dape--tree-widget node."
+ :create 'dape--tree-widget-icon-create
:tag "+")
(define-widget 'dape--tree-widget-empty 'tree-widget-empty-icon
"Icon for an expanded dape--tree-widget node with no child."
+ :create 'dape--tree-widget-icon-create
:tag "X")
(define-widget 'dape--tree-widget-leaf 'tree-widget-leaf-icon
"Icon for a dape--tree-widget node with no child."
+ :create 'dape--tree-widget-icon-create
:tag "•")
(define-widget 'dape--tree-widget-space 'item
"Icon for all dape--tree-widget guides."
- :format " ")
+ :create 'dape--tree-widget-icon-create
+ :format "")
(defun dape--tree-widget-action (tree &optional event)
"Handle the :action of TREE with EVENT.
@@ -1854,9 +1865,17 @@ Stores :open state in `dape--tree-widget-open-p'."
(widget-get tree :default)))
(tree-widget-convert-widget tree))
+(defun dape--tree-widget-value-create (tree)
+ "Create dape TREE widget."
+ ;; HACK substitute-command-keys has a noticable performance hit
+ (cl-letf (((symbol-function 'substitute-command-keys)
+ (lambda (string &rest _) string)))
+ (tree-widget-value-create tree)))
+
(define-widget 'dape--tree-widget 'tree-widget
"Widget based on tree-widget but with :open cache."
:convert-widget 'dape--tree-widget-convert-widget
+ :value-create 'dape--tree-widget-value-create
:default nil
:key nil
:path nil