* feat(#1079): add highlight NvimTreeCopiedText and NvimTreeCutText * feat(#1079): add highlight NvimTreeCopiedText and NvimTreeCutText * feat(#1079): node may not be present in copy and cut * feat(#2411): bookmark highlight and icon placement * feat(#1079): add renderer.highlight_clipboard * feat(#1079): add renderer.highlight_clipboard * feat(#2411): bookmark highlight and icon placement * feat(#2411): bookmark highlight and icon placement * style * feat(#2411): bookmark highlight and icon placement * feat(#2411): bookmark highlight and icon placement * feat(#2411): bookmark highlight and icon placement * feat(#2411): bookmark highlight and icon placement
52 lines
1.2 KiB
Lua
52 lines
1.2 KiB
Lua
local marks = require "nvim-tree.marks"
|
|
|
|
local HL_POSITION = require("nvim-tree.enum").HL_POSITION
|
|
|
|
local M = {
|
|
ICON = {},
|
|
hl_pos = HL_POSITION.none,
|
|
}
|
|
|
|
---Bookmark highlight group and position when highlight_bookmark.
|
|
---@param node table
|
|
---@return HL_POSITION position none when clipboard empty
|
|
---@return string|nil group only when node present in clipboard
|
|
function M.get_highlight(node)
|
|
if M.hl_pos == HL_POSITION.none then
|
|
return HL_POSITION.none, nil
|
|
end
|
|
|
|
local mark = marks.get_mark(node)
|
|
if mark then
|
|
return M.hl_pos, "NvimTreeBookmarkHL"
|
|
else
|
|
return HL_POSITION.none, nil
|
|
end
|
|
end
|
|
|
|
---bookmark icon if marked
|
|
---@param node table
|
|
---@return HighlightedString|nil bookmark icon
|
|
function M.get_icon(node)
|
|
if M.config.renderer.icons.show.bookmarks and marks.get_mark(node) then
|
|
return M.ICON
|
|
end
|
|
end
|
|
|
|
function M.setup(opts)
|
|
M.config = {
|
|
renderer = opts.renderer,
|
|
}
|
|
|
|
M.hl_pos = HL_POSITION[opts.renderer.highlight_bookmarks] or HL_POSITION.none
|
|
|
|
M.ICON = {
|
|
str = opts.renderer.icons.glyphs.bookmark,
|
|
hl = { "NvimTreeBookmark" },
|
|
}
|
|
|
|
vim.fn.sign_define(M.ICON.hl[1], { text = M.ICON.str, texthl = M.ICON.hl[1] })
|
|
end
|
|
|
|
return M
|