Files
Zacharias-Brohn 3d0d89284f test
2025-12-10 22:46:54 +01:00

87 lines
2.2 KiB
Lua

local M = {}
function M.name(config, node, state)
local common = require "neo-tree.sources.common.components"
local highlights = require "neo-tree.ui.highlights"
local highlight = config.highlight or highlights.FILE_NAME
local text = node.name
if node.type == "directory" then
highlight = highlights.DIRECTORY_NAME
if config.trailing_slash and text ~= "/" then
text = text .. "/"
end
end
if node:get_depth() == 1 and node.type ~= "message" then
highlight = highlights.ROOT_NAME
text = vim.fn.fnamemodify(text, ":p:h:t")
text = string.upper(text)
else
local filtered_by = common.filtered_by(config, node, state)
highlight = filtered_by.highlight or highlight
if config.use_git_status_colors then
local git_status = state.components.git_status({}, node, state)
if git_status and git_status.highlight then
highlight = git_status.highlight
end
end
end
if type(config.right_padding) == "number" then
if config.right_padding > 0 then
text = text .. string.rep(" ", config.right_padding)
end
else
text = text .. " "
end
return {
text = text,
highlight = highlight,
}
end
function M.icon(config, node, state)
local common = require "neo-tree.sources.common.components"
local highlights = require "neo-tree.ui.highlights"
local icon = config.default or " "
local highlight = config.highlight or highlights.FILE_ICON
if node.type == "directory" then
highlight = highlights.DIRECTORY_ICON
if node.loaded and not node:has_children() then
icon = not node.empty_expanded and config.folder_empty
or config.folder_empty_open
elseif node:is_expanded() then
icon = config.folder_open or "-"
else
icon = config.folder_closed or "+"
end
elseif node.type == "file" or node.type == "terminal" then
local success, web_devicons = pcall(require, "nvim-web-devicons")
if success then
local devicon, hl = web_devicons.get_icon(node.name, node.ext)
icon = devicon or icon
highlight = hl or highlight
end
end
local filtered_by = common.filtered_by(config, node, state)
-- Don't render icon in root folder
if node:get_depth() == 1 then
return {
text = nil,
highlight = highlight,
}
end
return {
text = icon .. " ",
highlight = filtered_by.highlight or highlight,
}
end
return M