Use Expert, the official Elixir language server, with the elixir, heex
and eex parsers, markdown highlighting for Livebook files, and credo
linting in projects that have a .credo.exs.
This stands in for LazyVim's elixir extra. Its nvim-lint opts assign
linters_by_ft outright, which drops every linter configured before it;
enabling it removed the dockerfile and fish linters. Register the
Livebook language from an opts function, since lazy.nvim keeps only the
last init for a plugin and xaml.lua already sets one.
LazyVim's erlang extra still enables erlangls, but erlang_ls was
archived and nvim-lspconfig has dropped its config in favour of ELP
(LazyVim/LazyVim#7249). Configure ELP, which Mason installs, and the
erlang Treesitter parser directly.
Mason's ruby-lsp is a gem bound to whichever Ruby installed it. In a
project that pins a different Ruby, loading the project bundle fails
with Bundler::RubyVersionMismatch and the server exits, which is what
kept producing the client-quit warning. ruby-lsp's editor docs advise
against Mason for this reason and recommend the version manager's
shim.
Turn Mason off for ruby_lsp and launch ~/.rbenv/shims/ruby-lsp from
the project root, since rbenv resolves .ruby-version from the working
directory and Neovim otherwise starts servers in its own cwd. Machines
without rbenv fall back to ruby-lsp on PATH.
LazyVim has no Swift extra, so configure the pieces swift.org's Neovim
guide uses: the Treesitter swift parser and sourcekit-lsp from the
installed toolchain rather than Mason. lspconfig also assigns
sourcekit C, C++ and Objective-C, which would put a second server
beside clangd on those files, so limit it to Swift.
Format on save with conform's swift formatter, which runs the
toolchain's `swift format`; the standalone swift-format binary isn't
on PATH.
HTML and CSS were formatted by Prettier but had no language server
apart from Tailwind's. Add vscode-html-language-server and
vscode-css-language-server, which also covers SCSS and Less, plus the
SCSS Treesitter parser.
Add vim-bazel (with its vim-maktaba dependency) and bazel.nvim for
running Bazel from the editor, with an errorformat that sends Bazel
build and test failures to the quickfix list. cmp-bazel supplies a
Bazel completion source, wired into blink.cmp through blink.compat.
lazy-lock.json pins the five new plugins.