66 lines
1.1 KiB
Lua
66 lines
1.1 KiB
Lua
local renderer = {} -- circular dependency
|
|
|
|
local NvimTreeMarks = {}
|
|
|
|
local M = {}
|
|
|
|
---@param node Node
|
|
local function add_mark(node)
|
|
NvimTreeMarks[node.absolute_path] = node
|
|
|
|
renderer.draw()
|
|
end
|
|
|
|
---@param node Node
|
|
local function remove_mark(node)
|
|
NvimTreeMarks[node.absolute_path] = nil
|
|
|
|
renderer.draw()
|
|
end
|
|
|
|
---@param node Node
|
|
function M.toggle_mark(node)
|
|
if node.absolute_path == nil then
|
|
return
|
|
end
|
|
|
|
if M.get_mark(node) then
|
|
remove_mark(node)
|
|
else
|
|
add_mark(node)
|
|
end
|
|
|
|
renderer.draw()
|
|
end
|
|
|
|
function M.clear_marks()
|
|
NvimTreeMarks = {}
|
|
|
|
renderer.draw()
|
|
end
|
|
|
|
---@param node Node
|
|
---@return table|nil
|
|
function M.get_mark(node)
|
|
return NvimTreeMarks[node.absolute_path]
|
|
end
|
|
|
|
---@return table
|
|
function M.get_marks()
|
|
local list = {}
|
|
for _, node in pairs(NvimTreeMarks) do
|
|
table.insert(list, node)
|
|
end
|
|
return list
|
|
end
|
|
|
|
function M.setup(opts)
|
|
renderer = require "nvim-tree.renderer"
|
|
|
|
require("nvim-tree.marks.bulk-delete").setup(opts)
|
|
require("nvim-tree.marks.bulk-trash").setup(opts)
|
|
require("nvim-tree.marks.bulk-move").setup(opts)
|
|
end
|
|
|
|
return M
|