Metals lsp
This commit is contained in:
@ -11,3 +11,4 @@ require("plugins.flash")
|
||||
require("plugins.git")
|
||||
require("plugins.conform")
|
||||
require("plugins.neogen")
|
||||
require("plugins.metals")
|
||||
|
||||
@ -1,6 +1,11 @@
|
||||
vim.pack.add({ 'https://github.com/neovim/nvim-lspconfig' })
|
||||
vim.pack.add({ 'https://github.com/j-hui/fidget.nvim' })
|
||||
|
||||
require("fidget").setup()
|
||||
|
||||
vim.lsp.enable({ 'lua_ls' })
|
||||
vim.lsp.enable({ 'clangd' })
|
||||
-- vim.lsp.enable({ 'metals' })
|
||||
|
||||
vim.lsp.config("rust_analyzer", {
|
||||
settings = {
|
||||
@ -9,12 +14,12 @@ vim.lsp.config("rust_analyzer", {
|
||||
{
|
||||
postfix = { enable = true, },
|
||||
},
|
||||
check = {
|
||||
command = "clippy",
|
||||
},
|
||||
}
|
||||
},
|
||||
}
|
||||
check = {
|
||||
command = "clippy",
|
||||
},
|
||||
}
|
||||
},
|
||||
}
|
||||
)
|
||||
vim.lsp.enable('rust_analyzer')
|
||||
|
||||
|
||||
33
lua/plugins/metals.lua
Normal file
33
lua/plugins/metals.lua
Normal file
@ -0,0 +1,33 @@
|
||||
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,
|
||||
})
|
||||
Reference in New Issue
Block a user