diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8fe44e9a..4f7e8b27 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,28 +8,35 @@ on: branches: - master +permissions: + contents: read + jobs: - luacheck: - name: luacheck + lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - name: Prepare + - uses: leafo/gh-actions-lua@v10 + with: + luaVersion: "5.1" + + - uses: leafo/gh-actions-luarocks@v4 + + - name: luacheck run: | - sudo apt-get update - sudo add-apt-repository universe - sudo apt install luarocks -y - sudo luarocks install luacheck - - name: Run luacheck - run: luacheck . - stylua: - name: stylua + luarocks install luacheck 1.1.1 + luacheck lua + + style: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: JohnnyMorganz/stylua-action@v3 + + - name: stylua + uses: JohnnyMorganz/stylua-action@v3 with: token: ${{ secrets.GITHUB_TOKEN }} - version: latest - args: --color always --check lua/ + version: "0.19" + args: --check lua + diff --git a/README.md b/README.md index 077afd9b..87a16d63 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,9 @@ require("nvim-tree").setup() -- OR setup with some options require("nvim-tree").setup({ - sort_by = "case_sensitive", + sort = { + sorter = "case_sensitive", + }, view = { width = 30, }, diff --git a/doc/nvim-tree-lua.txt b/doc/nvim-tree-lua.txt index 9633d9e9..691611fd 100644 --- a/doc/nvim-tree-lua.txt +++ b/doc/nvim-tree-lua.txt @@ -1698,6 +1698,18 @@ tree.is_visible({opts}) *nvim-tree-api.tree.is_visible()* Return: ~ (boolean) nvim-tree is visible +tree.winid({opts}) *nvim-tree-api.tree.winid()* + Retrieve the winid of the open tree. + + Parameters: ~ + • {opts} (table) optional parameters + + Options: ~ + • {tabpage} (number|nil) tabpage, 0 or nil for current, default nil + + Return: ~ + (number) winid or nil if tree is not visible + ============================================================================== 6.2 API FILE SYSTEM *nvim-tree-api.fs* diff --git a/lua/nvim-tree/actions/reloaders/reloaders.lua b/lua/nvim-tree/actions/reloaders/reloaders.lua index a343012c..bcafc643 100644 --- a/lua/nvim-tree/actions/reloaders/reloaders.lua +++ b/lua/nvim-tree/actions/reloaders/reloaders.lua @@ -14,7 +14,7 @@ local M = {} local function refresh_nodes(node, projects, unloaded_bufnr) Iterator.builder({ node }) :applier(function(n) - if n.open and n.nodes then + if n.nodes then local toplevel = git.get_toplevel(n.cwd or n.link_to or n.absolute_path) explorer_module.reload(n, projects[toplevel] or {}, unloaded_bufnr) end diff --git a/lua/nvim-tree/api.lua b/lua/nvim-tree/api.lua index 7d7573fc..8ad29deb 100644 --- a/lua/nvim-tree/api.lua +++ b/lua/nvim-tree/api.lua @@ -146,6 +146,11 @@ Api.tree.is_tree_buf = wrap(require("nvim-tree.utils").is_nvim_tree_buf) Api.tree.is_visible = wrap(require("nvim-tree.view").is_visible) +---@class ApiTreeWinIdOpts +---@field tabpage number|nil default nil + +Api.tree.winid = wrap(require("nvim-tree.view").winid) + Api.fs.create = wrap_node_or_nil(require("nvim-tree.actions.fs.create-file").fn) Api.fs.remove = wrap_node(require("nvim-tree.actions.fs.remove-file").fn) Api.fs.trash = wrap_node(require("nvim-tree.actions.fs.trash").fn) diff --git a/lua/nvim-tree/view.lua b/lua/nvim-tree/view.lua index 98c86017..409b72cc 100644 --- a/lua/nvim-tree/view.lua +++ b/lua/nvim-tree/view.lua @@ -433,6 +433,21 @@ function M.focus(winnr, open_if_closed) vim.api.nvim_set_current_win(wnr) end +--- Retrieve the winid of the open tree. +--- @param opts ApiTreeWinIdOpts|nil +--- @return number|nil winid unlike get_winnr(), this returns nil if the nvim-tree window is not visible +function M.winid(opts) + local tabpage = opts and opts.tabpage + if tabpage == 0 then + tabpage = vim.api.nvim_get_current_tabpage() + end + if M.is_visible { tabpage = tabpage } then + return M.get_winnr(tabpage) + else + return nil + end +end + --- Restores the state of a NvimTree window if it was initialized before. function M.restore_tab_state() local tabpage = vim.api.nvim_get_current_tabpage()