emacs-diffs
[Top][All Lists]
Advanced

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

emacs-29 1f8ad353d9 4/4: Minor improvement for tree-sitter explorer


From: Yuan Fu
Subject: emacs-29 1f8ad353d9 4/4: Minor improvement for tree-sitter explorer
Date: Mon, 9 Jan 2023 01:15:15 -0500 (EST)

branch: emacs-29
commit 1f8ad353d9fbf8fb7706e91dda336dfd650b57cc
Author: Yuan Fu <casouri@gmail.com>
Commit: Yuan Fu <casouri@gmail.com>

    Minor improvement for tree-sitter explorer
    
    If you open an empty python buffer and type
    
    1 + 2
    a
    b
    
    Currently the explorer only displays the top-level node at point, ie,
    only 1 + 2, only a, or only b. That's kind of awkward, so if the
    buffer is small, show the entire parse tree.
    
    * lisp/treesit.el (treesit--explorer-refresh): See above.
---
 lisp/treesit.el | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/lisp/treesit.el b/lisp/treesit.el
index e53d5d53bd..7a604121c4 100644
--- a/lisp/treesit.el
+++ b/lisp/treesit.el
@@ -2415,11 +2415,15 @@ in the region."
                   (window-start) (window-end) treesit--explorer-language))
            ;; Only highlight the current top-level construct.
            ;; Highlighting the whole buffer is slow and unnecessary.
-           (top-level (treesit-node-first-child-for-pos
-                       root (if (eolp)
-                                (max (point-min) (1- (point)))
-                              (point))
-                       t))
+           ;; But if the buffer is small (ie, used in playground
+           ;; style), just highlight the whole buffer.
+           (top-level (if (< (buffer-size) 4000)
+                          root
+                        (treesit-node-first-child-for-pos
+                         root (if (eolp)
+                                  (max (point-min) (1- (point)))
+                                (point))
+                         t)))
            ;; Only highlight node when region is active, if we
            ;; highlight node at point the syntax tree is too jumpy.
            (nodes-hl



reply via email to

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