diff --git a/.github/workflows/luarocks-release.yml b/.github/workflows/luarocks-release.yml index a4e5d135..3468283b 100644 --- a/.github/workflows/luarocks-release.yml +++ b/.github/workflows/luarocks-release.yml @@ -1,9 +1,11 @@ name: Luarocks Release + on: push: tags: - - 'v[0-9]+.[0-9]+.[0-9]+' + - v* workflow_dispatch: + jobs: luarocks-upload: runs-on: ubuntu-latest diff --git a/doc/nvim-tree-lua.txt b/doc/nvim-tree-lua.txt index 2aa8422f..6de64558 100644 --- a/doc/nvim-tree-lua.txt +++ b/doc/nvim-tree-lua.txt @@ -2769,13 +2769,21 @@ e.g. handler for node renamed: >lua |nvim_tree_events_kind| - Event.Ready - When NvimTree has been initialized + When NvimTree has been initialized. + • Note: Handler takes no parameter. + +- Event.TreePreOpen + Invoked before the window and buffer for NvimTree are created + or opened. Before |Event.TreeOpen| event. • Note: Handler takes no parameter. - Event.TreeOpen + Invoked after the NvimTree is opened. • Note: Handler takes no parameter. - Event.TreeClose + Invoked after the NvimTree is closed, but before the window is + closed. Dispatched on |WinClosed| event for NvimTree window. • Note: Handler takes no parameter. - Event.Resize - When NvimTree is resized. diff --git a/lua/nvim-tree/events.lua b/lua/nvim-tree/events.lua index 7b57333a..e9dde833 100644 --- a/lua/nvim-tree/events.lua +++ b/lua/nvim-tree/events.lua @@ -8,6 +8,7 @@ M.Event = { Ready = "Ready", WillRenameNode = "WillRenameNode", NodeRenamed = "NodeRenamed", + TreePreOpen = "TreePreOpen", TreeOpen = "TreeOpen", TreeClose = "TreeClose", WillCreateFile = "WillCreateFile", @@ -91,6 +92,11 @@ function M._dispatch_folder_removed(folder_name) dispatch(M.Event.FolderRemoved, { folder_name = folder_name }) end +--@private +function M._dispatch_on_tree_pre_open() + dispatch(M.Event.TreePreOpen, nil) +end + --@private function M._dispatch_on_tree_open() dispatch(M.Event.TreeOpen, nil) diff --git a/lua/nvim-tree/view.lua b/lua/nvim-tree/view.lua index f1dabab8..d5e0aa75 100644 --- a/lua/nvim-tree/view.lua +++ b/lua/nvim-tree/view.lua @@ -334,6 +334,7 @@ function View:open(options) local profile = log.profile_start("view open") + events._dispatch_on_tree_pre_open() self:create_buffer() self:open_window() self:resize() @@ -462,6 +463,7 @@ end ---@param opts OpenInWinOpts|nil function View:open_in_win(opts) opts = opts or { hijack_current_buf = true, resize = true } + events._dispatch_on_tree_pre_open() if opts.winid and vim.api.nvim_win_is_valid(opts.winid) then vim.api.nvim_set_current_win(opts.winid) end