Files
nvim-modular/lua/kickstart/plugins/neo-tree.lua
2025-08-28 23:17:34 +02:00

91 lines
2.6 KiB
Lua

-- neo-tree
--
-- Neo-tree is a Neovim plugin to browse the file system.
--
-- https://github.com/nvim-neo-tree/neo-tree.nvim
--
local neotree_helper = require 'custom.plugins.neotree-helper'
return {
{
'nvim-neo-tree/neo-tree.nvim',
version = '*',
dependencies = {
'nvim-lua/plenary.nvim',
'nvim-tree/nvim-web-devicons', -- not strictly required, but recommended
'MunifTanjim/nui.nvim',
'folke/snacks.nvim', -- optional for image preview
'saifulapm/neotree-file-nesting-config', -- optional for VSCode like file nesting
},
lazy = false,
keys = {
-- { '<C-o>', ':Neotree toggle reveal<CR>', desc = 'NeoTree reveal', silent = true },
},
opts = {
hide_root_node = true, -- recommanded config for VSCode like file nesting
retain_hidden_root_indent = true, -- recommanded config for VSCode like file nesting
filesystem = {
filtered_items = {
show_hidden_count = false, -- recommanded config for VSCode like file nesting
never_show = { -- recommanded config for VSCode like file nesting
'.DS_Store',
},
},
window = {
mappings = {
-- ['<C-o>'] = {
-- 'close_window',
-- desc = 'close neo-tree',
-- },
['d'] = {
'trash',
desc = 'trash file',
},
['P'] = {
'toggle_preview',
desc = 'preview image',
config = {
use_float = false,
use_snacks_image = true,
},
},
},
},
commands = {
trash = neotree_helper.trash,
trash_visual = neotree_helper.trash_visual,
},
},
-- recommanded config for VSCode like file nesting
default_component_configs = {
indent = {
with_expanders = true,
expander_collapsed = '',
expander_expanded = '',
},
},
event_handlers = {
{
event = 'file_opened',
handler = function()
-- auto close
-- vim.cmd 'Neotree close'
-- or
require('neo-tree.command').execute { action = 'close' }
end,
},
},
},
-- recommanded config for VSCode like file nesting
config = function(_, opts)
-- Adding rules from plugin
opts.nesting_rules = require('neotree-file-nesting-config').nesting_rules
require('neo-tree').setup(opts)
end,
},
}
-- The line beneath this is called `modeline`. See `:help modeline`
-- vim: ts=2 sts=2 sw=2 et