Files
nvim-config/lua/plugins/metals.lua
2026-05-29 14:39:00 +02:00

34 lines
1.3 KiB
Lua

vim.pack.add({ "https://github.com/scalameta/nvim-metals" })
local metals_config = require("metals").bare_config()
metals_config.capabilities = require("blink.cmp").get_lsp_capabilities()
metals_config.on_attach = function(client, bufnr)
-- Your existing keymaps, scoped to the buffer
local opts = { buffer = bufnr }
vim.keymap.set("n", "<leader>t", vim.diagnostic.open_float, opts)
vim.keymap.set("n", "<leader>sr", vim.lsp.buf.rename, opts)
vim.keymap.set("n", "<leader>gD", vim.lsp.buf.declaration, opts)
vim.keymap.set("n", "<leader>gd", vim.lsp.buf.definition, opts)
vim.keymap.set("n", "<leader>gi", vim.lsp.buf.implementation, opts)
vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, opts)
vim.keymap.set("v", "<leader>ca", vim.lsp.buf.code_action, opts)
vim.keymap.set("n", "<leader>f", function()
vim.lsp.buf.format({ async = true })
end, opts)
vim.keymap.set("n", "K", vim.lsp.buf.hover, opts)
-- Inlay hints
vim.lsp.inlay_hint.enable(false, { bufnr = bufnr })
end
local ft = { "scala", "sbt", "java" }
local nvim_metals_group = vim.api.nvim_create_augroup("nvim-metals", { clear = true })
vim.api.nvim_create_autocmd("FileType", {
pattern = ft,
callback = function()
require("metals").initialize_or_attach(metals_config)
end,
group = nvim_metals_group,
})