From 935cda60d528a3a8e25c75e119d5c637a8c48a5d Mon Sep 17 00:00:00 2001 From: Akmadan23 Date: Sun, 10 Dec 2023 00:31:06 +0100 Subject: [PATCH 1/3] feat: add option to skip gitignored files on git navigation --- lua/nvim-tree/actions/moves/item.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lua/nvim-tree/actions/moves/item.lua b/lua/nvim-tree/actions/moves/item.lua index 15c1bc8396c..948b4401318 100644 --- a/lua/nvim-tree/actions/moves/item.lua +++ b/lua/nvim-tree/actions/moves/item.lua @@ -8,8 +8,9 @@ local M = {} ---@param where string ---@param what string +---@param opts table|nil ---@return fun() -function M.fn(where, what) +function M.fn(where, what, opts) return function() local node_cur = lib.get_node_at_cursor() local first_node_line = core.get_nodes_starting_line() @@ -27,7 +28,8 @@ function M.fn(where, what) local valid = false if what == "git" then - valid = explorer_node.get_git_status(node) ~= nil + local git_status = explorer_node.get_git_status(node) + valid = git_status ~= nil and (not opts.skip_gitignored or git_status[1] ~= "!!") elseif what == "diag" then valid = node.diag_status ~= nil elseif what == "opened" then From 1ad1eb5e3427a0b4ba03c374c75ace67c33930b7 Mon Sep 17 00:00:00 2001 From: Akmadan23 Date: Mon, 11 Dec 2023 12:38:35 +0100 Subject: [PATCH 2/3] Add API bindings --- doc/nvim-tree-lua.txt | 8 ++++++++ lua/nvim-tree/api.lua | 2 ++ 2 files changed, 10 insertions(+) diff --git a/doc/nvim-tree-lua.txt b/doc/nvim-tree-lua.txt index ceddd542afd..4571bd8466c 100644 --- a/doc/nvim-tree-lua.txt +++ b/doc/nvim-tree-lua.txt @@ -1862,9 +1862,17 @@ node.open.preview_no_picker() *nvim-tree-api.node.open.preview_no_picker()* node.navigate.git.next() *nvim-tree-api.node.navigate.git.next()* Navigate to the next item showing git status. + *nvim-tree-api.node.navigate.git.next_skip_gitignored()* +node.navigate.git.next_skip_gitignored() + Same as |node.navigate.git.next()|, but skips gitignored files. + node.navigate.git.prev() *nvim-tree-api.node.navigate.git.prev()* Navigate to the previous item showing git status. + *nvim-tree-api.node.navigate.git.prev_skip_gitignored()* +node.navigate.git.prev_skip_gitignored() + Same as |node.navigate.git.prev()|, but skips gitignored files. + *nvim-tree-api.node.navigate.diagnostics.next()* node.navigate.diagnostics.next() Navigate to the next item showing diagnostic status. diff --git a/lua/nvim-tree/api.lua b/lua/nvim-tree/api.lua index be7d3854f56..b99ee49384f 100644 --- a/lua/nvim-tree/api.lua +++ b/lua/nvim-tree/api.lua @@ -214,6 +214,8 @@ Api.node.navigate.parent = wrap_node(require("nvim-tree.actions.moves.parent").f 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 { 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.git.next_skip_gitignored = wrap_node(require("nvim-tree.actions.moves.item").fn { where = "next", what = "git", skip_gitignored = true }) +Api.node.navigate.git.prev_skip_gitignored = wrap_node(require("nvim-tree.actions.moves.item").fn { where = "prev", what = "git", skip_gitignored = true }) 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" }) From 9768a4763963475316e760f4d7b64d2385f23e80 Mon Sep 17 00:00:00 2001 From: Akmadan23 Date: Tue, 19 Dec 2023 11:25:19 +0100 Subject: [PATCH 3/3] stylua: ignore --- lua/nvim-tree/api.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lua/nvim-tree/api.lua b/lua/nvim-tree/api.lua index b99ee49384f..6cc7c4c5f3a 100644 --- a/lua/nvim-tree/api.lua +++ b/lua/nvim-tree/api.lua @@ -214,7 +214,9 @@ Api.node.navigate.parent = wrap_node(require("nvim-tree.actions.moves.parent").f 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 { where = "next", what = "git" }) Api.node.navigate.git.prev = wrap_node(require("nvim-tree.actions.moves.item").fn { where = "prev", what = "git" }) +-- stylua: ignore Api.node.navigate.git.next_skip_gitignored = wrap_node(require("nvim-tree.actions.moves.item").fn { where = "next", what = "git", skip_gitignored = true }) +-- stylua: ignore Api.node.navigate.git.prev_skip_gitignored = wrap_node(require("nvim-tree.actions.moves.item").fn { where = "prev", what = "git", skip_gitignored = true }) 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" })