aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorLewis Russell <lewis6991@gmail.com>2023-03-09 15:28:55 +0000
committerLewis Russell <lewis6991@gmail.com>2023-03-10 11:51:33 +0000
commit46b73bf22cb951151de9bf0712d42e194000b677 (patch)
tree670fd0241b94031b26ba2c7a9fb5e48033dbff45 /test
parentc5b9643bf1b0f6d5166b4abf6a7c3f29532aefeb (diff)
downloadrneovim-46b73bf22cb951151de9bf0712d42e194000b677.tar.gz
rneovim-46b73bf22cb951151de9bf0712d42e194000b677.tar.bz2
rneovim-46b73bf22cb951151de9bf0712d42e194000b677.zip
perf(treesitter): more efficient foldexpr
Diffstat (limited to 'test')
-rw-r--r--test/functional/treesitter/parser_spec.lua51
1 files changed, 40 insertions, 11 deletions
diff --git a/test/functional/treesitter/parser_spec.lua b/test/functional/treesitter/parser_spec.lua
index dd36c6c9e7..0f00fcfe0d 100644
--- a/test/functional/treesitter/parser_spec.lua
+++ b/test/functional/treesitter/parser_spec.lua
@@ -888,18 +888,20 @@ int x = INT_MAX;
it("can fold via foldexpr", function()
insert(test_text)
- local levels = exec_lua([[
- vim.opt.filetype = 'c'
- vim.treesitter.get_parser(0, "c")
- local res = {}
- for i = 1, vim.api.nvim_buf_line_count(0) do
- res[i] = vim.treesitter.foldexpr(i)
- end
- return res
- ]])
+ local function get_fold_levels()
+ return exec_lua([[
+ local res = {}
+ for i = 1, vim.api.nvim_buf_line_count(0) do
+ res[i] = vim.treesitter.foldexpr(i)
+ end
+ return res
+ ]])
+ end
+
+ exec_lua([[vim.treesitter.get_parser(0, "c")]])
eq({
- [1] = '>1',
+ [1] = '>1',
[2] = '1',
[3] = '1',
[4] = '1',
@@ -917,6 +919,33 @@ int x = INT_MAX;
[16] = '3',
[17] = '3',
[18] = '2',
- [19] = '1' }, levels)
+ [19] = '1' }, get_fold_levels())
+
+ helpers.command('1,2d')
+ helpers.poke_eventloop()
+
+ exec_lua([[vim.treesitter.get_parser():parse()]])
+
+ helpers.poke_eventloop()
+ helpers.sleep(100)
+
+ eq({
+ [1] = '0',
+ [2] = '0',
+ [3] = '>1',
+ [4] = '1',
+ [5] = '1',
+ [6] = '0',
+ [7] = '0',
+ [8] = '>1',
+ [9] = '1',
+ [10] = '1',
+ [11] = '1',
+ [12] = '1',
+ [13] = '>2',
+ [14] = '2',
+ [15] = '2',
+ [16] = '1',
+ [17] = '0' }, get_fold_levels())
end)
end)