local HEIGHT_RATIO = 0.8 local WIDTH_RATIO = 0.5 return { "nvim-tree/nvim-tree.lua", dependencies = { "nvim-tree/nvim-web-devicons", }, opts = { disable_netrw = true, hijack_netrw = true, hijack_directories = { enable = true, auto_open = true, }, sort = { sorter = "case_sensitive", }, view = { -- width = 30, float = { enable = true, open_win_config = function() local screen_w = vim.opt.columns:get() local screen_h = vim.opt.lines:get() - vim.opt.cmdheight:get() local window_w = screen_w * WIDTH_RATIO local window_h = screen_h * HEIGHT_RATIO local window_w_int = math.floor(window_w) local window_h_int = math.floor(window_h) local center_x = (screen_w - window_w) / 2 local center_y = ((vim.opt.lines:get() - window_h) / 2) - vim.opt.cmdheight:get() return { border = "rounded", relative = "editor", row = center_y, col = center_x, width = window_w_int, height = window_h_int, } end, }, width = function() return math.floor(vim.opt.columns:get() * WIDTH_RATIO) end, adaptive_size = true, centralize_selection = true, }, git = { enable = true, }, renderer = { group_empty = true, highlight_git = true, icons = { show = { git = true, }, }, }, filters = { dotfiles = false, }, sync_root_with_cwd = true, respect_buf_cwd = true, update_focused_file = { enable = true, update_root = true, }, }, keys = { { "", function() local api = require("nvim-tree.api") local global_cwd = vim.fn.getcwd(-1, -1) api.tree.change_root(global_cwd) end, noremap = true, silent = true, desc = "Change tree root to CWD", }, { "", ":NvimTreeToggle", noremap = true, silent = true, desc = "Toggle file tree" }, }, }