aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Weigl-Bosker <stefan@s00.xyz>2026-03-20 15:19:14 -0400
committerStefan Weigl-Bosker <stefan@s00.xyz>2026-03-20 15:19:14 -0400
commitde49363c1af68984787ddf1e0cca7d4c69be33a2 (patch)
treec82057ba572d85cd4a4f8cba884a7a7cb3a1fdaa
parente3b494cdf1bf0049a0797ec1c14ca279b1f253ec (diff)
downloadhome-de49363c1af68984787ddf1e0cca7d4c69be33a2.tar.gz
modules/neovim: use metals-nvim plugin instead of plain lsp
-rw-r--r--modules/neovim/default.nix31
-rw-r--r--modules/neovim/nvim/lua/config/lsp/conform.lua4
-rw-r--r--modules/neovim/nvim/lua/config/lsp/init.lua4
-rw-r--r--modules/neovim/nvim/lua/config/lsp/metals.lua10
4 files changed, 44 insertions, 5 deletions
diff --git a/modules/neovim/default.nix b/modules/neovim/default.nix
index 606e012..4056213 100644
--- a/modules/neovim/default.nix
+++ b/modules/neovim/default.nix
@@ -72,7 +72,6 @@ in
ruff
nixfmt-rfc-style
scalafmt
- metals
stylua
black
isort
@@ -82,6 +81,8 @@ in
starpls
verible
kdePackages.qtdeclarative
+ coursier
+ metals
];
xdg.configFile."nvim/lua" = {
source = ./nvim/lua;
@@ -170,6 +171,34 @@ in
'';
}
+ {
+ plugin = nvim-metals;
+ type = "lua";
+ config =
+ # lua
+ ''
+ require("lz.n").load({
+ "nvim-metals",
+ ft = { "scala", "sbt", "java" },
+ after = function()
+ local config = require("config.lsp.metals")
+ -- config.settings.metalsBinaryPath = "metals"
+
+ local nvim_metals_group = vim.api.nvim_create_augroup("nvim-metals", { clear = true })
+ vim.api.nvim_create_autocmd("FileType", {
+ pattern = { "scala", "sbt", "java" },
+ callback = function()
+ require("metals").initialize_or_attach(config)
+ end,
+ group = nvim_metals_group,
+ })
+
+ require("metals").initialize_or_attach(config)
+ end,
+ })
+ '';
+ }
+
tmux-nvim
nvim-lspconfig
{
diff --git a/modules/neovim/nvim/lua/config/lsp/conform.lua b/modules/neovim/nvim/lua/config/lsp/conform.lua
index 879b8ce..b161930 100644
--- a/modules/neovim/nvim/lua/config/lsp/conform.lua
+++ b/modules/neovim/nvim/lua/config/lsp/conform.lua
@@ -5,9 +5,9 @@ require("conform").setup({
python = { "black", "isort" },
zig = { "zigfmt" },
nix = { "nixfmt" },
- c = { "clang-formt" },
+ c = { "clang-format" },
+ scala = { lsp_format = "fallback" },
cpp = { "clang-format" },
- scala = { "scalafmt" },
bzl = { "buildifier" },
},
})
diff --git a/modules/neovim/nvim/lua/config/lsp/init.lua b/modules/neovim/nvim/lua/config/lsp/init.lua
index 29158e3..eb83f1d 100644
--- a/modules/neovim/nvim/lua/config/lsp/init.lua
+++ b/modules/neovim/nvim/lua/config/lsp/init.lua
@@ -29,7 +29,7 @@ local servers = {
tblgen_lsp_server = require("config.lsp.tblgen_lsp_server"),
cmake = {},
verible = {},
- metals = {},
+ -- metals = {},
qmlls = {
cmd = {"qmlls", "-E"}
},
@@ -66,7 +66,7 @@ vim.api.nvim_create_autocmd("LspAttach", { callback = function(args)
return
end
- client.server_capabilities.semanticTokensProvider = nil
+ -- client.server_capabilities.semanticTokensProvider = nil
vim.keymap.set('n', 'grr', function()
vim.lsp.buf.references()
diff --git a/modules/neovim/nvim/lua/config/lsp/metals.lua b/modules/neovim/nvim/lua/config/lsp/metals.lua
new file mode 100644
index 0000000..d9603db
--- /dev/null
+++ b/modules/neovim/nvim/lua/config/lsp/metals.lua
@@ -0,0 +1,10 @@
+local config = require("metals").bare_config()
+
+config.init_options.statusBarProvider = "off"
+config.capabilities = require("blink.cmp").get_lsp_capabilities()
+
+config.on_attach = function(client, bufnr)
+ local opts = { buffer = bufnr }
+end
+
+return config