local M = {} function M.get_icon_state() local show_icons = vim.g.lua_tree_show_icons or { git = 1, folders = 1, files = 1 } local icons = { default = "", git_icons = { unstaged = "✗", staged = "✓", unmerged = "", renamed = "➜", untracked = "★" }, folder_icons = { default = "", open = "" } } local user_icons = vim.g.lua_tree_icons if user_icons then if user_icons.default then icons.default = user_icons.default end for key, val in pairs(user_icons.git or {}) do if icons.git_icons[key] then icons.git_icons[key] = val end end for key, val in pairs(user_icons.folder or {}) do if icons.folder_icons[key] then icons.folder_icons[key] = val end end end return { show_file_icon = show_icons.files == 1 and vim.g.nvim_web_devicons == 1, show_folder_icon = show_icons.folders == 1, show_git_icon = show_icons.git == 1, icons = icons } end function M.get_bindings() local keybindings = vim.g.lua_tree_bindings or {} return { edit = keybindings.edit or '', edit_vsplit = keybindings.edit_vsplit or '', edit_split = keybindings.edit_split or '', edit_tab = keybindings.edit_tab or '', preview = keybindings.preview or '', toggle_ignored = keybindings.toggle_ignored or 'I', refresh = keybindings.refresh or 'R', cd = keybindings.cd or '', create = keybindings.create or 'a', remove = keybindings.remove or 'd', rename = keybindings.rename or 'r', cut = keybindings.cut or 'x', copy = keybindings.copy or 'c', paste = keybindings.paste or 'p', prev_git_item = keybindings.prev_git_item or '[c', next_git_item = keybindings.next_git_item or ']c', } end function M.window_options() local opts = {} opts.winhl = 'EndOfBuffer:LuaTreeEndOfBuffer,Normal:LuaTreeNormal,CursorLine:LuaTreeCursorLine,VertSplit:LuaTreeVertSplit' if vim.g.lua_tree_side == 'right' then opts.side = 'L' opts.open_command = 'h' opts.preview_command = 'l' opts.split_command = 'nosplitright' else opts.side = 'H' opts.open_command = 'l' opts.preview_command = 'h' opts.split_command = 'splitright' end return opts end return M