✨ feat(nvim): add new neo-tree bindings for diffing files and opening files with xdg
This commit is contained in:
parent
7360777e68
commit
7098f57f52
1 changed files with 50 additions and 4 deletions
|
@ -2,14 +2,60 @@ return {
|
||||||
"nvim-neo-tree/neo-tree.nvim",
|
"nvim-neo-tree/neo-tree.nvim",
|
||||||
opts = {
|
opts = {
|
||||||
close_if_last_window = true,
|
close_if_last_window = true,
|
||||||
filesystem = {
|
|
||||||
hijack_netrw_behavior = "open_default",
|
|
||||||
},
|
|
||||||
window = {
|
window = {
|
||||||
mappings = {
|
mappings = {
|
||||||
["l"] = "open",
|
["l"] = "open",
|
||||||
["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,
|
||||||
["h"] = "close_node",
|
["h"] = "close_node",
|
||||||
|
["<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",
|
||||||
|
window = {
|
||||||
|
mappings = {
|
||||||
|
["O"] = function(state)
|
||||||
|
local node = state.tree:get_node()
|
||||||
|
local path = node:get_id()
|
||||||
|
vim.fn.jobstart({ "xdg-open", path }, { detach = true })
|
||||||
|
end,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
Loading…
Add table
Reference in a new issue