local HEIGHT_RATIO = 0.8 local WIDTH_RATIO = 0.25 return { "nvim-tree/nvim-tree.lua", dependencies = { "nvim-tree/nvim-web-devicons", }, opts = { disable_netrw = false, hijack_netrw = true, sort = { sorter = "case_sensitive", }, git = { enable = true, ignore = false, }, renderer = { group_empty = true, highlight_git = true, icons = { show = { git = true, }, }, }, filters = { dotfiles = false, }, update_focused_file = { enable = true, }, on_attach = function(bufnr) local api = require("nvim-tree.api") api.config.mappings.default_on_attach(bufnr) end, view = { -- 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() -- local border_bg = vim.o.background == "dark" and "#1c1c1f" or "#e7e7e7" -- local border_fg = vim.o.background == "dark" and "#333333" or "#999999" -- -- Force highlight for border and nvim-tree background -- vim.api.nvim_set_hl(0, "FloatBorder", { fg = border_fg, bg = border_bg }) -- vim.api.nvim_set_hl(0, "NvimTreeFloatBorder", { fg = border_fg, bg = border_bg }) -- vim.api.nvim_set_hl(0, "NvimTreeNormal", { bg = border_bg }) -- vim.api.nvim_set_hl(0, "NormalFloat", { bg = border_bg }) -- 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, }, }, keys = { { "", function() local api = require("nvim-tree.api") local global_cwd = vim.fn.getcwd(-1, -1) api.tree.change_root(global_cwd) end, desc = "Change tree root to CWD", }, { "", "NvimTreeToggle", desc = "Toggle file tree", }, }, }