From 0a7c24b675ab75dab8c36f2a326d274ad66b7166 Mon Sep 17 00:00:00 2001 From: Alexander Courtis Date: Sun, 10 Dec 2023 10:13:22 +1100 Subject: [PATCH 1/4] fix(#2568): hijack_cursor positions at top grouped node (#2569) Co-authored-by: Azad <49314270+Akmadan23@users.noreply.github.com> --- lua/nvim-tree.lua | 1 + lua/nvim-tree/utils.lua | 11 +++++------ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lua/nvim-tree.lua b/lua/nvim-tree.lua index ce9837e9..61cdf413 100644 --- a/lua/nvim-tree.lua +++ b/lua/nvim-tree.lua @@ -124,6 +124,7 @@ function M.place_cursor_on_node() if not node or node.name == ".." then return end + node = utils.get_parent_of_group(node) local line = vim.api.nvim_get_current_line() local cursor = vim.api.nvim_win_get_cursor(0) diff --git a/lua/nvim-tree/utils.lua b/lua/nvim-tree/utils.lua index effdab46..fe1b2481 100644 --- a/lua/nvim-tree/utils.lua +++ b/lua/nvim-tree/utils.lua @@ -149,12 +149,11 @@ function M.get_node_from_path(path) :iterate() end ---- Get the highest parent of grouped nodes ----@param node_ Node ----@return table -function M.get_parent_of_group(node_) - local node = node_ - while node.parent and node.parent.group_next do +---Get the highest parent of grouped nodes +---@param node Node +---@return Node node or parent +function M.get_parent_of_group(node) + while node and node.parent and node.parent.group_next do node = node.parent end return node From 90cff8e4684c63db6af133f6629748f7af059bd5 Mon Sep 17 00:00:00 2001 From: gegoune Date: Sun, 10 Dec 2023 02:32:28 +0100 Subject: [PATCH 2/4] ci: configure release-please Release-As: v0.9.0 --- .github/workflows/release-please.yml | 7 +++---- .release-please-manifest.json | 0 release-please-config.json | 10 ++++++++++ 3 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 .release-please-manifest.json create mode 100644 release-please-config.json diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 1544d407..a403dc29 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -3,16 +3,15 @@ on: branches: - master name: release-please +permissions: + contents: write + pull-requests: write jobs: release-please: runs-on: ubuntu-latest steps: - uses: google-github-actions/release-please-action@v4 id: release - with: - release-type: simple - package-name: nvim-tree - command: github-release - uses: actions/checkout@v4 - name: tag major and minor versions if: ${{ steps.release.outputs.release_created }} diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 00000000..e69de29b diff --git a/release-please-config.json b/release-please-config.json new file mode 100644 index 00000000..8aafb4f2 --- /dev/null +++ b/release-please-config.json @@ -0,0 +1,10 @@ +{ + "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json", + "include-v-in-tag": true, + "packages": { + ".": { + "package-name": "nvim-tree", + "release-type": "simple" + } + } +} From 4891d6cec3d33d3711c795f88f8846ff4fa333a0 Mon Sep 17 00:00:00 2001 From: gegoune <69750637+gegoune@users.noreply.github.com> Date: Sun, 10 Dec 2023 11:39:39 +0100 Subject: [PATCH 3/4] ci: fix release-please manifest (#2586) Release-As: 0.9.0 --- .release-please-manifest.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index e69de29b..e18ee077 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -0,0 +1,3 @@ +{ + ".": "0.0.0" +} From 34780aca5bac0a58c163ea30719a276fead1bd95 Mon Sep 17 00:00:00 2001 From: Azad <49314270+Akmadan23@users.noreply.github.com> Date: Sun, 10 Dec 2023 23:44:36 +0100 Subject: [PATCH 4/4] refactor: take single `opts` param on node navigation (#2584) * refactor: take single `opts` param on node navigation * `MoveOpts` -> `NavigationItemOpts` --- lua/nvim-tree/actions/moves/item.lua | 19 +++++++++++-------- lua/nvim-tree/api.lua | 12 ++++++------ 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/lua/nvim-tree/actions/moves/item.lua b/lua/nvim-tree/actions/moves/item.lua index 15c1bc83..60b894e7 100644 --- a/lua/nvim-tree/actions/moves/item.lua +++ b/lua/nvim-tree/actions/moves/item.lua @@ -6,19 +6,22 @@ local explorer_node = require "nvim-tree.explorer.node" local M = {} ----@param where string ----@param what string +---@class NavigationItemOpts +---@field where string +---@field what string + +---@param opts NavigationItemOpts ---@return fun() -function M.fn(where, what) +function M.fn(opts) return function() local node_cur = lib.get_node_at_cursor() local first_node_line = core.get_nodes_starting_line() local nodes_by_line = utils.get_nodes_by_line(core.get_explorer().nodes, first_node_line) local iter_start, iter_end, iter_step, cur, first, nex - if where == "next" then + if opts.where == "next" then iter_start, iter_end, iter_step = first_node_line, #nodes_by_line, 1 - elseif where == "prev" then + elseif opts.where == "prev" then iter_start, iter_end, iter_step = #nodes_by_line, first_node_line, -1 end @@ -26,11 +29,11 @@ function M.fn(where, what) local node = nodes_by_line[line] local valid = false - if what == "git" then + if opts.what == "git" then valid = explorer_node.get_git_status(node) ~= nil - elseif what == "diag" then + elseif opts.what == "diag" then valid = node.diag_status ~= nil - elseif what == "opened" then + elseif opts.what == "opened" then valid = vim.fn.bufloaded(node.absolute_path) ~= 0 end diff --git a/lua/nvim-tree/api.lua b/lua/nvim-tree/api.lua index a57cbf42..be7d3854 100644 --- a/lua/nvim-tree/api.lua +++ b/lua/nvim-tree/api.lua @@ -212,12 +212,12 @@ Api.node.navigate.sibling.first = wrap_node(require("nvim-tree.actions.moves.sib Api.node.navigate.sibling.last = wrap_node(require("nvim-tree.actions.moves.sibling").fn "last") Api.node.navigate.parent = wrap_node(require("nvim-tree.actions.moves.parent").fn(false)) Api.node.navigate.parent_close = wrap_node(require("nvim-tree.actions.moves.parent").fn(true)) -Api.node.navigate.git.next = wrap_node(require("nvim-tree.actions.moves.item").fn("next", "git")) -Api.node.navigate.git.prev = wrap_node(require("nvim-tree.actions.moves.item").fn("prev", "git")) -Api.node.navigate.diagnostics.next = wrap_node(require("nvim-tree.actions.moves.item").fn("next", "diag")) -Api.node.navigate.diagnostics.prev = wrap_node(require("nvim-tree.actions.moves.item").fn("prev", "diag")) -Api.node.navigate.opened.next = wrap_node(require("nvim-tree.actions.moves.item").fn("next", "opened")) -Api.node.navigate.opened.prev = wrap_node(require("nvim-tree.actions.moves.item").fn("prev", "opened")) +Api.node.navigate.git.next = wrap_node(require("nvim-tree.actions.moves.item").fn { where = "next", what = "git" }) +Api.node.navigate.git.prev = wrap_node(require("nvim-tree.actions.moves.item").fn { where = "prev", what = "git" }) +Api.node.navigate.diagnostics.next = wrap_node(require("nvim-tree.actions.moves.item").fn { where = "next", what = "diag" }) +Api.node.navigate.diagnostics.prev = wrap_node(require("nvim-tree.actions.moves.item").fn { where = "prev", what = "diag" }) +Api.node.navigate.opened.next = wrap_node(require("nvim-tree.actions.moves.item").fn { where = "next", what = "opened" }) +Api.node.navigate.opened.prev = wrap_node(require("nvim-tree.actions.moves.item").fn { where = "prev", what = "opened" }) Api.git.reload = wrap(require("nvim-tree.actions.reloaders.reloaders").reload_git)