diff --git a/doc/nvim-tree-lua.txt b/doc/nvim-tree-lua.txt index de832eb8cb3..d02e0044b6e 100644 --- a/doc/nvim-tree-lua.txt +++ b/doc/nvim-tree-lua.txt @@ -1874,9 +1874,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/actions/moves/item.lua b/lua/nvim-tree/actions/moves/item.lua index 60b894e7a2e..9375ef5f4dc 100644 --- a/lua/nvim-tree/actions/moves/item.lua +++ b/lua/nvim-tree/actions/moves/item.lua @@ -30,7 +30,8 @@ function M.fn(opts) local valid = false if opts.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 opts.what == "diag" then valid = node.diag_status ~= nil elseif opts.what == "opened" then diff --git a/lua/nvim-tree/api.lua b/lua/nvim-tree/api.lua index de1e1450b7c..f7a7716ed27 100644 --- a/lua/nvim-tree/api.lua +++ b/lua/nvim-tree/api.lua @@ -216,6 +216,10 @@ 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" }) Api.node.navigate.opened.next = wrap_node(require("nvim-tree.actions.moves.item").fn { where = "next", what = "opened" })