Skip to content

Commit 2f586da

Browse files
authored
Merge branch 'master' into master
2 parents 7b5a28f + 25d16aa commit 2f586da

File tree

6 files changed

+31
-24
lines changed

6 files changed

+31
-24
lines changed

doc/nvim-tree-lua.txt

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -462,7 +462,10 @@ Following is the default configuration. See |nvim-tree-opts| for details. >lua
462462
hidden_placement = "after",
463463
diagnostics_placement = "signcolumn",
464464
bookmarks_placement = "signcolumn",
465-
padding = " ",
465+
padding = {
466+
icon = " ",
467+
folder_arrow = " ",
468+
},
466469
symlink_arrow = " ➛ ",
467470
show = {
468471
file = true,
@@ -1065,10 +1068,14 @@ Configuration options for icons.
10651068
Bookmark icon placement.
10661069
Type: `string`, Default: `signcolumn`
10671070

1068-
*nvim-tree.renderer.icons.padding*
1071+
*nvim-tree.renderer.icons.padding.icon*
10691072
Inserted between icon and filename.
10701073
Type: `string`, Default: `" "`
10711074

1075+
*nvim-tree.renderer.icons.padding.folder_arrow*
1076+
Inserted between folder arrow icon and file/folder icon.
1077+
Type: `string`, Default: `" "`
1078+
10721079
*nvim-tree.renderer.icons.symlink_arrow*
10731080
Used as a separator between symlinks' source and target.
10741081
Type: `string`, Default: `" ➛ "`
@@ -3027,6 +3034,7 @@ needed.
30273034
`sort_by` |nvim-tree.sort.sorter|
30283035
`git.ignore` |nvim-tree.filters.git_ignored|
30293036
`renderer.icons.webdev_colors` |nvim-tree.renderer.icons.web_devicons.file.color|
3037+
`renderer.icons.padding` |nvim-tree.renderer.icons.padding.icon|
30303038

30313039
==============================================================================
30323040
14.2 LEGACY: HIGHLIGHT *nvim-tree-legacy-highlight*
@@ -3183,7 +3191,8 @@ highlight group is not, hard linking as follows: >
31833191
|nvim-tree.renderer.icons.glyphs.symlink|
31843192
|nvim-tree.renderer.icons.hidden_placement|
31853193
|nvim-tree.renderer.icons.modified_placement|
3186-
|nvim-tree.renderer.icons.padding|
3194+
|nvim-tree.renderer.icons.padding.folder_arrow|
3195+
|nvim-tree.renderer.icons.padding.icon|
31873196
|nvim-tree.renderer.icons.show|
31883197
|nvim-tree.renderer.icons.show.bookmarks|
31893198
|nvim-tree.renderer.icons.show.diagnostics|

lua/nvim-tree.lua

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,9 @@ local function setup_autocommands(opts)
242242
pattern = "*",
243243
---@param ev vim.api.keyset.create_autocmd.callback_args
244244
callback = function(ev)
245+
if not vim.api.nvim_buf_is_valid(ev.buf) then
246+
return
247+
end
245248
if vim.api.nvim_get_option_value("filetype", { buf = ev.buf }) == "NvimTree" then
246249
require("nvim-tree.events")._dispatch_on_tree_close()
247250
end
@@ -334,7 +337,10 @@ local DEFAULT_OPTS = { -- BEGIN_DEFAULT_OPTS
334337
hidden_placement = "after",
335338
diagnostics_placement = "signcolumn",
336339
bookmarks_placement = "signcolumn",
337-
padding = " ",
340+
padding = {
341+
icon = " ",
342+
folder_arrow = " ",
343+
},
338344
symlink_arrow = "",
339345
show = {
340346
file = true,

lua/nvim-tree/legacy.lua

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,13 @@ local function refactored(opts)
6060
end
6161
end
6262
utils.move_missing_val(opts, "update_focused_file", "ignore_list", opts, "update_focused_file.update_root", "ignore_list", true)
63+
64+
-- 2025/04/30
65+
if opts.renderer and opts.renderer.icons and type(opts.renderer.icons.padding) == "string" then
66+
local icons_padding = opts.renderer.icons.padding
67+
opts.renderer.icons.padding = {}
68+
opts.renderer.icons.padding.icon = icons_padding
69+
end
6370
end
6471

6572
local function deprecated(opts)

lua/nvim-tree/renderer/builder.lua

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,12 +135,12 @@ end
135135
function Builder:format_line(indent_markers, arrows, icon, name, node)
136136
local added_len = 0
137137
local function add_to_end(t1, t2)
138-
if not t2 then
138+
if not t2 or vim.tbl_isempty(t2) then
139139
return
140140
end
141141
for _, v in ipairs(t2) do
142142
if added_len > 0 then
143-
table.insert(t1, { str = self.explorer.opts.renderer.icons.padding })
143+
table.insert(t1, { str = self.explorer.opts.renderer.icons.padding.icon })
144144
end
145145
table.insert(t1, v)
146146
end

lua/nvim-tree/renderer/components/padding.lua

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,15 +95,15 @@ function M.get_arrows(node)
9595
local dir = node:as(DirectoryNode)
9696
if dir then
9797
if dir.open then
98-
str = M.config.icons.glyphs.folder["arrow_open"] .. " "
98+
str = M.config.icons.glyphs.folder["arrow_open"] .. M.config.icons.padding.folder_arrow
9999
hl = "NvimTreeFolderArrowOpen"
100100
else
101-
str = M.config.icons.glyphs.folder["arrow_closed"] .. " "
101+
str = M.config.icons.glyphs.folder["arrow_closed"] .. M.config.icons.padding.folder_arrow
102102
end
103103
elseif M.config.indent_markers.enable then
104104
str = ""
105105
else
106-
str = " "
106+
str = " " .. string.rep(" ", #M.config.icons.padding.folder_arrow)
107107
end
108108

109109
return { str = str, hl = { hl } }

lua/nvim-tree/utils.lua

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
local Iterator = require("nvim-tree.iterators.node-iterator")
2-
local notify = require("nvim-tree.notify")
32

43
local M = {
54
debouncers = {},
@@ -389,20 +388,6 @@ end
389388
---@param dst_pos string value pos
390389
---@param remove boolean
391390
function M.move_missing_val(src, src_path, src_pos, dst, dst_path, dst_pos, remove)
392-
local ok, err = pcall(vim.validate, {
393-
src = { src, "table" },
394-
src_path = { src_path, "string" },
395-
src_pos = { src_pos, "string" },
396-
dst = { dst, "table" },
397-
dst_path = { dst_path, "string" },
398-
dst_pos = { dst_pos, "string" },
399-
remove = { remove, "boolean" },
400-
})
401-
if not ok then
402-
notify.warn("move_missing_val: " .. (err or "invalid arguments"))
403-
return
404-
end
405-
406391
for pos in string.gmatch(src_path, "([^%.]+)%.*") do
407392
if src[pos] and type(src[pos]) == "table" then
408393
src = src[pos]

0 commit comments

Comments
 (0)