fix: don't collapse uncollapsable leaf nodes (#268)

This commit is contained in:
Steven Arcangeli 2023-06-16 19:01:17 -07:00
parent 4e7da79523
commit c30fb2c9bd
2 changed files with 9 additions and 3 deletions

View file

@ -96,7 +96,9 @@ function BufData:set_fold_level(level)
level = math.min(99, math.max(0, level))
self.collapse_level = level
for _, item in ipairs(self.flat_items) do
self:set_collapsed(item, level <= item.level)
if self:is_collapsable(item) then
self:set_collapsed(item, level <= item.level)
end
end
return level
end

View file

@ -182,8 +182,12 @@ M.decrease_fold_level = function(bufnr, count)
end
local bufdata = data.get_or_create(bufnr)
-- If the current level is 99, start the decrement from the max level instead
-- (+1 because the leaves can actually be folded/collapsed)
local start = math.min(bufdata.collapse_level, bufdata.max_level + 1)
local max_level = bufdata.max_level
-- When folding is enabled, leaves can be folded so add 1
if config.manage_folds(bufnr) and config.link_tree_to_folds then
max_level = max_level + 1
end
local start = math.min(bufdata.collapse_level, max_level)
M.set_collapse_level(bufnr, start - count)
end