Rust-tools doesn't appear used here, and if it is, buffer becomes all white text on launch
amaanq opened this issue · 2 comments
Hi, so my config is heavily based off yours. I noticed rust-tools doesn't work, and that's because rust_analyzer is loaded in plugins/lsp/init.lua
I modified it to be like so at the bottom:
for server, opts in pairs(servers) do
opts = vim.tbl_deep_extend("force", {}, options, opts or {})
if server ~= "tsserver" and server ~= "rust_analyzer" then
require("lspconfig")[server].setup(opts)
elseif server == "rust_analyzer" then
require("plugins.rust-tools").setup(opts)
elseif server == "tsserver" then
require("typescript").setup({ server = opts })
end
end
however, this causes the first buffer opened in a session to be pure white, which is fixed by running :e
I'm here to ask for insight on how you think you could fix this, because rust-tools' inlay hints are just so nice I would rather not give them up, thanks :)
The reason it doesn't work is because rust-tools is different from the other lsps, and it forwards the server
table to nvim-lsp, instead of the whole table. You would need something like this, if you want to use a layout like Folke's:
local servers = {
rust_analyzer = {
tools = {
autoSetHints = true,
hover_with_actions = false,
inlay_hints = {
show_parameter_hints = true,
parameter_hints_prefix = "",
other_hints_prefix = "",
},
},
server = {
settings = {
["rust-analyzer"] = {
diagnostics = {
disabled = {"incorrect-ident-case"}
},
completion = {
postfix = {
enable = false
}
},
checkOnSave = {
command = "clippy"
},
procMacro = {
enable = true
},
}
}
}
}
}
local common_options = {
on_attach = on_attach,
capabilities = capabilities,
}
for server, opts in pairs(servers) do
if server == "rust_analyzer" then
-- rust-tools is special, and expects lsp server related configuration in the "server" key (everything else just uses the top level table)
opts.server = vim.tbl_deep_extend("force", {}, common_options, opts.server or {})
require("rust-tools").setup(opts)
else
opts = vim.tbl_deep_extend("force", {}, common_options, opts or {})
lspconfig[server].setup(opts)
end
end
wow! thank you so much for taking the time to answer this 2 months after I had asked it, I still had the issue and it appears solved now. thank you again!