add padding first column
Some checks failed
CI / lint (5.1, 1.2.0) (push) Has been cancelled
CI / check (3.15.0, nightly) (push) Has been cancelled
CI / check (3.15.0, stable) (push) Has been cancelled
release-please / release-please (push) Has been cancelled

This commit is contained in:
Tomas Mirchev 2025-10-20 21:20:01 +03:00
parent 64e2192f52
commit 7c0f7e906a
2 changed files with 46 additions and 26 deletions

View File

@ -101,7 +101,7 @@ end
---@param end_ number|nil ---@param end_ number|nil
function Builder:insert_highlight(groups, start, end_) function Builder:insert_highlight(groups, start, end_)
for _, higroup in ipairs(groups) do for _, higroup in ipairs(groups) do
table.insert(self.hl_range_args, { higroup = higroup, start = { self.index, start, }, finish = { self.index, end_ or -1, } }) table.insert(self.hl_range_args, { higroup = higroup, start = { self.index, start }, finish = { self.index, end_ or -1 } })
end end
end end
@ -381,8 +381,28 @@ end
function Builder:build_header() function Builder:build_header()
if view.is_root_folder_visible(self.explorer.absolute_path) then if view.is_root_folder_visible(self.explorer.absolute_path) then
local root_name = self:format_root_name(self.explorer.opts.renderer.root_folder_label) local root_name = self:format_root_name(self.explorer.opts.renderer.root_folder_label)
table.insert(self.lines, root_name)
self:insert_highlight({ "NvimTreeRootFolder" }, 0, string.len(root_name)) -- Pad to window width so the highlight spans the whole row.
local win = view.get_winnr()
local width = 0
if win and vim.api.nvim_win_is_valid(win) then
width = vim.api.nvim_win_get_width(win)
end
-- Use display width for proper padding with Nerd Font / wide glyphs.
local name_display_w = vim.fn.strdisplaywidth(root_name)
local pad = 0
if width and width > name_display_w then
pad = width - name_display_w
end
local padded_root = pad > 0 and (root_name .. string.rep(" ", pad)) or root_name
table.insert(self.lines, padded_root)
-- Highlight the entire padded string (covers the full visible row)
self:insert_highlight({ "NvimTreeRootFolder" }, 0, string.len(padded_root))
-- Keep original indexing behavior
self.index = 1 self.index = 1
end end
@ -395,7 +415,6 @@ function Builder:build_header()
self.index = self.index + 1 self.index = self.index + 1
end end
end end
---Sanitize lines for rendering. ---Sanitize lines for rendering.
---Replace newlines with literal \n ---Replace newlines with literal \n
---@private ---@private
@ -449,7 +468,8 @@ function Builder:setup_hidden_display_function(opts)
local ok, result = pcall(hidden_display, hidden_stats) local ok, result = pcall(hidden_display, hidden_stats)
if not ok then if not ok then
notify.warn( notify.warn(
"Problem occurred in the function ``opts.renderer.hidden_display`` see nvim-tree.renderer.hidden_display on :h nvim-tree") "Problem occurred in the function ``opts.renderer.hidden_display`` see nvim-tree.renderer.hidden_display on :h nvim-tree"
)
return nil return nil
end end
return result return result