feat: debug mode winbar chrome, dapui panel titles, bigger stopped arrow
This commit is contained in:
2 files changed
+49
-11
No files matched your search
@@ -23,7 +23,7 @@ function M.setup()
|
|||||||
vim.fn.sign_define("DapBreakpoint", { text = "🔴", texthl = "DapBreakpoint" })
|
vim.fn.sign_define("DapBreakpoint", { text = "🔴", texthl = "DapBreakpoint" })
|
||||||
vim.fn.sign_define("DapBreakpointCondition", { text = "🟡", texthl = "DapBreakpointCondition" })
|
vim.fn.sign_define("DapBreakpointCondition", { text = "🟡", texthl = "DapBreakpointCondition" })
|
||||||
vim.fn.sign_define("DapBreakpointRejected", { text = "⭕", texthl = "DapBreakpointRejected" })
|
vim.fn.sign_define("DapBreakpointRejected", { text = "⭕", texthl = "DapBreakpointRejected" })
|
||||||
vim.fn.sign_define("DapStopped", { text = "▶️", texthl = "DapStopped", linehl = "DapStoppedLine" })
|
vim.fn.sign_define("DapStopped", { text = "➤", texthl = "DapStopped", linehl = "DapStoppedLine" })
|
||||||
vim.fn.sign_define("DapLogPoint", { text = "📝", texthl = "DapLogPoint" })
|
vim.fn.sign_define("DapLogPoint", { text = "📝", texthl = "DapLogPoint" })
|
||||||
|
|
||||||
-- global mappings (work outside debug mode)
|
-- global mappings (work outside debug mode)
|
||||||
|
|||||||
+48
-10
@@ -5,7 +5,9 @@ local M = {}
|
|||||||
|
|
||||||
local active = false
|
local active = false
|
||||||
local active_buf = nil
|
local active_buf = nil
|
||||||
|
local active_win = nil
|
||||||
local stashed_maps = {}
|
local stashed_maps = {}
|
||||||
|
local saved_winbar = nil
|
||||||
|
|
||||||
-- one-time dap-ui and virtual-text initialization
|
-- one-time dap-ui and virtual-text initialization
|
||||||
local dapui_initialized = false
|
local dapui_initialized = false
|
||||||
@@ -23,6 +25,36 @@ local function ensure_dapui()
|
|||||||
dap.listeners.after.event_exited["tiny-debugger"] = function()
|
dap.listeners.after.event_exited["tiny-debugger"] = function()
|
||||||
if active then M.exit() end
|
if active then M.exit() end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- set winbar titles on dapui panels
|
||||||
|
local titles = {
|
||||||
|
dapui_scopes = " Scopes",
|
||||||
|
dapui_watches = " Watches",
|
||||||
|
dapui_stacks = " Call Stack",
|
||||||
|
dapui_console = " Console",
|
||||||
|
dapui_breakpoints = " Breakpoints",
|
||||||
|
}
|
||||||
|
vim.api.nvim_create_autocmd("FileType", {
|
||||||
|
pattern = "dapui_*",
|
||||||
|
callback = function(args)
|
||||||
|
local title = titles[vim.bo[args.buf].filetype]
|
||||||
|
if title then
|
||||||
|
vim.schedule(function()
|
||||||
|
local win = vim.fn.bufwinid(args.buf)
|
||||||
|
if win ~= -1 then vim.wo[win].winbar = title end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
vim.api.nvim_create_autocmd("FileType", {
|
||||||
|
pattern = "dap-repl",
|
||||||
|
callback = function(args)
|
||||||
|
vim.schedule(function()
|
||||||
|
local win = vim.fn.bufwinid(args.buf)
|
||||||
|
if win ~= -1 then vim.wo[win].winbar = " REPL" end
|
||||||
|
end)
|
||||||
|
end,
|
||||||
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
local function ensure_vt()
|
local function ensure_vt()
|
||||||
@@ -48,7 +80,7 @@ local function restore_mapping(buf, lhs)
|
|||||||
if map then
|
if map then
|
||||||
local rhs = map.rhs or map.callback
|
local rhs = map.rhs or map.callback
|
||||||
if rhs then
|
if rhs then
|
||||||
vim.keymap.set("n", lhs, rhs, {
|
pcall(vim.keymap.set, "n", lhs, rhs, {
|
||||||
buffer = buf,
|
buffer = buf,
|
||||||
silent = map.silent == 1,
|
silent = map.silent == 1,
|
||||||
noremap = map.noremap == 1,
|
noremap = map.noremap == 1,
|
||||||
@@ -124,18 +156,24 @@ local function clear_keymaps(buf)
|
|||||||
stashed_maps = {}
|
stashed_maps = {}
|
||||||
end
|
end
|
||||||
|
|
||||||
-- cursor highlight
|
-- debug mode chrome
|
||||||
|
|
||||||
local saved_cursor_hl = nil
|
local function set_debug_chrome()
|
||||||
|
active_win = vim.api.nvim_get_current_win()
|
||||||
|
saved_winbar = vim.wo[active_win].winbar
|
||||||
|
vim.wo[active_win].winbar = "%#DiagnosticError# 🐛 DEBUG %* %f"
|
||||||
|
|
||||||
local function set_cursor_highlight()
|
|
||||||
saved_cursor_hl = vim.api.nvim_get_hl(0, { name = "Cursor" })
|
|
||||||
vim.api.nvim_set_hl(0, "Cursor", { bg = "#ff6600", fg = "#000000" })
|
vim.api.nvim_set_hl(0, "Cursor", { bg = "#ff6600", fg = "#000000" })
|
||||||
end
|
end
|
||||||
|
|
||||||
local function restore_cursor_highlight()
|
local function clear_debug_chrome()
|
||||||
vim.api.nvim_set_hl(0, "Cursor", saved_cursor_hl or {})
|
if active_win and vim.api.nvim_win_is_valid(active_win) then
|
||||||
saved_cursor_hl = nil
|
vim.wo[active_win].winbar = saved_winbar or ""
|
||||||
|
end
|
||||||
|
active_win = nil
|
||||||
|
saved_winbar = nil
|
||||||
|
|
||||||
|
vim.api.nvim_set_hl(0, "Cursor", {})
|
||||||
end
|
end
|
||||||
|
|
||||||
-- public API
|
-- public API
|
||||||
@@ -147,7 +185,7 @@ function M.enter()
|
|||||||
|
|
||||||
active_buf = vim.api.nvim_get_current_buf()
|
active_buf = vim.api.nvim_get_current_buf()
|
||||||
set_keymaps(active_buf)
|
set_keymaps(active_buf)
|
||||||
set_cursor_highlight()
|
set_debug_chrome()
|
||||||
|
|
||||||
ensure_dapui()
|
ensure_dapui()
|
||||||
require("dapui").open()
|
require("dapui").open()
|
||||||
@@ -166,7 +204,7 @@ function M.exit()
|
|||||||
|
|
||||||
clear_keymaps(active_buf or vim.api.nvim_get_current_buf())
|
clear_keymaps(active_buf or vim.api.nvim_get_current_buf())
|
||||||
active_buf = nil
|
active_buf = nil
|
||||||
restore_cursor_highlight()
|
clear_debug_chrome()
|
||||||
help.close()
|
help.close()
|
||||||
|
|
||||||
if dapui_initialized then require("dapui").close() end
|
if dapui_initialized then require("dapui").close() end
|
||||||
|
|||||||
Reference in new issue
Block a user