-
-
Notifications
You must be signed in to change notification settings - Fork 610
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
* 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
- Loading branch information
1 parent
ca7c4c3
commit 7a4ff1a
Showing
25 changed files
with
570 additions
and
321 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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[] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.