diff --git a/doc/nvim-tree-lua.txt b/doc/nvim-tree-lua.txt index d9eefd151db..cbb3421526c 100644 --- a/doc/nvim-tree-lua.txt +++ b/doc/nvim-tree-lua.txt @@ -2235,6 +2235,15 @@ e.g. handler for node renamed: > handler parameters: ~ {buf} `{number} `API buffer handle (buffer number) +- Event.TreeRendered + Invoked every time the tree is redrawn. Normally this event + happens after |Event.TreeOpen| except that handlers of this + one will have access to the tree buffer populated with the + final content. + handler parameters: ~ + {bufnr} `{number} `API buffer handle (buffer number) + {winnr} `{number} `API window handle (window number) + |nvim_tree_events_startup| There are two special startup events in the form of User autocommands: diff --git a/lua/nvim-tree/events.lua b/lua/nvim-tree/events.lua index 786467c03f9..d2efe2d4668 100644 --- a/lua/nvim-tree/events.lua +++ b/lua/nvim-tree/events.lua @@ -18,6 +18,7 @@ M.Event = { FolderRemoved = "FolderRemoved", Resize = "Resize", TreeAttachedPost = "TreeAttachedPost", + TreeRendered = "TreeRendered", } local function get_handlers(event_name) @@ -104,4 +105,9 @@ function M._dispatch_tree_attached_post(buf) dispatch(M.Event.TreeAttachedPost, buf) end +--@private +function M._dispatch_on_tree_rendered(bufnr, winnr) + dispatch(M.Event.TreeRendered, { bufnr = bufnr, winnr = winnr }) +end + return M diff --git a/lua/nvim-tree/renderer/init.lua b/lua/nvim-tree/renderer/init.lua index 3a61adcf240..9bd0b5c6aa6 100644 --- a/lua/nvim-tree/renderer/init.lua +++ b/lua/nvim-tree/renderer/init.lua @@ -2,6 +2,7 @@ local core = require "nvim-tree.core" local diagnostics = require "nvim-tree.diagnostics" local log = require "nvim-tree.log" local view = require "nvim-tree.view" +local events = require "nvim-tree.events" local modified = require "nvim-tree.renderer.components.modified" local _padding = require "nvim-tree.renderer.components.padding" @@ -89,6 +90,8 @@ function M.draw(unloaded_bufnr) view.grow_from_content() log.profile_end(profile) + + events._dispatch_on_tree_rendered(bufnr, view.get_winnr()) end function M.setup(opts)