aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/treesitter/_fold.lua
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/lua/vim/treesitter/_fold.lua')
-rw-r--r--runtime/lua/vim/treesitter/_fold.lua12
1 files changed, 10 insertions, 2 deletions
diff --git a/runtime/lua/vim/treesitter/_fold.lua b/runtime/lua/vim/treesitter/_fold.lua
index 38318347a7..1064004320 100644
--- a/runtime/lua/vim/treesitter/_fold.lua
+++ b/runtime/lua/vim/treesitter/_fold.lua
@@ -75,7 +75,15 @@ local function compute_folds_levels(bufnr, info, srow, erow, callback)
erow = erow or api.nvim_buf_line_count(bufnr)
local parser = info.parser
- if not parser then
+ if
+ not parser
+ -- Parsing an empty buffer results in problems with the parsing state,
+ -- resulting in both a broken highlighter and foldexpr.
+ or api.nvim_buf_line_count(bufnr) == 1
+ and api.nvim_buf_call(bufnr, function()
+ return vim.fn.line2byte(1) <= 0
+ end)
+ then
return
end
@@ -380,7 +388,7 @@ function M.foldexpr(lnum)
if not foldinfos[bufnr] then
foldinfos[bufnr] = FoldInfo.new(bufnr)
- api.nvim_create_autocmd({ 'BufUnload', 'VimEnter' }, {
+ api.nvim_create_autocmd({ 'BufUnload', 'VimEnter', 'FileType' }, {
buffer = bufnr,
once = true,
callback = function()