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.
All Python LSP servers are garbage. Jedi was being horribly slow.
We only care about Python for GStreamer/GObject work where Python
GObject's missing type annotations prevent us from using something
like Pyright or similar. Just drop all this crap. Fuck Python!.
We had dropped these in commit f349a32 since these are now included
upstream but it seems when using neovim build from source, upstream
bundled parsers do not get updated at the same cadence as treesitter
plugin. This results in breaking syntax highlighting and we have
faced this now for python and bash. Bash is still broken.
The call to highlight_terminal was redundant since we were passing
just {}. Also remove cterm related settings. Upstream has diverged
significantly, so we need not care about upstream any more.
Dynamic capabilities were introduced in neovim with commit ddd92a7.
With dynamic registration of LSP capabilities, a client's `server_capabilities`
is no longer a sufficient indicator to see if a server supports a feature. We
instead need to use `client.supports_method(<method>)` which considers both
the dynamic capabilities and static `server_capabilities`.
Drop nvim-lightbulb and just add the needed functionality. This also
fixes a minor bug where the code action detection was incorrectly
being done under codeLensProvider instead of codeActionProvider.
mini.jump module does not give multiple hints when moving on the
same line like hop use to. Use the jump2d module to achieve this
functionality. This makes it easy to jump forward or backward on
the same line with just one hop instead of having to press f/F
multiple times which is just annoying and stupid.
Define functions in a consistent way through out. We like the pattern
`local function_name = function()` instead of `local function_name()`
for defining functions.
4468c8b made PureScript use Haskell for treesitter queries. However,
setting them up globally sometimes seems to result in Haskell files
getting identified as PureScript and triggering a PureScript LSP
server attach. At least that's what the behaviour seems like.
To prevent this, register the usage of Haskell treesitter queries
in ftplugin viz. when PureScript file type is detected.
We drop Comment, hop & vim-surround in favour of modules from mini.
This change is triggered by the fact that hop's author has decided
to not maintain it any more. There is also pounce but mini seems
simple and we can also use other modules it provides.
With this set to true, neovim will run `:h syntax` and tree-sitter
at the same time. Using this option may slow down one's editor and
one may see some duplicate highlights. Disable it.
We missed setting this and it gives an error like below when using
HLS and rust-analyzer.
```bash
LSP[rust-analyzer]: Error SERVER_REQUEST_HANDLER_ERROR: "/usr/local/share/nvim/runtime/lua/vim/lsp/_watchfiles.lua:199: attempt to index field 'capabilities' (a nil value)"
```
Recent changes to auto-session which got added with session lens
support are just plain annoying. It adds telescope support which
broke session loading as we do not use telescope. It has started
creating session files which we do not want and there seems to be
no setting to disable them or at least if there is it is not at
all obvious from the documentation. Just nuke this nonsense.
Since we reverted cabal-fmt support via HLS in the previous commit
add the cabalfmt plugin. Just add it to our own ftplugin instead of
adding via the plugin list.
This reverts commit 34a5bbdacb.
HLS complains a lot (forgot the error) when trying to edit cabal files
making it almost unusable. It was nice to not require a separate plugin
for formatting cabal files, but, since this is not usable, disable it.