diff options
| -rw-r--r-- | modules/neovim/default.nix | 31 | ||||
| -rw-r--r-- | modules/neovim/nvim/lua/config/lsp/conform.lua | 4 | ||||
| -rw-r--r-- | modules/neovim/nvim/lua/config/lsp/init.lua | 4 | ||||
| -rw-r--r-- | modules/neovim/nvim/lua/config/lsp/metals.lua | 10 |
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 |