dotfiles/.config/nvim/lua/plugins/extras/editor/neo-tree-extended.lua
2024-06-08 12:38:28 +02:00

52 lines
1.8 KiB
Lua

return {
"nvim-neo-tree/neo-tree.nvim",
opts = {
close_if_last_window = true,
window = {
mappings = {
["e"] = "open",
["E"] = function()
vim.api.nvim_exec("Neotree focus filesystem left", true)
end,
["b"] = function()
vim.api.nvim_exec("Neotree focus buffers left", true)
end,
["g"] = function()
vim.api.nvim_exec("Neotree focus git_status left", true)
end,
["<c-/>"] = "fuzzy_finder_directory",
["D"] = function(state)
local node = state.tree:get_node()
local log = require("neo-tree.log")
state.clipboard = state.clipboard or {}
if diff_Node and diff_Node ~= tostring(node.id) then
local current_Diff = node.id
require("neo-tree.utils").open_file(state, diff_Node, open)
vim.cmd("vert diffs " .. current_Diff)
log.info("Diffing " .. diff_Name .. " against " .. node.name)
diff_Node = nil
current_Diff = nil
state.clipboard = {}
require("neo-tree.ui.renderer").redraw(state)
else
local existing = state.clipboard[node.id]
if existing and existing.action == "diff" then
state.clipboard[node.id] = nil
diff_Node = nil
require("neo-tree.ui.renderer").redraw(state)
else
state.clipboard[node.id] = { action = "diff", node = node }
diff_Name = state.clipboard[node.id].node.name
diff_Node = tostring(state.clipboard[node.id].node.id)
log.info("Diff source file " .. diff_Name)
require("neo-tree.ui.renderer").redraw(state)
end
end
end,
},
},
filesystem = {
hijack_netrw_behavior = "open_default",
},
},
}