diff --git a/doc/nvim-tree-lua.txt b/doc/nvim-tree-lua.txt index 0dfef9578d2..1741359604e 100644 --- a/doc/nvim-tree-lua.txt +++ b/doc/nvim-tree-lua.txt @@ -290,6 +290,7 @@ Subsequent calls to setup will replace the previous configuration. diagnostics = { enable = false, show_on_dirs = false, + show_on_open_dirs = true, debounce_delay = 50, severity = { min = vim.diagnostic.severity.HINT, @@ -316,6 +317,7 @@ Subsequent calls to setup will replace the previous configuration. enable = true, ignore = true, show_on_dirs = true, + show_on_open_dirs = true, timeout = 400, }, actions = { @@ -555,6 +557,11 @@ Show LSP and COC diagnostics in the signcolumn Show diagnostic icons on parent directories. Type: `boolean`, Default: `false` + *nvim-tree.diagnostics.show_on_open_dirs* + Show diagnostics icons on directories that are open. + Only relevant when `diagnostics.show_on_dirs` is `true`. + Type: `boolean`, Default: `true` + *nvim-tree.diagnostics.icons* Icons for diagnostic severity. Type: `table`, Default: `{ hint = "", info = "", warning = "", error = "" }` @@ -586,6 +593,11 @@ Git integration with icons and colors. Show status icons of children when directory itself has no status icon. Type: `boolean`, Default: `true` + *nvim-tree.git.show_on_open_dirs* + Show status icons on directories that are open. + Only relevant when `git.show_on_dirs` is `true`. + Type: `boolean`, Default: `true` + *nvim-tree.git.timeout* Kills the git process after some time if it takes too long. Type: `number`, Default: `400` (ms) diff --git a/lua/nvim-tree.lua b/lua/nvim-tree.lua index cf0612d80b5..4992de68a53 100644 --- a/lua/nvim-tree.lua +++ b/lua/nvim-tree.lua @@ -568,6 +568,7 @@ local DEFAULT_OPTS = { -- BEGIN_DEFAULT_OPTS diagnostics = { enable = false, show_on_dirs = false, + show_on_open_dirs = true, debounce_delay = 50, severity = { min = vim.diagnostic.severity.HINT, @@ -594,6 +595,7 @@ local DEFAULT_OPTS = { -- BEGIN_DEFAULT_OPTS enable = true, ignore = true, show_on_dirs = true, + show_on_open_dirs = true, timeout = 400, }, actions = { diff --git a/lua/nvim-tree/diagnostics.lua b/lua/nvim-tree/diagnostics.lua index 5337c2c1ffa..3771779def3 100644 --- a/lua/nvim-tree/diagnostics.lua +++ b/lua/nvim-tree/diagnostics.lua @@ -114,7 +114,7 @@ function M.update() for line, node in pairs(nodes_by_line) do local nodepath = utils.canonical_path(node.absolute_path) log.line("diagnostics", " %d checking nodepath '%s'", line, nodepath) - if M.show_on_dirs and vim.startswith(bufpath, nodepath) then + if M.show_on_dirs and vim.startswith(bufpath, nodepath) and (not node.open or M.show_on_open_dirs) then log.line("diagnostics", " matched fold node '%s'", node.absolute_path) node.diag_status = severity add_sign(line, severity) @@ -147,6 +147,7 @@ function M.setup(opts) end M.show_on_dirs = opts.diagnostics.show_on_dirs + M.show_on_open_dirs = opts.diagnostics.show_on_open_dirs vim.fn.sign_define(sign_names[1][1], { text = opts.diagnostics.icons.error, texthl = sign_names[1][2] }) vim.fn.sign_define(sign_names[2][1], { text = opts.diagnostics.icons.warning, texthl = sign_names[2][2] }) vim.fn.sign_define(sign_names[3][1], { text = opts.diagnostics.icons.info, texthl = sign_names[3][2] }) diff --git a/lua/nvim-tree/renderer/components/git.lua b/lua/nvim-tree/renderer/components/git.lua index 644e06c353b..7b82d92ed4e 100644 --- a/lua/nvim-tree/renderer/components/git.lua +++ b/lua/nvim-tree/renderer/components/git.lua @@ -75,9 +75,13 @@ 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 git_status then + if not show_git(node) then return nil end @@ -137,7 +141,7 @@ end local function get_highlight_(node) local git_status = node.git_status - if not git_status then + if not show_git(node) then return end @@ -162,6 +166,8 @@ function M.setup(opts) else M.get_highlight = nil_ end + + M.git_show_on_open_dirs = opts.git.show_on_open_dirs end return M