Skip to content

LSP diagnostics inside nvim-tree may flicker #2954

@des-b

Description

@des-b

Description

When diagnostics.enable = true and a filetype-generic LSP (e.g. typos-lsp) is running, one may see flickering of diagnostics in the nvim-tree buffer/window.

On a more complex neovim setup than "Clean room replication" I also observed moderate to high CPU load.

A possible workaround for me was to add a check for vim.bo[bufnr].buflisted in view.lua:491:is_buf_valid. I am new to this stuff and not sure if this would be a valid solution.

Neovim version

NVIM v0.10.2
Build type: RelWithDebInfo
LuaJIT 2.1.1727870382

Operating system and version

Linux 6.11.3

Windows variant

nvim-tree version

master

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,
		},
	})
	require("nvim-tree.api").tree.open()
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 = "*",
	callback = function()
                -- please adjust path to `typos-lsp`
		vim.lsp.start({ cmd = { "/home/des-b/.local/share/nvim/mason/bin/typos-lsp" } })
	end,
})

Steps to reproduce

  1. Put a file with an invalid name: som.txt
  2. Run neovim

Expected behavior

Diagnostic on som.txt shown in nvim-tree should just show ''typos: som should be some"

Actual behavior

The diagnostic is shown but flickers every few ~100ms

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions