1786 git next prev land on dirs (#1787)
* Filtered dir with git status that are open when show_on_open_dir is false * refactored for single source of truth of existence of git status on a node Putting `has_git_status()` in `explorer.common` because that's where node.status is constructed Or at least I think that's where it's constructed * 1786 semantic nit Co-authored-by: Alexander Courtis <alex@courtis.org>
This commit is contained in:
parent
07149daa0c
commit
9d9c5711dc
@ -2,6 +2,7 @@ local utils = require "nvim-tree.utils"
|
||||
local view = require "nvim-tree.view"
|
||||
local core = require "nvim-tree.core"
|
||||
local lib = require "nvim-tree.lib"
|
||||
local explorer_common = require "nvim-tree.explorer.common"
|
||||
|
||||
local M = {}
|
||||
|
||||
@ -14,7 +15,7 @@ function M.fn(where, what)
|
||||
for line, node in pairs(nodes_by_line) do
|
||||
local valid = false
|
||||
if what == "git" then
|
||||
valid = node.git_status ~= nil
|
||||
valid = explorer_common.shows_git_status(node)
|
||||
elseif what == "diag" then
|
||||
valid = node.diag_status ~= nil
|
||||
end
|
||||
|
||||
@ -10,9 +10,7 @@ local function get_dir_git_status(parent_ignored, status, absolute_path)
|
||||
return file_status
|
||||
end
|
||||
|
||||
if M.config.git.show_on_dirs then
|
||||
return status.dirs and status.dirs[absolute_path]
|
||||
end
|
||||
return status.dirs and status.dirs[absolute_path]
|
||||
end
|
||||
|
||||
local function get_git_status(parent_ignored, status, absolute_path)
|
||||
@ -41,6 +39,22 @@ function M.update_git_status(node, parent_ignored, status)
|
||||
end
|
||||
end
|
||||
|
||||
function M.shows_git_status(node)
|
||||
if not node.git_status then
|
||||
-- status doesn't exist
|
||||
return false
|
||||
elseif not node.nodes then
|
||||
-- status exist and is a file
|
||||
return true
|
||||
elseif not node.open then
|
||||
-- status exist, is a closed dir
|
||||
return M.config.git.show_on_dirs
|
||||
else
|
||||
-- status exist, is a open dir
|
||||
return M.config.git.show_on_dirs and M.config.git.show_on_open_dirs
|
||||
end
|
||||
end
|
||||
|
||||
function M.node_destroy(node)
|
||||
if not node then
|
||||
return
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
local notify = require "nvim-tree.notify"
|
||||
local explorer_common = require "nvim-tree.explorer.common"
|
||||
|
||||
local M = {
|
||||
SIGN_GROUP = "NvimTreeGitSigns",
|
||||
@ -75,16 +76,12 @@ local function warn_status(git_status)
|
||||
)
|
||||
end
|
||||
|
||||
local function show_git(node)
|
||||
return node.git_status and (not node.open or M.git_show_on_open_dirs)
|
||||
end
|
||||
|
||||
local function get_icons_(node)
|
||||
local git_status = node.git_status
|
||||
if not show_git(node) then
|
||||
if not explorer_common.shows_git_status(node) then
|
||||
return nil
|
||||
end
|
||||
|
||||
local git_status = node.git_status
|
||||
local icons = M.git_icons[git_status]
|
||||
if not icons then
|
||||
if not M.config.highlight_git then
|
||||
@ -141,7 +138,7 @@ end
|
||||
|
||||
local function get_highlight_(node)
|
||||
local git_status = node.git_status
|
||||
if not show_git(node) then
|
||||
if not explorer_common.shows_git_status(node) then
|
||||
return
|
||||
end
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user