fix: restore x/X/D as modal debug keys, add quit_exits_mode config, track mapped keys exactly
This commit is contained in:
6 files changed
+64
-26
No files matched your search
@@ -4,9 +4,11 @@ local config = require("tiny-debugger.config")
|
||||
-- defaults unchanged after empty merge
|
||||
local opts = config.merge({})
|
||||
assert_eq(opts.keys.continue, "c", "default continue key")
|
||||
assert_eq(opts.keys.breakpoint, "x", "default modal breakpoint key")
|
||||
assert_eq(opts.global_keys.toggle, "<leader>dd", "default toggle key")
|
||||
assert_eq(opts.global_keys.breakpoint, "<leader>dx", "default breakpoint key")
|
||||
assert_eq(opts.global_keys.breakpoint, "<leader>dx", "default global breakpoint key")
|
||||
assert_eq(opts.help_on_enter, true, "default help_on_enter")
|
||||
assert_eq(opts.quit_exits_mode, true, "default quit_exits_mode")
|
||||
|
||||
-- partial key override
|
||||
opts = config.merge({ keys = { continue = "g" } })
|
||||
@@ -22,9 +24,9 @@ opts = config.merge({ global_keys = { toggle = "<leader>D" } })
|
||||
assert_eq(opts.global_keys.toggle, "<leader>D", "overridden toggle key")
|
||||
assert_eq(opts.global_keys.breakpoint, "<leader>dx", "preserved breakpoint key")
|
||||
|
||||
-- disable a global key
|
||||
opts = config.merge({ global_keys = { breakpoint = false } })
|
||||
assert_eq(opts.global_keys.breakpoint, false, "disabled breakpoint key")
|
||||
-- quit_exits_mode override
|
||||
opts = config.merge({ quit_exits_mode = false })
|
||||
assert_eq(opts.quit_exits_mode, false, "overridden quit_exits_mode")
|
||||
|
||||
-- merge doesn't mutate defaults
|
||||
config.merge({ keys = { continue = "z" } })
|
||||
|
||||
+16
-4
@@ -15,8 +15,8 @@ assert_eq(td.active(), false, "starts inactive")
|
||||
td.toggle()
|
||||
assert_eq(td.active(), true, "active after toggle")
|
||||
|
||||
-- keymaps are set
|
||||
for _, key in ipairs({ "c", "s", "d", "r", "q" }) do
|
||||
-- all modal keymaps are set (including breakpoint keys)
|
||||
for _, key in ipairs({ "c", "s", "d", "r", "q", "x", "X", "D" }) do
|
||||
assert_eq(has_buf_map(key), true, key .. " key mapped")
|
||||
end
|
||||
|
||||
@@ -24,9 +24,21 @@ end
|
||||
td.toggle()
|
||||
assert_eq(td.active(), false, "inactive after second toggle")
|
||||
|
||||
-- keymaps are removed
|
||||
for _, key in ipairs({ "c", "s", "d", "r", "q" }) do
|
||||
-- all modal keymaps are removed
|
||||
for _, key in ipairs({ "c", "s", "d", "r", "q", "x", "X", "D" }) do
|
||||
assert_eq(has_buf_map(key), false, key .. " key removed")
|
||||
end
|
||||
|
||||
-- double exit is safe
|
||||
td.toggle() -- enter
|
||||
td.toggle() -- exit
|
||||
td.toggle() -- enter
|
||||
td.toggle() -- exit
|
||||
assert_eq(td.active(), false, "stable after multiple toggles")
|
||||
|
||||
-- verify no leaked keymaps after rapid toggling
|
||||
for _, key in ipairs({ "c", "s", "d", "r", "q", "x", "X", "D" }) do
|
||||
assert_eq(has_buf_map(key), false, key .. " clean after rapid toggle")
|
||||
end
|
||||
|
||||
print("ALL MODE TESTS PASSED")
|
||||
Reference in new issue
Block a user