diff --git a/nvim/nvim/config/nvim.ln/lua/lsp/metals.lua b/nvim/nvim/config/nvim.ln/lua/lsp/metals.lua index 10c13ab..bf7958c 100644 --- a/nvim/nvim/config/nvim.ln/lua/lsp/metals.lua +++ b/nvim/nvim/config/nvim.ln/lua/lsp/metals.lua @@ -13,13 +13,35 @@ vim.cmd [[ augroup end ]] + +local function metals_status_handler(_, status, ctx) + -- https://github.com/scalameta/nvim-metals/blob/main/lua/metals/status.lua#L36-L50 + local val = {} + if status.hide then + val = {kind = "end"} + elseif status.show then + val = {kind = "begin", title = " "} -- status.text title is ignored else messages are duplicated + elseif status.text then + val = {kind = "report", message = status.text} + else + return + end + local info = {client_id = ctx.client_id} + local msg = {token = "metals", value = val} + -- call fidget progress handler + vim.lsp.handlers["$/progress"](nil, msg, info) +end + metals_config = metals.bare_config() metals_config.settings = { showImplicitArguments = true, showInferredType = true, showImplicitConversionsAndClasses = true, } --- metals_config.init_options.statusBarProvider = "on" +metals_config.init_options.statusBarProvider = "on" +metals_config.handlers = { + ['metals/status'] = metals_status_handler, +} metals_config.on_attach = function(client, bufnr) metals.setup_dap()