local serverReady = {} return { cmd = { "rust-analyzer" }, root_markers = { "Cargo.toml" }, filetypes = { "rust" }, capabilities = { experimental = { serverStatusNotification = true, }, }, handlers = { ["experimental/serverStatus"] = function(_, result, ctx) -- Try to fix inlay hints not being shown on start of if result.quiescent and not serverReady[ctx.client_id] then for _, bufnr in ipairs(vim.lsp.get_buffers_by_client_id(ctx.client_id)) do -- Re-enable inlay hints so they are refreshed if vim.lsp.inlay_hint.is_enabled() then vim.lsp.inlay_hint.enable(false, { bufnr = bufnr }) vim.lsp.inlay_hint.enable(true, { bufnr = bufnr }) end serverReady[ctx.client_id] = true end end end, }, settings = { ["rust-analyzer"] = { checkOnSave = { command = "clippy" }, diagnostics = { enable = true, experimental = { enable = true }, }, inlayHints = { enable = true, bindingModeHints = { enable = false }, closingBraceHints = { minLines = 10 }, closureReturnTypeHints = { enable = "with_block" }, discriminantHints = { enable = "fieldless" }, lifetimeElisionHints = { enable = "skip_trivial" }, typeHints = { hideClosureInitialization = false }, }, }, }, }