Skip to content

Commit 45aa357

Browse files
committed
feat: add early exit to the grow() algorithm
1 parent 3d23432 commit 45aa357

File tree

1 file changed

+10
-16
lines changed

1 file changed

+10
-16
lines changed

lua/nvim-tree/view.lua

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -315,31 +315,25 @@ local function grow()
315315
padding = padding + wininfo[1].textoff
316316
end
317317

318-
local resizing_width = M.View.initial_width - padding
319-
local max_width
320-
321-
-- maybe bound max
322-
if M.View.max_width == -1 then
323-
max_width = -1
324-
else
325-
max_width = get_width(M.View.max_width) - padding
318+
local final_width = M.View.initial_width
319+
local max_width = math.huge
320+
if M.View.max_width ~= -1 then
321+
max_width = get_width(M.View.max_width)
326322
end
327323

328324
local ns_id = vim.api.nvim_get_namespaces()["NvimTreeExtmarks"]
329325
for line_nr, l in pairs(lines) do
330-
local count = vim.fn.strchars(l)
326+
local line_width = vim.fn.strchars(l)
331327
-- also add space for right-aligned icons
332328
local extmarks = vim.api.nvim_buf_get_extmarks(M.get_bufnr(), ns_id, { line_nr, 0 }, { line_nr, -1 }, { details = true })
333-
count = count + utils.extmarks_length(extmarks)
334-
if resizing_width < count then
335-
resizing_width = count
336-
end
337-
if M.View.adaptive_size and max_width >= 0 and resizing_width >= max_width then
338-
resizing_width = max_width
329+
line_width = line_width + utils.extmarks_length(extmarks) + padding
330+
final_width = math.max(final_width, line_width)
331+
if final_width >= max_width then
332+
final_width = max_width
339333
break
340334
end
341335
end
342-
M.resize(resizing_width + padding)
336+
M.resize(final_width)
343337
end
344338

345339
function M.grow_from_content()

0 commit comments

Comments
 (0)