I personally cannot write code without inlay diagnostics feature enabled, which is unfortunately a bit buggy currently. The bug is mostly noticeable in insert mode. So, I created a simple hook which disables inlay diagnostics when in insert mode and enables in normal mode, which is a temporally fix, while this bug isn’t fixed.
I used to use lsp-hover, but at least with the Rust language server, the hover text is 90% documentation and 10% diagnostics. There’s apparently an option to disable diagnostics for 100% documentation, but that’s usually the opposite of what I want. Inlay diagnostics lets me see the diagnostics without the documentation, which is very convenient.
(lsp-hover-buffer would be a good choice too, but my little laptop often doesn’t have the screen real-estate for a editing buffer, a documentation browser, a terminal for running tests, and a diagnostics buffer.)
Same, I usually don’t care about hover documentation (go-to-definition is good enough) whereas hover diagnostics are nice because they don’t interrupt flow or editor state
There is an option to make hover show diagnostics only:
set-option global lsp_show_hover_format %{
printf "Diagnostics:\n%s" "${lsp_diagnostics}"
}
this configuration is probably too obscure. Perhaps we should expose separate commands for documentation/diagnostics.
One disadvantage of hover is that I often don’t know exactly where the error is. I have to run lsp-hover at the correct position within a line to get diagnostics. I guess we can fix that, by making hover requests cover the entire line.
Today I’m still often falling back to *cargo* or *make* buffers for precise diagnostics. Yet, hover and inlay diagnostics are better for quick iteration, so we should make them work out of the box.