With get_line_diagnostics being deprecated we switched to
vim.diagnostic.get but vim diagnostics are different from
LSP diagnostics and need to be converted.
We copy the code from get_line_diagnostics here as that
will be dropped in 0.12. Strangely the issue only kept
coming up with ruff/Python and HLS/Haskell.
This fixes commit ef0daa5d4 which broke code action
light bulb functionality.
When setting grepprg to ripgrep, neovim passes -uuu which disables
ripgrep's default filtering which also ends up searching in binary
files which is not what we want. It also ignores our ripgreprc and
.ignore we have setup. neovim tries to match behaviour of standard
grep which we do not care about.
The default behaviour becomes a lot confusing when we start getting
results from clangd cache or search index.
neovim 0.10 introduces experimental support for hyperlinks using
OSC 8 sequence. By default, this is used in Markdown for links of
the form [example](https://example.com). If terminal supports the
OSC 8 escape sequence, then the text example in the neovim buffer
will contain a hyperlink that can be clicked and it will open in
web browser.
This means markdown files with conceallevel=2 look much closer to
the rendered output.
We want file path being shown in winbar to be relative to the current
directory or in our case frequently the git root. For whatever reason,
only the first opened leftmost split would show the file path relative
to current git root while any files opened later would show the full
path starting from `HOME`/~ directory. So something around how '%f%m%r'
actually works or how it is being used to set winbar has been a problem.
checkProject if set to true, type checks the entire project on initial
load. If activated by default which it is, can lead to bad performance
in large projects.
Though Ruff is not an LSP in the LSP sense but using it this way
gives us formatting and linting via code actions. All other Python
LSP servers are garbage anyway.