mirror of
https://github.com/neovim/neovim.git
synced 2026-03-23 17:10:52 +00:00
feat(treesitter)!: don't parse tree in get_parser() or start()
**Problem:** `vim.treesitter.get_parser()` and `vim.treesitter.start()` both parse the tree before returning it. This is problematic because if this is a sync parse, it will stall the editor on large files. If it is an async parse, the functions return stale trees. **Solution:** Remove this parsing side effect and leave it to the user to parse the returned trees, either synchronously or asynchronously.
This commit is contained in:
@@ -20,6 +20,7 @@ describe('treesitter node API', function()
|
||||
insert('F')
|
||||
exec_lua(function()
|
||||
vim.treesitter.start(0, 'lua')
|
||||
vim.treesitter.get_parser(0):parse()
|
||||
vim.treesitter.get_node():tree()
|
||||
vim.treesitter.get_node():tree()
|
||||
collectgarbage()
|
||||
@@ -45,6 +46,7 @@ describe('treesitter node API', function()
|
||||
-- this buffer doesn't have filetype set!
|
||||
insert('local foo = function() end')
|
||||
exec_lua(function()
|
||||
vim.treesitter.get_parser(0, 'lua'):parse()
|
||||
_G.node = vim.treesitter.get_node({
|
||||
bufnr = 0,
|
||||
pos = { 0, 6 }, -- on "foo"
|
||||
|
||||
Reference in New Issue
Block a user