Treesitter doesn't seem to change its parse tree when changing restriction. It gets it correct the first time when we query the root node, but then, after changing restriction, it doesn't seem to get updated. The following is an M-x ielm session to demonstrate the problem ELISP> (set-buffer (get-buffer-create "test")) ELISP> (insert "echo '123'") ELISP> (narrow-to-region 1 4) ELISP> (buffer-string) "echo" ELISP> (treesit-buffer-root-node 'bash) # ;; This is expected ELISP> (widen) ELISP> (treesit-buffer-root-node 'bash) # ;; <---- This is not expected, the root node should span 1-9 ELISP> (buffer-string) "echo '123'"