diff options
-rw-r--r-- | lua/lvim/config/_deprecated.lua | 8 | ||||
-rw-r--r-- | lua/lvim/config/init.lua | 2 | ||||
-rw-r--r-- | lua/lvim/lsp/config.lua | 12 | ||||
-rw-r--r-- | lua/lvim/lsp/handlers.lua | 50 | ||||
-rw-r--r-- | lua/lvim/lsp/init.lua | 4 |
5 files changed, 51 insertions, 25 deletions
diff --git a/lua/lvim/config/_deprecated.lua b/lua/lvim/config/_deprecated.lua index 8b06defb..d4723774 100644 --- a/lua/lvim/config/_deprecated.lua +++ b/lua/lvim/config/_deprecated.lua @@ -62,6 +62,14 @@ function M.handle() }) ---@deprecated + lvim.lsp.diagnostics = {} + setmetatable(lvim.lsp.diagnostics, { + __newindex = function(_, k, _) + deprecate("lvim.lsp.diagnostics." .. k, "Use `vim.diagnostic.config() instead.") + end, + }) + + ---@deprecated lvim.lang = {} setmetatable(lvim.lang, mt) end diff --git a/lua/lvim/config/init.lua b/lua/lvim/config/init.lua index 90c17888..4ed9693f 100644 --- a/lua/lvim/config/init.lua +++ b/lua/lvim/config/init.lua @@ -29,6 +29,8 @@ function M:init() local lvim_lsp_config = require "lvim.lsp.config" lvim.lsp = vim.deepcopy(lvim_lsp_config) + require("lvim.lsp.handlers").load_defaults() + lvim.builtin.luasnip = { sources = { friendly_snippets = true, diff --git a/lua/lvim/lsp/config.lua b/lua/lvim/lsp/config.lua index de36c47f..c9834f26 100644 --- a/lua/lvim/lsp/config.lua +++ b/lua/lvim/lsp/config.lua @@ -79,13 +79,11 @@ return { }, document_highlight = false, code_lens_refresh = true, + ---@usage list of the keys to override behavior of the handlers handlers = { - ---@usage list of the keys to override behavior of the handlers - override_config = { - focusable = true, - style = "minimal", - border = "rounded", - }, + focusable = true, + style = "minimal", + border = "rounded", }, on_attach_callback = nil, on_init_callback = nil, @@ -105,7 +103,7 @@ return { ["gs"] = { "<cmd>lua vim.lsp.buf.signature_help()<cr>", "show signature help" }, ["gl"] = { function() - local config = lvim.lsp.diagnostics.float + local config = vim.diagnostic.config().float config.scope = "line" vim.diagnostic.open_float(0, config) end, diff --git a/lua/lvim/lsp/handlers.lua b/lua/lvim/lsp/handlers.lua index bdd09e4a..f26bca1f 100644 --- a/lua/lvim/lsp/handlers.lua +++ b/lua/lvim/lsp/handlers.lua @@ -2,22 +2,42 @@ -- Note: You can set a prefix per lsp server in the lv-globals.lua file local M = {} -function M.setup() - local config = { -- your config - virtual_text = lvim.lsp.diagnostics.virtual_text, - signs = lvim.lsp.diagnostics.signs, - underline = lvim.lsp.diagnostics.underline, - update_in_insert = lvim.lsp.diagnostics.update_in_insert, - severity_sort = lvim.lsp.diagnostics.severity_sort, - float = lvim.lsp.diagnostics.float, - } - vim.diagnostic.config(config) +local default_diagnostic_config = { + signs = { + active = true, + values = { + { name = "DiagnosticSignError", text = lvim.icons.diagnostics.Error }, + { name = "DiagnosticSignWarn", text = lvim.icons.diagnostics.Warning }, + { name = "DiagnosticSignHint", text = lvim.icons.diagnostics.Hint }, + { name = "DiagnosticSignInfo", text = lvim.icons.diagnostics.Information }, + }, + }, + virtual_text = true, + update_in_insert = false, + underline = true, + severity_sort = true, + float = { + focusable = true, + style = "minimal", + border = "rounded", + source = "always", + header = "", + prefix = "", + format = function(d) + local code = d.code or (d.user_data and d.user_data.lsp.code) + if code then + return string.format("%s [%s]", d.message, code):gsub("1. ", "") + end + return d.message + end, + }, +} - if lvim.lsp.handlers.override_config then - vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, lvim.lsp.handlers.override_config) - vim.lsp.handlers["textDocument/signatureHelp"] = - vim.lsp.with(vim.lsp.handlers.signature_help, lvim.lsp.handlers.override_config) - end +function M.load_defaults() + vim.diagnostic.config(default_diagnostic_config) + + vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, lvim.lsp.handlers) + vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, lvim.lsp.handlers) end return M diff --git a/lua/lvim/lsp/init.lua b/lua/lvim/lsp/init.lua index 0fea876a..b4c40a45 100644 --- a/lua/lvim/lsp/init.lua +++ b/lua/lvim/lsp/init.lua @@ -95,13 +95,11 @@ function M.setup() end if lvim.use_icons then - for _, sign in ipairs(lvim.lsp.diagnostics.signs.values) do + for _, sign in ipairs(vim.diagnostic.config().signs.values) do vim.fn.sign_define(sign.name, { texthl = sign.name, text = sign.text, numhl = sign.name }) end end - require("lvim.lsp.handlers").setup() - if not utils.is_directory(lvim.lsp.templates_dir) then require("lvim.lsp.templates").generate_templates() end |