mirror of
https://github.com/LunarVim/LunarVim.git
synced 2024-09-21 02:55:09 +02:00
28acebe7dd
* feat(dap-ui): update setup table * chore: lint
177 lines
4.7 KiB
Lua
177 lines
4.7 KiB
Lua
local M = {}
|
|
|
|
M.config = function()
|
|
lvim.builtin.dap = {
|
|
active = true,
|
|
on_config_done = nil,
|
|
breakpoint = {
|
|
text = lvim.icons.ui.Bug,
|
|
texthl = "DiagnosticSignError",
|
|
linehl = "",
|
|
numhl = "",
|
|
},
|
|
breakpoint_rejected = {
|
|
text = lvim.icons.ui.Bug,
|
|
texthl = "DiagnosticSignError",
|
|
linehl = "",
|
|
numhl = "",
|
|
},
|
|
stopped = {
|
|
text = lvim.icons.ui.BoldArrowRight,
|
|
texthl = "DiagnosticSignWarn",
|
|
linehl = "Visual",
|
|
numhl = "DiagnosticSignWarn",
|
|
},
|
|
log = {
|
|
level = "info",
|
|
},
|
|
ui = {
|
|
auto_open = true,
|
|
notify = {
|
|
threshold = vim.log.levels.INFO,
|
|
},
|
|
config = {
|
|
icons = { expanded = "", collapsed = "", circular = "" },
|
|
mappings = {
|
|
-- Use a table to apply multiple mappings
|
|
expand = { "<CR>", "<2-LeftMouse>" },
|
|
open = "o",
|
|
remove = "d",
|
|
edit = "e",
|
|
repl = "r",
|
|
toggle = "t",
|
|
},
|
|
-- Use this to override mappings for specific elements
|
|
element_mappings = {},
|
|
expand_lines = true,
|
|
layouts = {
|
|
{
|
|
elements = {
|
|
{ id = "scopes", size = 0.33 },
|
|
{ id = "breakpoints", size = 0.17 },
|
|
{ id = "stacks", size = 0.25 },
|
|
{ id = "watches", size = 0.25 },
|
|
},
|
|
size = 0.33,
|
|
position = "right",
|
|
},
|
|
{
|
|
elements = {
|
|
{ id = "repl", size = 0.45 },
|
|
{ id = "console", size = 0.55 },
|
|
},
|
|
size = 0.27,
|
|
position = "bottom",
|
|
},
|
|
},
|
|
controls = {
|
|
enabled = true,
|
|
-- Display controls in this element
|
|
element = "repl",
|
|
icons = {
|
|
pause = "",
|
|
play = "",
|
|
step_into = "",
|
|
step_over = "",
|
|
step_out = "",
|
|
step_back = "",
|
|
run_last = "",
|
|
terminate = "",
|
|
},
|
|
},
|
|
floating = {
|
|
max_height = 0.9,
|
|
max_width = 0.5, -- Floats will be treated as percentage of your screen.
|
|
border = vim.g.border_chars, -- Border style. Can be 'single', 'double' or 'rounded'
|
|
mappings = {
|
|
close = { "q", "<Esc>" },
|
|
},
|
|
},
|
|
windows = { indent = 1 },
|
|
render = {
|
|
max_type_length = nil, -- Can be integer or nil.
|
|
max_value_lines = 100, -- Can be integer or nil.
|
|
},
|
|
},
|
|
},
|
|
}
|
|
end
|
|
|
|
M.setup = function()
|
|
local status_ok, dap = pcall(require, "dap")
|
|
if not status_ok then
|
|
return
|
|
end
|
|
|
|
if lvim.use_icons then
|
|
vim.fn.sign_define("DapBreakpoint", lvim.builtin.dap.breakpoint)
|
|
vim.fn.sign_define("DapBreakpointRejected", lvim.builtin.dap.breakpoint_rejected)
|
|
vim.fn.sign_define("DapStopped", lvim.builtin.dap.stopped)
|
|
end
|
|
|
|
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
|
|
end
|
|
|
|
M.setup_ui = function()
|
|
local status_ok, dap = pcall(require, "dap")
|
|
if not status_ok then
|
|
return
|
|
end
|
|
local dapui = require "dapui"
|
|
dapui.setup(lvim.builtin.dap.ui.config)
|
|
|
|
if lvim.builtin.dap.ui.auto_open then
|
|
dap.listeners.after.event_initialized["dapui_config"] = function()
|
|
dapui.open()
|
|
end
|
|
-- dap.listeners.before.event_terminated["dapui_config"] = function()
|
|
-- dapui.close()
|
|
-- end
|
|
-- dap.listeners.before.event_exited["dapui_config"] = 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
|