]> git.eshelyaron.com Git - emacs.git/commitdiff
Minor improvement for tree-sitter explorer
authorYuan Fu <casouri@gmail.com>
Mon, 9 Jan 2023 04:30:07 +0000 (20:30 -0800)
committerYuan Fu <casouri@gmail.com>
Mon, 9 Jan 2023 05:22:28 +0000 (21:22 -0800)
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

index e53d5d53bd0a9ac7fec943fd995fb402a2ca85c3..7a604121c4ec0348e44a807619a465f39f041b07 100644 (file)
@@ -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