nvim-tree / nvim-tree/nvim-tree.lua
nvim-tree not respecting diagnostics update_in_insert value set by neovim
Nobody has claimed this yet.
- 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
- Make sure lua-language-server is in $PATH.
- Copy the above clean room replication into
nvt-min.lua. - Launch neovim using
nvim -nu nvt-min.lua. - Open nvim-tree using
:NvimTreeToggle. - Open nvt-min.lua or any other lua file while keeping nvim-tree open.
- Go to insert mode.
- Create a diagnostic event (error, warning, etc.) by deleting some characters while in insert mode.
- 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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