* feat(#2948): add UserDecorator, proof of concept * feat(#2948): add UserDecorator, proof of concept * feat(#2948): add UserDecorator, proof of concept * feat(#2948): add UserDecorator * feat(#2948): add UserDecorator * feat(#2948): add UserDecorator * feat(#2948): add Decorator node icon override * feat(#2948): add nvim_tree.api.* node classes * feat(#2948): extract _meta following nvim pattern * feat(#2948): extract _meta following nvim pattern * feat(#2948): add decorator registry and order * feat(#2948): add decorator registry and order * feat(#2948): tidy * feat(#2948): document API * feat(#2948): document API * feat(#2948): document API * feat(#2948): pass api nodes to user decorators * feat(#2948): document API * feat(#2948): use renderer.decorators to define order and register * feat(#2948): tidy decorator args and complete documentation * feat(#2948): decorator classes specified by prefix rather than suffix * feat(#2948): improve doc * feat(#2948): improve doc * feat(#2948): improve doc * feat(#2948): additional user decorator safety * feat(#2948): create nvim_tree.api.decorator.UserDecorator class in API, add :extend * feat(#2948): improve doc
This commit is contained in:
committed by
GitHub
parent
ca7c4c33ca
commit
7a4ff1a516
51
lua/nvim-tree/_meta/api.lua
Normal file
51
lua/nvim-tree/_meta/api.lua
Normal file
@@ -0,0 +1,51 @@
|
||||
---@meta
|
||||
error("Cannot require a meta file")
|
||||
|
||||
--
|
||||
-- Nodes
|
||||
--
|
||||
|
||||
---Base Node, Abstract
|
||||
---@class (exact) nvim_tree.api.Node
|
||||
---@field type "file" | "directory" | "link" uv.fs_stat.result.type
|
||||
---@field absolute_path string
|
||||
---@field executable boolean
|
||||
---@field fs_stat uv.fs_stat.result?
|
||||
---@field git_status GitNodeStatus?
|
||||
---@field hidden boolean
|
||||
---@field name string
|
||||
---@field parent nvim_tree.api.DirectoryNode?
|
||||
---@field diag_severity lsp.DiagnosticSeverity?
|
||||
|
||||
---File
|
||||
---@class (exact) nvim_tree.api.FileNode: nvim_tree.api.Node
|
||||
---@field extension string
|
||||
|
||||
---Directory
|
||||
---@class (exact) nvim_tree.api.DirectoryNode: nvim_tree.api.Node
|
||||
---@field has_children boolean
|
||||
---@field nodes nvim_tree.api.Node[]
|
||||
---@field open boolean
|
||||
|
||||
---Root Directory
|
||||
---@class (exact) nvim_tree.api.RootNode: nvim_tree.api.DirectoryNode
|
||||
|
||||
---Link mixin
|
||||
---@class (exact) nvim_tree.api.LinkNode
|
||||
---@field link_to string
|
||||
---@field fs_stat_target uv.fs_stat.result
|
||||
|
||||
---File Link
|
||||
---@class (exact) nvim_tree.api.FileLinkNode: nvim_tree.api.FileNode, nvim_tree.api.LinkNode
|
||||
|
||||
---DirectoryLink
|
||||
---@class (exact) nvim_tree.api.DirectoryLinkNode: nvim_tree.api.DirectoryNode, nvim_tree.api.LinkNode
|
||||
|
||||
--
|
||||
-- Various Types
|
||||
--
|
||||
|
||||
---A string for rendering, with optional highlight groups to apply to it
|
||||
---@class (exact) nvim_tree.api.HighlightedString
|
||||
---@field str string
|
||||
---@field hl string[]
|
||||
54
lua/nvim-tree/_meta/api_decorator.lua
Normal file
54
lua/nvim-tree/_meta/api_decorator.lua
Normal file
@@ -0,0 +1,54 @@
|
||||
---@meta
|
||||
error("Cannot require a meta file")
|
||||
|
||||
local nvim_tree = { api = { decorator = {} } }
|
||||
|
||||
---Highlight group range as per nvim-tree.renderer.highlight_*
|
||||
---@alias nvim_tree.api.decorator.HighlightRange "none" | "icon" | "name" | "all"
|
||||
|
||||
---Icon position as per renderer.icons.*_placement
|
||||
---@alias nvim_tree.api.decorator.IconPlacement "none" | "before" | "after" | "signcolumn" | "right_align"
|
||||
|
||||
---Names of builtin decorators or your decorator classes. Builtins are ordered lowest to highest priority.
|
||||
---@alias nvim_tree.api.decorator.Name "Git" | "Opened" | "Hidden" | "Modified" | "Bookmarks" | "Diagnostics" | "Copied" | "Cut" | nvim_tree.api.decorator.UserDecorator
|
||||
|
||||
---Custom decorator, see :help nvim-tree-decorators
|
||||
---
|
||||
---@class (exact) nvim_tree.api.decorator.UserDecorator
|
||||
---@field protected enabled boolean
|
||||
---@field protected highlight_range nvim_tree.api.decorator.HighlightRange
|
||||
---@field protected icon_placement nvim_tree.api.decorator.IconPlacement
|
||||
nvim_tree.api.decorator.UserDecorator = {}
|
||||
|
||||
---Create your decorator class
|
||||
---
|
||||
function nvim_tree.api.decorator.UserDecorator:extend() end
|
||||
|
||||
---Abstract: no-args constructor must be implemented and will be called once per tree render.
|
||||
---Must set all fields.
|
||||
---
|
||||
function nvim_tree.api.decorator.UserDecorator:new() end
|
||||
|
||||
---Abstract: optionally implement to set the node's icon
|
||||
---
|
||||
---@param node nvim_tree.api.Node
|
||||
---@return nvim_tree.api.HighlightedString? icon_node
|
||||
function nvim_tree.api.decorator.UserDecorator:icon_node(node) end
|
||||
|
||||
---Abstract: optionally implement to provide icons and the highlight groups for your icon_placement.
|
||||
---
|
||||
---@param node nvim_tree.api.Node
|
||||
---@return nvim_tree.api.HighlightedString[]? icons
|
||||
function nvim_tree.api.decorator.UserDecorator:icons(node) end
|
||||
|
||||
---Abstract: optionally implement to provide one highlight group to apply to your highlight_range.
|
||||
---
|
||||
---@param node nvim_tree.api.Node
|
||||
---@return string? highlight_group
|
||||
function nvim_tree.api.decorator.UserDecorator:highlight_group(node) end
|
||||
|
||||
---Define a sign. This should be called in the constructor.
|
||||
---
|
||||
---@protected
|
||||
---@param icon nvim_tree.api.HighlightedString?
|
||||
function nvim_tree.api.decorator.UserDecorator:define_sign(icon) end
|
||||
Reference in New Issue
Block a user