* chore: add type annotations to (almost) all functions
* stylua
* Add classes for symlink nodes
* Replace deprecated `@vararg`
* Move node classes to `node` module
* Fix `Symlink*` classes
* add vim and libuv runtime for luals, qualify libuv types
* add scripts/luals-check, not quite ready for CI
* additional nil checks for git/init.lua and git/runner.lua
* additional nil checks for nvim-tree.lua
* wrap vim.cmd-as-a-function calls inside functions
* vim.tbl_filter predicate returns booleans
* Revert "add scripts/luals-check, not quite ready for CI"
This reverts commit c70229cad9.
* Add `MinimalNode` class in `marks` module
* Fix various LSP warnings
* stylua
* Fix `Explorer` class, update related annotations and add necessary checks
* Add missing annotations to `live-filter`
* Add temporary aliases for `uv.*` types
* Resolve remaining LSP warnings
* Revert changes not related to internal types
* Minor adjustments
* Update doc comments style
* Minor adjustments (pt. 2)
---------
Co-authored-by: Alexander Courtis <alex@courtis.org>
69 lines
1.2 KiB
Lua
69 lines
1.2 KiB
Lua
local renderer = {} -- circular dependency
|
|
|
|
local NvimTreeMarks = {}
|
|
|
|
local M = {}
|
|
|
|
---@class MinimalNode
|
|
---@field absolute_path string
|
|
|
|
---@param node Node|MinimalNode
|
|
local function add_mark(node)
|
|
NvimTreeMarks[node.absolute_path] = node
|
|
|
|
renderer.draw()
|
|
end
|
|
|
|
---@param node Node|MinimalNode
|
|
local function remove_mark(node)
|
|
NvimTreeMarks[node.absolute_path] = nil
|
|
|
|
renderer.draw()
|
|
end
|
|
|
|
---@param node Node|MinimalNode
|
|
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|MinimalNode
|
|
---@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
|