simrat39 / rust-tools.nvim

Tools for better development in rust using neovim's builtin lsp
MIT License
2.17k stars 159 forks source link

inlay_hints.lua causes an error which is shown in terminal after exiting Neovim. #332

Closed mrdicksteel closed 1 year ago

mrdicksteel commented 1 year ago

Fedora 36 NVIM v0.8.3 rust-analyzer: installed version 2023-02-06 rustc 1.67.0 (fc594f156 2023-01-24)

Using just one file main.rs with the content:

fn main() {
    some_print("this".to_string());
}

fn some_print(print_this: String) {
    println!("This is fun.");
}

Steps to reproduce:

Open file 'main.rs` Wait for the inlay_hints to appear :wq Error is in terminal

Error:

Error executing vim.schedule lua callback: ...ker/start/rust-tools.nvim/lua/rust-tools/inlay_hints.lua:142: bad argument #1 to 'len' (string expected, got nil)
stack traceback:
    [builtin:len]: in function 'len'
    ...ker/start/rust-tools.nvim/lua/rust-tools/inlay_hints.lua:142: in function 'parse_hints'
    ...ker/start/rust-tools.nvim/lua/rust-tools/inlay_hints.lua:168: in function 'handler'
    ...ount_nvim.a1w5xuA/usr/share/nvim/runtime/lua/vim/lsp.lua:1383: in function ''
    vim/_editor.lua: in function <vim/_editor.lua:0>

Relevant lsp settings:

rt = require("rust-tools")
rt.setup({
    server = {
        on_attach = on_attach("rust"),
        capabilities = capabilities,

        ["rust-analyzer"] = {
            lens = {
                enable = true,
            },
            -- enable clippy on save
            checkOnSave = {
                command = "clippy",
            },
        },
    },
})
cairijun commented 1 year ago

Does this work for you? @mrdicksteel

diff --git a/lua/rust-tools/inlay_hints.lua b/lua/rust-tools/inlay_hints.lua
index d3fd052..0df31a1 100644
--- a/lua/rust-tools/inlay_hints.lua
+++ b/lua/rust-tools/inlay_hints.lua
@@ -160,7 +160,7 @@ function M.cache_render(self, bufnr)
             return
           end

-          if not vim.api.nvim_buf_is_valid(ctx.bufnr) then
+          if not vim.api.nvim_buf_is_loaded(ctx.bufnr) then
             self.cache[ctx.bufnr] = nil
             return
           end
mrdicksteel commented 1 year ago

It works. @cairijun