2024-11-03 20:15:03 -08:00
return {
2024-11-27 19:41:15 -08:00
" nvim-tree/nvim-tree.lua " ,
dependencies = " nvim-tree/nvim-web-devicons " ,
2024-11-03 20:15:03 -08:00
config = function ( )
2024-11-27 19:41:15 -08:00
local nvimtree = require ( " nvim-tree " )
2024-11-03 20:15:03 -08:00
-- recommended settings from nvim-tree documentation
vim.g . loaded_netrw = 1
vim.g . loaded_netrwPlugin = 1
2024-11-09 21:49:28 -08:00
nvimtree.setup ( {
2024-11-03 20:15:03 -08:00
view = {
width = 35 ,
2024-11-09 21:49:28 -08:00
number = true ,
2024-11-03 20:15:03 -08:00
relativenumber = true ,
2024-11-09 21:49:28 -08:00
centralize_selection = true ,
2024-11-03 20:15:03 -08:00
} ,
-- change folder arrow icons
renderer = {
indent_markers = {
enable = true ,
} ,
2024-11-09 21:49:28 -08:00
add_trailing = true ,
2024-11-03 20:15:03 -08:00
icons = {
glyphs = {
folder = {
2024-11-27 19:41:15 -08:00
arrow_closed = " " , -- arrow when folder is closed
arrow_open = " " , -- arrow when folder is open
2024-11-03 20:15:03 -08:00
} ,
} ,
} ,
} ,
-- disable window_picker for
-- explorer to work well with
-- window splits
actions = {
open_file = {
window_picker = {
enable = false ,
} ,
} ,
} ,
filters = {
2024-11-27 19:41:15 -08:00
custom = { " .DS_Store " } ,
2024-11-03 20:15:03 -08:00
} ,
git = {
ignore = false ,
} ,
2024-11-09 21:49:28 -08:00
} )
2024-11-03 20:15:03 -08:00
2024-11-27 19:41:15 -08:00
-- Sync nvim-tree with current file when file changes (BufEnter)
local function sync_nvim_tree ( )
local api = require ( " nvim-tree.api " )
-- Check if nvim-tree is open
local is_open = api.tree . is_visible ( )
if is_open then
api.tree . find_file ( vim.fn . expand ( " % " ) , true )
end
end
-- Trigger sync_nvim_tree when buffer is entered
vim.api . nvim_create_autocmd ( " BufEnter " , {
pattern = " * " ,
callback = function ( )
sync_nvim_tree ( )
end ,
} )
2024-11-03 20:15:03 -08:00
-- set keymaps
local keymap = vim.keymap -- for conciseness
2024-11-27 19:41:15 -08:00
keymap.set ( " n " , " <leader>ee " , " <cmd>NvimTreeToggle<CR> " , { desc = " Toggle file explorer " } ) -- toggle file explorer
keymap.set ( " n " , " <leader>ef " , " <cmd>NvimTreeFindFileToggle<CR> " , { desc = " Toggle file explorer on current file " } ) -- toggle file explorer on current file
2024-11-03 20:15:03 -08:00
-- keymap.set('n', '<C>)', '<cmd>NvimTreeFindFileToggle<CR>', { desc = 'Toggle file explorer on current file' }) -- toggle file explorer on current file
2024-11-27 19:41:15 -08:00
keymap.set ( " n " , " <leader>ec " , " <cmd>NvimTreeCollapse<CR> " , { desc = " Collapse file explorer " } ) -- collapse file explorer
keymap.set ( " n " , " <leader>er " , " <cmd>NvimTreeRefresh<CR> " , { desc = " Refresh file explorer " } ) -- refresh file explorer
2024-11-09 21:49:28 -08:00
-- New ones I'm adding just for testing and hopefully that works
-- keymap.set('n', 'h', '<cmd>NvimTreeCollapse<CR>', { desc = 'Collapse file explorer' }) -- collapse file explorer
2024-11-03 20:15:03 -08:00
end ,
}