diff options
-rw-r--r-- | lua/lvim/core/dap.lua | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/lua/lvim/core/dap.lua b/lua/lvim/core/dap.lua index ad0116b9..4accd5fc 100644 --- a/lua/lvim/core/dap.lua +++ b/lua/lvim/core/dap.lua @@ -22,8 +22,14 @@ M.config = function() linehl = "Visual", numhl = "DiagnosticSignWarn", }, + log = { + level = "info", + }, ui = { auto_open = true, + notify = { + threshold = vim.log.levels.INFO, + }, config = { expand_lines = true, icons = { expanded = "", collapsed = "", circular = "" }, @@ -99,6 +105,8 @@ M.setup = function() U = { "<cmd>lua require'dapui'.toggle()<cr>", "Toggle UI" }, } + dap.set_log_level(lvim.builtin.dap.log.level) + if lvim.builtin.dap.on_config_done then lvim.builtin.dap.on_config_done(dap) end @@ -123,6 +131,43 @@ M.setup_ui = function() -- dapui.close() -- end end + + local Log = require "lvim.core.log" + + -- until rcarriga/nvim-dap-ui#164 is fixed + local function notify_handler(msg, level, opts) + if level >= lvim.builtin.dap.ui.notify.threshold then + return vim.notify(msg, level, opts) + end + + opts = vim.tbl_extend("keep", opts or {}, { + title = "dap-ui", + icon = "", + on_open = function(win) + vim.api.nvim_buf_set_option(vim.api.nvim_win_get_buf(win), "filetype", "markdown") + end, + }) + + -- vim_log_level can be omitted + if level == nil then + level = Log.levels["INFO"] + elseif type(level) == "string" then + level = Log.levels[(level):upper()] or Log.levels["INFO"] + else + -- https://github.com/neovim/neovim/blob/685cf398130c61c158401b992a1893c2405cd7d2/runtime/lua/vim/lsp/log.lua#L5 + level = level + 1 + end + + msg = string.format("%s: %s", opts.title, msg) + Log:add_entry(level, msg) + end + + local dapui_ok, _ = xpcall(function() + require("dapui.util").notify = notify_handler + end, debug.traceback) + if not dapui_ok then + Log:debug "Unable to override dap-ui logging level" + end end return M |