nvim-tree / nvim-tree/nvim-tree.lua

nvim-tree not respecting diagnostics update_in_insert value set by neovim

Open
#2,745 8 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

awaiting feedback bug
Dominant language
Lua
Stars
8.6k
Forks
639
Avg merge
1d 14h
Merged PRs (30d)
2

Description

Description

By default neovim sets diagnostics update_in_insert = false and other plugins (for example lualine) respects it. But somehow, nvim-tree doesn't.

Neovim version
NVIM v0.9.5
Build type: Release
LuaJIT 2.1.1710088188
Operating system and version

Debian 12 Stable (Linux 6.1.0-18-amd64)

Windows variant

No response

nvim-tree version

707b24a

Clean room replication
vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1

vim.cmd [[set runtimepath=$VIMRUNTIME]]
vim.cmd [[set packpath=/tmp/nvt-min/site]]
local package_root = "/tmp/nvt-min/site/pack"
local install_path = package_root .. "/packer/start/packer.nvim"
local function load_plugins()
  require("packer").startup {
    {
      "wbthomason/packer.nvim",
      "nvim-tree/nvim-tree.lua",
      "nvim-tree/nvim-web-devicons",
      -- ADD PLUGINS THAT ARE _NECESSARY_ FOR REPRODUCING THE ISSUE
    },
    config = {
      package_root = package_root,
      compile_path = install_path .. "/plugin/packer_compiled.lua",
      display = { non_interactive = true },
    },
  }
end
if vim.fn.isdirectory(install_path) == 0 then
  print "Installing nvim-tree and dependencies."
  vim.fn.system { "git", "clone", "--depth=1", "https://github.com/wbthomason/packer.nvim", install_path }
end
load_plugins()
require("packer").sync()
vim.cmd [[autocmd User PackerComplete ++once echo "Ready!" | lua setup()]]
vim.opt.termguicolors = true
vim.opt.cursorline = true

-- MODIFY NVIM-TREE SETTINGS THAT ARE _NECESSARY_ FOR REPRODUCING THE ISSUE
_G.setup = function()
  require("nvim-tree").setup {
    diagnostics = {
      enable = true,
    },
  }
end

-- UNCOMMENT this block for diagnostics issues, substituting pattern and cmd as appropriate.
-- Requires diagnostics.enable = true in setup.

vim.api.nvim_create_autocmd("FileType", {
  pattern = "lua",
  callback = function()
    vim.lsp.start { cmd = { "lua-language-server" } }
  end,
})
Steps to reproduce
  1. Make sure lua-language-server is in $PATH.
  2. Copy the above clean room replication into nvt-min.lua.
  3. Launch neovim using nvim -nu nvt-min.lua.
  4. Open nvim-tree using :NvimTreeToggle.
  5. Open nvt-min.lua or any other lua file while keeping nvim-tree open.
  6. Go to insert mode.
  7. Create a diagnostic event (error, warning, etc.) by deleting some characters while in insert mode.
  8. See that nvim-tree is updated (showing diagnostic icons) while in insert mode even though the default for neovim is update_in_insert = false.
Expected behavior

Nvim-tree respects the value of update_in_insert set by neovim.

Actual behavior

https://github.com/nvim-tree/nvim-tree.lua/assets/137637016/142b382d-c6b1-4669-9452-4575dcd780d4

As you can see, when I am creating an error in insert mode, lualine don't update the status but nvim-tree does.

I have checked the docs, issues and discussions and couldn't find anything related to it.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the diagnostics configuration in require("nvim-tree").setup and reproduce the behavior using the supplied nvt-min.lua clean-room configuration. Compare nvim-tree's diagnostic updates with Neovim's update_in_insert setting while following the listed reproduction steps. Done means diagnostic icons do not update during insert mode when update_in_insert is false, while updates still work otherwise.

Written by the indexing model from the issue text.

Assessment

Tech stack
lua
Domain
devtools
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.