## 事象 [[trouble.nvim]]のバージョンは3.5.1の少し先(`4453fea`)。 ### 最小構成の再現確認 ディレクトリを作成する。 ```console mkdir trouble-sandbox cd trouble-sandbox ``` `repro.lua`を作成する。 ```console vim repro.lua ``` ```lua -- DO NOT change the paths and don't remove the colorscheme local root = vim.fn.fnamemodify("./.repro", ":p") -- set stdpaths to use .repro for _, name in ipairs({ "config", "data", "state", "cache" }) do vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name end -- bootstrap lazy local lazypath = root .. "/plugins/lazy.nvim" if not vim.loop.fs_stat(lazypath) then vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", lazypath }) end vim.opt.runtimepath:prepend(lazypath) -- install plugins local plugins = { "folke/tokyonight.nvim", { "folke/trouble.nvim", opts = {} }, { "folke/trouble.nvim", cmd = "Trouble", keys = { { "<C-j>h", "<cmd>Trouble lsp_references<cr>", }, }, config = function() require("trouble").setup({ focus = true, auto_refresh = false, }) end, }, { "neovim/nvim-lspconfig", config = function() local lspconfig = require("lspconfig") lspconfig.rust_analyzer.setup({ settings = { ["rust-analyzer"] = {}, }, }) end, }, } require("lazy").setup(plugins, { root = root .. "/plugins", }) vim.cmd.colorscheme("tokyonight") -- add anything else here ``` 再現例として[[Rust]]プロジェクトを作成する。 ```console cargo init vim -u repro.lua main.rs ``` `main.rs` ```rust fn hoge() {} fn main() { hoge(); hoge(); } ``` `main.rs`の`hoge()`にカーソルをあわせて `:Trouble lsp_references` を実行すると、Referencesが表示される。 ![[Pasted image 20240707131419.png]] この状態で、`main.rs`の領域でマウスカーソルを左クリックしてフォーカスを移動する。表示が消えてしまう。 ![[Pasted image 20240707131518.png]] ## 原因 自動リフレッシュが発動しており、クリックした位置のシンボルに対して`lsp_refrences`が発動するから。 ## 解決方法 デフォルトの設定が`auto_refresh = true`となっているので、明示的に`auto_refresh = false`を設定する。 ```diff config = function() require("trouble").setup({ focus = true, + auto_refresh = false, }) ```